[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