aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorMarat Dukhan <marat@fb.com>2018-02-25 01:37:55 +0100
committerMarat Dukhan <marat@fb.com>2018-02-25 01:37:55 +0100
commitcddf01b6781c7bf2daa47571a9399b6e4318a7e9 (patch)
tree64ae6726f8f55c05a680f170190f3cc8e22870f7 /CMakeLists.txt
parentd416acffbf08bf12145e0e39de5ba24422ad08a6 (diff)
downloadcpuinfo-cddf01b6781c7bf2daa47571a9399b6e4318a7e9.tar.gz
Avoid changing global CMake variables
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt46
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()