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