blob: e2d7d53279ea3c708eb6a094a47d9f0a66ac2646 [file] [log] [blame]
Ashkan Aliabadia7e10762020-12-15 18:28:20 -08001CMAKE_MINIMUM_REQUIRED(VERSION 3.5 FATAL_ERROR)
Marat Dukhan3645b922017-10-13 17:03:35 -04002
3# ---[ Project and semantic versioning.
Marat Dukhan63d41a52017-10-26 00:37:12 +00004PROJECT(cpuinfo C CXX)
Marat Dukhan3645b922017-10-13 17:03:35 -04005
6# ---[ Options.
Marat Dukhandaafc282018-01-31 23:55:05 -08007SET(CPUINFO_LIBRARY_TYPE "default" CACHE STRING "Type of cpuinfo library (shared, static, or default) to build")
8SET_PROPERTY(CACHE CPUINFO_LIBRARY_TYPE PROPERTY STRINGS default static shared)
Marat Dukhand0222b42018-03-26 11:19:48 -07009SET(CPUINFO_RUNTIME_TYPE "default" CACHE STRING "Type of runtime library (shared, static, or default) to use")
10SET_PROPERTY(CACHE CPUINFO_RUNTIME_TYPE PROPERTY STRINGS default static shared)
Marat Dukhan52b2c082018-12-16 02:34:43 -080011SET(CPUINFO_LOG_LEVEL "default" CACHE STRING "Minimum logging level (info with lower severity will be ignored)")
12SET_PROPERTY(CACHE CPUINFO_LOG_LEVEL PROPERTY STRINGS default debug info warning error fatal none)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -070013OPTION(CPUINFO_BUILD_TOOLS "Build command-line tools" ON)
Marat Dukhancc44bf32017-12-18 17:45:48 -080014OPTION(CPUINFO_BUILD_UNIT_TESTS "Build cpuinfo unit tests" ON)
15OPTION(CPUINFO_BUILD_MOCK_TESTS "Build cpuinfo mock tests" ON)
16OPTION(CPUINFO_BUILD_BENCHMARKS "Build cpuinfo micro-benchmarks" ON)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -070017
18# ---[ CMake options
Ashkan Aliabadia7e10762020-12-15 18:28:20 -080019INCLUDE(GNUInstallDirs)
20
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -070021IF(CPUINFO_BUILD_UNIT_TESTS OR CPUINFO_BUILD_MOCK_TESTS)
22 ENABLE_TESTING()
23ENDIF()
Marat Dukhan3645b922017-10-13 17:03:35 -040024
Marat Dukhancddf01b2018-02-25 01:37:55 +010025MACRO(CPUINFO_TARGET_ENABLE_C99 target)
Ashkan Aliabadia7e10762020-12-15 18:28:20 -080026 SET_TARGET_PROPERTIES(${target} PROPERTIES
27 C_STANDARD 99
28 C_EXTENSIONS NO)
Marat Dukhancddf01b2018-02-25 01:37:55 +010029ENDMACRO()
Marat Dukhan3645b922017-10-13 17:03:35 -040030
Marat Dukhancddf01b2018-02-25 01:37:55 +010031MACRO(CPUINFO_TARGET_ENABLE_CXX11 target)
Ashkan Aliabadia7e10762020-12-15 18:28:20 -080032 SET_TARGET_PROPERTIES(${target} PROPERTIES
33 CXX_STANDARD 11
34 CXX_EXTENSIONS NO)
Marat Dukhancddf01b2018-02-25 01:37:55 +010035ENDMACRO()
36
Marat Dukhand0222b42018-03-26 11:19:48 -070037MACRO(CPUINFO_TARGET_RUNTIME_LIBRARY target)
38 IF(MSVC AND NOT CPUINFO_RUNTIME_TYPE STREQUAL "default")
39 IF(CPUINFO_RUNTIME_TYPE STREQUAL "shared")
40 TARGET_COMPILE_OPTIONS(${target} PRIVATE
41 "/MD$<$<CONFIG:Debug>:d>")
42 ELSEIF(CPUINFO_RUNTIME_TYPE STREQUAL "static")
43 TARGET_COMPILE_OPTIONS(${target} PRIVATE
44 "/MT$<$<CONFIG:Debug>:d>")
45 ENDIF()
46 ENDIF()
47ENDMACRO()
48
Nikita Shulga59162732020-12-17 12:05:37 -080049# -- [ Determine target processor
50SET(CPUINFO_TARGET_PROCESSOR "${CMAKE_SYSTEM_PROCESSOR}")
51IF(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_OSX_ARCHITECTURES MATCHES "^(x86_64|arm64)$")
52 SET(CPUINFO_TARGET_PROCESSOR "${CMAKE_OSX_ARCHITECTURES}")
53ENDIF()
54
Marat Dukhancddf01b2018-02-25 01:37:55 +010055# ---[ Build flags
Marat Dukhan249d3142018-03-15 23:20:11 -070056SET(CPUINFO_SUPPORTED_PLATFORM TRUE)
Marat Dukhan3645b922017-10-13 17:03:35 -040057IF(NOT CMAKE_SYSTEM_PROCESSOR)
Marat Dukhane135eff2018-02-01 00:39:31 -080058 IF(NOT IOS)
Marat Dukhan249d3142018-03-15 23:20:11 -070059 MESSAGE(WARNING
60 "Target processor architecture is not specified. "
61 "cpuinfo will compile, but cpuinfo_initialize() will always fail.")
62 SET(CPUINFO_SUPPORTED_PLATFORM FALSE)
Marat Dukhane135eff2018-02-01 00:39:31 -080063 ENDIF()
Nikita Shulga59162732020-12-17 12:05:37 -080064ELSEIF(NOT CPUINFO_TARGET_PROCESSOR MATCHES "^(i[3-6]86|AMD64|x86(_64)?|armv[5-8].*|aarch64|arm64)$")
Marat Dukhan249d3142018-03-15 23:20:11 -070065 MESSAGE(WARNING
Nikita Shulga59162732020-12-17 12:05:37 -080066 "Target processor architecture \"${CPUINFO_TARGET_PROCESSOR}\" is not supported in cpuinfo. "
Marat Dukhan249d3142018-03-15 23:20:11 -070067 "cpuinfo will compile, but cpuinfo_initialize() will always fail.")
68 SET(CPUINFO_SUPPORTED_PLATFORM FALSE)
Marat Dukhan3645b922017-10-13 17:03:35 -040069ENDIF()
70
71IF(NOT CMAKE_SYSTEM_NAME)
Marat Dukhan249d3142018-03-15 23:20:11 -070072 MESSAGE(WARNING
73 "Target operating system is not specified. "
74 "cpuinfo will compile, but cpuinfo_initialize() will always fail.")
75 SET(CPUINFO_SUPPORTED_PLATFORM FALSE)
Ashkan Aliabadic2092212020-05-08 20:40:33 -070076ELSEIF(NOT CMAKE_SYSTEM_NAME MATCHES "^(Windows|CYGWIN|MSYS|Darwin|Linux|Android)$")
Bas Hendrifd253b72019-12-18 14:32:30 -080077 IF(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.14" AND NOT CMAKE_SYSTEM_NAME STREQUAL "iOS")
78 MESSAGE(WARNING
79 "Target operating system \"${CMAKE_SYSTEM_NAME}\" is not supported in cpuinfo. "
80 "cpuinfo will compile, but cpuinfo_initialize() will always fail.")
81 SET(CPUINFO_SUPPORTED_PLATFORM FALSE)
82 ENDIF()
Marat Dukhan3645b922017-10-13 17:03:35 -040083ENDIF()
84
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -070085# ---[ Download deps
86SET(CONFU_DEPENDENCIES_SOURCE_DIR ${CMAKE_SOURCE_DIR}/deps
87 CACHE PATH "Confu-style dependencies source directory")
88SET(CONFU_DEPENDENCIES_BINARY_DIR ${CMAKE_BINARY_DIR}/deps
89 CACHE PATH "Confu-style dependencies binary directory")
90
Marat Dukhand5817162018-01-31 18:39:05 -080091IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS)
Marat Dukhan249d3142018-03-15 23:20:11 -070092 IF(CPUINFO_SUPPORTED_PLATFORM AND NOT DEFINED GOOGLETEST_SOURCE_DIR)
Marat Dukhand5817162018-01-31 18:39:05 -080093 MESSAGE(STATUS "Downloading Google Test to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest (define GOOGLETEST_SOURCE_DIR to avoid it)")
Marat Dukhand416acf2018-02-24 16:36:59 +010094 CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download/CMakeLists.txt")
Marat Dukhand5817162018-01-31 18:39:05 -080095 EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
Marat Dukhand416acf2018-02-24 16:36:59 +010096 WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download")
Marat Dukhand5817162018-01-31 18:39:05 -080097 EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
Marat Dukhand416acf2018-02-24 16:36:59 +010098 WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download")
Marat Dukhand5817162018-01-31 18:39:05 -080099 SET(GOOGLETEST_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest" CACHE STRING "Google Test source directory")
100 ENDIF()
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700101ENDIF()
Marat Dukhan3645b922017-10-13 17:03:35 -0400102
Marat Dukhan249d3142018-03-15 23:20:11 -0700103IF(CPUINFO_BUILD_BENCHMARKS)
104 IF(CPUINFO_SUPPORTED_PLATFORM AND NOT DEFINED GOOGLEBENCHMARK_SOURCE_DIR)
105 MESSAGE(STATUS "Downloading Google Benchmark to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googlebenchmark (define GOOGLEBENCHMARK_SOURCE_DIR to avoid it)")
106 CONFIGURE_FILE(cmake/DownloadGoogleBenchmark.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googlebenchmark-download/CMakeLists.txt")
107 EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
108 WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googlebenchmark-download")
109 EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
110 WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googlebenchmark-download")
111 SET(GOOGLEBENCHMARK_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/googlebenchmark" CACHE STRING "Google Benchmark source directory")
112 ENDIF()
Marat Dukhancc44bf32017-12-18 17:45:48 -0800113ENDIF()
114
Marat Dukhan3645b922017-10-13 17:03:35 -0400115# ---[ cpuinfo library
116SET(CPUINFO_SRCS
117 src/init.c
Ashkan Aliabadi0e6bde92020-01-21 14:15:03 -0800118 src/api.c
119 src/cache.c)
Marat Dukhan3645b922017-10-13 17:03:35 -0400120
Marat Dukhan249d3142018-03-15 23:20:11 -0700121IF(CPUINFO_SUPPORTED_PLATFORM)
Nikita Shulga59162732020-12-17 12:05:37 -0800122 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)$"))
Marat Dukhan3645b922017-10-13 17:03:35 -0400123 LIST(APPEND CPUINFO_SRCS
Marat Dukhan249d3142018-03-15 23:20:11 -0700124 src/x86/init.c
125 src/x86/info.c
126 src/x86/vendor.c
127 src/x86/uarch.c
128 src/x86/name.c
129 src/x86/topology.c
130 src/x86/isa.c
131 src/x86/cache/init.c
132 src/x86/cache/descriptor.c
133 src/x86/cache/deterministic.c)
134 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
135 LIST(APPEND CPUINFO_SRCS
136 src/x86/linux/init.c
137 src/x86/linux/cpuinfo.c)
Bas Hendri58d183d2019-12-26 09:00:05 -0800138 ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS")
Marat Dukhan249d3142018-03-15 23:20:11 -0700139 LIST(APPEND CPUINFO_SRCS src/x86/mach/init.c)
Ashkan Aliabadic2092212020-05-08 20:40:33 -0700140 ELSEIF(CMAKE_SYSTEM_NAME MATCHES "^(Windows|CYGWIN|MSYS)$")
Marat Dukhan249d3142018-03-15 23:20:11 -0700141 LIST(APPEND CPUINFO_SRCS src/x86/windows/init.c)
Marat Dukhan3985cf82017-12-18 18:58:26 -0800142 ENDIF()
Nikita Shulga59162732020-12-17 12:05:37 -0800143 ELSEIF(CPUINFO_TARGET_PROCESSOR MATCHES "^(armv[5-8].*|aarch64|arm64)$" OR IOS_ARCH MATCHES "^(armv7.*|arm64.*)$")
Marat Dukhan249d3142018-03-15 23:20:11 -0700144 LIST(APPEND CPUINFO_SRCS
145 src/arm/uarch.c
146 src/arm/cache.c)
147 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
148 LIST(APPEND CPUINFO_SRCS
149 src/arm/linux/init.c
150 src/arm/linux/cpuinfo.c
151 src/arm/linux/clusters.c
152 src/arm/linux/chipset.c
153 src/arm/linux/midr.c
154 src/arm/linux/hwcap.c)
Marat Dukhana9103882018-10-30 22:02:37 -1000155 IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^armv[5-8]")
Marat Dukhan249d3142018-03-15 23:20:11 -0700156 LIST(APPEND CPUINFO_SRCS src/arm/linux/aarch32-isa.c)
157 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND ANDROID_ABI STREQUAL "armeabi")
158 SET_SOURCE_FILES_PROPERTIES(src/arm/linux/aarch32-isa.c PROPERTIES COMPILE_FLAGS -marm)
159 ENDIF()
Nikita Shulgaed8b86a2020-11-18 17:25:18 -0800160 ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)$")
Marat Dukhan249d3142018-03-15 23:20:11 -0700161 LIST(APPEND CPUINFO_SRCS src/arm/linux/aarch64-isa.c)
162 ENDIF()
Nikita Shulga59162732020-12-17 12:05:37 -0800163 ELSEIF(IOS OR (CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CPUINFO_TARGET_PROCESSOR STREQUAL "arm64"))
Marat Dukhan112dbf92018-12-09 01:40:27 -0800164 LIST(APPEND CPUINFO_SRCS src/arm/mach/init.c)
Marat Dukhan7b738882017-10-18 16:59:28 -0700165 ENDIF()
Marat Dukhan249d3142018-03-15 23:20:11 -0700166 IF(CMAKE_SYSTEM_NAME STREQUAL "Android")
167 LIST(APPEND CPUINFO_SRCS
168 src/arm/android/properties.c)
169 ENDIF()
Marat Dukhan3645b922017-10-13 17:03:35 -0400170 ENDIF()
Marat Dukhan3645b922017-10-13 17:03:35 -0400171
Ashkan Aliabadic2092212020-05-08 20:40:33 -0700172 IF(CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
173 LIST(APPEND CPUINFO_SRCS
174 src/emscripten/init.c)
175 ENDIF()
176
Marat Dukhan249d3142018-03-15 23:20:11 -0700177 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
Marat Dukhanbb161542018-12-16 05:56:49 -0500178 LIST(APPEND CPUINFO_SRCS
179 src/linux/smallfile.c
Marat Dukhan249d3142018-03-15 23:20:11 -0700180 src/linux/multiline.c
Marat Dukhan249d3142018-03-15 23:20:11 -0700181 src/linux/cpulist.c
182 src/linux/processors.c)
Bas Hendrifd253b72019-12-18 14:32:30 -0800183 ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS")
Marat Dukhan249d3142018-03-15 23:20:11 -0700184 LIST(APPEND CPUINFO_SRCS src/mach/topology.c)
Marat Dukhan3645b922017-10-13 17:03:35 -0400185 ENDIF()
Marat Dukhan3645b922017-10-13 17:03:35 -0400186
Marat Dukhan249d3142018-03-15 23:20:11 -0700187 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
188 SET(CMAKE_THREAD_PREFER_PTHREAD TRUE)
189 SET(THREADS_PREFER_PTHREAD_FLAG TRUE)
190 FIND_PACKAGE(Threads REQUIRED)
191 ENDIF()
Marat Dukhanbfff3482017-10-15 22:24:32 +0000192ENDIF()
193
Marat Dukhandaafc282018-01-31 23:55:05 -0800194IF(CPUINFO_LIBRARY_TYPE STREQUAL "default")
195 ADD_LIBRARY(cpuinfo ${CPUINFO_SRCS})
196ELSEIF(CPUINFO_LIBRARY_TYPE STREQUAL "shared")
197 ADD_LIBRARY(cpuinfo SHARED ${CPUINFO_SRCS})
198ELSEIF(CPUINFO_LIBRARY_TYPE STREQUAL "static")
199 ADD_LIBRARY(cpuinfo STATIC ${CPUINFO_SRCS})
200ELSE()
201 MESSAGE(FATAL_ERROR "Unsupported library type ${CPUINFO_LIBRARY_TYPE}")
202ENDIF()
Marat Dukhanbb161542018-12-16 05:56:49 -0500203ADD_LIBRARY(cpuinfo_internals STATIC ${CPUINFO_SRCS})
Marat Dukhancddf01b2018-02-25 01:37:55 +0100204CPUINFO_TARGET_ENABLE_C99(cpuinfo)
Marat Dukhanccbddb52018-12-16 01:51:31 -0800205CPUINFO_TARGET_ENABLE_C99(cpuinfo_internals)
Marat Dukhand0222b42018-03-26 11:19:48 -0700206CPUINFO_TARGET_RUNTIME_LIBRARY(cpuinfo)
Ashkan Aliabadic2092212020-05-08 20:40:33 -0700207IF(CMAKE_SYSTEM_NAME MATCHES "^(Windows|CYGWIN|MSYS)$")
208 # Target Windows 7+ API
209 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE _WIN32_WINNT=0x0601)
210 TARGET_COMPILE_DEFINITIONS(cpuinfo_internals PRIVATE _WIN32_WINNT=0x0601)
211ENDIF()
Marat Dukhan3645b922017-10-13 17:03:35 -0400212SET_TARGET_PROPERTIES(cpuinfo PROPERTIES PUBLIC_HEADER include/cpuinfo.h)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700213TARGET_INCLUDE_DIRECTORIES(cpuinfo BEFORE PUBLIC include)
214TARGET_INCLUDE_DIRECTORIES(cpuinfo BEFORE PRIVATE src)
Marat Dukhanccbddb52018-12-16 01:51:31 -0800215TARGET_INCLUDE_DIRECTORIES(cpuinfo_internals BEFORE PUBLIC include src)
Marat Dukhan52b2c082018-12-16 02:34:43 -0800216IF(CPUINFO_LOG_LEVEL STREQUAL "default")
217 # default logging level: error (subject to change)
Marat Dukhand3eda1b2018-12-19 11:05:42 -0800218 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE CPUINFO_LOG_LEVEL=2)
Marat Dukhan52b2c082018-12-16 02:34:43 -0800219ELSEIF(CPUINFO_LOG_LEVEL STREQUAL "debug")
220 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE CPUINFO_LOG_LEVEL=5)
221ELSEIF(CPUINFO_LOG_LEVEL STREQUAL "info")
222 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE CPUINFO_LOG_LEVEL=4)
223ELSEIF(CPUINFO_LOG_LEVEL STREQUAL "warning")
224 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE CPUINFO_LOG_LEVEL=3)
225ELSEIF(CPUINFO_LOG_LEVEL STREQUAL "error")
226 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE CPUINFO_LOG_LEVEL=2)
227ELSEIF(CPUINFO_LOG_LEVEL STREQUAL "fatal")
228 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE CPUINFO_LOG_LEVEL=1)
229ELSEIF(CPUINFO_LOG_LEVEL STREQUAL "none")
230 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE CPUINFO_LOG_LEVEL=0)
Marat Dukhancf70aee2018-03-24 23:21:02 -0700231ELSE()
Marat Dukhan52b2c082018-12-16 02:34:43 -0800232 MESSAGE(FATAL_ERROR "Unsupported logging level ${CPUINFO_LOG_LEVEL}")
Marat Dukhancf70aee2018-03-24 23:21:02 -0700233ENDIF()
Marat Dukhan52b2c082018-12-16 02:34:43 -0800234TARGET_COMPILE_DEFINITIONS(cpuinfo_internals PRIVATE CPUINFO_LOG_LEVEL=0)
235
Marat Dukhan249d3142018-03-15 23:20:11 -0700236IF(CPUINFO_SUPPORTED_PLATFORM)
237 TARGET_COMPILE_DEFINITIONS(cpuinfo INTERFACE CPUINFO_SUPPORTED_PLATFORM=1)
238 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
239 TARGET_LINK_LIBRARIES(cpuinfo PUBLIC ${CMAKE_THREAD_LIBS_INIT})
Marat Dukhanccbddb52018-12-16 01:51:31 -0800240 TARGET_LINK_LIBRARIES(cpuinfo_internals PUBLIC ${CMAKE_THREAD_LIBS_INIT})
Marat Dukhan249d3142018-03-15 23:20:11 -0700241 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE _GNU_SOURCE=1)
Marat Dukhanccbddb52018-12-16 01:51:31 -0800242 TARGET_COMPILE_DEFINITIONS(cpuinfo_internals PRIVATE _GNU_SOURCE=1)
Marat Dukhan249d3142018-03-15 23:20:11 -0700243 ENDIF()
244ELSE()
245 TARGET_COMPILE_DEFINITIONS(cpuinfo INTERFACE CPUINFO_SUPPORTED_PLATFORM=0)
Marat Dukhanad1ac952017-10-23 15:32:25 -0700246ENDIF()
Marat Dukhan3645b922017-10-13 17:03:35 -0400247
Marat Dukhanad935b52018-06-04 02:40:10 -0700248# ---[ cpuinfo dependencies: clog
249IF(NOT DEFINED CLOG_SOURCE_DIR)
250 SET(CLOG_SOURCE_DIR "${PROJECT_SOURCE_DIR}/deps/clog")
251ENDIF()
252IF(NOT TARGET clog)
253 SET(CLOG_BUILD_TESTS OFF CACHE BOOL "")
Marat Dukhan104bc932018-06-04 10:41:25 -0700254 SET(CLOG_RUNTIME_TYPE "${CPUINFO_RUNTIME_TYPE}" CACHE STRING "")
Marat Dukhanad935b52018-06-04 02:40:10 -0700255 ADD_SUBDIRECTORY(
256 "${CLOG_SOURCE_DIR}")
Marat Dukhan91e2aad2018-06-24 16:41:20 -0700257 # We build static version of clog but a dynamic library may indirectly depend on it
258 SET_PROPERTY(TARGET clog PROPERTY POSITION_INDEPENDENT_CODE ON)
Marat Dukhanad935b52018-06-04 02:40:10 -0700259ENDIF()
260TARGET_LINK_LIBRARIES(cpuinfo PRIVATE clog)
Marat Dukhanccbddb52018-12-16 01:51:31 -0800261TARGET_LINK_LIBRARIES(cpuinfo_internals PRIVATE clog)
Marat Dukhanad935b52018-06-04 02:40:10 -0700262
Marat Dukhan3645b922017-10-13 17:03:35 -0400263INSTALL(TARGETS cpuinfo
Marat Dukhan249d3142018-03-15 23:20:11 -0700264 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
265 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
266 PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
Marat Dukhan3645b922017-10-13 17:03:35 -0400267
Marat Dukhancc44bf32017-12-18 17:45:48 -0800268# ---[ cpuinfo micro-benchmarks
Marat Dukhan249d3142018-03-15 23:20:11 -0700269IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_BENCHMARKS)
Marat Dukhancc44bf32017-12-18 17:45:48 -0800270 # ---[ Build google benchmark
271 IF(NOT TARGET benchmark)
272 SET(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "")
273 ADD_SUBDIRECTORY(
Marat Dukhand5817162018-01-31 18:39:05 -0800274 "${GOOGLEBENCHMARK_SOURCE_DIR}"
Marat Dukhancc44bf32017-12-18 17:45:48 -0800275 "${CONFU_DEPENDENCIES_BINARY_DIR}/googlebenchmark")
276 ENDIF()
277
278 IF(CMAKE_SYSTEM_NAME MATCHES "^(Linux|Android)$")
279 ADD_EXECUTABLE(get-current-bench bench/get-current.cc)
280 TARGET_LINK_LIBRARIES(get-current-bench cpuinfo benchmark)
281 ENDIF()
282
283 ADD_EXECUTABLE(init-bench bench/init.cc)
284 TARGET_LINK_LIBRARIES(init-bench cpuinfo benchmark)
285ENDIF()
286
Marat Dukhan249d3142018-03-15 23:20:11 -0700287IF(CPUINFO_SUPPORTED_PLATFORM)
288 IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS)
289 # ---[ Build google test
290 IF(NOT TARGET gtest)
Marat Dukhand0222b42018-03-26 11:19:48 -0700291 IF(MSVC AND NOT CPUINFO_RUNTIME_TYPE STREQUAL "static")
292 SET(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
293 ENDIF()
Marat Dukhan249d3142018-03-15 23:20:11 -0700294 ADD_SUBDIRECTORY(
295 "${GOOGLETEST_SOURCE_DIR}"
296 "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest")
297 ENDIF()
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700298 ENDIF()
299ENDIF()
300
301# ---[ cpuinfo mock library and mock tests
Marat Dukhan249d3142018-03-15 23:20:11 -0700302IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_MOCK_TESTS)
Marat Dukhanb8a83372017-10-13 21:07:44 -0400303 SET(CPUINFO_MOCK_SRCS "${CPUINFO_SRCS}")
Nikita Shulga59162732020-12-17 12:05:37 -0800304 IF(CPUINFO_TARGET_PROCESSOR MATCHES "^(i[3-6]86|AMD64|x86_64)$")
Marat Dukhan1b474622017-12-18 17:52:40 -0800305 LIST(APPEND CPUINFO_MOCK_SRCS src/x86/mockcpuid.c)
306 ENDIF()
Marat Dukhanb8a83372017-10-13 21:07:44 -0400307 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
308 LIST(APPEND CPUINFO_MOCK_SRCS src/linux/mockfile.c)
309 ENDIF()
310
Marat Dukhandaafc282018-01-31 23:55:05 -0800311 ADD_LIBRARY(cpuinfo_mock STATIC ${CPUINFO_MOCK_SRCS})
Marat Dukhancddf01b2018-02-25 01:37:55 +0100312 CPUINFO_TARGET_ENABLE_C99(cpuinfo_mock)
Marat Dukhand0222b42018-03-26 11:19:48 -0700313 CPUINFO_TARGET_RUNTIME_LIBRARY(cpuinfo_mock)
Marat Dukhanb8a83372017-10-13 21:07:44 -0400314 SET_TARGET_PROPERTIES(cpuinfo_mock PROPERTIES PUBLIC_HEADER include/cpuinfo.h)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700315 TARGET_INCLUDE_DIRECTORIES(cpuinfo_mock BEFORE PUBLIC include)
316 TARGET_INCLUDE_DIRECTORIES(cpuinfo_mock BEFORE PRIVATE src)
317 TARGET_COMPILE_DEFINITIONS(cpuinfo_mock PUBLIC CPUINFO_MOCK=1)
Marat Dukhan52b2c082018-12-16 02:34:43 -0800318 TARGET_COMPILE_DEFINITIONS(cpuinfo_mock PRIVATE CLOG_LOG_TO_STDIO=1)
Marat Dukhanbfff3482017-10-15 22:24:32 +0000319 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
320 TARGET_LINK_LIBRARIES(cpuinfo_mock PUBLIC ${CMAKE_THREAD_LIBS_INIT})
Marat Dukhan806dcca2018-03-22 12:22:48 -0700321 TARGET_COMPILE_DEFINITIONS(cpuinfo_mock PRIVATE _GNU_SOURCE=1)
Marat Dukhane029fd42017-10-26 00:35:46 +0000322 ENDIF()
Marat Dukhanad935b52018-06-04 02:40:10 -0700323 TARGET_LINK_LIBRARIES(cpuinfo_mock PRIVATE clog)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700324
325 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7-a)$")
Marat Dukhanf18db832017-11-28 11:10:10 -0800326 ADD_EXECUTABLE(atm7029b-tablet-test test/mock/atm7029b-tablet.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700327 TARGET_INCLUDE_DIRECTORIES(atm7029b-tablet-test BEFORE PRIVATE test/mock)
Marat Dukhanf18db832017-11-28 11:10:10 -0800328 TARGET_LINK_LIBRARIES(atm7029b-tablet-test PRIVATE cpuinfo_mock gtest)
329 ADD_TEST(atm7029b-tablet-test atm7029b-tablet-test)
330
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700331 ADD_EXECUTABLE(blu-r1-hd-test test/mock/blu-r1-hd.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700332 TARGET_INCLUDE_DIRECTORIES(blu-r1-hd-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700333 TARGET_LINK_LIBRARIES(blu-r1-hd-test PRIVATE cpuinfo_mock gtest)
334 ADD_TEST(blu-r1-hd-test blu-r1-hd-test)
335
Marat Dukhan94f763a2017-12-04 16:44:33 -0800336 ADD_EXECUTABLE(galaxy-a3-2016-eu-test test/mock/galaxy-a3-2016-eu.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700337 TARGET_INCLUDE_DIRECTORIES(galaxy-a3-2016-eu-test BEFORE PRIVATE test/mock)
Marat Dukhan94f763a2017-12-04 16:44:33 -0800338 TARGET_LINK_LIBRARIES(galaxy-a3-2016-eu-test PRIVATE cpuinfo_mock gtest)
339 ADD_TEST(galaxy-a3-2016-eu-test galaxy-a3-2016-eu-test)
340
Marat Dukhanf9ccfa32017-11-27 15:50:06 -0800341 ADD_EXECUTABLE(galaxy-a8-2016-duos-test test/mock/galaxy-a8-2016-duos.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700342 TARGET_INCLUDE_DIRECTORIES(galaxy-a8-2016-duos-test BEFORE PRIVATE test/mock)
Marat Dukhanf9ccfa32017-11-27 15:50:06 -0800343 TARGET_LINK_LIBRARIES(galaxy-a8-2016-duos-test PRIVATE cpuinfo_mock gtest)
344 ADD_TEST(galaxy-a8-2016-duos-test galaxy-a8-2016-duos-test)
345
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700346 ADD_EXECUTABLE(galaxy-grand-prime-value-edition-test test/mock/galaxy-grand-prime-value-edition.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700347 TARGET_INCLUDE_DIRECTORIES(galaxy-grand-prime-value-edition-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700348 TARGET_LINK_LIBRARIES(galaxy-grand-prime-value-edition-test PRIVATE cpuinfo_mock gtest)
349 ADD_TEST(galaxy-grand-prime-value-edition-test galaxy-grand-prime-value-edition-test)
350
Marat Dukhand77e1a22018-01-04 19:45:06 -0800351 ADD_EXECUTABLE(galaxy-j1-2016-test test/mock/galaxy-j1-2016.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700352 TARGET_INCLUDE_DIRECTORIES(galaxy-j1-2016-test BEFORE PRIVATE test/mock)
Marat Dukhand77e1a22018-01-04 19:45:06 -0800353 TARGET_LINK_LIBRARIES(galaxy-j1-2016-test PRIVATE cpuinfo_mock gtest)
354 ADD_TEST(galaxy-j1-2016-test galaxy-j1-2016-test)
355
Marat Dukhan126c46d2017-12-04 16:24:48 -0800356 ADD_EXECUTABLE(galaxy-j5-test test/mock/galaxy-j5.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700357 TARGET_INCLUDE_DIRECTORIES(galaxy-j5-test BEFORE PRIVATE test/mock)
Marat Dukhan126c46d2017-12-04 16:24:48 -0800358 TARGET_LINK_LIBRARIES(galaxy-j5-test PRIVATE cpuinfo_mock gtest)
359 ADD_TEST(galaxy-j5-test galaxy-j5-test)
360
Marat Dukhan84435902017-11-29 15:53:58 -0800361 ADD_EXECUTABLE(galaxy-j7-prime-test test/mock/galaxy-j7-prime.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700362 TARGET_INCLUDE_DIRECTORIES(galaxy-j7-prime-test BEFORE PRIVATE test/mock)
Marat Dukhan84435902017-11-29 15:53:58 -0800363 TARGET_LINK_LIBRARIES(galaxy-j7-prime-test PRIVATE cpuinfo_mock gtest)
364 ADD_TEST(galaxy-j7-prime-test galaxy-j7-prime-test)
365
Marat Dukhan0d2aaa72017-11-29 15:48:46 -0800366 ADD_EXECUTABLE(galaxy-j7-tmobile-test test/mock/galaxy-j7-tmobile.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700367 TARGET_INCLUDE_DIRECTORIES(galaxy-j7-tmobile-test BEFORE PRIVATE test/mock)
Marat Dukhan0d2aaa72017-11-29 15:48:46 -0800368 TARGET_LINK_LIBRARIES(galaxy-j7-tmobile-test PRIVATE cpuinfo_mock gtest)
369 ADD_TEST(galaxy-j7-tmobile-test galaxy-j7-tmobile-test)
370
371 ADD_EXECUTABLE(galaxy-j7-uae-test test/mock/galaxy-j7-uae.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700372 TARGET_INCLUDE_DIRECTORIES(galaxy-j7-uae-test BEFORE PRIVATE test/mock)
Marat Dukhan0d2aaa72017-11-29 15:48:46 -0800373 TARGET_LINK_LIBRARIES(galaxy-j7-uae-test PRIVATE cpuinfo_mock gtest)
374 ADD_TEST(galaxy-j7-uae-test galaxy-j7-uae-test)
375
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700376 ADD_EXECUTABLE(galaxy-s3-us-test test/mock/galaxy-s3-us.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700377 TARGET_INCLUDE_DIRECTORIES(galaxy-s3-us-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700378 TARGET_LINK_LIBRARIES(galaxy-s3-us-test PRIVATE cpuinfo_mock gtest)
379 ADD_TEST(galaxy-s3-us-test galaxy-s3-us-test)
380
381 ADD_EXECUTABLE(galaxy-s4-us-test test/mock/galaxy-s4-us.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700382 TARGET_INCLUDE_DIRECTORIES(galaxy-s4-us-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700383 TARGET_LINK_LIBRARIES(galaxy-s4-us-test PRIVATE cpuinfo_mock gtest)
384 ADD_TEST(galaxy-s4-us-test galaxy-s4-us-test)
385
386 ADD_EXECUTABLE(galaxy-s5-global-test test/mock/galaxy-s5-global.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700387 TARGET_INCLUDE_DIRECTORIES(galaxy-s5-global-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700388 TARGET_LINK_LIBRARIES(galaxy-s5-global-test PRIVATE cpuinfo_mock gtest)
389 ADD_TEST(galaxy-s5-global-test galaxy-s5-global-test)
390
391 ADD_EXECUTABLE(galaxy-s5-us-test test/mock/galaxy-s5-us.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700392 TARGET_INCLUDE_DIRECTORIES(galaxy-s5-us-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700393 TARGET_LINK_LIBRARIES(galaxy-s5-us-test PRIVATE cpuinfo_mock gtest)
394 ADD_TEST(galaxy-s5-us-test galaxy-s5-us-test)
395
396 ADD_EXECUTABLE(galaxy-tab-3-7.0-test test/mock/galaxy-tab-3-7.0.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700397 TARGET_INCLUDE_DIRECTORIES(galaxy-tab-3-7.0-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700398 TARGET_LINK_LIBRARIES(galaxy-tab-3-7.0-test PRIVATE cpuinfo_mock gtest)
399 ADD_TEST(galaxy-tab-3-7.0-test galaxy-tab-3-7.0-test)
400
401 ADD_EXECUTABLE(galaxy-tab-3-lite-test test/mock/galaxy-tab-3-lite.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700402 TARGET_INCLUDE_DIRECTORIES(galaxy-tab-3-lite-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700403 TARGET_LINK_LIBRARIES(galaxy-tab-3-lite-test PRIVATE cpuinfo_mock gtest)
404 ADD_TEST(galaxy-tab-3-lite-test galaxy-tab-3-lite-test)
405
406 ADD_EXECUTABLE(galaxy-win-duos-test test/mock/galaxy-win-duos.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700407 TARGET_INCLUDE_DIRECTORIES(galaxy-win-duos-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700408 TARGET_LINK_LIBRARIES(galaxy-win-duos-test PRIVATE cpuinfo_mock gtest)
409 ADD_TEST(galaxy-win-duos-test galaxy-win-duos-test)
410
411 ADD_EXECUTABLE(huawei-ascend-p7-test test/mock/huawei-ascend-p7.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700412 TARGET_INCLUDE_DIRECTORIES(huawei-ascend-p7-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700413 TARGET_LINK_LIBRARIES(huawei-ascend-p7-test PRIVATE cpuinfo_mock gtest)
414 ADD_TEST(huawei-ascend-p7-test huawei-ascend-p7-test)
415
Marat Dukhan80f4b7f2018-04-10 21:37:52 -0700416 ADD_EXECUTABLE(huawei-honor-6-test test/mock/huawei-honor-6.cc)
417 TARGET_INCLUDE_DIRECTORIES(huawei-honor-6-test BEFORE PRIVATE test/mock)
418 TARGET_LINK_LIBRARIES(huawei-honor-6-test PRIVATE cpuinfo_mock gtest)
419 ADD_TEST(huawei-honor-6-test huawei-honor-6-test)
420
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700421 ADD_EXECUTABLE(lenovo-a6600-plus-test test/mock/lenovo-a6600-plus.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700422 TARGET_INCLUDE_DIRECTORIES(lenovo-a6600-plus-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700423 TARGET_LINK_LIBRARIES(lenovo-a6600-plus-test PRIVATE cpuinfo_mock gtest)
424 ADD_TEST(lenovo-a6600-plus-test lenovo-a6600-plus-test)
425
426 ADD_EXECUTABLE(lenovo-vibe-x2-test test/mock/lenovo-vibe-x2.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700427 TARGET_INCLUDE_DIRECTORIES(lenovo-vibe-x2-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700428 TARGET_LINK_LIBRARIES(lenovo-vibe-x2-test PRIVATE cpuinfo_mock gtest)
429 ADD_TEST(lenovo-vibe-x2-test lenovo-vibe-x2-test)
430
431 ADD_EXECUTABLE(lg-k10-eu-test test/mock/lg-k10-eu.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700432 TARGET_INCLUDE_DIRECTORIES(lg-k10-eu-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700433 TARGET_LINK_LIBRARIES(lg-k10-eu-test PRIVATE cpuinfo_mock gtest)
434 ADD_TEST(lg-k10-eu-test lg-k10-eu-test)
435
Marat Dukhandc58d502018-01-04 20:25:30 -0800436 ADD_EXECUTABLE(lg-optimus-g-pro-test test/mock/lg-optimus-g-pro.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700437 TARGET_INCLUDE_DIRECTORIES(lg-optimus-g-pro-test BEFORE PRIVATE test/mock)
Marat Dukhandc58d502018-01-04 20:25:30 -0800438 TARGET_LINK_LIBRARIES(lg-optimus-g-pro-test PRIVATE cpuinfo_mock gtest)
439 ADD_TEST(lg-optimus-g-pro-test lg-optimus-g-pro-test)
440
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700441 ADD_EXECUTABLE(moto-e-gen1-test test/mock/moto-e-gen1.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700442 TARGET_INCLUDE_DIRECTORIES(moto-e-gen1-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700443 TARGET_LINK_LIBRARIES(moto-e-gen1-test PRIVATE cpuinfo_mock gtest)
444 ADD_TEST(moto-e-gen1-test moto-e-gen1-test)
445
Marat Dukhan92db81f2018-01-05 19:01:52 -0800446 ADD_EXECUTABLE(moto-g-gen1-test test/mock/moto-g-gen1.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700447 TARGET_INCLUDE_DIRECTORIES(moto-g-gen1-test BEFORE PRIVATE test/mock)
Marat Dukhan92db81f2018-01-05 19:01:52 -0800448 TARGET_LINK_LIBRARIES(moto-g-gen1-test PRIVATE cpuinfo_mock gtest)
449 ADD_TEST(moto-g-gen1-test moto-g-gen1-test)
450
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700451 ADD_EXECUTABLE(moto-g-gen2-test test/mock/moto-g-gen2.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700452 TARGET_INCLUDE_DIRECTORIES(moto-g-gen2-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700453 TARGET_LINK_LIBRARIES(moto-g-gen2-test PRIVATE cpuinfo_mock gtest)
454 ADD_TEST(moto-g-gen2-test moto-g-gen2-test)
455
456 ADD_EXECUTABLE(moto-g-gen3-test test/mock/moto-g-gen3.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700457 TARGET_INCLUDE_DIRECTORIES(moto-g-gen3-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700458 TARGET_LINK_LIBRARIES(moto-g-gen3-test PRIVATE cpuinfo_mock gtest)
459 ADD_TEST(moto-g-gen3-test moto-g-gen3-test)
460
Marat Dukhan76829232018-03-02 12:58:30 -0800461 ADD_EXECUTABLE(moto-g-gen4-test test/mock/moto-g-gen4.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700462 TARGET_INCLUDE_DIRECTORIES(moto-g-gen4-test BEFORE PRIVATE test/mock)
Marat Dukhan76829232018-03-02 12:58:30 -0800463 TARGET_LINK_LIBRARIES(moto-g-gen4-test PRIVATE cpuinfo_mock gtest)
464 ADD_TEST(moto-g-gen4-test moto-g-gen4-test)
465
Marat Dukhan2bfb2c42018-07-13 22:08:12 -0700466 ADD_EXECUTABLE(moto-g-gen5-test test/mock/moto-g-gen5.cc)
467 TARGET_INCLUDE_DIRECTORIES(moto-g-gen5-test BEFORE PRIVATE test/mock)
468 TARGET_LINK_LIBRARIES(moto-g-gen5-test PRIVATE cpuinfo_mock gtest)
469 ADD_TEST(moto-g-gen5-test moto-g-gen5-test)
470
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700471 ADD_EXECUTABLE(nexus-s-test test/mock/nexus-s.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700472 TARGET_INCLUDE_DIRECTORIES(nexus-s-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700473 TARGET_LINK_LIBRARIES(nexus-s-test PRIVATE cpuinfo_mock gtest)
474 ADD_TEST(nexus-s-test nexus-s-test)
475
476 ADD_EXECUTABLE(nexus4-test test/mock/nexus4.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700477 TARGET_INCLUDE_DIRECTORIES(nexus4-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700478 TARGET_LINK_LIBRARIES(nexus4-test PRIVATE cpuinfo_mock gtest)
479 ADD_TEST(nexus4-test nexus4-test)
480
481 ADD_EXECUTABLE(nexus6-test test/mock/nexus6.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700482 TARGET_INCLUDE_DIRECTORIES(nexus6-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700483 TARGET_LINK_LIBRARIES(nexus6-test PRIVATE cpuinfo_mock gtest)
484 ADD_TEST(nexus6-test nexus6-test)
485
Marat Dukhan2ca13b22018-01-04 18:52:46 -0800486 ADD_EXECUTABLE(nexus10-test test/mock/nexus10.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700487 TARGET_INCLUDE_DIRECTORIES(nexus10-test BEFORE PRIVATE test/mock)
Marat Dukhan2ca13b22018-01-04 18:52:46 -0800488 TARGET_LINK_LIBRARIES(nexus10-test PRIVATE cpuinfo_mock gtest)
489 ADD_TEST(nexus10-test nexus10-test)
490
Marat Dukhan59572542017-11-27 17:22:09 -0800491 ADD_EXECUTABLE(padcod-10.1-test test/mock/padcod-10.1.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700492 TARGET_INCLUDE_DIRECTORIES(padcod-10.1-test BEFORE PRIVATE test/mock)
Marat Dukhan59572542017-11-27 17:22:09 -0800493 TARGET_LINK_LIBRARIES(padcod-10.1-test PRIVATE cpuinfo_mock gtest)
494 ADD_TEST(padcod-10.1-test padcod-10.1-test)
495
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700496 ADD_EXECUTABLE(xiaomi-redmi-2a-test test/mock/xiaomi-redmi-2a.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700497 TARGET_INCLUDE_DIRECTORIES(xiaomi-redmi-2a-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700498 TARGET_LINK_LIBRARIES(xiaomi-redmi-2a-test PRIVATE cpuinfo_mock gtest)
499 ADD_TEST(xiaomi-redmi-2a-test xiaomi-redmi-2a-test)
Marat Dukhanad741842017-12-03 23:11:46 -0800500
501 ADD_EXECUTABLE(xperia-sl-test test/mock/xperia-sl.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700502 TARGET_INCLUDE_DIRECTORIES(xperia-sl-test BEFORE PRIVATE test/mock)
Marat Dukhanad741842017-12-03 23:11:46 -0800503 TARGET_LINK_LIBRARIES(xperia-sl-test PRIVATE cpuinfo_mock gtest)
504 ADD_TEST(xperia-sl-test xperia-sl-test)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700505 ENDIF()
506
507 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7-a|aarch64)$")
Marat Dukhanc246e322018-01-26 11:21:48 -0800508 ADD_EXECUTABLE(alcatel-revvl-test test/mock/alcatel-revvl.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700509 TARGET_INCLUDE_DIRECTORIES(alcatel-revvl-test BEFORE PRIVATE test/mock)
Marat Dukhanc246e322018-01-26 11:21:48 -0800510 TARGET_LINK_LIBRARIES(alcatel-revvl-test PRIVATE cpuinfo_mock gtest)
511 ADD_TEST(alcatel-revvl-test alcatel-revvl-test)
512
Marat Dukhan89a3f082018-03-13 11:59:03 -0700513 ADD_EXECUTABLE(galaxy-a8-2018-test test/mock/galaxy-a8-2018.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700514 TARGET_INCLUDE_DIRECTORIES(galaxy-a8-2018-test BEFORE PRIVATE test/mock)
Marat Dukhan89a3f082018-03-13 11:59:03 -0700515 TARGET_LINK_LIBRARIES(galaxy-a8-2018-test PRIVATE cpuinfo_mock gtest)
516 ADD_TEST(galaxy-a8-2018-test galaxy-a8-2018-test)
517
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700518 ADD_EXECUTABLE(galaxy-c9-pro-test test/mock/galaxy-c9-pro.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700519 TARGET_INCLUDE_DIRECTORIES(galaxy-c9-pro-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700520 TARGET_LINK_LIBRARIES(galaxy-c9-pro-test PRIVATE cpuinfo_mock gtest)
521 ADD_TEST(galaxy-c9-pro-test galaxy-c9-pro-test)
522
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700523 ADD_EXECUTABLE(galaxy-s6-test test/mock/galaxy-s6.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700524 TARGET_INCLUDE_DIRECTORIES(galaxy-s6-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700525 TARGET_LINK_LIBRARIES(galaxy-s6-test PRIVATE cpuinfo_mock gtest)
526 ADD_TEST(galaxy-s6-test galaxy-s6-test)
527
528 ADD_EXECUTABLE(galaxy-s7-us-test test/mock/galaxy-s7-us.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700529 TARGET_INCLUDE_DIRECTORIES(galaxy-s7-us-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700530 TARGET_LINK_LIBRARIES(galaxy-s7-us-test PRIVATE cpuinfo_mock gtest)
531 ADD_TEST(galaxy-s7-us-test galaxy-s7-us-test)
532
533 ADD_EXECUTABLE(galaxy-s7-global-test test/mock/galaxy-s7-global.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700534 TARGET_INCLUDE_DIRECTORIES(galaxy-s7-global-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700535 TARGET_LINK_LIBRARIES(galaxy-s7-global-test PRIVATE cpuinfo_mock gtest)
536 ADD_TEST(galaxy-s7-global-test galaxy-s7-global-test)
537
538 ADD_EXECUTABLE(galaxy-s8-us-test test/mock/galaxy-s8-us.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700539 TARGET_INCLUDE_DIRECTORIES(galaxy-s8-us-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700540 TARGET_LINK_LIBRARIES(galaxy-s8-us-test PRIVATE cpuinfo_mock gtest)
541 ADD_TEST(galaxy-s8-us-test galaxy-s8-us-test)
542
543 ADD_EXECUTABLE(galaxy-s8-global-test test/mock/galaxy-s8-global.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700544 TARGET_INCLUDE_DIRECTORIES(galaxy-s8-global-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700545 TARGET_LINK_LIBRARIES(galaxy-s8-global-test PRIVATE cpuinfo_mock gtest)
546 ADD_TEST(galaxy-s8-global-test galaxy-s8-global-test)
547
Marat Dukhand51d3952018-03-17 19:18:06 -0700548 ADD_EXECUTABLE(galaxy-s9-us-test test/mock/galaxy-s9-us.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700549 TARGET_INCLUDE_DIRECTORIES(galaxy-s9-us-test BEFORE PRIVATE test/mock)
Marat Dukhand51d3952018-03-17 19:18:06 -0700550 TARGET_LINK_LIBRARIES(galaxy-s9-us-test PRIVATE cpuinfo_mock gtest)
551 ADD_TEST(galaxy-s9-us-test galaxy-s9-us-test)
552
Marat Dukhan2f29c762018-04-10 22:07:36 -0700553 ADD_EXECUTABLE(galaxy-s9-global-test test/mock/galaxy-s9-global.cc)
554 TARGET_INCLUDE_DIRECTORIES(galaxy-s9-global-test BEFORE PRIVATE test/mock)
555 TARGET_LINK_LIBRARIES(galaxy-s9-global-test PRIVATE cpuinfo_mock gtest)
556 ADD_TEST(galaxy-s9-global-test galaxy-s9-global-test)
557
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700558 ADD_EXECUTABLE(huawei-mate-8-test test/mock/huawei-mate-8.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700559 TARGET_INCLUDE_DIRECTORIES(huawei-mate-8-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700560 TARGET_LINK_LIBRARIES(huawei-mate-8-test PRIVATE cpuinfo_mock gtest)
561 ADD_TEST(huawei-mate-8-test huawei-mate-8-test)
562
563 ADD_EXECUTABLE(huawei-mate-9-test test/mock/huawei-mate-9.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700564 TARGET_INCLUDE_DIRECTORIES(huawei-mate-9-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700565 TARGET_LINK_LIBRARIES(huawei-mate-9-test PRIVATE cpuinfo_mock gtest)
566 ADD_TEST(huawei-mate-9-test huawei-mate-9-test)
567
Marat Dukhan7be11402017-11-27 14:57:02 -0800568 ADD_EXECUTABLE(huawei-mate-10-test test/mock/huawei-mate-10.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700569 TARGET_INCLUDE_DIRECTORIES(huawei-mate-10-test BEFORE PRIVATE test/mock)
Marat Dukhan7be11402017-11-27 14:57:02 -0800570 TARGET_LINK_LIBRARIES(huawei-mate-10-test PRIVATE cpuinfo_mock gtest)
571 ADD_TEST(huawei-mate-10-test huawei-mate-10-test)
572
Marat Dukhana281cc92018-12-19 01:38:28 -0800573 ADD_EXECUTABLE(huawei-mate-20-test test/mock/huawei-mate-20.cc)
574 TARGET_INCLUDE_DIRECTORIES(huawei-mate-20-test BEFORE PRIVATE test/mock)
575 TARGET_LINK_LIBRARIES(huawei-mate-20-test PRIVATE cpuinfo_mock gtest)
576 ADD_TEST(huawei-mate-20-test huawei-mate-20-test)
577
Marat Dukhan705122f2018-01-03 18:24:55 -0800578 ADD_EXECUTABLE(huawei-p8-lite-test test/mock/huawei-p8-lite.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700579 TARGET_INCLUDE_DIRECTORIES(huawei-p8-lite-test BEFORE PRIVATE test/mock)
Marat Dukhan705122f2018-01-03 18:24:55 -0800580 TARGET_LINK_LIBRARIES(huawei-p8-lite-test PRIVATE cpuinfo_mock gtest)
581 ADD_TEST(huawei-p8-lite-test huawei-p8-lite-test)
582
583 ADD_EXECUTABLE(huawei-p9-lite-test test/mock/huawei-p9-lite.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700584 TARGET_INCLUDE_DIRECTORIES(huawei-p9-lite-test BEFORE PRIVATE test/mock)
Marat Dukhan705122f2018-01-03 18:24:55 -0800585 TARGET_LINK_LIBRARIES(huawei-p9-lite-test PRIVATE cpuinfo_mock gtest)
586 ADD_TEST(huawei-p9-lite-test huawei-p9-lite-test)
587
Marat Dukhan09021042018-07-13 19:53:15 -0700588 ADD_EXECUTABLE(huawei-p20-pro-test test/mock/huawei-p20-pro.cc)
589 TARGET_INCLUDE_DIRECTORIES(huawei-p20-pro-test BEFORE PRIVATE test/mock)
590 TARGET_LINK_LIBRARIES(huawei-p20-pro-test PRIVATE cpuinfo_mock gtest)
591 ADD_TEST(huawei-p20-pro-test huawei-p20-pro-test)
592
Marat Dukhan705122f2018-01-03 18:24:55 -0800593 ADD_EXECUTABLE(iconia-one-10-test test/mock/iconia-one-10.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700594 TARGET_INCLUDE_DIRECTORIES(iconia-one-10-test BEFORE PRIVATE test/mock)
Marat Dukhan705122f2018-01-03 18:24:55 -0800595 TARGET_LINK_LIBRARIES(iconia-one-10-test PRIVATE cpuinfo_mock gtest)
596 ADD_TEST(iconia-one-10-test iconia-one-10-test)
597
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700598 ADD_EXECUTABLE(meizu-pro-6-test test/mock/meizu-pro-6.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700599 TARGET_INCLUDE_DIRECTORIES(meizu-pro-6-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700600 TARGET_LINK_LIBRARIES(meizu-pro-6-test PRIVATE cpuinfo_mock gtest)
601 ADD_TEST(meizu-pro-6-test meizu-pro-6-test)
602
603 ADD_EXECUTABLE(meizu-pro-6s-test test/mock/meizu-pro-6s.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700604 TARGET_INCLUDE_DIRECTORIES(meizu-pro-6s-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700605 TARGET_LINK_LIBRARIES(meizu-pro-6s-test PRIVATE cpuinfo_mock gtest)
606 ADD_TEST(meizu-pro-6s-test meizu-pro-6s-test)
607
608 ADD_EXECUTABLE(meizu-pro-7-plus-test test/mock/meizu-pro-7-plus.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700609 TARGET_INCLUDE_DIRECTORIES(meizu-pro-7-plus-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700610 TARGET_LINK_LIBRARIES(meizu-pro-7-plus-test PRIVATE cpuinfo_mock gtest)
611 ADD_TEST(meizu-pro-7-plus-test meizu-pro-7-plus-test)
612
613 ADD_EXECUTABLE(nexus5x-test test/mock/nexus5x.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700614 TARGET_INCLUDE_DIRECTORIES(nexus5x-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700615 TARGET_LINK_LIBRARIES(nexus5x-test PRIVATE cpuinfo_mock gtest)
616 ADD_TEST(nexus5x-test nexus5x-test)
617
618 ADD_EXECUTABLE(nexus6p-test test/mock/nexus6p.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700619 TARGET_INCLUDE_DIRECTORIES(nexus6p-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700620 TARGET_LINK_LIBRARIES(nexus6p-test PRIVATE cpuinfo_mock gtest)
621 ADD_TEST(nexus6p-test nexus6p-test)
622
623 ADD_EXECUTABLE(nexus9-test test/mock/nexus9.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700624 TARGET_INCLUDE_DIRECTORIES(nexus9-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700625 TARGET_LINK_LIBRARIES(nexus9-test PRIVATE cpuinfo_mock gtest)
626 ADD_TEST(nexus9-test nexus9-test)
627
Marat Dukhan4d4d7e22018-03-02 10:34:59 -0800628 ADD_EXECUTABLE(oneplus-3t-test test/mock/oneplus-3t.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700629 TARGET_INCLUDE_DIRECTORIES(oneplus-3t-test BEFORE PRIVATE test/mock)
Marat Dukhan4d4d7e22018-03-02 10:34:59 -0800630 TARGET_LINK_LIBRARIES(oneplus-3t-test PRIVATE cpuinfo_mock gtest)
631 ADD_TEST(oneplus-3t-test oneplus-3t-test)
632
Marat Dukhan52621bb2018-03-02 10:51:11 -0800633 ADD_EXECUTABLE(oneplus-5-test test/mock/oneplus-5.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700634 TARGET_INCLUDE_DIRECTORIES(oneplus-5-test BEFORE PRIVATE test/mock)
Marat Dukhan52621bb2018-03-02 10:51:11 -0800635 TARGET_LINK_LIBRARIES(oneplus-5-test PRIVATE cpuinfo_mock gtest)
636 ADD_TEST(oneplus-5-test oneplus-5-test)
637
Marat Dukhand00216b2018-03-02 11:43:51 -0800638 ADD_EXECUTABLE(oneplus-5t-test test/mock/oneplus-5t.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700639 TARGET_INCLUDE_DIRECTORIES(oneplus-5t-test BEFORE PRIVATE test/mock)
Marat Dukhand00216b2018-03-02 11:43:51 -0800640 TARGET_LINK_LIBRARIES(oneplus-5t-test PRIVATE cpuinfo_mock gtest)
641 ADD_TEST(oneplus-5t-test oneplus-5t-test)
642
Marat Dukhan75dd8a12017-12-04 15:43:02 -0800643 ADD_EXECUTABLE(oppo-a37-test test/mock/oppo-a37.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700644 TARGET_INCLUDE_DIRECTORIES(oppo-a37-test BEFORE PRIVATE test/mock)
Marat Dukhan75dd8a12017-12-04 15:43:02 -0800645 TARGET_LINK_LIBRARIES(oppo-a37-test PRIVATE cpuinfo_mock gtest)
646 ADD_TEST(oppo-a37-test oppo-a37-test)
647
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700648 ADD_EXECUTABLE(oppo-r9-test test/mock/oppo-r9.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700649 TARGET_INCLUDE_DIRECTORIES(oppo-r9-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700650 TARGET_LINK_LIBRARIES(oppo-r9-test PRIVATE cpuinfo_mock gtest)
651 ADD_TEST(oppo-r9-test oppo-r9-test)
652
Marat Dukhan31b7c012018-07-13 21:24:51 -0700653 ADD_EXECUTABLE(oppo-r15-test test/mock/oppo-r15.cc)
654 TARGET_INCLUDE_DIRECTORIES(oppo-r15-test BEFORE PRIVATE test/mock)
655 TARGET_LINK_LIBRARIES(oppo-r15-test PRIVATE cpuinfo_mock gtest)
656 ADD_TEST(oppo-r15-test oppo-r15-test)
657
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700658 ADD_EXECUTABLE(pixel-test test/mock/pixel.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700659 TARGET_INCLUDE_DIRECTORIES(pixel-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700660 TARGET_LINK_LIBRARIES(pixel-test PRIVATE cpuinfo_mock gtest)
661 ADD_TEST(pixel-test pixel-test)
662
663 ADD_EXECUTABLE(pixel-c-test test/mock/pixel-c.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700664 TARGET_INCLUDE_DIRECTORIES(pixel-c-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700665 TARGET_LINK_LIBRARIES(pixel-c-test PRIVATE cpuinfo_mock gtest)
666 ADD_TEST(pixel-c-test pixel-c-test)
667
668 ADD_EXECUTABLE(pixel-xl-test test/mock/pixel-xl.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700669 TARGET_INCLUDE_DIRECTORIES(pixel-xl-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700670 TARGET_LINK_LIBRARIES(pixel-xl-test PRIVATE cpuinfo_mock gtest)
671 ADD_TEST(pixel-xl-test pixel-xl-test)
672
Marat Dukhan9bfb1072017-11-27 17:02:25 -0800673 ADD_EXECUTABLE(pixel-2-xl-test test/mock/pixel-2-xl.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700674 TARGET_INCLUDE_DIRECTORIES(pixel-2-xl-test BEFORE PRIVATE test/mock)
Marat Dukhan9bfb1072017-11-27 17:02:25 -0800675 TARGET_LINK_LIBRARIES(pixel-2-xl-test PRIVATE cpuinfo_mock gtest)
676 ADD_TEST(pixel-2-xl-test pixel-2-xl-test)
677
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700678 ADD_EXECUTABLE(xiaomi-mi-5c-test test/mock/xiaomi-mi-5c.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700679 TARGET_INCLUDE_DIRECTORIES(xiaomi-mi-5c-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700680 TARGET_LINK_LIBRARIES(xiaomi-mi-5c-test PRIVATE cpuinfo_mock gtest)
681 ADD_TEST(xiaomi-mi-5c-test xiaomi-mi-5c-test)
682
683 ADD_EXECUTABLE(xiaomi-redmi-note-3-test test/mock/xiaomi-redmi-note-3.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700684 TARGET_INCLUDE_DIRECTORIES(xiaomi-redmi-note-3-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700685 TARGET_LINK_LIBRARIES(xiaomi-redmi-note-3-test PRIVATE cpuinfo_mock gtest)
686 ADD_TEST(xiaomi-redmi-note-3-test xiaomi-redmi-note-3-test)
687
Marat Dukhana5fda232017-12-04 16:08:25 -0800688 ADD_EXECUTABLE(xiaomi-redmi-note-4-test test/mock/xiaomi-redmi-note-4.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700689 TARGET_INCLUDE_DIRECTORIES(xiaomi-redmi-note-4-test BEFORE PRIVATE test/mock)
Marat Dukhana5fda232017-12-04 16:08:25 -0800690 TARGET_LINK_LIBRARIES(xiaomi-redmi-note-4-test PRIVATE cpuinfo_mock gtest)
691 ADD_TEST(xiaomi-redmi-note-4-test xiaomi-redmi-note-4-test)
692
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700693 ADD_EXECUTABLE(xperia-c4-dual-test test/mock/xperia-c4-dual.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700694 TARGET_INCLUDE_DIRECTORIES(xperia-c4-dual-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700695 TARGET_LINK_LIBRARIES(xperia-c4-dual-test PRIVATE cpuinfo_mock gtest)
696 ADD_TEST(xperia-c4-dual-test xperia-c4-dual-test)
697 ENDIF()
698
699 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(i686|x86_64)$")
Marat Dukhanaf8a12d2017-12-08 16:12:16 -0800700 ADD_EXECUTABLE(alldocube-iwork8-test test/mock/alldocube-iwork8.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700701 TARGET_INCLUDE_DIRECTORIES(alldocube-iwork8-test BEFORE PRIVATE test/mock)
Marat Dukhanaf8a12d2017-12-08 16:12:16 -0800702 TARGET_LINK_LIBRARIES(alldocube-iwork8-test PRIVATE cpuinfo_mock gtest)
703 ADD_TEST(alldocube-iwork8-test alldocube-iwork8-test)
704
Marat Dukhan3b434e62018-04-07 02:23:55 -0700705 ADD_EXECUTABLE(leagoo-t5c-test test/mock/leagoo-t5c.cc)
706 TARGET_INCLUDE_DIRECTORIES(leagoo-t5c-test BEFORE PRIVATE test/mock)
707 TARGET_LINK_LIBRARIES(leagoo-t5c-test PRIVATE cpuinfo_mock gtest)
708 ADD_TEST(leagoo-t5c-test leagoo-t5c-test)
709
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700710 ADD_EXECUTABLE(memo-pad-7-test test/mock/memo-pad-7.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700711 TARGET_INCLUDE_DIRECTORIES(memo-pad-7-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700712 TARGET_LINK_LIBRARIES(memo-pad-7-test PRIVATE cpuinfo_mock gtest)
713 ADD_TEST(memo-pad-7-test memo-pad-7-test)
714
715 ADD_EXECUTABLE(zenfone-c-test test/mock/zenfone-c.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700716 TARGET_INCLUDE_DIRECTORIES(zenfone-c-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700717 TARGET_LINK_LIBRARIES(zenfone-c-test PRIVATE cpuinfo_mock gtest)
718 ADD_TEST(zenfone-c-test zenfone-c-test)
719
720 ADD_EXECUTABLE(zenfone-2-test test/mock/zenfone-2.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700721 TARGET_INCLUDE_DIRECTORIES(zenfone-2-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700722 TARGET_LINK_LIBRARIES(zenfone-2-test PRIVATE cpuinfo_mock gtest)
723 ADD_TEST(zenfone-2-test zenfone-2-test)
724
725 ADD_EXECUTABLE(zenfone-2e-test test/mock/zenfone-2e.cc)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700726 TARGET_INCLUDE_DIRECTORIES(zenfone-2e-test BEFORE PRIVATE test/mock)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700727 TARGET_LINK_LIBRARIES(zenfone-2e-test PRIVATE cpuinfo_mock gtest)
728 ADD_TEST(zenfone-2e-test zenfone-2e-test)
729 ENDIF()
730ENDIF()
731
732# ---[ cpuinfo unit tests
Marat Dukhan249d3142018-03-15 23:20:11 -0700733IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_UNIT_TESTS)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700734 ADD_EXECUTABLE(init-test test/init.cc)
Marat Dukhancddf01b2018-02-25 01:37:55 +0100735 CPUINFO_TARGET_ENABLE_CXX11(init-test)
Marat Dukhand0222b42018-03-26 11:19:48 -0700736 CPUINFO_TARGET_RUNTIME_LIBRARY(init-test)
Hao Lu4e8f0432018-07-23 23:32:16 -0700737 TARGET_LINK_LIBRARIES(init-test PRIVATE cpuinfo gtest gtest_main)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700738 ADD_TEST(init-test init-test)
739
740 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
741 ADD_EXECUTABLE(get-current-test test/get-current.cc)
Marat Dukhancddf01b2018-02-25 01:37:55 +0100742 CPUINFO_TARGET_ENABLE_CXX11(get-current-test)
Marat Dukhand0222b42018-03-26 11:19:48 -0700743 CPUINFO_TARGET_RUNTIME_LIBRARY(get-current-test)
Hao Lu4e8f0432018-07-23 23:32:16 -0700744 TARGET_LINK_LIBRARIES(get-current-test PRIVATE cpuinfo gtest gtest_main)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700745 ADD_TEST(get-current-test get-current-test)
746 ENDIF()
747
Nikita Shulga59162732020-12-17 12:05:37 -0800748 IF(CPUINFO_TARGET_PROCESSOR MATCHES "^(i[3-6]86|AMD64|x86_64)$")
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700749 ADD_EXECUTABLE(brand-string-test test/name/brand-string.cc)
Marat Dukhancddf01b2018-02-25 01:37:55 +0100750 CPUINFO_TARGET_ENABLE_CXX11(brand-string-test)
Marat Dukhand0222b42018-03-26 11:19:48 -0700751 CPUINFO_TARGET_RUNTIME_LIBRARY(brand-string-test)
Marat Dukhanccbddb52018-12-16 01:51:31 -0800752 TARGET_LINK_LIBRARIES(brand-string-test PRIVATE cpuinfo_internals gtest gtest_main)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700753 ADD_TEST(brand-string-test brand-string-test)
754 ENDIF()
755
Marat Dukhana9103882018-10-30 22:02:37 -1000756 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv[5-8].*|aarch64)$")
Marat Dukhancddf01b2018-02-25 01:37:55 +0100757 ADD_LIBRARY(android_properties_interface STATIC test/name/android-properties-interface.c)
758 CPUINFO_TARGET_ENABLE_C99(android_properties_interface)
Marat Dukhand0222b42018-03-26 11:19:48 -0700759 CPUINFO_TARGET_RUNTIME_LIBRARY(android_properties_interface)
Marat Dukhanccbddb52018-12-16 01:51:31 -0800760 TARGET_LINK_LIBRARIES(android_properties_interface PRIVATE cpuinfo_internals)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700761
762 ADD_EXECUTABLE(chipset-test
763 test/name/proc-cpuinfo-hardware.cc
764 test/name/ro-product-board.cc
765 test/name/ro-board-platform.cc
766 test/name/ro-mediatek-platform.cc
Marat Dukhane5d60492018-03-08 12:47:27 -0800767 test/name/ro-arch.cc
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700768 test/name/ro-chipname.cc
769 test/name/android-properties.cc)
Marat Dukhancddf01b2018-02-25 01:37:55 +0100770 CPUINFO_TARGET_ENABLE_CXX11(chipset-test)
Marat Dukhand0222b42018-03-26 11:19:48 -0700771 CPUINFO_TARGET_RUNTIME_LIBRARY(chipset-test)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700772 TARGET_LINK_LIBRARIES(chipset-test PRIVATE android_properties_interface gtest gtest_main)
773 ADD_TEST(chipset-test chipset-test)
774
775 ADD_EXECUTABLE(cache-test test/arm-cache.cc)
Marat Dukhancddf01b2018-02-25 01:37:55 +0100776 CPUINFO_TARGET_ENABLE_CXX11(cache-test)
Marat Dukhand0222b42018-03-26 11:19:48 -0700777 CPUINFO_TARGET_RUNTIME_LIBRARY(cache-test)
Marat Dukhancddf01b2018-02-25 01:37:55 +0100778 TARGET_COMPILE_DEFINITIONS(cache-test PRIVATE __STDC_LIMIT_MACROS=1 __STDC_CONSTANT_MACROS=1)
Marat Dukhanccbddb52018-12-16 01:51:31 -0800779 TARGET_LINK_LIBRARIES(cache-test PRIVATE cpuinfo_internals gtest gtest_main)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700780 ADD_TEST(cache-test, cache-test)
781 ENDIF()
Marat Dukhanb8a83372017-10-13 21:07:44 -0400782ENDIF()
783
Marat Dukhan3645b922017-10-13 17:03:35 -0400784# ---[ Helper and debug tools
Marat Dukhan249d3142018-03-15 23:20:11 -0700785IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_TOOLS)
Marat Dukhan3645b922017-10-13 17:03:35 -0400786 ADD_EXECUTABLE(isa-info tools/isa-info.c)
Marat Dukhancddf01b2018-02-25 01:37:55 +0100787 CPUINFO_TARGET_ENABLE_C99(isa-info)
Marat Dukhand0222b42018-03-26 11:19:48 -0700788 CPUINFO_TARGET_RUNTIME_LIBRARY(isa-info)
Marat Dukhan3645b922017-10-13 17:03:35 -0400789 TARGET_LINK_LIBRARIES(isa-info PRIVATE cpuinfo)
Alexander GQ Gerasiov29b6cdd2019-01-30 11:50:15 +0300790 INSTALL(TARGETS isa-info RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
Marat Dukhan3645b922017-10-13 17:03:35 -0400791
792 ADD_EXECUTABLE(cpu-info tools/cpu-info.c)
Marat Dukhancddf01b2018-02-25 01:37:55 +0100793 CPUINFO_TARGET_ENABLE_C99(cpu-info)
Marat Dukhand0222b42018-03-26 11:19:48 -0700794 CPUINFO_TARGET_RUNTIME_LIBRARY(cpu-info)
Marat Dukhan3645b922017-10-13 17:03:35 -0400795 TARGET_LINK_LIBRARIES(cpu-info PRIVATE cpuinfo)
Alexander GQ Gerasiov29b6cdd2019-01-30 11:50:15 +0300796 INSTALL(TARGETS cpu-info RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
Marat Dukhan3645b922017-10-13 17:03:35 -0400797
798 ADD_EXECUTABLE(cache-info tools/cache-info.c)
Marat Dukhancddf01b2018-02-25 01:37:55 +0100799 CPUINFO_TARGET_ENABLE_C99(cache-info)
Marat Dukhand0222b42018-03-26 11:19:48 -0700800 CPUINFO_TARGET_RUNTIME_LIBRARY(cache-info)
Marat Dukhan3645b922017-10-13 17:03:35 -0400801 TARGET_LINK_LIBRARIES(cache-info PRIVATE cpuinfo)
Alexander GQ Gerasiov29b6cdd2019-01-30 11:50:15 +0300802 INSTALL(TARGETS cache-info RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
Marat Dukhan3645b922017-10-13 17:03:35 -0400803
Marat Dukhana9103882018-10-30 22:02:37 -1000804 IF(CMAKE_SYSTEM_NAME MATCHES "^(Android|Linux)$" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv[5-8].*|aarch64)$")
Marat Dukhanf3a71e62017-11-29 15:15:36 -0800805 ADD_EXECUTABLE(auxv-dump tools/auxv-dump.c)
Marat Dukhancddf01b2018-02-25 01:37:55 +0100806 CPUINFO_TARGET_ENABLE_C99(auxv-dump)
Marat Dukhand0222b42018-03-26 11:19:48 -0700807 CPUINFO_TARGET_RUNTIME_LIBRARY(auxv-dump)
Marat Dukhan33011de2018-07-13 19:46:06 -0700808 TARGET_LINK_LIBRARIES(auxv-dump PRIVATE ${CMAKE_DL_LIBS} cpuinfo)
Marat Dukhancb9ae9c2018-04-19 12:29:15 -0700809
810 ADD_EXECUTABLE(cpuinfo-dump tools/cpuinfo-dump.c)
811 CPUINFO_TARGET_ENABLE_C99(cpuinfo-dump)
812 CPUINFO_TARGET_RUNTIME_LIBRARY(cpuinfo-dump)
Marat Dukhanf3a71e62017-11-29 15:15:36 -0800813 ENDIF()
814
Nikita Shulga59162732020-12-17 12:05:37 -0800815 IF(CPUINFO_TARGET_PROCESSOR MATCHES "^(i[3-6]86|AMD64|x86_64)$")
Marat Dukhan3645b922017-10-13 17:03:35 -0400816 ADD_EXECUTABLE(cpuid-dump tools/cpuid-dump.c)
Marat Dukhancddf01b2018-02-25 01:37:55 +0100817 CPUINFO_TARGET_ENABLE_C99(cpuid-dump)
Marat Dukhand0222b42018-03-26 11:19:48 -0700818 CPUINFO_TARGET_RUNTIME_LIBRARY(cpuid-dump)
Marat Dukhan806dcca2018-03-22 12:22:48 -0700819 TARGET_INCLUDE_DIRECTORIES(cpuid-dump BEFORE PRIVATE src)
820 TARGET_INCLUDE_DIRECTORIES(cpuid-dump BEFORE PRIVATE include)
Alexander GQ Gerasiov29b6cdd2019-01-30 11:50:15 +0300821 INSTALL(TARGETS cpuid-dump RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
Marat Dukhan3645b922017-10-13 17:03:35 -0400822 ENDIF()
823ENDIF()