diff options
author | Marat Dukhan <marat@fb.com> | 2018-02-25 01:37:55 +0100 |
---|---|---|
committer | Marat Dukhan <marat@fb.com> | 2018-02-25 01:37:55 +0100 |
commit | cddf01b6781c7bf2daa47571a9399b6e4318a7e9 (patch) | |
tree | 64ae6726f8f55c05a680f170190f3cc8e22870f7 /CMakeLists.txt | |
parent | d416acffbf08bf12145e0e39de5ba24422ad08a6 (diff) | |
download | cpuinfo-cddf01b6781c7bf2daa47571a9399b6e4318a7e9.tar.gz |
Avoid changing global CMake variables
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 46 |
1 files changed, 39 insertions, 7 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 2d5222a..7913f8f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,12 +18,31 @@ IF(CPUINFO_BUILD_UNIT_TESTS OR CPUINFO_BUILD_MOCK_TESTS) ENABLE_TESTING() ENDIF() -# ---[ Build flags -IF(NOT MSVC) - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") -ENDIF() +MACRO(CPUINFO_TARGET_ENABLE_C99 target) + IF(${CMAKE_VERSION} VERSION_LESS "3.1") + IF(NOT MSVC) + TARGET_COMPILE_OPTIONS(${target} PRIVATE -std=c99) + ENDIF() + ELSE() + SET_TARGET_PROPERTIES(${target} PROPERTIES + C_STANDARD 99 + C_EXTENSIONS NO) + ENDIF() +ENDMACRO() +MACRO(CPUINFO_TARGET_ENABLE_CXX11 target) + IF(${CMAKE_VERSION} VERSION_LESS "3.1") + IF(NOT MSVC) + TARGET_COMPILE_OPTIONS(${target} PRIVATE -std=c++11) + ENDIF() + ELSE() + SET_TARGET_PROPERTIES(${target} PROPERTIES + CXX_STANDARD 11 + CXX_EXTENSIONS NO) + ENDIF() +ENDMACRO() + +# ---[ Build flags IF(NOT CMAKE_SYSTEM_PROCESSOR) IF(NOT IOS) MESSAGE(FATAL_ERROR "CMAKE_SYSTEM_PROCESSOR not defined") @@ -159,6 +178,7 @@ ELSEIF(CPUINFO_LIBRARY_TYPE STREQUAL "static") ELSE() MESSAGE(FATAL_ERROR "Unsupported library type ${CPUINFO_LIBRARY_TYPE}") ENDIF() +CPUINFO_TARGET_ENABLE_C99(cpuinfo) SET_TARGET_PROPERTIES(cpuinfo PROPERTIES PUBLIC_HEADER include/cpuinfo.h) TARGET_INCLUDE_DIRECTORIES(cpuinfo PUBLIC include) TARGET_INCLUDE_DIRECTORIES(cpuinfo PRIVATE src) @@ -222,6 +242,7 @@ IF(CPUINFO_BUILD_MOCK_TESTS) ENDIF() ADD_LIBRARY(cpuinfo_mock STATIC ${CPUINFO_MOCK_SRCS}) + CPUINFO_TARGET_ENABLE_C99(cpuinfo_mock) SET_TARGET_PROPERTIES(cpuinfo_mock PROPERTIES PUBLIC_HEADER include/cpuinfo.h) TARGET_INCLUDE_DIRECTORIES(cpuinfo_mock PUBLIC include) TARGET_INCLUDE_DIRECTORIES(cpuinfo_mock PRIVATE src) @@ -578,23 +599,27 @@ ENDIF() # ---[ cpuinfo unit tests IF(CPUINFO_BUILD_UNIT_TESTS) ADD_EXECUTABLE(init-test test/init.cc) + CPUINFO_TARGET_ENABLE_CXX11(init-test) TARGET_LINK_LIBRARIES(init-test PRIVATE cpuinfo gtest) ADD_TEST(init-test init-test) IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android") ADD_EXECUTABLE(get-current-test test/get-current.cc) + CPUINFO_TARGET_ENABLE_CXX11(get-current-test) TARGET_LINK_LIBRARIES(get-current-test PRIVATE cpuinfo gtest) ADD_TEST(get-current-test get-current-test) ENDIF() IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i686|x86_64)$") ADD_EXECUTABLE(brand-string-test test/name/brand-string.cc) + CPUINFO_TARGET_ENABLE_CXX11(brand-string-test) TARGET_LINK_LIBRARIES(brand-string-test PRIVATE cpuinfo gtest gtest_main) ADD_TEST(brand-string-test brand-string-test) ENDIF() IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7-a|aarch64)$") - ADD_LIBRARY(android_properties_interface test/name/android-properties-interface.c) + ADD_LIBRARY(android_properties_interface STATIC test/name/android-properties-interface.c) + CPUINFO_TARGET_ENABLE_C99(android_properties_interface) TARGET_INCLUDE_DIRECTORIES(android_properties_interface PRIVATE src) TARGET_LINK_LIBRARIES(android_properties_interface PRIVATE cpuinfo) @@ -605,11 +630,13 @@ IF(CPUINFO_BUILD_UNIT_TESTS) test/name/ro-mediatek-platform.cc test/name/ro-chipname.cc test/name/android-properties.cc) + CPUINFO_TARGET_ENABLE_CXX11(chipset-test) TARGET_LINK_LIBRARIES(chipset-test PRIVATE android_properties_interface gtest gtest_main) ADD_TEST(chipset-test chipset-test) ADD_EXECUTABLE(cache-test test/arm-cache.cc) - TARGET_COMPILE_DEFINITIONS(cache-test PRIVATE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS) + CPUINFO_TARGET_ENABLE_CXX11(cache-test) + TARGET_COMPILE_DEFINITIONS(cache-test PRIVATE __STDC_LIMIT_MACROS=1 __STDC_CONSTANT_MACROS=1) TARGET_INCLUDE_DIRECTORIES(cache-test PRIVATE src) TARGET_LINK_LIBRARIES(cache-test PRIVATE cpuinfo gtest gtest_main) ADD_TEST(cache-test, cache-test) @@ -619,22 +646,27 @@ ENDIF() # ---[ Helper and debug tools IF(CPUINFO_BUILD_TOOLS) ADD_EXECUTABLE(isa-info tools/isa-info.c) + CPUINFO_TARGET_ENABLE_C99(isa-info) TARGET_LINK_LIBRARIES(isa-info PRIVATE cpuinfo) ADD_EXECUTABLE(cpu-info tools/cpu-info.c) + CPUINFO_TARGET_ENABLE_C99(cpu-info) TARGET_LINK_LIBRARIES(cpu-info PRIVATE cpuinfo) ADD_EXECUTABLE(cache-info tools/cache-info.c) + CPUINFO_TARGET_ENABLE_C99(cache-info) TARGET_LINK_LIBRARIES(cache-info PRIVATE cpuinfo) IF(CMAKE_SYSTEM_NAME MATCHES "^(Android|Linux)$" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7|armv7-a|armv7l|arm64|aarch64)$") ADD_EXECUTABLE(auxv-dump tools/auxv-dump.c) + CPUINFO_TARGET_ENABLE_C99(auxv-dump) TARGET_INCLUDE_DIRECTORIES(auxv-dump PRIVATE src) TARGET_INCLUDE_DIRECTORIES(auxv-dump PRIVATE include) ENDIF() IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i686|x86_64)$") ADD_EXECUTABLE(cpuid-dump tools/cpuid-dump.c) + CPUINFO_TARGET_ENABLE_C99(cpuid-dump) TARGET_INCLUDE_DIRECTORIES(cpuid-dump PRIVATE src) TARGET_INCLUDE_DIRECTORIES(cpuid-dump PRIVATE include) ENDIF() |