Skip to content

Commit 8ee43c4

Browse files
committed
CMake fix transitive target properties, and macos rpath handling
prepending target properties with INTERFACE_ makes the property transitive to consumers. add normal MSVC_RUNTIME_LIBRARY to windows properties add INTERFACE_ to BUILD_RPATH_USE_ORIGIN add INTERFACE_ to POSITION_INDEPENDENT_CODE add INTERFACE_ to OSX_ARCHITECTURES enable INTERFACE_MACOSX_RPATH for origin rpath on macos
1 parent bb56706 commit 8ee43c4

File tree

4 files changed

+15
-10
lines changed

4 files changed

+15
-10
lines changed

cmake/godotcpp.cmake

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,8 +264,12 @@ function( godotcpp_generate )
264264
CXX_VISIBILITY_PRESET ${GODOT_SYMBOL_VISIBILITY}
265265

266266
COMPILE_WARNING_AS_ERROR ${GODOT_WARNING_AS_ERROR}
267+
267268
POSITION_INDEPENDENT_CODE ON
268-
BUILD_RPATH_USE_ORIGIN ON
269+
INTERFACE_POSITION_INDEPENDENT_CODE ON
270+
271+
# Tell the linker to add the $ORIGIN relative location at build time
272+
INTERFACE_BUILD_RPATH_USE_ORIGIN ON
269273

270274
PREFIX lib
271275
OUTPUT_NAME "${PROJECT_NAME}.${SYSTEM_NAME}.${TARGET_NAME}.${SYSTEM_ARCH}"

cmake/macos.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,13 @@ function( macos_generate TARGET_NAME )
3535

3636
set_target_properties( ${TARGET_NAME}
3737
PROPERTIES
38+
# enable RPATH on MACOS, with the BUILD_RPATH_USE_ORIGIN
39+
# this should allow loading libraries from relative paths on macos.
40+
INTERFACE_MACOSX_RPATH ON
3841

42+
# Specify multiple architectures for universal builds
3943
OSX_ARCHITECTURES "${OSX_ARCH}"
44+
INTERFACE_OSX_ARCHITECTURES "${OSX_ARCH}"
4045
)
4146

4247
target_compile_definitions(${TARGET_NAME}

cmake/windows.cmake

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,15 @@ function( windows_generate TARGET_NAME )
2222
set( STATIC_CPP "$<BOOL:${GODOT_USE_STATIC_CPP}>")
2323
set( DISABLE_EXCEPTIONS "$<BOOL:${GODOT_DISABLE_EXCEPTIONS}>")
2424
set( DEBUG_CRT "$<BOOL:${GODOT_DEBUG_CRT}>" )
25+
set( MSVC_RUNTIME "$<IF:${DEBUG_CRT},MultiThreadedDebugDLL,$<IF:${STATIC_CPP},MultiThreaded,MultiThreadedDLL>>" )
2526

2627
set_target_properties( ${TARGET_NAME}
2728
PROPERTIES
2829
PDB_OUTPUT_DIRECTORY "$<1:${CMAKE_SOURCE_DIR}/bin>"
29-
INTERFACE_MSVC_RUNTIME_LIBRARY
30-
"$<IF:${DEBUG_CRT},MultiThreadedDebugDLL,$<IF:${STATIC_CPP},MultiThreaded,MultiThreadedDLL>>"
30+
31+
# set msvc runtime to link against and for our consumers
32+
MSVC_RUNTIME_LIBRARY "${MSVC_RUNTIME}"
33+
INTERFACE_MSVC_RUNTIME_LIBRARY "${MSVC_RUNTIME}"
3134
)
3235

3336
target_compile_definitions( ${TARGET_NAME}

test/CMakeLists.txt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@ set_target_properties( godot-cpp-test
3333
CXX_EXTENSIONS OFF
3434
CXX_VISIBILITY_PRESET ${GODOT_SYMBOL_VISIBILITY}
3535

36-
POSITION_INDEPENDENT_CODE ON
37-
BUILD_RPATH_USE_ORIGIN ON
3836
LINK_SEARCH_START_STATIC ON
3937
LINK_SEARCH_END_STATIC ON
4038

@@ -49,8 +47,6 @@ set_target_properties( godot-cpp-test
4947
)
5048

5149
if( CMAKE_SYSTEM_NAME STREQUAL Darwin )
52-
get_target_property( OSX_ARCH godot-cpp::${TEST_TARGET} OSX_ARCHITECTURES )
53-
5450
set( OUTPUT_DIR "${OUTPUT_DIR}/libgdexample.macos.${TEST_TARGET}.framework")
5551

5652
set_target_properties( godot-cpp-test
@@ -60,8 +56,5 @@ if( CMAKE_SYSTEM_NAME STREQUAL Darwin )
6056

6157
OUTPUT_NAME "gdexample.macos.${TEST_TARGET}"
6258
SUFFIX ""
63-
64-
#macos options
65-
OSX_ARCHITECTURES "${OSX_ARCH}"
6659
)
6760
endif ()

0 commit comments

Comments
 (0)