From d476b7822f2b59da2a8e42c541aa099496dcb2ff Mon Sep 17 00:00:00 2001 From: Julien Schueller Date: Fri, 17 Jul 2020 10:31:20 +0200 Subject: [PATCH] Use target based build flags Closes #50 --- CMakeLists.txt | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 112eea4..f8804e3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -85,9 +85,11 @@ set(tbbmalloc_proxy_src src/tbbmalloc/proxy.cpp src/tbbmalloc/tbb_function_replacement.cpp) +add_library (tbb_interface INTERFACE) + if (CMAKE_SYSTEM_PROCESSOR MATCHES "(i386|x86_64)") if (NOT APPLE AND NOT MINGW) - add_definitions(-DDO_ITT_NOTIFY) + target_compile_definitions(tbb_interface INTERFACE DO_ITT_NOTIFY) endif() endif() @@ -128,23 +130,23 @@ endif() set (CMAKE_CXX_STANDARD 11) if (UNIX) - add_definitions (-DUSE_PTHREAD) + target_compile_definitions(tbb_interface INTERFACE USE_PTHREAD) check_cxx_compiler_flag ("-mrtm -Werror" SUPPORTS_MRTM) if (SUPPORTS_MRTM) - set (CMAKE_CXX_FLAGS "-mrtm ${CMAKE_CXX_FLAGS}") + target_compile_options(tbb_interface INTERFACE "-mrtm") endif () elseif(WIN32) + target_compile_definitions(tbb_interface INTERFACE USE_WINTHREAD _WIN32_WINNT=0x0600) if (MSVC) enable_language(ASM_MASM) - set(CMAKE_CXX_FLAGS "/GS- /Zc:wchar_t /Zc:forScope /DUSE_WINTHREAD ${CMAKE_CXX_FLAGS}") - set(CMAKE_CXX_FLAGS "/D_CRT_SECURE_NO_DEPRECATE /D_WIN32_WINNT=0x0600 ${CMAKE_CXX_FLAGS}") + target_compile_options(tbb_interface INTERFACE "/GS- /Zc:wchar_t /Zc:forScope") check_cxx_compiler_flag ("/volatile:iso" SUPPORTS_VOLATILE_FLAG) if (SUPPORTS_VOLATILE_FLAG) - set(CMAKE_CXX_FLAGS "/volatile:iso ${CMAKE_CXX_FLAGS}") + target_compile_options(tbb_interface INTERFACE "/volatile:iso") endif () - set(CMAKE_CXX_FLAGS "/wd4267 /wd4800 /wd4146 /wd4244 /wd4577 /wd4018 ${CMAKE_CXX_FLAGS}") + target_compile_options(tbb_interface INTERFACE $<$:/wd4267 /wd4800 /wd4146 /wd4244 /wd4577 /wd4018>) if (NOT CMAKE_SIZEOF_VOID_P) message(FATAL_ERROR "'CMAKE_SIZEOF_VOID_P' is undefined. Please delete your build directory and rerun CMake again!") endif() @@ -161,9 +163,7 @@ elseif(WIN32) set(CMAKE_ASM_MASM_FLAGS "/safeseh ${CMAKE_ASM_MASM_FLAGS}") endif() elseif (MINGW) - add_definitions(-DUSE_WINTHREAD) - add_definitions(-D_WIN32_WINNT=0x0502) - set(CMAKE_CXX_FLAGS "-mthreads ${CMAKE_CXX_FLAGS}") + target_compile_options(tbb_interface INTERFACE "-mthreads") endif () endif() @@ -187,7 +187,7 @@ if (NOT TBB_USE_GLIBCXX_VERSION AND UNIX AND NOT APPLE) endif() if (TBB_USE_GLIBCXX_VERSION) - add_definitions(-DTBB_USE_GLIBCXX_VERSION=${TBB_USE_GLIBCXX_VERSION}) + target_compile_definitions(tbb_interface INTERFACE TBB_USE_GLIBCXX_VERSION=${TBB_USE_GLIBCXX_VERSION}) endif() ##------- @@ -195,7 +195,7 @@ endif() if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") check_cxx_compiler_flag ("-flifetime-dse=1" SUPPORTS_FLIFETIME) if (SUPPORTS_FLIFETIME) - add_definitions(-flifetime-dse=1) + target_compile_options(tbb_interface INTERFACE "-flifetime-dse=1") endif() endif() @@ -251,6 +251,7 @@ add_custom_target(tbb_def_files DEPENDS tbb.def tbbmalloc.def) # TBB library if (TBB_BUILD_STATIC) add_library(tbb_static STATIC ${tbb_src}) + target_link_libraries(tbb_static PRIVATE tbb_interface) target_include_directories(tbb_static INTERFACE "$" "$") set_property(TARGET tbb_static APPEND PROPERTY COMPILE_DEFINITIONS "__TBB_BUILD=1") set_property(TARGET tbb_static APPEND PROPERTY COMPILE_DEFINITIONS "__TBB_DYNAMIC_LOAD_ENABLED=0") @@ -268,6 +269,7 @@ endif() if (TBB_BUILD_SHARED) add_library(tbb SHARED ${tbb_src}) + target_link_libraries(tbb PRIVATE tbb_interface) target_include_directories(tbb INTERFACE "$" "$") set_property(TARGET tbb APPEND PROPERTY COMPILE_DEFINITIONS "__TBB_BUILD=1") set_property(TARGET tbb APPEND_STRING PROPERTY COMPILE_FLAGS ${ENABLE_RTTI}) @@ -312,6 +314,7 @@ if(TBB_BUILD_TBBMALLOC) # TBB malloc library if (TBB_BUILD_STATIC) add_library(tbbmalloc_static STATIC ${tbbmalloc_static_src}) + target_link_libraries(tbbmalloc_static PRIVATE tbb_interface) set_property(TARGET tbbmalloc_static APPEND PROPERTY COMPILE_DEFINITIONS "__TBBMALLOC_BUILD=1") set_property(TARGET tbbmalloc_static APPEND PROPERTY COMPILE_DEFINITIONS "__TBB_DYNAMIC_LOAD_ENABLED=0") set_property(TARGET tbbmalloc_static APPEND PROPERTY COMPILE_DEFINITIONS "__TBB_SOURCE_DIRECTLY_INCLUDED=1") @@ -324,6 +327,7 @@ if(TBB_BUILD_TBBMALLOC) if (TBB_BUILD_SHARED) add_library(tbbmalloc SHARED ${tbbmalloc_src}) + target_link_libraries(tbbmalloc PRIVATE tbb_interface) set_property(TARGET tbbmalloc APPEND PROPERTY COMPILE_DEFINITIONS "__TBBMALLOC_BUILD=1") set_property(TARGET tbbmalloc APPEND_STRING PROPERTY COMPILE_FLAGS ${DISABLE_RTTI}) add_dependencies(tbbmalloc tbb_def_files) @@ -354,6 +358,7 @@ if(TBB_BUILD_TBBMALLOC_PROXY) # TBB malloc proxy library if (TBB_BUILD_STATIC) add_library(tbbmalloc_proxy_static STATIC ${tbbmalloc_proxy_src}) + target_link_libraries(tbbmalloc_proxy_static PRIVATE tbb_interface) set_property(TARGET tbbmalloc_proxy_static APPEND PROPERTY COMPILE_DEFINITIONS "__TBBMALLOC_BUILD=1") set_property(TARGET tbbmalloc_proxy_static APPEND PROPERTY COMPILE_DEFINITIONS "__TBB_DYNAMIC_LOAD_ENABLED=0") set_property(TARGET tbbmalloc_proxy_static APPEND PROPERTY COMPILE_DEFINITIONS "__TBB_SOURCE_DIRECTLY_INCLUDED=1") @@ -363,6 +368,7 @@ if(TBB_BUILD_TBBMALLOC_PROXY) if (TBB_BUILD_SHARED) add_library(tbbmalloc_proxy SHARED ${tbbmalloc_proxy_src}) + target_link_libraries(tbbmalloc_proxy PRIVATE tbb_interface) set_property(TARGET tbbmalloc_proxy APPEND PROPERTY COMPILE_DEFINITIONS "__TBBMALLOC_BUILD=1") set_property(TARGET tbbmalloc_proxy APPEND_STRING PROPERTY COMPILE_FLAGS ${DISABLE_RTTI}) target_link_libraries(tbbmalloc_proxy PUBLIC tbbmalloc) @@ -415,6 +421,7 @@ if (TBB_BUILD_TESTS) macro (tbb_add_test testname) set (full_testname tbb_test_${testname}) add_executable (${full_testname} src/test/test_${testname}.cpp) + target_link_libraries(${full_testname} PRIVATE tbb_interface) if (TBB_BUILD_SHARED) target_link_libraries (${full_testname} PRIVATE tbb tbbmalloc) target_compile_definitions (${full_testname} PRIVATE __TBB_LIB_NAME=tbb)