[Tarantool-patches] [PATCH v2 luajit 02/30] test: add compiling for C libs from PUC-Rio-Lua5.1

Sergey Ostanevich sergos at tarantool.org
Fri Mar 26 14:01:46 MSK 2021


LGTM.

> On 26 Mar 2021, at 10:42, Sergey Kaplun <skaplun at tarantool.org> wrote:
> 
> This patch adds commands to create additional LuaC libraries for tests
> in <attrib.lua>. Also, it renames `luaL_reg` to `luaL_Reg` in <lib1.c>
> and <lib2.c> to be consistent with the current LuaJIT's LuaC API.
> 
> Part of tarantool/tarantool#5845
> Part of tarantool/tarantool#4473
> ---
> test/PUC-Lua-5.1-tests/CMakeLists.txt      |  3 +-
> test/PUC-Lua-5.1-tests/libs/CMakeLists.txt | 48 +++++++++++++++++++++-
> test/PUC-Lua-5.1-tests/libs/lib1.c         |  2 +-
> test/PUC-Lua-5.1-tests/libs/lib2.c         |  2 +-
> 4 files changed, 51 insertions(+), 4 deletions(-)
> 
> diff --git a/test/PUC-Lua-5.1-tests/CMakeLists.txt b/test/PUC-Lua-5.1-tests/CMakeLists.txt
> index 773db0d..3c31aae 100644
> --- a/test/PUC-Lua-5.1-tests/CMakeLists.txt
> +++ b/test/PUC-Lua-5.1-tests/CMakeLists.txt
> @@ -16,7 +16,8 @@ cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
> # variable as proposed in the first case.
> set(LUA_PATH "?\;${CMAKE_CURRENT_SOURCE_DIR}/?.lua")
> 
> -# Set PUC-Lua-5.1-tests-prepare target that creates <libs/P1>
> +# Set PUC-Lua-5.1-tests-prepare target that contains rules
> +# for <libs/*> libraries compilation and creates <libs/P1>
> # subdirectory.
> add_subdirectory(libs)
> 
> diff --git a/test/PUC-Lua-5.1-tests/libs/CMakeLists.txt b/test/PUC-Lua-5.1-tests/libs/CMakeLists.txt
> index f24e7f3..aa64a44 100644
> --- a/test/PUC-Lua-5.1-tests/libs/CMakeLists.txt
> +++ b/test/PUC-Lua-5.1-tests/libs/CMakeLists.txt
> @@ -4,11 +4,57 @@
> # See the rationale in the root CMakeLists.txt.
> cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
> 
> +# Build additional C libraries for tests.
> +macro(BuildTestCLib lib sources)
> +  add_library(${lib} SHARED EXCLUDE_FROM_ALL ${sources})
> +  target_include_directories(${lib} PRIVATE
> +    ${LUAJIT_SOURCE_DIR}
> +  )
> +  set_target_properties(${lib} PROPERTIES
> +    LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
> +    PREFIX ""
> +  )
> +  # XXX: The dynamic libraries are loaded with LuaJIT binary and
> +  # use symbols from it. So it is totally OK to have unresolved
> +  # symbols at build time.
> +  if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
> +    set_target_properties(${lib} PROPERTIES
> +      LINK_FLAGS "-undefined dynamic_lookup"
> +    )
> +  elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
> +    # XXX: This is necessary mostly for openSUSE builds, see also
> +    # https://bugzilla.suse.com/show_bug.cgi?id=1012388.
> +    # Just strip out the linker flag to suppress this linker
> +    # option.
> +    string(REPLACE "-Wl,--no-undefined" ""
> +      CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}"
> +    )
> +  endif()
> +  list(APPEND TESTLIBS ${lib})
> +endmacro()
> +
> +BuildTestCLib(lib1  lib1.c)
> +BuildTestCLib(lib11 lib1.c lib11.c)
> +BuildTestCLib(lib2  lib2.c)
> +BuildTestCLib(lib21 lib2.c lib21.c)
> +
> +# Create exact copy of the lib2 library for tests in attrib.lua.
> +set(LIB2ORIG "${CMAKE_CURRENT_BINARY_DIR}/lib2${CMAKE_SHARED_LIBRARY_SUFFIX}")
> +set(LIB2COPY "${CMAKE_CURRENT_BINARY_DIR}/-lib2${CMAKE_SHARED_LIBRARY_SUFFIX}")
> +add_custom_command(
> +  OUTPUT ${LIB2COPY}
> +  COMMENT "Copying lib2 to -lib2 for PUC-Rio Lua 5.1 tests"
> +  COMMAND ${CMAKE_COMMAND} -E copy ${LIB2ORIG} ${LIB2COPY}
> +  DEPENDS ${TESTLIBS}
> +  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
> +)
> +list(APPEND TESTLIBS ${LIB2COPY})
> +
> # The original tarball contains subdirectory "libs" with an empty
> # subdirectory "libs/P1", to be used by tests.
> # Instead of tracking empty directory with some anchor-file for
> # git, create this directory via CMake.
> -add_custom_target(PUC-Lua-5.1-tests-prepare)
> +add_custom_target(PUC-Lua-5.1-tests-prepare DEPENDS ${TESTLIBS})
> add_custom_command(TARGET PUC-Lua-5.1-tests-prepare
>   COMMENT "Create directory for PUC-Rio Lua 5.1 tests"
>   COMMAND ${CMAKE_COMMAND} -E make_directory P1
> diff --git a/test/PUC-Lua-5.1-tests/libs/lib1.c b/test/PUC-Lua-5.1-tests/libs/lib1.c
> index 812bb9a..22fe6de 100644
> --- a/test/PUC-Lua-5.1-tests/libs/lib1.c
> +++ b/test/PUC-Lua-5.1-tests/libs/lib1.c
> @@ -14,7 +14,7 @@ static int id (lua_State *L) {
> }
> 
> 
> -static const struct luaL_reg funcs[] = {
> +static const struct luaL_Reg funcs[] = {
>   {"id", id},
>   {NULL, NULL}
> };
> diff --git a/test/PUC-Lua-5.1-tests/libs/lib2.c b/test/PUC-Lua-5.1-tests/libs/lib2.c
> index 9972cbe..876a212 100644
> --- a/test/PUC-Lua-5.1-tests/libs/lib2.c
> +++ b/test/PUC-Lua-5.1-tests/libs/lib2.c
> @@ -12,7 +12,7 @@ static int id (lua_State *L) {
> }
> 
> 
> -static const struct luaL_reg funcs[] = {
> +static const struct luaL_Reg funcs[] = {
>   {"id", id},
>   {NULL, NULL}
> };
> -- 
> 2.31.0
> 



More information about the Tarantool-patches mailing list