From 8b56b0b7bae4c2149720e236d3118aba4a42985f Mon Sep 17 00:00:00 2001 From: David Markowitz <39972741+EmosewaMC@users.noreply.github.com> Date: Sat, 7 Dec 2024 22:36:49 -0800 Subject: [PATCH] fix: use current binary directory mariadb shared object and dont override env variable (#1669) * mac stuff grab correct mariadb file and dont override env variable fix for unix Update CMakeLists.txt unix only * get that dylib --- .github/workflows/build-and-test.yml | 1 + CMakeLists.txt | 1 + CMakePresets.json | 3 --- dDatabase/CMakeLists.txt | 6 ++++++ tests/CMakeLists.txt | 9 --------- tests/dCommonTests/CMakeLists.txt | 15 +++++---------- tests/dGameTests/CMakeLists.txt | 10 ++++------ 7 files changed, 17 insertions(+), 28 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 9c734166..191efb53 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -43,6 +43,7 @@ jobs: build/*/*.ini build/*/*.so build/*/*.dll + build/*/*.dylib build/*/vanity/ build/*/navmeshes/ build/*/migrations/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 20af0c22..9ff4e6b3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,6 +66,7 @@ set(RECASTNAVIGATION_EXAMPLES OFF CACHE BOOL "" FORCE) # Disabled no-register # Disabled unknown pragmas because Linux doesn't understand Windows pragmas. if(UNIX) + add_link_options("-Wl,-rpath,$ORIGIN/") add_compile_options("-fPIC") add_compile_definitions(_GLIBCXX_USE_CXX11_ABI=0 _GLIBCXX_USE_CXX17_ABI=0) diff --git a/CMakePresets.json b/CMakePresets.json index c4595ed5..3ed904e7 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -11,9 +11,6 @@ "displayName": "Default configure step", "description": "Use 'build' dir and Unix makefiles", "binaryDir": "${sourceDir}/build", - "environment": { - "DLU_CONFIG_DIR": "${sourceDir}/build" - }, "generator": "Unix Makefiles" }, { diff --git a/dDatabase/CMakeLists.txt b/dDatabase/CMakeLists.txt index 004bdc14..42bdb983 100644 --- a/dDatabase/CMakeLists.txt +++ b/dDatabase/CMakeLists.txt @@ -2,6 +2,12 @@ add_subdirectory(CDClientDatabase) add_subdirectory(GameDatabase) add_library(dDatabase STATIC "MigrationRunner.cpp") + +add_custom_target(conncpp_dylib + ${CMAKE_COMMAND} -E copy $ ${PROJECT_BINARY_DIR}) + +add_dependencies(dDatabase conncpp_dylib) + target_include_directories(dDatabase PUBLIC ".") target_link_libraries(dDatabase PUBLIC dDatabaseCDClient dDatabaseGame) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 24adec61..d95a24bc 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -4,15 +4,6 @@ enable_testing() find_package(GoogleTest REQUIRED) include(GoogleTest) -if(APPLE) - set(CMAKE_INSTALL_RPATH_USE_LINK_PATH True) - set(CMAKE_BUILD_WITH_INSTALL_RPATH True) - set(CMAKE_INSTALL_RPATH "@executable_path") -endif() - -add_custom_target(conncpp_tests - ${CMAKE_COMMAND} -E copy $ ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) - # Add the subdirectories add_subdirectory(dCommonTests) add_subdirectory(dGameTests) diff --git a/tests/dCommonTests/CMakeLists.txt b/tests/dCommonTests/CMakeLists.txt index ef7c4cba..17b31ced 100644 --- a/tests/dCommonTests/CMakeLists.txt +++ b/tests/dCommonTests/CMakeLists.txt @@ -17,18 +17,13 @@ list(APPEND DCOMMONTEST_SOURCES ${DENUMS_TESTS}) # Set our executable add_executable(dCommonTests ${DCOMMONTEST_SOURCES}) -add_dependencies(dCommonTests conncpp_tests) -# Apple needs some special linkage for the mariadb connector for tests. +# Needs to be in binary dir for ctest if(APPLE) -add_custom_command(TARGET dCommonTests POST_BUILD - COMMAND otool ARGS -l dCommonTests - COMMAND otool ARGS -L dCommonTests - COMMAND ls - COMMAND otool ARGS -D libmariadbcpp.dylib - COMMAND install_name_tool ARGS -change libmariadbcpp.dylib @rpath/libmariadbcpp.dylib dCommonTests - COMMAND otool ARGS -L dCommonTests - WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + add_custom_target(dCommonTestsLink + ${CMAKE_COMMAND} -E copy $ ${CMAKE_CURRENT_BINARY_DIR}) + + add_dependencies(dCommonTests dCommonTestsLink) endif() # Link needed libraries diff --git a/tests/dGameTests/CMakeLists.txt b/tests/dGameTests/CMakeLists.txt index e1c29433..f4749ce8 100644 --- a/tests/dGameTests/CMakeLists.txt +++ b/tests/dGameTests/CMakeLists.txt @@ -13,14 +13,12 @@ file(COPY ${COMPONENT_TEST_DATA} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) # Add the executable. Remember to add all tests above this! add_executable(dGameTests ${DGAMETEST_SOURCES}) -add_dependencies(dGameTests conncpp_tests) -# Apple needs some special linkage for the mariadb connector for tests. if(APPLE) -add_custom_command(TARGET dGameTests POST_BUILD - COMMAND install_name_tool ARGS -change libmariadbcpp.dylib @rpath/libmariadbcpp.dylib dGameTests - COMMAND otool ARGS -L dGameTests - WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) + add_custom_target(dGameTestsLink + ${CMAKE_COMMAND} -E copy $ ${CMAKE_CURRENT_BINARY_DIR}) + + add_dependencies(dGameTests dGameTestsLink) endif() target_link_libraries(dGameTests ${COMMON_LIBRARIES} GTest::gtest_main