[Tarantool-patches] [PATCH v2 luajit 01/26] cmake: introduce AddTestLib macro

Sergey Kaplun skaplun at tarantool.org
Mon Jan 29 13:45:01 MSK 2024


This patch removes copy-pasting in macros used to add a new library for
testing and places this in the include test file.

Needed for tarantool/tarantool#9398
---
 test/CMakeLists.txt                           |  3 ++
 .../PUC-Rio-Lua-5.1-tests/libs/CMakeLists.txt | 25 +----------------
 test/cmake/AddTestLib.cmake                   | 28 +++++++++++++++++++
 test/tarantool-tests/CMakeLists.txt           | 27 +-----------------
 4 files changed, 33 insertions(+), 50 deletions(-)
 create mode 100644 test/cmake/AddTestLib.cmake

diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 8afc42df..3ad5d15f 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -74,6 +74,9 @@ add_custom_target(${PROJECT_NAME}-lint DEPENDS
 set(LUAJIT_TEST_COMMAND "${LUAJIT_TEST_BINARY} -e dofile[[${LUAJIT_TEST_INIT}]]")
 separate_arguments(LUAJIT_TEST_COMMAND)
 
+set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+include(AddTestLib)
+
 add_subdirectory(LuaJIT-tests)
 add_subdirectory(PUC-Rio-Lua-5.1-tests)
 add_subdirectory(lua-Harness-tests)
diff --git a/test/PUC-Rio-Lua-5.1-tests/libs/CMakeLists.txt b/test/PUC-Rio-Lua-5.1-tests/libs/CMakeLists.txt
index 8501b767..e68e6aef 100644
--- a/test/PUC-Rio-Lua-5.1-tests/libs/CMakeLists.txt
+++ b/test/PUC-Rio-Lua-5.1-tests/libs/CMakeLists.txt
@@ -6,30 +6,7 @@ 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()
+  AddTestLib(${lib} ${sources})
   list(APPEND TESTLIBS ${lib})
 endmacro()
 
diff --git a/test/cmake/AddTestLib.cmake b/test/cmake/AddTestLib.cmake
new file mode 100644
index 00000000..3764ee5c
--- /dev/null
+++ b/test/cmake/AddTestLib.cmake
@@ -0,0 +1,28 @@
+macro(AddTestLib lib sources)
+  add_library(${lib} SHARED EXCLUDE_FROM_ALL ${sources})
+  target_include_directories(${lib} PRIVATE
+    ${LUAJIT_SOURCE_DIR}
+    ${CMAKE_CURRENT_SOURCE_DIR}
+  )
+  set_target_properties(${lib} PROPERTIES
+    LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
+    PREFIX ""
+  )
+
+  # XXX: This change affects the current cmake variable scope and
+  # so a user should care to don't use it in a top level scope.
+  # 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"
+    )
+  else()
+    # FIXME: Unfortunately, there is no another way to suppress
+    # this linker option, so just strip it out from the flags.
+    string(REPLACE "-Wl,--no-undefined" ""
+      CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}"
+    )
+  endif()
+endmacro()
diff --git a/test/tarantool-tests/CMakeLists.txt b/test/tarantool-tests/CMakeLists.txt
index 6d686876..80d94a78 100644
--- a/test/tarantool-tests/CMakeLists.txt
+++ b/test/tarantool-tests/CMakeLists.txt
@@ -11,32 +11,7 @@ if(NOT PROVE)
 endif()
 
 macro(BuildTestCLib lib sources)
-  add_library(${lib} SHARED EXCLUDE_FROM_ALL ${sources})
-  target_include_directories(${lib} PRIVATE
-    ${LUAJIT_SOURCE_DIR}
-    ${CMAKE_CURRENT_SOURCE_DIR}
-  )
-  set_target_properties(${lib} PROPERTIES
-    LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
-    PREFIX ""
-  )
-
-  # XXX: This change affects the current cmake variable scope and
-  # so a user should care to don't use it in a top level scope.
-  # 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"
-    )
-  else()
-    # FIXME: Unfortunately, there is no another way to suppress
-    # this linker option, so just strip it out from the flags.
-    string(REPLACE "-Wl,--no-undefined" ""
-      CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}"
-    )
-  endif()
+  AddTestLib(${lib} ${sources})
   # XXX: Append the lib to be built to the dependency list.
   # Unfortunately, there is no convenient way in CMake to extend
   # the list in parent scope other than join two strings with
-- 
2.43.0



More information about the Tarantool-patches mailing list