1CMAKE_MINIMUM_REQUIRED(VERSION 3.5 FATAL_ERROR) 2 3# ---[ Setup project 4PROJECT( 5 cpuinfo 6 LANGUAGES C CXX 7 ) 8 9# ---[ Options. 10SET(CPUINFO_LIBRARY_TYPE "default" CACHE STRING "Type of cpuinfo library (shared, static, or default) to build") 11SET_PROPERTY(CACHE CPUINFO_LIBRARY_TYPE PROPERTY STRINGS default static shared) 12SET(CPUINFO_RUNTIME_TYPE "default" CACHE STRING "Type of runtime library (shared, static, or default) to use") 13SET_PROPERTY(CACHE CPUINFO_RUNTIME_TYPE PROPERTY STRINGS default static shared) 14SET(CPUINFO_LOG_LEVEL "default" CACHE STRING "Minimum logging level (info with lower severity will be ignored)") 15SET_PROPERTY(CACHE CPUINFO_LOG_LEVEL PROPERTY STRINGS default debug info warning error fatal none) 16OPTION(CPUINFO_BUILD_TOOLS "Build command-line tools" ON) 17OPTION(CPUINFO_BUILD_UNIT_TESTS "Build cpuinfo unit tests" ON) 18OPTION(CPUINFO_BUILD_MOCK_TESTS "Build cpuinfo mock tests" ON) 19OPTION(CPUINFO_BUILD_BENCHMARKS "Build cpuinfo micro-benchmarks" ON) 20OPTION(CPUINFO_BUILD_PKG_CONFIG "Build pkg-config manifest" ON) 21 22# ---[ CMake options 23INCLUDE(GNUInstallDirs) 24 25IF(CPUINFO_BUILD_UNIT_TESTS OR CPUINFO_BUILD_MOCK_TESTS) 26 ENABLE_TESTING() 27ENDIF() 28 29MACRO(CPUINFO_TARGET_ENABLE_C99 target) 30 SET_TARGET_PROPERTIES(${target} PROPERTIES 31 C_STANDARD 99 32 C_EXTENSIONS NO) 33ENDMACRO() 34 35MACRO(CPUINFO_TARGET_ENABLE_CXX11 target) 36 SET_TARGET_PROPERTIES(${target} PROPERTIES 37 CXX_STANDARD 11 38 CXX_EXTENSIONS NO) 39ENDMACRO() 40 41MACRO(CPUINFO_TARGET_RUNTIME_LIBRARY target) 42 IF(MSVC AND NOT CPUINFO_RUNTIME_TYPE STREQUAL "default") 43 IF(CPUINFO_RUNTIME_TYPE STREQUAL "shared") 44 TARGET_COMPILE_OPTIONS(${target} PRIVATE 45 "/MD$<$<CONFIG:Debug>:d>") 46 ELSEIF(CPUINFO_RUNTIME_TYPE STREQUAL "static") 47 TARGET_COMPILE_OPTIONS(${target} PRIVATE 48 "/MT$<$<CONFIG:Debug>:d>") 49 ENDIF() 50 ENDIF() 51ENDMACRO() 52 53# -- [ Determine target processor 54SET(CPUINFO_TARGET_PROCESSOR "${CMAKE_SYSTEM_PROCESSOR}") 55IF(IOS OR (CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_OSX_ARCHITECTURES MATCHES "^(x86_64|arm64)$")) 56 SET(CPUINFO_TARGET_PROCESSOR "${CMAKE_OSX_ARCHITECTURES}") 57ENDIF() 58 59# ---[ Build flags 60SET(CPUINFO_SUPPORTED_PLATFORM TRUE) 61IF(NOT CMAKE_SYSTEM_PROCESSOR) 62 IF(NOT IOS) 63 MESSAGE(WARNING 64 "Target processor architecture is not specified. " 65 "cpuinfo will compile, but cpuinfo_initialize() will always fail.") 66 SET(CPUINFO_SUPPORTED_PLATFORM FALSE) 67 ENDIF() 68ELSEIF(NOT CPUINFO_TARGET_PROCESSOR MATCHES "^(i[3-6]86|AMD64|x86(_64)?|armv[5-8].*|aarch64|arm64|ARM64)$") 69 MESSAGE(WARNING 70 "Target processor architecture \"${CPUINFO_TARGET_PROCESSOR}\" is not supported in cpuinfo. " 71 "cpuinfo will compile, but cpuinfo_initialize() will always fail.") 72 SET(CPUINFO_SUPPORTED_PLATFORM FALSE) 73ENDIF() 74 75IF(NOT CMAKE_SYSTEM_NAME) 76 MESSAGE(WARNING 77 "Target operating system is not specified. " 78 "cpuinfo will compile, but cpuinfo_initialize() will always fail.") 79 SET(CPUINFO_SUPPORTED_PLATFORM FALSE) 80ELSEIF(NOT CMAKE_SYSTEM_NAME MATCHES "^(Windows|CYGWIN|MSYS|Darwin|Linux|Android)$") 81 IF(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.14" AND NOT CMAKE_SYSTEM_NAME STREQUAL "iOS") 82 MESSAGE(WARNING 83 "Target operating system \"${CMAKE_SYSTEM_NAME}\" is not supported in cpuinfo. " 84 "cpuinfo will compile, but cpuinfo_initialize() will always fail.") 85 SET(CPUINFO_SUPPORTED_PLATFORM FALSE) 86 ENDIF() 87ENDIF() 88 89# ---[ Download deps 90SET(CONFU_DEPENDENCIES_SOURCE_DIR ${CMAKE_SOURCE_DIR}/deps 91 CACHE PATH "Confu-style dependencies source directory") 92SET(CONFU_DEPENDENCIES_BINARY_DIR ${CMAKE_BINARY_DIR}/deps 93 CACHE PATH "Confu-style dependencies binary directory") 94 95IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS) 96 IF(CPUINFO_SUPPORTED_PLATFORM AND NOT DEFINED GOOGLETEST_SOURCE_DIR) 97 MESSAGE(STATUS "Downloading Google Test to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest (define GOOGLETEST_SOURCE_DIR to avoid it)") 98 CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download/CMakeLists.txt") 99 EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" . 100 WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download") 101 EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build . 102 WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download") 103 SET(GOOGLETEST_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest" CACHE STRING "Google Test source directory") 104 ENDIF() 105ENDIF() 106 107IF(CPUINFO_BUILD_BENCHMARKS) 108 IF(CPUINFO_SUPPORTED_PLATFORM AND NOT DEFINED GOOGLEBENCHMARK_SOURCE_DIR) 109 MESSAGE(STATUS "Downloading Google Benchmark to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googlebenchmark (define GOOGLEBENCHMARK_SOURCE_DIR to avoid it)") 110 CONFIGURE_FILE(cmake/DownloadGoogleBenchmark.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googlebenchmark-download/CMakeLists.txt") 111 EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" . 112 WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googlebenchmark-download") 113 EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build . 114 WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googlebenchmark-download") 115 SET(GOOGLEBENCHMARK_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/googlebenchmark" CACHE STRING "Google Benchmark source directory") 116 ENDIF() 117ENDIF() 118 119# ---[ cpuinfo library 120SET(CPUINFO_SRCS 121 src/init.c 122 src/api.c 123 src/cache.c) 124 125IF(CPUINFO_SUPPORTED_PLATFORM) 126 IF(NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten" AND (CPUINFO_TARGET_PROCESSOR MATCHES "^(i[3-6]86|AMD64|x86(_64)?)$" OR IOS_ARCH MATCHES "^(i386|x86_64)$")) 127 LIST(APPEND CPUINFO_SRCS 128 src/x86/init.c 129 src/x86/info.c 130 src/x86/vendor.c 131 src/x86/uarch.c 132 src/x86/name.c 133 src/x86/topology.c 134 src/x86/isa.c 135 src/x86/cache/init.c 136 src/x86/cache/descriptor.c 137 src/x86/cache/deterministic.c) 138 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android") 139 LIST(APPEND CPUINFO_SRCS 140 src/x86/linux/init.c 141 src/x86/linux/cpuinfo.c) 142 ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") 143 LIST(APPEND CPUINFO_SRCS src/x86/mach/init.c) 144 ELSEIF(CMAKE_SYSTEM_NAME MATCHES "^(Windows|CYGWIN|MSYS)$") 145 LIST(APPEND CPUINFO_SRCS src/x86/windows/init.c) 146 ENDIF() 147 ELSEIF(CPUINFO_TARGET_PROCESSOR MATCHES "^(armv[5-8].*|aarch64|arm64)$" OR IOS_ARCH MATCHES "^(armv7.*|arm64.*)$") 148 LIST(APPEND CPUINFO_SRCS 149 src/arm/uarch.c 150 src/arm/cache.c) 151 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android") 152 LIST(APPEND CPUINFO_SRCS 153 src/arm/linux/init.c 154 src/arm/linux/cpuinfo.c 155 src/arm/linux/clusters.c 156 src/arm/linux/chipset.c 157 src/arm/linux/midr.c 158 src/arm/linux/hwcap.c) 159 IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^armv[5-8]") 160 LIST(APPEND CPUINFO_SRCS src/arm/linux/aarch32-isa.c) 161 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND ANDROID_ABI STREQUAL "armeabi") 162 SET_SOURCE_FILES_PROPERTIES(src/arm/linux/aarch32-isa.c PROPERTIES COMPILE_FLAGS -marm) 163 ENDIF() 164 ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)$") 165 LIST(APPEND CPUINFO_SRCS src/arm/linux/aarch64-isa.c) 166 ENDIF() 167 ELSEIF(IOS OR (CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CPUINFO_TARGET_PROCESSOR STREQUAL "arm64")) 168 LIST(APPEND CPUINFO_SRCS src/arm/mach/init.c) 169 ENDIF() 170 IF(CMAKE_SYSTEM_NAME STREQUAL "Android") 171 LIST(APPEND CPUINFO_SRCS 172 src/arm/android/properties.c) 173 ENDIF() 174 ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Windows" AND CPUINFO_TARGET_PROCESSOR STREQUAL "ARM64") 175 LIST(APPEND CPUINFO_SRCS src/arm/windows/init-by-logical-sys-info.c) 176 LIST(APPEND CPUINFO_SRCS src/arm/windows/init.c) 177 ENDIF() 178 179 IF(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") 180 LIST(APPEND CPUINFO_SRCS 181 src/emscripten/init.c) 182 ENDIF() 183 184 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android") 185 LIST(APPEND CPUINFO_SRCS 186 src/linux/smallfile.c 187 src/linux/multiline.c 188 src/linux/cpulist.c 189 src/linux/processors.c) 190 ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") 191 LIST(APPEND CPUINFO_SRCS src/mach/topology.c) 192 ENDIF() 193 194 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android") 195 SET(CMAKE_THREAD_PREFER_PTHREAD TRUE) 196 SET(THREADS_PREFER_PTHREAD_FLAG TRUE) 197 FIND_PACKAGE(Threads REQUIRED) 198 ENDIF() 199ENDIF() 200 201IF(CPUINFO_LIBRARY_TYPE STREQUAL "default") 202 ADD_LIBRARY(cpuinfo ${CPUINFO_SRCS}) 203ELSEIF(CPUINFO_LIBRARY_TYPE STREQUAL "shared") 204 ADD_LIBRARY(cpuinfo SHARED ${CPUINFO_SRCS}) 205ELSEIF(CPUINFO_LIBRARY_TYPE STREQUAL "static") 206 ADD_LIBRARY(cpuinfo STATIC ${CPUINFO_SRCS}) 207ELSE() 208 MESSAGE(FATAL_ERROR "Unsupported library type ${CPUINFO_LIBRARY_TYPE}") 209ENDIF() 210ADD_LIBRARY(cpuinfo_internals STATIC ${CPUINFO_SRCS}) 211CPUINFO_TARGET_ENABLE_C99(cpuinfo) 212CPUINFO_TARGET_ENABLE_C99(cpuinfo_internals) 213CPUINFO_TARGET_RUNTIME_LIBRARY(cpuinfo) 214IF(CMAKE_SYSTEM_NAME MATCHES "^(Windows|CYGWIN|MSYS)$") 215 # Target Windows 7+ API 216 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE _WIN32_WINNT=0x0601) 217 TARGET_COMPILE_DEFINITIONS(cpuinfo_internals PRIVATE _WIN32_WINNT=0x0601) 218ENDIF() 219SET_TARGET_PROPERTIES(cpuinfo PROPERTIES PUBLIC_HEADER include/cpuinfo.h) 220TARGET_INCLUDE_DIRECTORIES(cpuinfo BEFORE PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) 221TARGET_INCLUDE_DIRECTORIES(cpuinfo BEFORE PRIVATE src) 222TARGET_INCLUDE_DIRECTORIES(cpuinfo_internals BEFORE PUBLIC include src) 223IF(CPUINFO_LOG_LEVEL STREQUAL "default") 224 # default logging level: error (subject to change) 225 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE CPUINFO_LOG_LEVEL=2) 226ELSEIF(CPUINFO_LOG_LEVEL STREQUAL "debug") 227 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE CPUINFO_LOG_LEVEL=5) 228ELSEIF(CPUINFO_LOG_LEVEL STREQUAL "info") 229 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE CPUINFO_LOG_LEVEL=4) 230ELSEIF(CPUINFO_LOG_LEVEL STREQUAL "warning") 231 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE CPUINFO_LOG_LEVEL=3) 232ELSEIF(CPUINFO_LOG_LEVEL STREQUAL "error") 233 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE CPUINFO_LOG_LEVEL=2) 234ELSEIF(CPUINFO_LOG_LEVEL STREQUAL "fatal") 235 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE CPUINFO_LOG_LEVEL=1) 236ELSEIF(CPUINFO_LOG_LEVEL STREQUAL "none") 237 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE CPUINFO_LOG_LEVEL=0) 238ELSE() 239 MESSAGE(FATAL_ERROR "Unsupported logging level ${CPUINFO_LOG_LEVEL}") 240ENDIF() 241TARGET_COMPILE_DEFINITIONS(cpuinfo_internals PRIVATE CPUINFO_LOG_LEVEL=0) 242 243IF(CPUINFO_SUPPORTED_PLATFORM) 244 TARGET_COMPILE_DEFINITIONS(cpuinfo INTERFACE CPUINFO_SUPPORTED_PLATFORM=1) 245 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android") 246 TARGET_LINK_LIBRARIES(cpuinfo PUBLIC ${CMAKE_THREAD_LIBS_INIT}) 247 TARGET_LINK_LIBRARIES(cpuinfo_internals PUBLIC ${CMAKE_THREAD_LIBS_INIT}) 248 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE _GNU_SOURCE=1) 249 TARGET_COMPILE_DEFINITIONS(cpuinfo_internals PRIVATE _GNU_SOURCE=1) 250 ENDIF() 251ELSE() 252 TARGET_COMPILE_DEFINITIONS(cpuinfo INTERFACE CPUINFO_SUPPORTED_PLATFORM=0) 253ENDIF() 254 255# ---[ cpuinfo dependencies: clog 256IF(NOT DEFINED CLOG_SOURCE_DIR) 257 SET(CLOG_SOURCE_DIR "${PROJECT_SOURCE_DIR}/deps/clog") 258ENDIF() 259IF(NOT TARGET clog) 260 SET(CLOG_BUILD_TESTS OFF CACHE BOOL "") 261 SET(CLOG_RUNTIME_TYPE "${CPUINFO_RUNTIME_TYPE}" CACHE STRING "") 262 ADD_SUBDIRECTORY( 263 "${CLOG_SOURCE_DIR}") 264 # We build static version of clog but a dynamic library may indirectly depend on it 265 SET_PROPERTY(TARGET clog PROPERTY POSITION_INDEPENDENT_CODE ON) 266ENDIF() 267TARGET_LINK_LIBRARIES(cpuinfo PRIVATE clog) 268TARGET_LINK_LIBRARIES(cpuinfo_internals PRIVATE clog) 269 270ADD_LIBRARY(${PROJECT_NAME}::cpuinfo ALIAS cpuinfo) 271 272# support find_package(cpuinfo CONFIG) 273INCLUDE(CMakePackageConfigHelpers) 274GET_FILENAME_COMPONENT(CONFIG_FILE_PATH ${CMAKE_CURRENT_BINARY_DIR}/cpuinfo-config.cmake ABSOLUTE) 275CONFIGURE_PACKAGE_CONFIG_FILE( 276 cmake/cpuinfo-config.cmake.in ${CONFIG_FILE_PATH} 277 INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}) 278INSTALL(FILES ${CONFIG_FILE_PATH} 279 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}) # cpuinfo_DIR ${prefix}/share/cpuinfo 280 281INSTALL(TARGETS cpuinfo 282 EXPORT cpuinfo-targets 283 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} 284 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} 285 PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) 286 287INSTALL(EXPORT cpuinfo-targets 288 NAMESPACE ${PROJECT_NAME}:: # IMPORTED cpuinfo::cpuinfo, cpuinfo::clog 289 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}) 290 291# ---[ cpuinfo micro-benchmarks 292IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_BENCHMARKS) 293 # ---[ Build google benchmark 294 IF(NOT TARGET benchmark) 295 SET(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "") 296 ADD_SUBDIRECTORY( 297 "${GOOGLEBENCHMARK_SOURCE_DIR}" 298 "${CONFU_DEPENDENCIES_BINARY_DIR}/googlebenchmark") 299 ENDIF() 300 301 IF(CMAKE_SYSTEM_NAME MATCHES "^(Linux|Android)$") 302 ADD_EXECUTABLE(get-current-bench bench/get-current.cc) 303 TARGET_LINK_LIBRARIES(get-current-bench cpuinfo benchmark) 304 ENDIF() 305 306 ADD_EXECUTABLE(init-bench bench/init.cc) 307 TARGET_LINK_LIBRARIES(init-bench cpuinfo benchmark) 308ENDIF() 309 310IF(CPUINFO_SUPPORTED_PLATFORM) 311 IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS) 312 # ---[ Build google test 313 IF(NOT TARGET gtest) 314 IF(MSVC AND NOT CPUINFO_RUNTIME_TYPE STREQUAL "static") 315 SET(gtest_force_shared_crt ON CACHE BOOL "" FORCE) 316 ENDIF() 317 ADD_SUBDIRECTORY( 318 "${GOOGLETEST_SOURCE_DIR}" 319 "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest") 320 ENDIF() 321 ENDIF() 322ENDIF() 323 324# ---[ cpuinfo mock library and mock tests 325IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_MOCK_TESTS) 326 SET(CPUINFO_MOCK_SRCS "${CPUINFO_SRCS}") 327 IF(CPUINFO_TARGET_PROCESSOR MATCHES "^(i[3-6]86|AMD64|x86(_64)?)$") 328 LIST(APPEND CPUINFO_MOCK_SRCS src/x86/mockcpuid.c) 329 ENDIF() 330 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android") 331 LIST(APPEND CPUINFO_MOCK_SRCS src/linux/mockfile.c) 332 ENDIF() 333 334 ADD_LIBRARY(cpuinfo_mock STATIC ${CPUINFO_MOCK_SRCS}) 335 CPUINFO_TARGET_ENABLE_C99(cpuinfo_mock) 336 CPUINFO_TARGET_RUNTIME_LIBRARY(cpuinfo_mock) 337 SET_TARGET_PROPERTIES(cpuinfo_mock PROPERTIES PUBLIC_HEADER include/cpuinfo.h) 338 TARGET_INCLUDE_DIRECTORIES(cpuinfo_mock BEFORE PUBLIC include) 339 TARGET_INCLUDE_DIRECTORIES(cpuinfo_mock BEFORE PRIVATE src) 340 TARGET_COMPILE_DEFINITIONS(cpuinfo_mock PUBLIC CPUINFO_MOCK=1) 341 TARGET_COMPILE_DEFINITIONS(cpuinfo_mock PRIVATE CLOG_LOG_TO_STDIO=1) 342 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android") 343 TARGET_LINK_LIBRARIES(cpuinfo_mock PUBLIC ${CMAKE_THREAD_LIBS_INIT}) 344 TARGET_COMPILE_DEFINITIONS(cpuinfo_mock PRIVATE _GNU_SOURCE=1) 345 ENDIF() 346 TARGET_LINK_LIBRARIES(cpuinfo_mock PRIVATE clog) 347 348 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7-a)$") 349 ADD_EXECUTABLE(atm7029b-tablet-test test/mock/atm7029b-tablet.cc) 350 TARGET_INCLUDE_DIRECTORIES(atm7029b-tablet-test BEFORE PRIVATE test/mock) 351 TARGET_LINK_LIBRARIES(atm7029b-tablet-test PRIVATE cpuinfo_mock gtest) 352 ADD_TEST(NAME atm7029b-tablet-test COMMAND atm7029b-tablet-test) 353 354 ADD_EXECUTABLE(blu-r1-hd-test test/mock/blu-r1-hd.cc) 355 TARGET_INCLUDE_DIRECTORIES(blu-r1-hd-test BEFORE PRIVATE test/mock) 356 TARGET_LINK_LIBRARIES(blu-r1-hd-test PRIVATE cpuinfo_mock gtest) 357 ADD_TEST(NAME blu-r1-hd-test COMMAND blu-r1-hd-test) 358 359 ADD_EXECUTABLE(galaxy-a3-2016-eu-test test/mock/galaxy-a3-2016-eu.cc) 360 TARGET_INCLUDE_DIRECTORIES(galaxy-a3-2016-eu-test BEFORE PRIVATE test/mock) 361 TARGET_LINK_LIBRARIES(galaxy-a3-2016-eu-test PRIVATE cpuinfo_mock gtest) 362 ADD_TEST(NAME galaxy-a3-2016-eu-test COMMAND galaxy-a3-2016-eu-test) 363 364 ADD_EXECUTABLE(galaxy-a8-2016-duos-test test/mock/galaxy-a8-2016-duos.cc) 365 TARGET_INCLUDE_DIRECTORIES(galaxy-a8-2016-duos-test BEFORE PRIVATE test/mock) 366 TARGET_LINK_LIBRARIES(galaxy-a8-2016-duos-test PRIVATE cpuinfo_mock gtest) 367 ADD_TEST(NAME galaxy-a8-2016-duos-test COMMAND galaxy-a8-2016-duos-test) 368 369 ADD_EXECUTABLE(galaxy-grand-prime-value-edition-test test/mock/galaxy-grand-prime-value-edition.cc) 370 TARGET_INCLUDE_DIRECTORIES(galaxy-grand-prime-value-edition-test BEFORE PRIVATE test/mock) 371 TARGET_LINK_LIBRARIES(galaxy-grand-prime-value-edition-test PRIVATE cpuinfo_mock gtest) 372 ADD_TEST(NAME galaxy-grand-prime-value-edition-test COMMAND galaxy-grand-prime-value-edition-test) 373 374 ADD_EXECUTABLE(galaxy-j1-2016-test test/mock/galaxy-j1-2016.cc) 375 TARGET_INCLUDE_DIRECTORIES(galaxy-j1-2016-test BEFORE PRIVATE test/mock) 376 TARGET_LINK_LIBRARIES(galaxy-j1-2016-test PRIVATE cpuinfo_mock gtest) 377 ADD_TEST(NAME galaxy-j1-2016-test COMMAND galaxy-j1-2016-test) 378 379 ADD_EXECUTABLE(galaxy-j5-test test/mock/galaxy-j5.cc) 380 TARGET_INCLUDE_DIRECTORIES(galaxy-j5-test BEFORE PRIVATE test/mock) 381 TARGET_LINK_LIBRARIES(galaxy-j5-test PRIVATE cpuinfo_mock gtest) 382 ADD_TEST(NAME galaxy-j5-test COMMAND galaxy-j5-test) 383 384 ADD_EXECUTABLE(galaxy-j7-prime-test test/mock/galaxy-j7-prime.cc) 385 TARGET_INCLUDE_DIRECTORIES(galaxy-j7-prime-test BEFORE PRIVATE test/mock) 386 TARGET_LINK_LIBRARIES(galaxy-j7-prime-test PRIVATE cpuinfo_mock gtest) 387 ADD_TEST(NAME galaxy-j7-prime-test COMMAND galaxy-j7-prime-test) 388 389 ADD_EXECUTABLE(galaxy-j7-tmobile-test test/mock/galaxy-j7-tmobile.cc) 390 TARGET_INCLUDE_DIRECTORIES(galaxy-j7-tmobile-test BEFORE PRIVATE test/mock) 391 TARGET_LINK_LIBRARIES(galaxy-j7-tmobile-test PRIVATE cpuinfo_mock gtest) 392 ADD_TEST(NAME galaxy-j7-tmobile-test COMMAND galaxy-j7-tmobile-test) 393 394 ADD_EXECUTABLE(galaxy-j7-uae-test test/mock/galaxy-j7-uae.cc) 395 TARGET_INCLUDE_DIRECTORIES(galaxy-j7-uae-test BEFORE PRIVATE test/mock) 396 TARGET_LINK_LIBRARIES(galaxy-j7-uae-test PRIVATE cpuinfo_mock gtest) 397 ADD_TEST(NAME galaxy-j7-uae-test COMMAND galaxy-j7-uae-test) 398 399 ADD_EXECUTABLE(galaxy-s3-us-test test/mock/galaxy-s3-us.cc) 400 TARGET_INCLUDE_DIRECTORIES(galaxy-s3-us-test BEFORE PRIVATE test/mock) 401 TARGET_LINK_LIBRARIES(galaxy-s3-us-test PRIVATE cpuinfo_mock gtest) 402 ADD_TEST(NAME galaxy-s3-us-test COMMAND galaxy-s3-us-test) 403 404 ADD_EXECUTABLE(galaxy-s4-us-test test/mock/galaxy-s4-us.cc) 405 TARGET_INCLUDE_DIRECTORIES(galaxy-s4-us-test BEFORE PRIVATE test/mock) 406 TARGET_LINK_LIBRARIES(galaxy-s4-us-test PRIVATE cpuinfo_mock gtest) 407 ADD_TEST(NAME galaxy-s4-us-test COMMAND galaxy-s4-us-test) 408 409 ADD_EXECUTABLE(galaxy-s5-global-test test/mock/galaxy-s5-global.cc) 410 TARGET_INCLUDE_DIRECTORIES(galaxy-s5-global-test BEFORE PRIVATE test/mock) 411 TARGET_LINK_LIBRARIES(galaxy-s5-global-test PRIVATE cpuinfo_mock gtest) 412 ADD_TEST(NAME galaxy-s5-global-test COMMAND galaxy-s5-global-test) 413 414 ADD_EXECUTABLE(galaxy-s5-us-test test/mock/galaxy-s5-us.cc) 415 TARGET_INCLUDE_DIRECTORIES(galaxy-s5-us-test BEFORE PRIVATE test/mock) 416 TARGET_LINK_LIBRARIES(galaxy-s5-us-test PRIVATE cpuinfo_mock gtest) 417 ADD_TEST(NAME galaxy-s5-us-test COMMAND galaxy-s5-us-test) 418 419 ADD_EXECUTABLE(galaxy-tab-3-7.0-test test/mock/galaxy-tab-3-7.0.cc) 420 TARGET_INCLUDE_DIRECTORIES(galaxy-tab-3-7.0-test BEFORE PRIVATE test/mock) 421 TARGET_LINK_LIBRARIES(galaxy-tab-3-7.0-test PRIVATE cpuinfo_mock gtest) 422 ADD_TEST(NAME galaxy-tab-3-7.0-test COMMAND galaxy-tab-3-7.0-test) 423 424 ADD_EXECUTABLE(galaxy-tab-3-lite-test test/mock/galaxy-tab-3-lite.cc) 425 TARGET_INCLUDE_DIRECTORIES(galaxy-tab-3-lite-test BEFORE PRIVATE test/mock) 426 TARGET_LINK_LIBRARIES(galaxy-tab-3-lite-test PRIVATE cpuinfo_mock gtest) 427 ADD_TEST(NAME galaxy-tab-3-lite-test COMMAND galaxy-tab-3-lite-test) 428 429 ADD_EXECUTABLE(galaxy-win-duos-test test/mock/galaxy-win-duos.cc) 430 TARGET_INCLUDE_DIRECTORIES(galaxy-win-duos-test BEFORE PRIVATE test/mock) 431 TARGET_LINK_LIBRARIES(galaxy-win-duos-test PRIVATE cpuinfo_mock gtest) 432 ADD_TEST(NAME galaxy-win-duos-test COMMAND galaxy-win-duos-test) 433 434 ADD_EXECUTABLE(huawei-ascend-p7-test test/mock/huawei-ascend-p7.cc) 435 TARGET_INCLUDE_DIRECTORIES(huawei-ascend-p7-test BEFORE PRIVATE test/mock) 436 TARGET_LINK_LIBRARIES(huawei-ascend-p7-test PRIVATE cpuinfo_mock gtest) 437 ADD_TEST(NAME huawei-ascend-p7-test COMMAND huawei-ascend-p7-test) 438 439 ADD_EXECUTABLE(huawei-honor-6-test test/mock/huawei-honor-6.cc) 440 TARGET_INCLUDE_DIRECTORIES(huawei-honor-6-test BEFORE PRIVATE test/mock) 441 TARGET_LINK_LIBRARIES(huawei-honor-6-test PRIVATE cpuinfo_mock gtest) 442 ADD_TEST(NAME huawei-honor-6-test COMMAND huawei-honor-6-test) 443 444 ADD_EXECUTABLE(lenovo-a6600-plus-test test/mock/lenovo-a6600-plus.cc) 445 TARGET_INCLUDE_DIRECTORIES(lenovo-a6600-plus-test BEFORE PRIVATE test/mock) 446 TARGET_LINK_LIBRARIES(lenovo-a6600-plus-test PRIVATE cpuinfo_mock gtest) 447 ADD_TEST(NAME lenovo-a6600-plus-test COMMAND lenovo-a6600-plus-test) 448 449 ADD_EXECUTABLE(lenovo-vibe-x2-test test/mock/lenovo-vibe-x2.cc) 450 TARGET_INCLUDE_DIRECTORIES(lenovo-vibe-x2-test BEFORE PRIVATE test/mock) 451 TARGET_LINK_LIBRARIES(lenovo-vibe-x2-test PRIVATE cpuinfo_mock gtest) 452 ADD_TEST(NAME lenovo-vibe-x2-test COMMAND lenovo-vibe-x2-test) 453 454 ADD_EXECUTABLE(lg-k10-eu-test test/mock/lg-k10-eu.cc) 455 TARGET_INCLUDE_DIRECTORIES(lg-k10-eu-test BEFORE PRIVATE test/mock) 456 TARGET_LINK_LIBRARIES(lg-k10-eu-test PRIVATE cpuinfo_mock gtest) 457 ADD_TEST(NAME lg-k10-eu-test COMMAND lg-k10-eu-test) 458 459 ADD_EXECUTABLE(lg-optimus-g-pro-test test/mock/lg-optimus-g-pro.cc) 460 TARGET_INCLUDE_DIRECTORIES(lg-optimus-g-pro-test BEFORE PRIVATE test/mock) 461 TARGET_LINK_LIBRARIES(lg-optimus-g-pro-test PRIVATE cpuinfo_mock gtest) 462 ADD_TEST(NAME lg-optimus-g-pro-test COMMAND lg-optimus-g-pro-test) 463 464 ADD_EXECUTABLE(moto-e-gen1-test test/mock/moto-e-gen1.cc) 465 TARGET_INCLUDE_DIRECTORIES(moto-e-gen1-test BEFORE PRIVATE test/mock) 466 TARGET_LINK_LIBRARIES(moto-e-gen1-test PRIVATE cpuinfo_mock gtest) 467 ADD_TEST(NAME moto-e-gen1-test COMMAND moto-e-gen1-test) 468 469 ADD_EXECUTABLE(moto-g-gen1-test test/mock/moto-g-gen1.cc) 470 TARGET_INCLUDE_DIRECTORIES(moto-g-gen1-test BEFORE PRIVATE test/mock) 471 TARGET_LINK_LIBRARIES(moto-g-gen1-test PRIVATE cpuinfo_mock gtest) 472 ADD_TEST(NAME moto-g-gen1-test COMMAND moto-g-gen1-test) 473 474 ADD_EXECUTABLE(moto-g-gen2-test test/mock/moto-g-gen2.cc) 475 TARGET_INCLUDE_DIRECTORIES(moto-g-gen2-test BEFORE PRIVATE test/mock) 476 TARGET_LINK_LIBRARIES(moto-g-gen2-test PRIVATE cpuinfo_mock gtest) 477 ADD_TEST(NAME moto-g-gen2-test COMMAND moto-g-gen2-test) 478 479 ADD_EXECUTABLE(moto-g-gen3-test test/mock/moto-g-gen3.cc) 480 TARGET_INCLUDE_DIRECTORIES(moto-g-gen3-test BEFORE PRIVATE test/mock) 481 TARGET_LINK_LIBRARIES(moto-g-gen3-test PRIVATE cpuinfo_mock gtest) 482 ADD_TEST(NAME moto-g-gen3-test COMMAND moto-g-gen3-test) 483 484 ADD_EXECUTABLE(moto-g-gen4-test test/mock/moto-g-gen4.cc) 485 TARGET_INCLUDE_DIRECTORIES(moto-g-gen4-test BEFORE PRIVATE test/mock) 486 TARGET_LINK_LIBRARIES(moto-g-gen4-test PRIVATE cpuinfo_mock gtest) 487 ADD_TEST(NAME moto-g-gen4-test COMMAND moto-g-gen4-test) 488 489 ADD_EXECUTABLE(moto-g-gen5-test test/mock/moto-g-gen5.cc) 490 TARGET_INCLUDE_DIRECTORIES(moto-g-gen5-test BEFORE PRIVATE test/mock) 491 TARGET_LINK_LIBRARIES(moto-g-gen5-test PRIVATE cpuinfo_mock gtest) 492 ADD_TEST(NAME moto-g-gen5-test COMMAND moto-g-gen5-test) 493 494 ADD_EXECUTABLE(nexus-s-test test/mock/nexus-s.cc) 495 TARGET_INCLUDE_DIRECTORIES(nexus-s-test BEFORE PRIVATE test/mock) 496 TARGET_LINK_LIBRARIES(nexus-s-test PRIVATE cpuinfo_mock gtest) 497 ADD_TEST(NAME nexus-s-test COMMAND nexus-s-test) 498 499 ADD_EXECUTABLE(nexus4-test test/mock/nexus4.cc) 500 TARGET_INCLUDE_DIRECTORIES(nexus4-test BEFORE PRIVATE test/mock) 501 TARGET_LINK_LIBRARIES(nexus4-test PRIVATE cpuinfo_mock gtest) 502 ADD_TEST(NAME nexus4-test COMMAND nexus4-test) 503 504 ADD_EXECUTABLE(nexus6-test test/mock/nexus6.cc) 505 TARGET_INCLUDE_DIRECTORIES(nexus6-test BEFORE PRIVATE test/mock) 506 TARGET_LINK_LIBRARIES(nexus6-test PRIVATE cpuinfo_mock gtest) 507 ADD_TEST(NAME nexus6-test COMMAND nexus6-test) 508 509 ADD_EXECUTABLE(nexus10-test test/mock/nexus10.cc) 510 TARGET_INCLUDE_DIRECTORIES(nexus10-test BEFORE PRIVATE test/mock) 511 TARGET_LINK_LIBRARIES(nexus10-test PRIVATE cpuinfo_mock gtest) 512 ADD_TEST(NAME nexus10-test COMMAND nexus10-test) 513 514 ADD_EXECUTABLE(padcod-10.1-test test/mock/padcod-10.1.cc) 515 TARGET_INCLUDE_DIRECTORIES(padcod-10.1-test BEFORE PRIVATE test/mock) 516 TARGET_LINK_LIBRARIES(padcod-10.1-test PRIVATE cpuinfo_mock gtest) 517 ADD_TEST(NAME padcod-10.1-test COMMAND padcod-10.1-test) 518 519 ADD_EXECUTABLE(xiaomi-redmi-2a-test test/mock/xiaomi-redmi-2a.cc) 520 TARGET_INCLUDE_DIRECTORIES(xiaomi-redmi-2a-test BEFORE PRIVATE test/mock) 521 TARGET_LINK_LIBRARIES(xiaomi-redmi-2a-test PRIVATE cpuinfo_mock gtest) 522 ADD_TEST(NAME xiaomi-redmi-2a-test COMMAND xiaomi-redmi-2a-test) 523 524 ADD_EXECUTABLE(xperia-sl-test test/mock/xperia-sl.cc) 525 TARGET_INCLUDE_DIRECTORIES(xperia-sl-test BEFORE PRIVATE test/mock) 526 TARGET_LINK_LIBRARIES(xperia-sl-test PRIVATE cpuinfo_mock gtest) 527 ADD_TEST(NAME xperia-sl-test COMMAND xperia-sl-test) 528 ENDIF() 529 530 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7-a|aarch64)$") 531 ADD_EXECUTABLE(alcatel-revvl-test test/mock/alcatel-revvl.cc) 532 TARGET_INCLUDE_DIRECTORIES(alcatel-revvl-test BEFORE PRIVATE test/mock) 533 TARGET_LINK_LIBRARIES(alcatel-revvl-test PRIVATE cpuinfo_mock gtest) 534 ADD_TEST(NAME alcatel-revvl-test COMMAND alcatel-revvl-test) 535 536 ADD_EXECUTABLE(galaxy-a8-2018-test test/mock/galaxy-a8-2018.cc) 537 TARGET_INCLUDE_DIRECTORIES(galaxy-a8-2018-test BEFORE PRIVATE test/mock) 538 TARGET_LINK_LIBRARIES(galaxy-a8-2018-test PRIVATE cpuinfo_mock gtest) 539 ADD_TEST(NAME galaxy-a8-2018-test COMMAND galaxy-a8-2018-test) 540 541 ADD_EXECUTABLE(galaxy-c9-pro-test test/mock/galaxy-c9-pro.cc) 542 TARGET_INCLUDE_DIRECTORIES(galaxy-c9-pro-test BEFORE PRIVATE test/mock) 543 TARGET_LINK_LIBRARIES(galaxy-c9-pro-test PRIVATE cpuinfo_mock gtest) 544 ADD_TEST(NAME galaxy-c9-pro-test COMMAND galaxy-c9-pro-test) 545 546 ADD_EXECUTABLE(galaxy-s6-test test/mock/galaxy-s6.cc) 547 TARGET_INCLUDE_DIRECTORIES(galaxy-s6-test BEFORE PRIVATE test/mock) 548 TARGET_LINK_LIBRARIES(galaxy-s6-test PRIVATE cpuinfo_mock gtest) 549 ADD_TEST(NAME galaxy-s6-test COMMAND galaxy-s6-test) 550 551 ADD_EXECUTABLE(galaxy-s7-us-test test/mock/galaxy-s7-us.cc) 552 TARGET_INCLUDE_DIRECTORIES(galaxy-s7-us-test BEFORE PRIVATE test/mock) 553 TARGET_LINK_LIBRARIES(galaxy-s7-us-test PRIVATE cpuinfo_mock gtest) 554 ADD_TEST(NAME galaxy-s7-us-test COMMAND galaxy-s7-us-test) 555 556 ADD_EXECUTABLE(galaxy-s7-global-test test/mock/galaxy-s7-global.cc) 557 TARGET_INCLUDE_DIRECTORIES(galaxy-s7-global-test BEFORE PRIVATE test/mock) 558 TARGET_LINK_LIBRARIES(galaxy-s7-global-test PRIVATE cpuinfo_mock gtest) 559 ADD_TEST(NAME galaxy-s7-global-test COMMAND galaxy-s7-global-test) 560 561 ADD_EXECUTABLE(galaxy-s8-us-test test/mock/galaxy-s8-us.cc) 562 TARGET_INCLUDE_DIRECTORIES(galaxy-s8-us-test BEFORE PRIVATE test/mock) 563 TARGET_LINK_LIBRARIES(galaxy-s8-us-test PRIVATE cpuinfo_mock gtest) 564 ADD_TEST(NAME galaxy-s8-us-test COMMAND galaxy-s8-us-test) 565 566 ADD_EXECUTABLE(galaxy-s8-global-test test/mock/galaxy-s8-global.cc) 567 TARGET_INCLUDE_DIRECTORIES(galaxy-s8-global-test BEFORE PRIVATE test/mock) 568 TARGET_LINK_LIBRARIES(galaxy-s8-global-test PRIVATE cpuinfo_mock gtest) 569 ADD_TEST(NAME galaxy-s8-global-test COMMAND galaxy-s8-global-test) 570 571 ADD_EXECUTABLE(galaxy-s9-us-test test/mock/galaxy-s9-us.cc) 572 TARGET_INCLUDE_DIRECTORIES(galaxy-s9-us-test BEFORE PRIVATE test/mock) 573 TARGET_LINK_LIBRARIES(galaxy-s9-us-test PRIVATE cpuinfo_mock gtest) 574 ADD_TEST(NAME galaxy-s9-us-test COMMAND galaxy-s9-us-test) 575 576 ADD_EXECUTABLE(galaxy-s9-global-test test/mock/galaxy-s9-global.cc) 577 TARGET_INCLUDE_DIRECTORIES(galaxy-s9-global-test BEFORE PRIVATE test/mock) 578 TARGET_LINK_LIBRARIES(galaxy-s9-global-test PRIVATE cpuinfo_mock gtest) 579 ADD_TEST(NAME galaxy-s9-global-test COMMAND galaxy-s9-global-test) 580 581 ADD_EXECUTABLE(huawei-mate-8-test test/mock/huawei-mate-8.cc) 582 TARGET_INCLUDE_DIRECTORIES(huawei-mate-8-test BEFORE PRIVATE test/mock) 583 TARGET_LINK_LIBRARIES(huawei-mate-8-test PRIVATE cpuinfo_mock gtest) 584 ADD_TEST(NAME huawei-mate-8-test COMMAND huawei-mate-8-test) 585 586 ADD_EXECUTABLE(huawei-mate-9-test test/mock/huawei-mate-9.cc) 587 TARGET_INCLUDE_DIRECTORIES(huawei-mate-9-test BEFORE PRIVATE test/mock) 588 TARGET_LINK_LIBRARIES(huawei-mate-9-test PRIVATE cpuinfo_mock gtest) 589 ADD_TEST(NAME huawei-mate-9-test COMMAND huawei-mate-9-test) 590 591 ADD_EXECUTABLE(huawei-mate-10-test test/mock/huawei-mate-10.cc) 592 TARGET_INCLUDE_DIRECTORIES(huawei-mate-10-test BEFORE PRIVATE test/mock) 593 TARGET_LINK_LIBRARIES(huawei-mate-10-test PRIVATE cpuinfo_mock gtest) 594 ADD_TEST(NAME huawei-mate-10-test COMMAND huawei-mate-10-test) 595 596 ADD_EXECUTABLE(huawei-mate-20-test test/mock/huawei-mate-20.cc) 597 TARGET_INCLUDE_DIRECTORIES(huawei-mate-20-test BEFORE PRIVATE test/mock) 598 TARGET_LINK_LIBRARIES(huawei-mate-20-test PRIVATE cpuinfo_mock gtest) 599 ADD_TEST(NAME huawei-mate-20-test COMMAND huawei-mate-20-test) 600 601 ADD_EXECUTABLE(huawei-p8-lite-test test/mock/huawei-p8-lite.cc) 602 TARGET_INCLUDE_DIRECTORIES(huawei-p8-lite-test BEFORE PRIVATE test/mock) 603 TARGET_LINK_LIBRARIES(huawei-p8-lite-test PRIVATE cpuinfo_mock gtest) 604 ADD_TEST(NAME huawei-p8-lite-test COMMAND huawei-p8-lite-test) 605 606 ADD_EXECUTABLE(huawei-p9-lite-test test/mock/huawei-p9-lite.cc) 607 TARGET_INCLUDE_DIRECTORIES(huawei-p9-lite-test BEFORE PRIVATE test/mock) 608 TARGET_LINK_LIBRARIES(huawei-p9-lite-test PRIVATE cpuinfo_mock gtest) 609 ADD_TEST(NAME huawei-p9-lite-test COMMAND huawei-p9-lite-test) 610 611 ADD_EXECUTABLE(huawei-p20-pro-test test/mock/huawei-p20-pro.cc) 612 TARGET_INCLUDE_DIRECTORIES(huawei-p20-pro-test BEFORE PRIVATE test/mock) 613 TARGET_LINK_LIBRARIES(huawei-p20-pro-test PRIVATE cpuinfo_mock gtest) 614 ADD_TEST(NAME huawei-p20-pro-test COMMAND huawei-p20-pro-test) 615 616 ADD_EXECUTABLE(iconia-one-10-test test/mock/iconia-one-10.cc) 617 TARGET_INCLUDE_DIRECTORIES(iconia-one-10-test BEFORE PRIVATE test/mock) 618 TARGET_LINK_LIBRARIES(iconia-one-10-test PRIVATE cpuinfo_mock gtest) 619 ADD_TEST(NAME iconia-one-10-test COMMAND iconia-one-10-test) 620 621 ADD_EXECUTABLE(meizu-pro-6-test test/mock/meizu-pro-6.cc) 622 TARGET_INCLUDE_DIRECTORIES(meizu-pro-6-test BEFORE PRIVATE test/mock) 623 TARGET_LINK_LIBRARIES(meizu-pro-6-test PRIVATE cpuinfo_mock gtest) 624 ADD_TEST(NAME meizu-pro-6-test COMMAND meizu-pro-6-test) 625 626 ADD_EXECUTABLE(meizu-pro-6s-test test/mock/meizu-pro-6s.cc) 627 TARGET_INCLUDE_DIRECTORIES(meizu-pro-6s-test BEFORE PRIVATE test/mock) 628 TARGET_LINK_LIBRARIES(meizu-pro-6s-test PRIVATE cpuinfo_mock gtest) 629 ADD_TEST(NAME meizu-pro-6s-test COMMAND meizu-pro-6s-test) 630 631 ADD_EXECUTABLE(meizu-pro-7-plus-test test/mock/meizu-pro-7-plus.cc) 632 TARGET_INCLUDE_DIRECTORIES(meizu-pro-7-plus-test BEFORE PRIVATE test/mock) 633 TARGET_LINK_LIBRARIES(meizu-pro-7-plus-test PRIVATE cpuinfo_mock gtest) 634 ADD_TEST(NAME meizu-pro-7-plus-test COMMAND meizu-pro-7-plus-test) 635 636 ADD_EXECUTABLE(nexus5x-test test/mock/nexus5x.cc) 637 TARGET_INCLUDE_DIRECTORIES(nexus5x-test BEFORE PRIVATE test/mock) 638 TARGET_LINK_LIBRARIES(nexus5x-test PRIVATE cpuinfo_mock gtest) 639 ADD_TEST(NAME nexus5x-test COMMAND nexus5x-test) 640 641 ADD_EXECUTABLE(nexus6p-test test/mock/nexus6p.cc) 642 TARGET_INCLUDE_DIRECTORIES(nexus6p-test BEFORE PRIVATE test/mock) 643 TARGET_LINK_LIBRARIES(nexus6p-test PRIVATE cpuinfo_mock gtest) 644 ADD_TEST(NAME nexus6p-test COMMAND nexus6p-test) 645 646 ADD_EXECUTABLE(nexus9-test test/mock/nexus9.cc) 647 TARGET_INCLUDE_DIRECTORIES(nexus9-test BEFORE PRIVATE test/mock) 648 TARGET_LINK_LIBRARIES(nexus9-test PRIVATE cpuinfo_mock gtest) 649 ADD_TEST(NAME nexus9-test COMMAND nexus9-test) 650 651 ADD_EXECUTABLE(oneplus-3t-test test/mock/oneplus-3t.cc) 652 TARGET_INCLUDE_DIRECTORIES(oneplus-3t-test BEFORE PRIVATE test/mock) 653 TARGET_LINK_LIBRARIES(oneplus-3t-test PRIVATE cpuinfo_mock gtest) 654 ADD_TEST(NAME oneplus-3t-test COMMAND oneplus-3t-test) 655 656 ADD_EXECUTABLE(oneplus-5-test test/mock/oneplus-5.cc) 657 TARGET_INCLUDE_DIRECTORIES(oneplus-5-test BEFORE PRIVATE test/mock) 658 TARGET_LINK_LIBRARIES(oneplus-5-test PRIVATE cpuinfo_mock gtest) 659 ADD_TEST(NAME oneplus-5-test COMMAND oneplus-5-test) 660 661 ADD_EXECUTABLE(oneplus-5t-test test/mock/oneplus-5t.cc) 662 TARGET_INCLUDE_DIRECTORIES(oneplus-5t-test BEFORE PRIVATE test/mock) 663 TARGET_LINK_LIBRARIES(oneplus-5t-test PRIVATE cpuinfo_mock gtest) 664 ADD_TEST(NAME oneplus-5t-test COMMAND oneplus-5t-test) 665 666 ADD_EXECUTABLE(oppo-a37-test test/mock/oppo-a37.cc) 667 TARGET_INCLUDE_DIRECTORIES(oppo-a37-test BEFORE PRIVATE test/mock) 668 TARGET_LINK_LIBRARIES(oppo-a37-test PRIVATE cpuinfo_mock gtest) 669 ADD_TEST(NAME oppo-a37-test COMMAND oppo-a37-test) 670 671 ADD_EXECUTABLE(oppo-r9-test test/mock/oppo-r9.cc) 672 TARGET_INCLUDE_DIRECTORIES(oppo-r9-test BEFORE PRIVATE test/mock) 673 TARGET_LINK_LIBRARIES(oppo-r9-test PRIVATE cpuinfo_mock gtest) 674 ADD_TEST(NAME oppo-r9-test COMMAND oppo-r9-test) 675 676 ADD_EXECUTABLE(oppo-r15-test test/mock/oppo-r15.cc) 677 TARGET_INCLUDE_DIRECTORIES(oppo-r15-test BEFORE PRIVATE test/mock) 678 TARGET_LINK_LIBRARIES(oppo-r15-test PRIVATE cpuinfo_mock gtest) 679 ADD_TEST(NAME oppo-r15-test COMMAND oppo-r15-test) 680 681 ADD_EXECUTABLE(pixel-test test/mock/pixel.cc) 682 TARGET_INCLUDE_DIRECTORIES(pixel-test BEFORE PRIVATE test/mock) 683 TARGET_LINK_LIBRARIES(pixel-test PRIVATE cpuinfo_mock gtest) 684 ADD_TEST(NAME pixel-test COMMAND pixel-test) 685 686 ADD_EXECUTABLE(pixel-c-test test/mock/pixel-c.cc) 687 TARGET_INCLUDE_DIRECTORIES(pixel-c-test BEFORE PRIVATE test/mock) 688 TARGET_LINK_LIBRARIES(pixel-c-test PRIVATE cpuinfo_mock gtest) 689 ADD_TEST(NAME pixel-c-test COMMAND pixel-c-test) 690 691 ADD_EXECUTABLE(pixel-xl-test test/mock/pixel-xl.cc) 692 TARGET_INCLUDE_DIRECTORIES(pixel-xl-test BEFORE PRIVATE test/mock) 693 TARGET_LINK_LIBRARIES(pixel-xl-test PRIVATE cpuinfo_mock gtest) 694 ADD_TEST(NAME pixel-xl-test COMMAND pixel-xl-test) 695 696 ADD_EXECUTABLE(pixel-2-xl-test test/mock/pixel-2-xl.cc) 697 TARGET_INCLUDE_DIRECTORIES(pixel-2-xl-test BEFORE PRIVATE test/mock) 698 TARGET_LINK_LIBRARIES(pixel-2-xl-test PRIVATE cpuinfo_mock gtest) 699 ADD_TEST(NAME pixel-2-xl-test COMMAND pixel-2-xl-test) 700 701 ADD_EXECUTABLE(xiaomi-mi-5c-test test/mock/xiaomi-mi-5c.cc) 702 TARGET_INCLUDE_DIRECTORIES(xiaomi-mi-5c-test BEFORE PRIVATE test/mock) 703 TARGET_LINK_LIBRARIES(xiaomi-mi-5c-test PRIVATE cpuinfo_mock gtest) 704 ADD_TEST(NAME xiaomi-mi-5c-test COMMAND xiaomi-mi-5c-test) 705 706 ADD_EXECUTABLE(xiaomi-redmi-note-3-test test/mock/xiaomi-redmi-note-3.cc) 707 TARGET_INCLUDE_DIRECTORIES(xiaomi-redmi-note-3-test BEFORE PRIVATE test/mock) 708 TARGET_LINK_LIBRARIES(xiaomi-redmi-note-3-test PRIVATE cpuinfo_mock gtest) 709 ADD_TEST(NAME xiaomi-redmi-note-3-test COMMAND xiaomi-redmi-note-3-test) 710 711 ADD_EXECUTABLE(xiaomi-redmi-note-4-test test/mock/xiaomi-redmi-note-4.cc) 712 TARGET_INCLUDE_DIRECTORIES(xiaomi-redmi-note-4-test BEFORE PRIVATE test/mock) 713 TARGET_LINK_LIBRARIES(xiaomi-redmi-note-4-test PRIVATE cpuinfo_mock gtest) 714 ADD_TEST(NAME xiaomi-redmi-note-4-test COMMAND xiaomi-redmi-note-4-test) 715 716 ADD_EXECUTABLE(xperia-c4-dual-test test/mock/xperia-c4-dual.cc) 717 TARGET_INCLUDE_DIRECTORIES(xperia-c4-dual-test BEFORE PRIVATE test/mock) 718 TARGET_LINK_LIBRARIES(xperia-c4-dual-test PRIVATE cpuinfo_mock gtest) 719 ADD_TEST(NAME xperia-c4-dual-test COMMAND xperia-c4-dual-test) 720 ENDIF() 721 722 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(i686|x86_64)$") 723 ADD_EXECUTABLE(alldocube-iwork8-test test/mock/alldocube-iwork8.cc) 724 TARGET_INCLUDE_DIRECTORIES(alldocube-iwork8-test BEFORE PRIVATE test/mock) 725 TARGET_LINK_LIBRARIES(alldocube-iwork8-test PRIVATE cpuinfo_mock gtest) 726 ADD_TEST(NAME alldocube-iwork8-test COMMAND alldocube-iwork8-test) 727 728 ADD_EXECUTABLE(leagoo-t5c-test test/mock/leagoo-t5c.cc) 729 TARGET_INCLUDE_DIRECTORIES(leagoo-t5c-test BEFORE PRIVATE test/mock) 730 TARGET_LINK_LIBRARIES(leagoo-t5c-test PRIVATE cpuinfo_mock gtest) 731 ADD_TEST(NAME leagoo-t5c-test COMMAND leagoo-t5c-test) 732 733 ADD_EXECUTABLE(memo-pad-7-test test/mock/memo-pad-7.cc) 734 TARGET_INCLUDE_DIRECTORIES(memo-pad-7-test BEFORE PRIVATE test/mock) 735 TARGET_LINK_LIBRARIES(memo-pad-7-test PRIVATE cpuinfo_mock gtest) 736 ADD_TEST(NAME memo-pad-7-test COMMAND memo-pad-7-test) 737 738 ADD_EXECUTABLE(zenfone-c-test test/mock/zenfone-c.cc) 739 TARGET_INCLUDE_DIRECTORIES(zenfone-c-test BEFORE PRIVATE test/mock) 740 TARGET_LINK_LIBRARIES(zenfone-c-test PRIVATE cpuinfo_mock gtest) 741 ADD_TEST(NAME zenfone-c-test COMMAND zenfone-c-test) 742 743 ADD_EXECUTABLE(zenfone-2-test test/mock/zenfone-2.cc) 744 TARGET_INCLUDE_DIRECTORIES(zenfone-2-test BEFORE PRIVATE test/mock) 745 TARGET_LINK_LIBRARIES(zenfone-2-test PRIVATE cpuinfo_mock gtest) 746 ADD_TEST(NAME zenfone-2-test COMMAND zenfone-2-test) 747 748 ADD_EXECUTABLE(zenfone-2e-test test/mock/zenfone-2e.cc) 749 TARGET_INCLUDE_DIRECTORIES(zenfone-2e-test BEFORE PRIVATE test/mock) 750 TARGET_LINK_LIBRARIES(zenfone-2e-test PRIVATE cpuinfo_mock gtest) 751 ADD_TEST(NAME zenfone-2e-test COMMAND zenfone-2e-test) 752 ENDIF() 753ENDIF() 754 755# ---[ cpuinfo unit tests 756IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_UNIT_TESTS) 757 ADD_EXECUTABLE(init-test test/init.cc) 758 CPUINFO_TARGET_ENABLE_CXX11(init-test) 759 CPUINFO_TARGET_RUNTIME_LIBRARY(init-test) 760 TARGET_LINK_LIBRARIES(init-test PRIVATE cpuinfo gtest gtest_main) 761 ADD_TEST(NAME init-test COMMAND init-test) 762 763 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android") 764 ADD_EXECUTABLE(get-current-test test/get-current.cc) 765 CPUINFO_TARGET_ENABLE_CXX11(get-current-test) 766 CPUINFO_TARGET_RUNTIME_LIBRARY(get-current-test) 767 TARGET_LINK_LIBRARIES(get-current-test PRIVATE cpuinfo gtest gtest_main) 768 ADD_TEST(NAME get-current-test COMMAND get-current-test) 769 ENDIF() 770 771 IF(CPUINFO_TARGET_PROCESSOR MATCHES "^(i[3-6]86|AMD64|x86(_64)?)$") 772 ADD_EXECUTABLE(brand-string-test test/name/brand-string.cc) 773 CPUINFO_TARGET_ENABLE_CXX11(brand-string-test) 774 CPUINFO_TARGET_RUNTIME_LIBRARY(brand-string-test) 775 TARGET_LINK_LIBRARIES(brand-string-test PRIVATE cpuinfo_internals gtest gtest_main) 776 ADD_TEST(NAME brand-string-test COMMAND brand-string-test) 777 ENDIF() 778 779 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv[5-8].*|aarch64)$") 780 ADD_LIBRARY(android_properties_interface STATIC test/name/android-properties-interface.c) 781 CPUINFO_TARGET_ENABLE_C99(android_properties_interface) 782 CPUINFO_TARGET_RUNTIME_LIBRARY(android_properties_interface) 783 TARGET_LINK_LIBRARIES(android_properties_interface PRIVATE cpuinfo_internals) 784 785 ADD_EXECUTABLE(chipset-test 786 test/name/proc-cpuinfo-hardware.cc 787 test/name/ro-product-board.cc 788 test/name/ro-board-platform.cc 789 test/name/ro-mediatek-platform.cc 790 test/name/ro-arch.cc 791 test/name/ro-chipname.cc 792 test/name/android-properties.cc) 793 CPUINFO_TARGET_ENABLE_CXX11(chipset-test) 794 CPUINFO_TARGET_RUNTIME_LIBRARY(chipset-test) 795 TARGET_LINK_LIBRARIES(chipset-test PRIVATE android_properties_interface gtest gtest_main) 796 ADD_TEST(NAME chipset-test COMMAND chipset-test) 797 798 ADD_EXECUTABLE(cache-test test/arm-cache.cc) 799 CPUINFO_TARGET_ENABLE_CXX11(cache-test) 800 CPUINFO_TARGET_RUNTIME_LIBRARY(cache-test) 801 TARGET_COMPILE_DEFINITIONS(cache-test PRIVATE __STDC_LIMIT_MACROS=1 __STDC_CONSTANT_MACROS=1) 802 TARGET_LINK_LIBRARIES(cache-test PRIVATE cpuinfo_internals gtest gtest_main) 803 ADD_TEST(NAME cache-test COMMAND cache-test) 804 ENDIF() 805ENDIF() 806 807# ---[ Helper and debug tools 808IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_TOOLS) 809 ADD_EXECUTABLE(isa-info tools/isa-info.c) 810 CPUINFO_TARGET_ENABLE_C99(isa-info) 811 CPUINFO_TARGET_RUNTIME_LIBRARY(isa-info) 812 TARGET_LINK_LIBRARIES(isa-info PRIVATE cpuinfo) 813 INSTALL(TARGETS isa-info RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 814 815 ADD_EXECUTABLE(cpu-info tools/cpu-info.c) 816 CPUINFO_TARGET_ENABLE_C99(cpu-info) 817 CPUINFO_TARGET_RUNTIME_LIBRARY(cpu-info) 818 TARGET_LINK_LIBRARIES(cpu-info PRIVATE cpuinfo) 819 INSTALL(TARGETS cpu-info RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 820 821 ADD_EXECUTABLE(cache-info tools/cache-info.c) 822 CPUINFO_TARGET_ENABLE_C99(cache-info) 823 CPUINFO_TARGET_RUNTIME_LIBRARY(cache-info) 824 TARGET_LINK_LIBRARIES(cache-info PRIVATE cpuinfo) 825 INSTALL(TARGETS cache-info RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 826 827 IF(CMAKE_SYSTEM_NAME MATCHES "^(Android|Linux)$" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv[5-8].*|aarch64)$") 828 ADD_EXECUTABLE(auxv-dump tools/auxv-dump.c) 829 CPUINFO_TARGET_ENABLE_C99(auxv-dump) 830 CPUINFO_TARGET_RUNTIME_LIBRARY(auxv-dump) 831 TARGET_LINK_LIBRARIES(auxv-dump PRIVATE ${CMAKE_DL_LIBS} cpuinfo) 832 833 ADD_EXECUTABLE(cpuinfo-dump tools/cpuinfo-dump.c) 834 CPUINFO_TARGET_ENABLE_C99(cpuinfo-dump) 835 CPUINFO_TARGET_RUNTIME_LIBRARY(cpuinfo-dump) 836 ENDIF() 837 838 IF(CPUINFO_TARGET_PROCESSOR MATCHES "^(i[3-6]86|AMD64|x86(_64)?)$") 839 ADD_EXECUTABLE(cpuid-dump tools/cpuid-dump.c) 840 CPUINFO_TARGET_ENABLE_C99(cpuid-dump) 841 CPUINFO_TARGET_RUNTIME_LIBRARY(cpuid-dump) 842 TARGET_INCLUDE_DIRECTORIES(cpuid-dump BEFORE PRIVATE src) 843 TARGET_INCLUDE_DIRECTORIES(cpuid-dump BEFORE PRIVATE include) 844 INSTALL(TARGETS cpuid-dump RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) 845 ENDIF() 846ENDIF() 847 848# ---[ pkg-config manifest. This is mostly from JsonCpp... 849IF(CPUINFO_BUILD_PKG_CONFIG) 850 851 FUNCTION(JOIN_PATHS joined_path first_path_segment) 852 SET(temp_path "${first_path_segment}") 853 FOREACH(current_segment IN LISTS ARGN) 854 IF(NOT ("${current_segment}" STREQUAL "")) 855 IF(IS_ABSOLUTE "${current_segment}") 856 SET(temp_path "${current_segment}") 857 ELSE() 858 SET(temp_path "${temp_path}/${current_segment}") 859 ENDIF() 860 ENDIF() 861 ENDFOREACH() 862 SET(${joined_path} "${temp_path}" PARENT_SCOPE) 863 ENDFUNCTION() 864 865 JOIN_PATHS(libdir_for_pc_file "\${exec_prefix}" "${CMAKE_INSTALL_LIBDIR}") 866 JOIN_PATHS(includedir_for_pc_file "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") 867 868 CONFIGURE_FILE( 869 "libcpuinfo.pc.in" 870 "libcpuinfo.pc" 871 @ONLY) 872 873 INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/libcpuinfo.pc" 874 DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") 875 876ENDIF() 877