blob: f6a18ceff7c5fee52cc441a3a5a7b2671df34cc6 [file] [log] [blame]
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -07001CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12 FATAL_ERROR)
Marat Dukhan3645b922017-10-13 17:03:35 -04002
3INCLUDE(GNUInstallDirs)
4
5# ---[ Project and semantic versioning.
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -07006PROJECT(cpuinfo LANGUAGES C CXX)
Marat Dukhan3645b922017-10-13 17:03:35 -04007
8# ---[ Options.
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -07009OPTION(CPUINFO_BUILD_TOOLS "Build command-line tools" ON)
10OPTION(CPUINFO_BUILD_UNIT_TESTS "Build C++ unit tests" ON)
11OPTION(CPUINFO_BUILD_MOCK_TESTS "Build C++ mock tests" ON)
12
13# ---[ CMake options
14IF(CPUINFO_BUILD_UNIT_TESTS OR CPUINFO_BUILD_MOCK_TESTS)
15 ENABLE_TESTING()
16ENDIF()
Marat Dukhan3645b922017-10-13 17:03:35 -040017
18# ---[ Build flags
Marat Dukhan3645b922017-10-13 17:03:35 -040019IF(NOT MSVC)
Marat Dukhan7b738882017-10-18 16:59:28 -070020 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
21 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
Marat Dukhan3645b922017-10-13 17:03:35 -040022ENDIF()
23
24IF(NOT CMAKE_SYSTEM_PROCESSOR)
25 MESSAGE(FATAL_ERROR "CMAKE_SYSTEM_PROCESSOR not defined")
Marat Dukhan7b738882017-10-18 16:59:28 -070026ELSEIF(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^(i686|x86_64|armv5te|armv7|armv7f|armv7s|armv7k|armv7-a|armv7l|arm64|aarch64)$")
Marat Dukhan3645b922017-10-13 17:03:35 -040027 MESSAGE(FATAL_ERROR "Unrecognized CMAKE_SYSTEM_PROCESSOR = ${CMAKE_SYSTEM_PROCESSOR}")
28ENDIF()
29
30IF(NOT CMAKE_SYSTEM_NAME)
31 MESSAGE(FATAL_ERROR "CMAKE_SYSTEM_NAME not defined")
32ELSEIF(NOT CMAKE_SYSTEM_NAME MATCHES "^(Darwin|Linux|Android)$")
33 MESSAGE(FATAL_ERROR "Unrecognized CMAKE_SYSTEM_NAME = ${CMAKE_SYSTEM_NAME}")
34ENDIF()
35
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -070036# ---[ Download deps
37SET(CONFU_DEPENDENCIES_SOURCE_DIR ${CMAKE_SOURCE_DIR}/deps
38 CACHE PATH "Confu-style dependencies source directory")
39SET(CONFU_DEPENDENCIES_BINARY_DIR ${CMAKE_BINARY_DIR}/deps
40 CACHE PATH "Confu-style dependencies binary directory")
41
42IF(NOT TARGET gtest)
43 CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CMAKE_BINARY_DIR}/googletest-download/CMakeLists.txt")
44 EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
45 WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/googletest-download")
46 EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
47 WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/googletest-download")
48ENDIF()
Marat Dukhan3645b922017-10-13 17:03:35 -040049
50# ---[ cpuinfo library
51SET(CPUINFO_SRCS
52 src/init.c
53 src/api.c
54 src/log.c)
55
56IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i686|x86_64)$")
57 LIST(APPEND CPUINFO_SRCS
58 src/x86/init.c
59 src/x86/info.c
60 src/x86/vendor.c
61 src/x86/uarch.c
62 src/x86/name.c
63 src/x86/topology.c
64 src/x86/isa.c
65 src/x86/cache/init.c
66 src/x86/cache/descriptor.c
67 src/x86/cache/deterministic.c)
68 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
69 LIST(APPEND CPUINFO_SRCS
70 src/x86/linux/init.c
71 src/x86/linux/cpuinfo.c)
72 ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
73 LIST(APPEND CPUINFO_SRCS src/x86/mach/init.c)
74 ENDIF()
Marat Dukhan7b738882017-10-18 16:59:28 -070075ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7|armv7f|armv7s|armv7k|armv7-a|armv7l|arm64|aarch64)$")
Marat Dukhan3645b922017-10-13 17:03:35 -040076 LIST(APPEND CPUINFO_SRCS
77 src/arm/uarch.c
78 src/arm/cache.c)
79 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
80 LIST(APPEND CPUINFO_SRCS
81 src/arm/linux/init.c
82 src/arm/linux/cpuinfo.c
83 src/arm/linux/clusters.c
Marat Dukhaned272132017-10-15 21:55:45 +000084 src/arm/linux/chipset.c
Marat Dukhan3645b922017-10-13 17:03:35 -040085 src/arm/linux/midr.c)
Marat Dukhan7b738882017-10-18 16:59:28 -070086 IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7l|armv7-a)$")
87 LIST(APPEND CPUINFO_SRCS src/arm/linux/arm32-isa.c)
88 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND ANDROID_ABI STREQUAL "armeabi")
89 SET_SOURCE_FILES_PROPERTIES(src/arm/linux/arm32-isa.c PROPERTIES COMPILE_FLAGS -marm)
90 ENDIF()
91 ELSEIF(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
92 LIST(APPEND CPUINFO_SRCS src/arm/linux/arm64-isa.c)
93 ENDIF()
94 ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
Marat Dukhanad1ac952017-10-23 15:32:25 -070095 LIST(APPEND CPUINFO_SRCS
96 src/arm/mach/init.c
97 src/gpu/gles-ios.m)
Marat Dukhan02527012017-10-23 16:03:05 -070098 SET_SOURCE_FILES_PROPERTIES(src/gpu/gles-ios.m PROPERTIES COMPILE_FLAGS -fobjc-arc)
Marat Dukhan3645b922017-10-13 17:03:35 -040099 ENDIF()
100 IF(CMAKE_SYSTEM_NAME STREQUAL "Android")
101 LIST(APPEND CPUINFO_SRCS
Marat Dukhan3645b922017-10-13 17:03:35 -0400102 src/arm/Android/properties.c)
103 ENDIF()
Marat Dukhan3645b922017-10-13 17:03:35 -0400104ENDIF()
105
106IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
107 LIST(APPEND CPUINFO_SRCS
108 src/linux/smallfile.c
109 src/linux/multiline.c
110 src/linux/current.c
111 src/linux/cpulist.c
112 src/linux/processors.c)
113 IF(CMAKE_SYSTEM_NAME STREQUAL "Android")
114 LIST(APPEND CPUINFO_SRCS src/gpu/gles2.c)
115 ENDIF()
116ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
117 LIST(APPEND CPUINFO_SRCS src/mach/topology.c)
118ENDIF()
119
Marat Dukhanbfff3482017-10-15 22:24:32 +0000120IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
121 SET(CMAKE_THREAD_PREFER_PTHREAD TRUE)
122 SET(THREADS_PREFER_PTHREAD_FLAG TRUE)
123 FIND_PACKAGE(Threads REQUIRED)
124ENDIF()
125
Marat Dukhan3645b922017-10-13 17:03:35 -0400126ADD_LIBRARY(cpuinfo ${CPUINFO_SRCS})
Marat Dukhan3645b922017-10-13 17:03:35 -0400127SET_TARGET_PROPERTIES(cpuinfo PROPERTIES PUBLIC_HEADER include/cpuinfo.h)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700128TARGET_INCLUDE_DIRECTORIES(cpuinfo PUBLIC include)
Marat Dukhan3645b922017-10-13 17:03:35 -0400129TARGET_INCLUDE_DIRECTORIES(cpuinfo PRIVATE src)
Marat Dukhanbfff3482017-10-15 22:24:32 +0000130IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
131 TARGET_LINK_LIBRARIES(cpuinfo PUBLIC ${CMAKE_THREAD_LIBS_INIT})
132ENDIF()
Marat Dukhanad1ac952017-10-23 15:32:25 -0700133IF(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv7|armv7f|armv7s|armv7k|arm64)$")
134 TARGET_LINK_LIBRARIES(cpuinfo INTERFACE "-framework OpenGLES")
135 TARGET_LINK_LIBRARIES(cpuinfo INTERFACE "-framework Foundation")
136ENDIF()
Marat Dukhan3645b922017-10-13 17:03:35 -0400137
138INSTALL(TARGETS cpuinfo
139 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
140 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
141 PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
142
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700143IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS)
144 # ---[ Build google test
145 IF(NOT TARGET gtest)
146 SET(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
147 ADD_SUBDIRECTORY(
148 "${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest"
149 "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest")
150 ENDIF()
151ENDIF()
152
153# ---[ cpuinfo mock library and mock tests
154IF(CPUINFO_BUILD_MOCK_TESTS)
Marat Dukhanb8a83372017-10-13 21:07:44 -0400155 SET(CPUINFO_MOCK_SRCS "${CPUINFO_SRCS}")
156 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
157 LIST(APPEND CPUINFO_MOCK_SRCS src/linux/mockfile.c)
158 ENDIF()
159
160 ADD_LIBRARY(cpuinfo_mock ${CPUINFO_MOCK_SRCS})
Marat Dukhanb8a83372017-10-13 21:07:44 -0400161 SET_TARGET_PROPERTIES(cpuinfo_mock PROPERTIES PUBLIC_HEADER include/cpuinfo.h)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700162 TARGET_INCLUDE_DIRECTORIES(cpuinfo_mock PUBLIC include)
Marat Dukhanb8a83372017-10-13 21:07:44 -0400163 TARGET_INCLUDE_DIRECTORIES(cpuinfo_mock PRIVATE src)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700164 TARGET_COMPILE_DEFINITIONS(cpuinfo_mock PUBLIC "-DCPUINFO_MOCK=1")
Marat Dukhanbfff3482017-10-15 22:24:32 +0000165 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
166 TARGET_LINK_LIBRARIES(cpuinfo_mock PUBLIC ${CMAKE_THREAD_LIBS_INIT})
167 ENDIF()
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700168
169 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7-a)$")
170 ADD_EXECUTABLE(blu-r1-hd-test test/mock/blu-r1-hd.cc)
171 TARGET_INCLUDE_DIRECTORIES(blu-r1-hd-test PRIVATE test/mock)
172 TARGET_LINK_LIBRARIES(blu-r1-hd-test PRIVATE cpuinfo_mock gtest)
173 ADD_TEST(blu-r1-hd-test blu-r1-hd-test)
174
175 ADD_EXECUTABLE(galaxy-grand-prime-value-edition-test test/mock/galaxy-grand-prime-value-edition.cc)
176 TARGET_INCLUDE_DIRECTORIES(galaxy-grand-prime-value-edition-test PRIVATE test/mock)
177 TARGET_LINK_LIBRARIES(galaxy-grand-prime-value-edition-test PRIVATE cpuinfo_mock gtest)
178 ADD_TEST(galaxy-grand-prime-value-edition-test galaxy-grand-prime-value-edition-test)
179
180 ADD_EXECUTABLE(galaxy-s3-us-test test/mock/galaxy-s3-us.cc)
181 TARGET_INCLUDE_DIRECTORIES(galaxy-s3-us-test PRIVATE test/mock)
182 TARGET_LINK_LIBRARIES(galaxy-s3-us-test PRIVATE cpuinfo_mock gtest)
183 ADD_TEST(galaxy-s3-us-test galaxy-s3-us-test)
184
185 ADD_EXECUTABLE(galaxy-s4-us-test test/mock/galaxy-s4-us.cc)
186 TARGET_INCLUDE_DIRECTORIES(galaxy-s4-us-test PRIVATE test/mock)
187 TARGET_LINK_LIBRARIES(galaxy-s4-us-test PRIVATE cpuinfo_mock gtest)
188 ADD_TEST(galaxy-s4-us-test galaxy-s4-us-test)
189
190 ADD_EXECUTABLE(galaxy-s5-global-test test/mock/galaxy-s5-global.cc)
191 TARGET_INCLUDE_DIRECTORIES(galaxy-s5-global-test PRIVATE test/mock)
192 TARGET_LINK_LIBRARIES(galaxy-s5-global-test PRIVATE cpuinfo_mock gtest)
193 ADD_TEST(galaxy-s5-global-test galaxy-s5-global-test)
194
195 ADD_EXECUTABLE(galaxy-s5-us-test test/mock/galaxy-s5-us.cc)
196 TARGET_INCLUDE_DIRECTORIES(galaxy-s5-us-test PRIVATE test/mock)
197 TARGET_LINK_LIBRARIES(galaxy-s5-us-test PRIVATE cpuinfo_mock gtest)
198 ADD_TEST(galaxy-s5-us-test galaxy-s5-us-test)
199
200 ADD_EXECUTABLE(galaxy-tab-3-7.0-test test/mock/galaxy-tab-3-7.0.cc)
201 TARGET_INCLUDE_DIRECTORIES(galaxy-tab-3-7.0-test PRIVATE test/mock)
202 TARGET_LINK_LIBRARIES(galaxy-tab-3-7.0-test PRIVATE cpuinfo_mock gtest)
203 ADD_TEST(galaxy-tab-3-7.0-test galaxy-tab-3-7.0-test)
204
205 ADD_EXECUTABLE(galaxy-tab-3-lite-test test/mock/galaxy-tab-3-lite.cc)
206 TARGET_INCLUDE_DIRECTORIES(galaxy-tab-3-lite-test PRIVATE test/mock)
207 TARGET_LINK_LIBRARIES(galaxy-tab-3-lite-test PRIVATE cpuinfo_mock gtest)
208 ADD_TEST(galaxy-tab-3-lite-test galaxy-tab-3-lite-test)
209
210 ADD_EXECUTABLE(galaxy-win-duos-test test/mock/galaxy-win-duos.cc)
211 TARGET_INCLUDE_DIRECTORIES(galaxy-win-duos-test PRIVATE test/mock)
212 TARGET_LINK_LIBRARIES(galaxy-win-duos-test PRIVATE cpuinfo_mock gtest)
213 ADD_TEST(galaxy-win-duos-test galaxy-win-duos-test)
214
215 ADD_EXECUTABLE(huawei-ascend-p7-test test/mock/huawei-ascend-p7.cc)
216 TARGET_INCLUDE_DIRECTORIES(huawei-ascend-p7-test PRIVATE test/mock)
217 TARGET_LINK_LIBRARIES(huawei-ascend-p7-test PRIVATE cpuinfo_mock gtest)
218 ADD_TEST(huawei-ascend-p7-test huawei-ascend-p7-test)
219
220 ADD_EXECUTABLE(lenovo-a6600-plus-test test/mock/lenovo-a6600-plus.cc)
221 TARGET_INCLUDE_DIRECTORIES(lenovo-a6600-plus-test PRIVATE test/mock)
222 TARGET_LINK_LIBRARIES(lenovo-a6600-plus-test PRIVATE cpuinfo_mock gtest)
223 ADD_TEST(lenovo-a6600-plus-test lenovo-a6600-plus-test)
224
225 ADD_EXECUTABLE(lenovo-vibe-x2-test test/mock/lenovo-vibe-x2.cc)
226 TARGET_INCLUDE_DIRECTORIES(lenovo-vibe-x2-test PRIVATE test/mock)
227 TARGET_LINK_LIBRARIES(lenovo-vibe-x2-test PRIVATE cpuinfo_mock gtest)
228 ADD_TEST(lenovo-vibe-x2-test lenovo-vibe-x2-test)
229
230 ADD_EXECUTABLE(lg-k10-eu-test test/mock/lg-k10-eu.cc)
231 TARGET_INCLUDE_DIRECTORIES(lg-k10-eu-test PRIVATE test/mock)
232 TARGET_LINK_LIBRARIES(lg-k10-eu-test PRIVATE cpuinfo_mock gtest)
233 ADD_TEST(lg-k10-eu-test lg-k10-eu-test)
234
235 ADD_EXECUTABLE(moto-e-gen1-test test/mock/moto-e-gen1.cc)
236 TARGET_INCLUDE_DIRECTORIES(moto-e-gen1-test PRIVATE test/mock)
237 TARGET_LINK_LIBRARIES(moto-e-gen1-test PRIVATE cpuinfo_mock gtest)
238 ADD_TEST(moto-e-gen1-test moto-e-gen1-test)
239
240 ADD_EXECUTABLE(moto-g-gen2-test test/mock/moto-g-gen2.cc)
241 TARGET_INCLUDE_DIRECTORIES(moto-g-gen2-test PRIVATE test/mock)
242 TARGET_LINK_LIBRARIES(moto-g-gen2-test PRIVATE cpuinfo_mock gtest)
243 ADD_TEST(moto-g-gen2-test moto-g-gen2-test)
244
245 ADD_EXECUTABLE(moto-g-gen3-test test/mock/moto-g-gen3.cc)
246 TARGET_INCLUDE_DIRECTORIES(moto-g-gen3-test PRIVATE test/mock)
247 TARGET_LINK_LIBRARIES(moto-g-gen3-test PRIVATE cpuinfo_mock gtest)
248 ADD_TEST(moto-g-gen3-test moto-g-gen3-test)
249
250 ADD_EXECUTABLE(nexus-s-test test/mock/nexus-s.cc)
251 TARGET_INCLUDE_DIRECTORIES(nexus-s-test PRIVATE test/mock)
252 TARGET_LINK_LIBRARIES(nexus-s-test PRIVATE cpuinfo_mock gtest)
253 ADD_TEST(nexus-s-test nexus-s-test)
254
255 ADD_EXECUTABLE(nexus4-test test/mock/nexus4.cc)
256 TARGET_INCLUDE_DIRECTORIES(nexus4-test PRIVATE test/mock)
257 TARGET_LINK_LIBRARIES(nexus4-test PRIVATE cpuinfo_mock gtest)
258 ADD_TEST(nexus4-test nexus4-test)
259
260 ADD_EXECUTABLE(nexus6-test test/mock/nexus6.cc)
261 TARGET_INCLUDE_DIRECTORIES(nexus6-test PRIVATE test/mock)
262 TARGET_LINK_LIBRARIES(nexus6-test PRIVATE cpuinfo_mock gtest)
263 ADD_TEST(nexus6-test nexus6-test)
264
265 ADD_EXECUTABLE(xiaomi-redmi-2a-test test/mock/xiaomi-redmi-2a.cc)
266 TARGET_INCLUDE_DIRECTORIES(xiaomi-redmi-2a-test PRIVATE test/mock)
267 TARGET_LINK_LIBRARIES(xiaomi-redmi-2a-test PRIVATE cpuinfo_mock gtest)
268 ADD_TEST(xiaomi-redmi-2a-test xiaomi-redmi-2a-test)
269 ENDIF()
270
271 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7-a|aarch64)$")
272 ADD_EXECUTABLE(galaxy-c9-pro-test test/mock/galaxy-c9-pro.cc)
273 TARGET_INCLUDE_DIRECTORIES(galaxy-c9-pro-test PRIVATE test/mock)
274 TARGET_LINK_LIBRARIES(galaxy-c9-pro-test PRIVATE cpuinfo_mock gtest)
275 ADD_TEST(galaxy-c9-pro-test galaxy-c9-pro-test)
276
277 ADD_EXECUTABLE(galaxy-j7-tmobile-test test/mock/galaxy-j7-tmobile.cc)
278 TARGET_INCLUDE_DIRECTORIES(galaxy-j7-tmobile-test PRIVATE test/mock)
279 TARGET_LINK_LIBRARIES(galaxy-j7-tmobile-test PRIVATE cpuinfo_mock gtest)
280 ADD_TEST(galaxy-j7-tmobile-test galaxy-j7-tmobile-test)
281
282 ADD_EXECUTABLE(galaxy-j7-uae-test test/mock/galaxy-j7-uae.cc)
283 TARGET_INCLUDE_DIRECTORIES(galaxy-j7-uae-test PRIVATE test/mock)
284 TARGET_LINK_LIBRARIES(galaxy-j7-uae-test PRIVATE cpuinfo_mock gtest)
285 ADD_TEST(galaxy-j7-uae-test galaxy-j7-uae-test)
286
287 ADD_EXECUTABLE(galaxy-s6-test test/mock/galaxy-s6.cc)
288 TARGET_INCLUDE_DIRECTORIES(galaxy-s6-test PRIVATE test/mock)
289 TARGET_LINK_LIBRARIES(galaxy-s6-test PRIVATE cpuinfo_mock gtest)
290 ADD_TEST(galaxy-s6-test galaxy-s6-test)
291
292 ADD_EXECUTABLE(galaxy-s7-us-test test/mock/galaxy-s7-us.cc)
293 TARGET_INCLUDE_DIRECTORIES(galaxy-s7-us-test PRIVATE test/mock)
294 TARGET_LINK_LIBRARIES(galaxy-s7-us-test PRIVATE cpuinfo_mock gtest)
295 ADD_TEST(galaxy-s7-us-test galaxy-s7-us-test)
296
297 ADD_EXECUTABLE(galaxy-s7-global-test test/mock/galaxy-s7-global.cc)
298 TARGET_INCLUDE_DIRECTORIES(galaxy-s7-global-test PRIVATE test/mock)
299 TARGET_LINK_LIBRARIES(galaxy-s7-global-test PRIVATE cpuinfo_mock gtest)
300 ADD_TEST(galaxy-s7-global-test galaxy-s7-global-test)
301
302 ADD_EXECUTABLE(galaxy-s8-us-test test/mock/galaxy-s8-us.cc)
303 TARGET_INCLUDE_DIRECTORIES(galaxy-s8-us-test PRIVATE test/mock)
304 TARGET_LINK_LIBRARIES(galaxy-s8-us-test PRIVATE cpuinfo_mock gtest)
305 ADD_TEST(galaxy-s8-us-test galaxy-s8-us-test)
306
307 ADD_EXECUTABLE(galaxy-s8-global-test test/mock/galaxy-s8-global.cc)
308 TARGET_INCLUDE_DIRECTORIES(galaxy-s8-global-test PRIVATE test/mock)
309 TARGET_LINK_LIBRARIES(galaxy-s8-global-test PRIVATE cpuinfo_mock gtest)
310 ADD_TEST(galaxy-s8-global-test galaxy-s8-global-test)
311
312 ADD_EXECUTABLE(huawei-p9-lite-test test/mock/huawei-p9-lite.cc)
313 TARGET_INCLUDE_DIRECTORIES(huawei-p9-lite-test PRIVATE test/mock)
314 TARGET_LINK_LIBRARIES(huawei-p9-lite-test PRIVATE cpuinfo_mock gtest)
315 ADD_TEST(huawei-p9-lite-test huawei-p9-lite-test)
316
317 ADD_EXECUTABLE(huawei-mate-8-test test/mock/huawei-mate-8.cc)
318 TARGET_INCLUDE_DIRECTORIES(huawei-mate-8-test PRIVATE test/mock)
319 TARGET_LINK_LIBRARIES(huawei-mate-8-test PRIVATE cpuinfo_mock gtest)
320 ADD_TEST(huawei-mate-8-test huawei-mate-8-test)
321
322 ADD_EXECUTABLE(huawei-mate-9-test test/mock/huawei-mate-9.cc)
323 TARGET_INCLUDE_DIRECTORIES(huawei-mate-9-test PRIVATE test/mock)
324 TARGET_LINK_LIBRARIES(huawei-mate-9-test PRIVATE cpuinfo_mock gtest)
325 ADD_TEST(huawei-mate-9-test huawei-mate-9-test)
326
327 ADD_EXECUTABLE(meizu-pro-6-test test/mock/meizu-pro-6.cc)
328 TARGET_INCLUDE_DIRECTORIES(meizu-pro-6-test PRIVATE test/mock)
329 TARGET_LINK_LIBRARIES(meizu-pro-6-test PRIVATE cpuinfo_mock gtest)
330 ADD_TEST(meizu-pro-6-test meizu-pro-6-test)
331
332 ADD_EXECUTABLE(meizu-pro-6s-test test/mock/meizu-pro-6s.cc)
333 TARGET_INCLUDE_DIRECTORIES(meizu-pro-6s-test PRIVATE test/mock)
334 TARGET_LINK_LIBRARIES(meizu-pro-6s-test PRIVATE cpuinfo_mock gtest)
335 ADD_TEST(meizu-pro-6s-test meizu-pro-6s-test)
336
337 ADD_EXECUTABLE(meizu-pro-7-plus-test test/mock/meizu-pro-7-plus.cc)
338 TARGET_INCLUDE_DIRECTORIES(meizu-pro-7-plus-test PRIVATE test/mock)
339 TARGET_LINK_LIBRARIES(meizu-pro-7-plus-test PRIVATE cpuinfo_mock gtest)
340 ADD_TEST(meizu-pro-7-plus-test meizu-pro-7-plus-test)
341
342 ADD_EXECUTABLE(nexus5x-test test/mock/nexus5x.cc)
343 TARGET_INCLUDE_DIRECTORIES(nexus5x-test PRIVATE test/mock)
344 TARGET_LINK_LIBRARIES(nexus5x-test PRIVATE cpuinfo_mock gtest)
345 ADD_TEST(nexus5x-test nexus5x-test)
346
347 ADD_EXECUTABLE(nexus6p-test test/mock/nexus6p.cc)
348 TARGET_INCLUDE_DIRECTORIES(nexus6p-test PRIVATE test/mock)
349 TARGET_LINK_LIBRARIES(nexus6p-test PRIVATE cpuinfo_mock gtest)
350 ADD_TEST(nexus6p-test nexus6p-test)
351
352 ADD_EXECUTABLE(nexus9-test test/mock/nexus9.cc)
353 TARGET_INCLUDE_DIRECTORIES(nexus9-test PRIVATE test/mock)
354 TARGET_LINK_LIBRARIES(nexus9-test PRIVATE cpuinfo_mock gtest)
355 ADD_TEST(nexus9-test nexus9-test)
356
357 ADD_EXECUTABLE(oppo-r9-test test/mock/oppo-r9.cc)
358 TARGET_INCLUDE_DIRECTORIES(oppo-r9-test PRIVATE test/mock)
359 TARGET_LINK_LIBRARIES(oppo-r9-test PRIVATE cpuinfo_mock gtest)
360 ADD_TEST(oppo-r9-test oppo-r9-test)
361
362 ADD_EXECUTABLE(pixel-test test/mock/pixel.cc)
363 TARGET_INCLUDE_DIRECTORIES(pixel-test PRIVATE test/mock)
364 TARGET_LINK_LIBRARIES(pixel-test PRIVATE cpuinfo_mock gtest)
365 ADD_TEST(pixel-test pixel-test)
366
367 ADD_EXECUTABLE(pixel-c-test test/mock/pixel-c.cc)
368 TARGET_INCLUDE_DIRECTORIES(pixel-c-test PRIVATE test/mock)
369 TARGET_LINK_LIBRARIES(pixel-c-test PRIVATE cpuinfo_mock gtest)
370 ADD_TEST(pixel-c-test pixel-c-test)
371
372 ADD_EXECUTABLE(pixel-xl-test test/mock/pixel-xl.cc)
373 TARGET_INCLUDE_DIRECTORIES(pixel-xl-test PRIVATE test/mock)
374 TARGET_LINK_LIBRARIES(pixel-xl-test PRIVATE cpuinfo_mock gtest)
375 ADD_TEST(pixel-xl-test pixel-xl-test)
376
377 ADD_EXECUTABLE(xiaomi-mi-5c-test test/mock/xiaomi-mi-5c.cc)
378 TARGET_INCLUDE_DIRECTORIES(xiaomi-mi-5c-test PRIVATE test/mock)
379 TARGET_LINK_LIBRARIES(xiaomi-mi-5c-test PRIVATE cpuinfo_mock gtest)
380 ADD_TEST(xiaomi-mi-5c-test xiaomi-mi-5c-test)
381
382 ADD_EXECUTABLE(xiaomi-redmi-note-3-test test/mock/xiaomi-redmi-note-3.cc)
383 TARGET_INCLUDE_DIRECTORIES(xiaomi-redmi-note-3-test PRIVATE test/mock)
384 TARGET_LINK_LIBRARIES(xiaomi-redmi-note-3-test PRIVATE cpuinfo_mock gtest)
385 ADD_TEST(xiaomi-redmi-note-3-test xiaomi-redmi-note-3-test)
386
387 ADD_EXECUTABLE(xperia-c4-dual-test test/mock/xperia-c4-dual.cc)
388 TARGET_INCLUDE_DIRECTORIES(xperia-c4-dual-test PRIVATE test/mock)
389 TARGET_LINK_LIBRARIES(xperia-c4-dual-test PRIVATE cpuinfo_mock gtest)
390 ADD_TEST(xperia-c4-dual-test xperia-c4-dual-test)
391 ENDIF()
392
393 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(i686|x86_64)$")
394 ADD_EXECUTABLE(memo-pad-7-test test/mock/memo-pad-7.cc)
395 TARGET_INCLUDE_DIRECTORIES(memo-pad-7-test PRIVATE test/mock)
396 TARGET_LINK_LIBRARIES(memo-pad-7-test PRIVATE cpuinfo_mock gtest)
397 ADD_TEST(memo-pad-7-test memo-pad-7-test)
398
399 ADD_EXECUTABLE(zenfone-c-test test/mock/zenfone-c.cc)
400 TARGET_INCLUDE_DIRECTORIES(zenfone-c-test PRIVATE test/mock)
401 TARGET_LINK_LIBRARIES(zenfone-c-test PRIVATE cpuinfo_mock gtest)
402 ADD_TEST(zenfone-c-test zenfone-c-test)
403
404 ADD_EXECUTABLE(zenfone-2-test test/mock/zenfone-2.cc)
405 TARGET_INCLUDE_DIRECTORIES(zenfone-2-test PRIVATE test/mock)
406 TARGET_LINK_LIBRARIES(zenfone-2-test PRIVATE cpuinfo_mock gtest)
407 ADD_TEST(zenfone-2-test zenfone-2-test)
408
409 ADD_EXECUTABLE(zenfone-2e-test test/mock/zenfone-2e.cc)
410 TARGET_INCLUDE_DIRECTORIES(zenfone-2e-test PRIVATE test/mock)
411 TARGET_LINK_LIBRARIES(zenfone-2e-test PRIVATE cpuinfo_mock gtest)
412 ADD_TEST(zenfone-2e-test zenfone-2e-test)
413 ENDIF()
414ENDIF()
415
416# ---[ cpuinfo unit tests
417IF(CPUINFO_BUILD_UNIT_TESTS)
418 ADD_EXECUTABLE(init-test test/init.cc)
419 TARGET_LINK_LIBRARIES(init-test PRIVATE cpuinfo gtest)
420 ADD_TEST(init-test init-test)
421
422 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
423 ADD_EXECUTABLE(get-current-test test/get-current.cc)
424 TARGET_LINK_LIBRARIES(get-current-test PRIVATE cpuinfo gtest)
425 ADD_TEST(get-current-test get-current-test)
426 ENDIF()
427
428 IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i686|x86_64)$")
429 ADD_EXECUTABLE(brand-string-test test/name/brand-string.cc)
430 TARGET_LINK_LIBRARIES(brand-string-test PRIVATE cpuinfo gtest gtest_main)
431 ADD_TEST(brand-string-test brand-string-test)
432 ENDIF()
433
434 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7-a|aarch64)$")
435 ADD_LIBRARY(android_properties_interface test/name/android-properties-interface.c)
436 TARGET_INCLUDE_DIRECTORIES(android_properties_interface PRIVATE src)
437 TARGET_LINK_LIBRARIES(android_properties_interface PRIVATE cpuinfo)
438
439 ADD_EXECUTABLE(chipset-test
440 test/name/proc-cpuinfo-hardware.cc
441 test/name/ro-product-board.cc
442 test/name/ro-board-platform.cc
443 test/name/ro-mediatek-platform.cc
444 test/name/ro-chipname.cc
445 test/name/android-properties.cc)
446 TARGET_LINK_LIBRARIES(chipset-test PRIVATE android_properties_interface gtest gtest_main)
447 ADD_TEST(chipset-test chipset-test)
448
449 ADD_EXECUTABLE(cache-test test/arm-cache.cc)
450 TARGET_COMPILE_DEFINITIONS(cache-test PRIVATE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS)
451 TARGET_INCLUDE_DIRECTORIES(cache-test PRIVATE src)
452 TARGET_LINK_LIBRARIES(cache-test PRIVATE cpuinfo gtest gtest_main)
453 ADD_TEST(cache-test, cache-test)
454 ENDIF()
Marat Dukhanb8a83372017-10-13 21:07:44 -0400455ENDIF()
456
Marat Dukhan3645b922017-10-13 17:03:35 -0400457# ---[ Helper and debug tools
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700458IF(CPUINFO_BUILD_TOOLS)
Marat Dukhan3645b922017-10-13 17:03:35 -0400459 ADD_EXECUTABLE(isa-info tools/isa-info.c)
460 TARGET_LINK_LIBRARIES(isa-info PRIVATE cpuinfo)
461
462 ADD_EXECUTABLE(cpu-info tools/cpu-info.c)
463 TARGET_LINK_LIBRARIES(cpu-info PRIVATE cpuinfo)
464
465 ADD_EXECUTABLE(cache-info tools/cache-info.c)
466 TARGET_LINK_LIBRARIES(cache-info PRIVATE cpuinfo)
467
468 IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i686|x86_64)$")
469 ADD_EXECUTABLE(cpuid-dump tools/cpuid-dump.c)
470 TARGET_INCLUDE_DIRECTORIES(cpuid-dump PRIVATE src)
471 TARGET_INCLUDE_DIRECTORIES(cpuid-dump PRIVATE include)
472 ENDIF()
473ENDIF()