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