diff options
author | Brecht Van Lommel <brecht@blender.org> | 2020-09-15 17:00:15 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2020-09-17 13:29:19 +0300 |
commit | f9fcb25d521d11b425e1071a95ed342d9ddbef97 (patch) | |
tree | e3c2a12097b774d607a3bd61c4f3c1ecd3a26cba | |
parent | 0700c045bc7fb2ec996e04a60eed24f338559924 (diff) |
CMake: clean up setting of platform specific linker flags
Set flags directly on the target, and use common function for all cases.
This refactoring helps with the next commit for test executables.
Ref D8714
-rw-r--r-- | CMakeLists.txt | 5 | ||||
-rw-r--r-- | build_files/cmake/Modules/GTestTesting.cmake | 1 | ||||
-rw-r--r-- | build_files/cmake/macros.cmake | 33 | ||||
-rw-r--r-- | intern/cycles/test/CMakeLists.txt | 3 | ||||
-rw-r--r-- | source/blender/blenlib/tests/performance/CMakeLists.txt | 3 | ||||
-rw-r--r-- | source/blender/blentranslation/msgfmt/CMakeLists.txt | 5 | ||||
-rw-r--r-- | source/blender/datatoc/CMakeLists.txt | 2 | ||||
-rw-r--r-- | source/blender/makesdna/intern/CMakeLists.txt | 2 | ||||
-rw-r--r-- | source/blender/makesrna/intern/CMakeLists.txt | 2 | ||||
-rw-r--r-- | source/creator/CMakeLists.txt | 15 | ||||
-rw-r--r-- | tests/gtests/runner/CMakeLists.txt | 2 |
11 files changed, 22 insertions, 51 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index c9a020ebbc3..a2e6e557a62 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -840,11 +840,10 @@ set(CXX_WARNINGS) set(C_REMOVE_STRICT_FLAGS) set(CXX_REMOVE_STRICT_FLAGS) -# libraries to link the binary with passed to target_link_libraries() -# known as LLIBS to scons +# Libraries to link to targets in setup_platform_linker_libs set(PLATFORM_LINKLIBS "") -# Added to linker flags in setup_liblinks +# Added to target linker flags in setup_platform_linker_flags # - CMAKE_EXE_LINKER_FLAGS # - CMAKE_EXE_LINKER_FLAGS_DEBUG set(PLATFORM_LINKFLAGS "") diff --git a/build_files/cmake/Modules/GTestTesting.cmake b/build_files/cmake/Modules/GTestTesting.cmake index 053d5196f41..2e45f253a9a 100644 --- a/build_files/cmake/Modules/GTestTesting.cmake +++ b/build_files/cmake/Modules/GTestTesting.cmake @@ -39,6 +39,7 @@ macro(BLENDER_SRC_GTEST_EX) add_definitions(${GLOG_DEFINES}) add_executable(${TARGET_NAME} ${ARG_SRC} ${MANIFEST}) + setup_platform_linker_flags(${TARGET_NAME}) target_include_directories(${TARGET_NAME} PUBLIC "${TEST_INC}") target_include_directories(${TARGET_NAME} SYSTEM PUBLIC "${TEST_INC_SYS}") target_link_libraries(${TARGET_NAME} ${ARG_EXTRA_LIBS} ${PLATFORM_LINKLIBS}) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index dcab6d58870..268daa4aae3 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -514,33 +514,18 @@ function(SETUP_LIBDIRS) endif() endfunction() -macro(setup_platform_linker_flags) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}") - set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${PLATFORM_LINKFLAGS_RELEASE}") - set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}") -endmacro() +# Platform specific linker flags for targets. +function(setup_platform_linker_flags + target) + set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS " ${PLATFORM_LINKFLAGS}") + set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS_RELEASE " ${PLATFORM_LINKFLAGS_RELEASE}") + set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS_DEBUG " ${PLATFORM_LINKFLAGS_DEBUG}") +endfunction() -function(setup_liblinks +# Platform specific libraries for targets. +function(setup_platform_linker_libs target ) - - # NOTE: This might look like it affects global scope, accumulating linker flags on every call - # to setup_liblinks, but this isn't how CMake works. These flags will only affect current - # directory from where the function is called. - # This means that setup_liblinks() called for ffmpeg_test will not affect blender, and each - # of thsoe targets will have single set of linker flags. - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}" PARENT_SCOPE) - set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}" PARENT_SCOPE) - set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${PLATFORM_LINKFLAGS_RELEASE}" PARENT_SCOPE) - - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}" PARENT_SCOPE) - set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}" PARENT_SCOPE) - set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} ${PLATFORM_LINKFLAGS_RELEASE}" PARENT_SCOPE) - - set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}" PARENT_SCOPE) - set(CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}" PARENT_SCOPE) - set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} ${PLATFORM_LINKFLAGS_RELEASE}" PARENT_SCOPE) - # jemalloc must be early in the list, to be before pthread (see T57998) if(WITH_MEM_JEMALLOC) target_link_libraries(${target} ${JEMALLOC_LIBRARIES}) diff --git a/intern/cycles/test/CMakeLists.txt b/intern/cycles/test/CMakeLists.txt index aa145af293a..1dc3d44dead 100644 --- a/intern/cycles/test/CMakeLists.txt +++ b/intern/cycles/test/CMakeLists.txt @@ -50,9 +50,6 @@ include_directories(${INC}) cycles_link_directories() -set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}") -set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}") - CYCLES_TEST(render_graph_finalize "${ALL_CYCLES_LIBRARIES};bf_intern_numaapi") cycles_target_link_libraries(cycles_render_graph_finalize_test) CYCLES_TEST(util_aligned_malloc "cycles_util") diff --git a/source/blender/blenlib/tests/performance/CMakeLists.txt b/source/blender/blenlib/tests/performance/CMakeLists.txt index 88fbed0a49b..5342dbe286c 100644 --- a/source/blender/blenlib/tests/performance/CMakeLists.txt +++ b/source/blender/blenlib/tests/performance/CMakeLists.txt @@ -26,8 +26,5 @@ set(INC setup_libdirs() include_directories(${INC}) -set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}") -set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}") - BLENDER_TEST_PERFORMANCE(BLI_ghash_performance "bf_blenlib") BLENDER_TEST_PERFORMANCE(BLI_task_performance "bf_blenlib") diff --git a/source/blender/blentranslation/msgfmt/CMakeLists.txt b/source/blender/blentranslation/msgfmt/CMakeLists.txt index 350473fa195..20f5053bd29 100644 --- a/source/blender/blentranslation/msgfmt/CMakeLists.txt +++ b/source/blender/blentranslation/msgfmt/CMakeLists.txt @@ -33,15 +33,12 @@ set(SRC setup_libdirs() add_cc_flags_custom_test(msgfmt) -if(APPLE) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}") -endif() - if(WIN32) set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /nodefaultlib:MSVCRT.lib") endif() add_executable(msgfmt ${SRC}) +setup_platform_linker_flags(msgfmt) target_link_libraries(msgfmt bf_blenlib) target_link_libraries(msgfmt bf_intern_guardedalloc) diff --git a/source/blender/datatoc/CMakeLists.txt b/source/blender/datatoc/CMakeLists.txt index b750edd044e..3253db2314d 100644 --- a/source/blender/datatoc/CMakeLists.txt +++ b/source/blender/datatoc/CMakeLists.txt @@ -34,7 +34,7 @@ if(NOT WITH_HEADLESS) set(SRC datatoc_icon.c ) - setup_platform_linker_flags() + setup_platform_linker_flags(datatoc) if(WIN32) include_directories( ../blenlib diff --git a/source/blender/makesdna/intern/CMakeLists.txt b/source/blender/makesdna/intern/CMakeLists.txt index 9808740e030..e902474deb1 100644 --- a/source/blender/makesdna/intern/CMakeLists.txt +++ b/source/blender/makesdna/intern/CMakeLists.txt @@ -56,9 +56,9 @@ endif() # SRC_DNA_INC is defined in the parent dir add_cc_flags_custom_test(makesdna) -setup_platform_linker_flags() add_executable(makesdna ${SRC} ${SRC_DNA_INC}) +setup_platform_linker_flags(makesdna) if(WIN32 AND NOT UNIX) target_link_libraries(makesdna ${PTHREADS_LIBRARIES}) diff --git a/source/blender/makesrna/intern/CMakeLists.txt b/source/blender/makesrna/intern/CMakeLists.txt index 976035b9886..386777db739 100644 --- a/source/blender/makesrna/intern/CMakeLists.txt +++ b/source/blender/makesrna/intern/CMakeLists.txt @@ -386,9 +386,9 @@ blender_include_dirs( ) add_cc_flags_custom_test(makesrna) -setup_platform_linker_flags() add_executable(makesrna ${SRC} ${SRC_RNA_INC} ${SRC_DNA_INC}) +setup_platform_linker_flags(makesrna) target_link_libraries(makesrna bf_dna) target_link_libraries(makesrna bf_dna_blenlib) diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 43f77556ba1..ae672aa3b5c 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -256,13 +256,7 @@ if(WITH_PYTHON_MODULE) ) if(APPLE) - set_target_properties( - blender - PROPERTIES - MACOSX_BUNDLE TRUE - LINK_FLAGS_RELEASE "${PLATFORM_LINKFLAGS}" - LINK_FLAGS_DEBUG "${PLATFORM_LINKFLAGS_DEBUG}" - ) + set_target_properties(blender PROPERTIES MACOSX_BUNDLE TRUE) endif() if(WIN32) @@ -1127,7 +1121,8 @@ add_dependencies(blender makesdna) target_link_libraries(blender ${LIB}) unset(LIB) -setup_liblinks(blender) +setup_platform_linker_flags(blender) +setup_platform_linker_libs(blender) if(APPLE) set_target_properties(blender PROPERTIES LINK_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/osx_locals.map) @@ -1162,9 +1157,9 @@ if(WIN32) # CMAKE_BUILD_TYPE. This can be simplified by target_link_options and the $<CONFIG> # generator expression in newer cmake (2.13+) but until that time this fill have suffice. if(CMAKE_BUILD_TYPE) - set_property(TARGET blender APPEND PROPERTY LINK_FLAGS " /PDBSTRIPPED:${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/blender_public.pdb") + set_property(TARGET blender APPEND_STRING PROPERTY LINK_FLAGS " /PDBSTRIPPED:${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/blender_public.pdb") else() - set_property(TARGET blender APPEND PROPERTY LINK_FLAGS " /PDBSTRIPPED:${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/blender_public.pdb") + set_property(TARGET blender APPEND_STRING PROPERTY LINK_FLAGS " /PDBSTRIPPED:${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/blender_public.pdb") endif() endif() endif() diff --git a/tests/gtests/runner/CMakeLists.txt b/tests/gtests/runner/CMakeLists.txt index 8b3390e7aec..c1487e45b26 100644 --- a/tests/gtests/runner/CMakeLists.txt +++ b/tests/gtests/runner/CMakeLists.txt @@ -51,7 +51,7 @@ BLENDER_SRC_GTEST_EX( EXTRA_LIBS "${TEST_LIBS}" SKIP_ADD_TEST ) -setup_liblinks(blender_test) +setup_platform_linker_libs(blender_test) if(WIN32) foreach(_lib ${_test_libs}) |