blob: 0c78257a1893b2b226cf79790d53813d939fd222 [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 Dukhan63d41a52017-10-26 00:37:12 +00006PROJECT(cpuinfo 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 Dukhan63a7a6b2017-11-29 15:11:56 -080085 src/arm/linux/midr.c
86 src/arm/linux/hwcap.c)
Marat Dukhan7b738882017-10-18 16:59:28 -070087 IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7l|armv7-a)$")
Marat Dukhandeaa8982017-11-28 11:07:11 -080088 LIST(APPEND CPUINFO_SRCS src/arm/linux/aarch32-isa.c)
Marat Dukhan7b738882017-10-18 16:59:28 -070089 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND ANDROID_ABI STREQUAL "armeabi")
Marat Dukhandeaa8982017-11-28 11:07:11 -080090 SET_SOURCE_FILES_PROPERTIES(src/arm/linux/aarch32-isa.c PROPERTIES COMPILE_FLAGS -marm)
Marat Dukhan7b738882017-10-18 16:59:28 -070091 ENDIF()
92 ELSEIF(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
Marat Dukhandeaa8982017-11-28 11:07:11 -080093 LIST(APPEND CPUINFO_SRCS src/arm/linux/aarch64-isa.c)
Marat Dukhan7b738882017-10-18 16:59:28 -070094 ENDIF()
95 ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
Marat Dukhanad1ac952017-10-23 15:32:25 -070096 LIST(APPEND CPUINFO_SRCS
97 src/arm/mach/init.c
98 src/gpu/gles-ios.m)
Marat Dukhan02527012017-10-23 16:03:05 -070099 SET_SOURCE_FILES_PROPERTIES(src/gpu/gles-ios.m PROPERTIES COMPILE_FLAGS -fobjc-arc)
Marat Dukhan3645b922017-10-13 17:03:35 -0400100 ENDIF()
101 IF(CMAKE_SYSTEM_NAME STREQUAL "Android")
102 LIST(APPEND CPUINFO_SRCS
Marat Dukhan3645b922017-10-13 17:03:35 -0400103 src/arm/Android/properties.c)
104 ENDIF()
Marat Dukhan3645b922017-10-13 17:03:35 -0400105ENDIF()
106
107IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
108 LIST(APPEND CPUINFO_SRCS
109 src/linux/smallfile.c
110 src/linux/multiline.c
111 src/linux/current.c
112 src/linux/cpulist.c
113 src/linux/processors.c)
114 IF(CMAKE_SYSTEM_NAME STREQUAL "Android")
Marat Dukhanfd0f3ef2017-12-18 17:45:18 -0800115 LIST(APPEND CPUINFO_SRCS
116 src/gpu/gles2.c
117 src/linux/gpu.c)
Marat Dukhan3645b922017-10-13 17:03:35 -0400118 ENDIF()
119ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
120 LIST(APPEND CPUINFO_SRCS src/mach/topology.c)
121ENDIF()
122
Marat Dukhanbfff3482017-10-15 22:24:32 +0000123IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
124 SET(CMAKE_THREAD_PREFER_PTHREAD TRUE)
125 SET(THREADS_PREFER_PTHREAD_FLAG TRUE)
126 FIND_PACKAGE(Threads REQUIRED)
127ENDIF()
128
Marat Dukhan3645b922017-10-13 17:03:35 -0400129ADD_LIBRARY(cpuinfo ${CPUINFO_SRCS})
Marat Dukhan3645b922017-10-13 17:03:35 -0400130SET_TARGET_PROPERTIES(cpuinfo PROPERTIES PUBLIC_HEADER include/cpuinfo.h)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700131TARGET_INCLUDE_DIRECTORIES(cpuinfo PUBLIC include)
Marat Dukhan3645b922017-10-13 17:03:35 -0400132TARGET_INCLUDE_DIRECTORIES(cpuinfo PRIVATE src)
Marat Dukhanbfff3482017-10-15 22:24:32 +0000133IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
134 TARGET_LINK_LIBRARIES(cpuinfo PUBLIC ${CMAKE_THREAD_LIBS_INIT})
135ENDIF()
Marat Dukhane029fd42017-10-26 00:35:46 +0000136IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
137 TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE -D_GNU_SOURCE)
138ENDIF()
Marat Dukhanad1ac952017-10-23 15:32:25 -0700139IF(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv7|armv7f|armv7s|armv7k|arm64)$")
140 TARGET_LINK_LIBRARIES(cpuinfo INTERFACE "-framework OpenGLES")
141 TARGET_LINK_LIBRARIES(cpuinfo INTERFACE "-framework Foundation")
142ENDIF()
Marat Dukhan3645b922017-10-13 17:03:35 -0400143
144INSTALL(TARGETS cpuinfo
145 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
146 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
147 PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
148
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700149IF(CPUINFO_BUILD_MOCK_TESTS OR CPUINFO_BUILD_UNIT_TESTS)
150 # ---[ Build google test
151 IF(NOT TARGET gtest)
152 SET(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
153 ADD_SUBDIRECTORY(
154 "${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest"
155 "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest")
156 ENDIF()
157ENDIF()
158
159# ---[ cpuinfo mock library and mock tests
160IF(CPUINFO_BUILD_MOCK_TESTS)
Marat Dukhanb8a83372017-10-13 21:07:44 -0400161 SET(CPUINFO_MOCK_SRCS "${CPUINFO_SRCS}")
Marat Dukhanfd0f3ef2017-12-18 17:45:18 -0800162 IF(CMAKE_SYSTEM_NAME STREQUAL "Android")
163 LIST(REMOVE_ITEM CPUINFO_MOCK_SRCS src/gpu/gles2.c)
164 LIST(APPEND CPUINFO_MOCK_SRCS src/gpu/gles2-mock.c)
165 ENDIF()
Marat Dukhanb8a83372017-10-13 21:07:44 -0400166 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
167 LIST(APPEND CPUINFO_MOCK_SRCS src/linux/mockfile.c)
168 ENDIF()
169
170 ADD_LIBRARY(cpuinfo_mock ${CPUINFO_MOCK_SRCS})
Marat Dukhanb8a83372017-10-13 21:07:44 -0400171 SET_TARGET_PROPERTIES(cpuinfo_mock PROPERTIES PUBLIC_HEADER include/cpuinfo.h)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700172 TARGET_INCLUDE_DIRECTORIES(cpuinfo_mock PUBLIC include)
Marat Dukhanb8a83372017-10-13 21:07:44 -0400173 TARGET_INCLUDE_DIRECTORIES(cpuinfo_mock PRIVATE src)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700174 TARGET_COMPILE_DEFINITIONS(cpuinfo_mock PUBLIC "-DCPUINFO_MOCK=1")
Marat Dukhanbfff3482017-10-15 22:24:32 +0000175 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
176 TARGET_LINK_LIBRARIES(cpuinfo_mock PUBLIC ${CMAKE_THREAD_LIBS_INIT})
177 ENDIF()
Marat Dukhane029fd42017-10-26 00:35:46 +0000178 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
179 TARGET_COMPILE_DEFINITIONS(cpuinfo_mock PRIVATE -D_GNU_SOURCE)
180 ENDIF()
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700181
182 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7-a)$")
Marat Dukhanf18db832017-11-28 11:10:10 -0800183 ADD_EXECUTABLE(atm7029b-tablet-test test/mock/atm7029b-tablet.cc)
184 TARGET_INCLUDE_DIRECTORIES(atm7029b-tablet-test PRIVATE test/mock)
185 TARGET_LINK_LIBRARIES(atm7029b-tablet-test PRIVATE cpuinfo_mock gtest)
186 ADD_TEST(atm7029b-tablet-test atm7029b-tablet-test)
187
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700188 ADD_EXECUTABLE(blu-r1-hd-test test/mock/blu-r1-hd.cc)
189 TARGET_INCLUDE_DIRECTORIES(blu-r1-hd-test PRIVATE test/mock)
190 TARGET_LINK_LIBRARIES(blu-r1-hd-test PRIVATE cpuinfo_mock gtest)
191 ADD_TEST(blu-r1-hd-test blu-r1-hd-test)
192
Marat Dukhan94f763a2017-12-04 16:44:33 -0800193 ADD_EXECUTABLE(galaxy-a3-2016-eu-test test/mock/galaxy-a3-2016-eu.cc)
194 TARGET_INCLUDE_DIRECTORIES(galaxy-a3-2016-eu-test PRIVATE test/mock)
195 TARGET_LINK_LIBRARIES(galaxy-a3-2016-eu-test PRIVATE cpuinfo_mock gtest)
196 ADD_TEST(galaxy-a3-2016-eu-test galaxy-a3-2016-eu-test)
197
Marat Dukhanf9ccfa32017-11-27 15:50:06 -0800198 ADD_EXECUTABLE(galaxy-a8-2016-duos-test test/mock/galaxy-a8-2016-duos.cc)
199 TARGET_INCLUDE_DIRECTORIES(galaxy-a8-2016-duos-test PRIVATE test/mock)
200 TARGET_LINK_LIBRARIES(galaxy-a8-2016-duos-test PRIVATE cpuinfo_mock gtest)
201 ADD_TEST(galaxy-a8-2016-duos-test galaxy-a8-2016-duos-test)
202
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700203 ADD_EXECUTABLE(galaxy-grand-prime-value-edition-test test/mock/galaxy-grand-prime-value-edition.cc)
204 TARGET_INCLUDE_DIRECTORIES(galaxy-grand-prime-value-edition-test PRIVATE test/mock)
205 TARGET_LINK_LIBRARIES(galaxy-grand-prime-value-edition-test PRIVATE cpuinfo_mock gtest)
206 ADD_TEST(galaxy-grand-prime-value-edition-test galaxy-grand-prime-value-edition-test)
207
Marat Dukhan126c46d2017-12-04 16:24:48 -0800208 ADD_EXECUTABLE(galaxy-j5-test test/mock/galaxy-j5.cc)
209 TARGET_INCLUDE_DIRECTORIES(galaxy-j5-test PRIVATE test/mock)
210 TARGET_LINK_LIBRARIES(galaxy-j5-test PRIVATE cpuinfo_mock gtest)
211 ADD_TEST(galaxy-j5-test galaxy-j5-test)
212
Marat Dukhan84435902017-11-29 15:53:58 -0800213 ADD_EXECUTABLE(galaxy-j7-prime-test test/mock/galaxy-j7-prime.cc)
214 TARGET_INCLUDE_DIRECTORIES(galaxy-j7-prime-test PRIVATE test/mock)
215 TARGET_LINK_LIBRARIES(galaxy-j7-prime-test PRIVATE cpuinfo_mock gtest)
216 ADD_TEST(galaxy-j7-prime-test galaxy-j7-prime-test)
217
Marat Dukhan0d2aaa72017-11-29 15:48:46 -0800218 ADD_EXECUTABLE(galaxy-j7-tmobile-test test/mock/galaxy-j7-tmobile.cc)
219 TARGET_INCLUDE_DIRECTORIES(galaxy-j7-tmobile-test PRIVATE test/mock)
220 TARGET_LINK_LIBRARIES(galaxy-j7-tmobile-test PRIVATE cpuinfo_mock gtest)
221 ADD_TEST(galaxy-j7-tmobile-test galaxy-j7-tmobile-test)
222
223 ADD_EXECUTABLE(galaxy-j7-uae-test test/mock/galaxy-j7-uae.cc)
224 TARGET_INCLUDE_DIRECTORIES(galaxy-j7-uae-test PRIVATE test/mock)
225 TARGET_LINK_LIBRARIES(galaxy-j7-uae-test PRIVATE cpuinfo_mock gtest)
226 ADD_TEST(galaxy-j7-uae-test galaxy-j7-uae-test)
227
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700228 ADD_EXECUTABLE(galaxy-s3-us-test test/mock/galaxy-s3-us.cc)
229 TARGET_INCLUDE_DIRECTORIES(galaxy-s3-us-test PRIVATE test/mock)
230 TARGET_LINK_LIBRARIES(galaxy-s3-us-test PRIVATE cpuinfo_mock gtest)
231 ADD_TEST(galaxy-s3-us-test galaxy-s3-us-test)
232
233 ADD_EXECUTABLE(galaxy-s4-us-test test/mock/galaxy-s4-us.cc)
234 TARGET_INCLUDE_DIRECTORIES(galaxy-s4-us-test PRIVATE test/mock)
235 TARGET_LINK_LIBRARIES(galaxy-s4-us-test PRIVATE cpuinfo_mock gtest)
236 ADD_TEST(galaxy-s4-us-test galaxy-s4-us-test)
237
238 ADD_EXECUTABLE(galaxy-s5-global-test test/mock/galaxy-s5-global.cc)
239 TARGET_INCLUDE_DIRECTORIES(galaxy-s5-global-test PRIVATE test/mock)
240 TARGET_LINK_LIBRARIES(galaxy-s5-global-test PRIVATE cpuinfo_mock gtest)
241 ADD_TEST(galaxy-s5-global-test galaxy-s5-global-test)
242
243 ADD_EXECUTABLE(galaxy-s5-us-test test/mock/galaxy-s5-us.cc)
244 TARGET_INCLUDE_DIRECTORIES(galaxy-s5-us-test PRIVATE test/mock)
245 TARGET_LINK_LIBRARIES(galaxy-s5-us-test PRIVATE cpuinfo_mock gtest)
246 ADD_TEST(galaxy-s5-us-test galaxy-s5-us-test)
247
248 ADD_EXECUTABLE(galaxy-tab-3-7.0-test test/mock/galaxy-tab-3-7.0.cc)
249 TARGET_INCLUDE_DIRECTORIES(galaxy-tab-3-7.0-test PRIVATE test/mock)
250 TARGET_LINK_LIBRARIES(galaxy-tab-3-7.0-test PRIVATE cpuinfo_mock gtest)
251 ADD_TEST(galaxy-tab-3-7.0-test galaxy-tab-3-7.0-test)
252
253 ADD_EXECUTABLE(galaxy-tab-3-lite-test test/mock/galaxy-tab-3-lite.cc)
254 TARGET_INCLUDE_DIRECTORIES(galaxy-tab-3-lite-test PRIVATE test/mock)
255 TARGET_LINK_LIBRARIES(galaxy-tab-3-lite-test PRIVATE cpuinfo_mock gtest)
256 ADD_TEST(galaxy-tab-3-lite-test galaxy-tab-3-lite-test)
257
258 ADD_EXECUTABLE(galaxy-win-duos-test test/mock/galaxy-win-duos.cc)
259 TARGET_INCLUDE_DIRECTORIES(galaxy-win-duos-test PRIVATE test/mock)
260 TARGET_LINK_LIBRARIES(galaxy-win-duos-test PRIVATE cpuinfo_mock gtest)
261 ADD_TEST(galaxy-win-duos-test galaxy-win-duos-test)
262
263 ADD_EXECUTABLE(huawei-ascend-p7-test test/mock/huawei-ascend-p7.cc)
264 TARGET_INCLUDE_DIRECTORIES(huawei-ascend-p7-test PRIVATE test/mock)
265 TARGET_LINK_LIBRARIES(huawei-ascend-p7-test PRIVATE cpuinfo_mock gtest)
266 ADD_TEST(huawei-ascend-p7-test huawei-ascend-p7-test)
267
268 ADD_EXECUTABLE(lenovo-a6600-plus-test test/mock/lenovo-a6600-plus.cc)
269 TARGET_INCLUDE_DIRECTORIES(lenovo-a6600-plus-test PRIVATE test/mock)
270 TARGET_LINK_LIBRARIES(lenovo-a6600-plus-test PRIVATE cpuinfo_mock gtest)
271 ADD_TEST(lenovo-a6600-plus-test lenovo-a6600-plus-test)
272
273 ADD_EXECUTABLE(lenovo-vibe-x2-test test/mock/lenovo-vibe-x2.cc)
274 TARGET_INCLUDE_DIRECTORIES(lenovo-vibe-x2-test PRIVATE test/mock)
275 TARGET_LINK_LIBRARIES(lenovo-vibe-x2-test PRIVATE cpuinfo_mock gtest)
276 ADD_TEST(lenovo-vibe-x2-test lenovo-vibe-x2-test)
277
278 ADD_EXECUTABLE(lg-k10-eu-test test/mock/lg-k10-eu.cc)
279 TARGET_INCLUDE_DIRECTORIES(lg-k10-eu-test PRIVATE test/mock)
280 TARGET_LINK_LIBRARIES(lg-k10-eu-test PRIVATE cpuinfo_mock gtest)
281 ADD_TEST(lg-k10-eu-test lg-k10-eu-test)
282
283 ADD_EXECUTABLE(moto-e-gen1-test test/mock/moto-e-gen1.cc)
284 TARGET_INCLUDE_DIRECTORIES(moto-e-gen1-test PRIVATE test/mock)
285 TARGET_LINK_LIBRARIES(moto-e-gen1-test PRIVATE cpuinfo_mock gtest)
286 ADD_TEST(moto-e-gen1-test moto-e-gen1-test)
287
288 ADD_EXECUTABLE(moto-g-gen2-test test/mock/moto-g-gen2.cc)
289 TARGET_INCLUDE_DIRECTORIES(moto-g-gen2-test PRIVATE test/mock)
290 TARGET_LINK_LIBRARIES(moto-g-gen2-test PRIVATE cpuinfo_mock gtest)
291 ADD_TEST(moto-g-gen2-test moto-g-gen2-test)
292
293 ADD_EXECUTABLE(moto-g-gen3-test test/mock/moto-g-gen3.cc)
294 TARGET_INCLUDE_DIRECTORIES(moto-g-gen3-test PRIVATE test/mock)
295 TARGET_LINK_LIBRARIES(moto-g-gen3-test PRIVATE cpuinfo_mock gtest)
296 ADD_TEST(moto-g-gen3-test moto-g-gen3-test)
297
298 ADD_EXECUTABLE(nexus-s-test test/mock/nexus-s.cc)
299 TARGET_INCLUDE_DIRECTORIES(nexus-s-test PRIVATE test/mock)
300 TARGET_LINK_LIBRARIES(nexus-s-test PRIVATE cpuinfo_mock gtest)
301 ADD_TEST(nexus-s-test nexus-s-test)
302
303 ADD_EXECUTABLE(nexus4-test test/mock/nexus4.cc)
304 TARGET_INCLUDE_DIRECTORIES(nexus4-test PRIVATE test/mock)
305 TARGET_LINK_LIBRARIES(nexus4-test PRIVATE cpuinfo_mock gtest)
306 ADD_TEST(nexus4-test nexus4-test)
307
308 ADD_EXECUTABLE(nexus6-test test/mock/nexus6.cc)
309 TARGET_INCLUDE_DIRECTORIES(nexus6-test PRIVATE test/mock)
310 TARGET_LINK_LIBRARIES(nexus6-test PRIVATE cpuinfo_mock gtest)
311 ADD_TEST(nexus6-test nexus6-test)
312
Marat Dukhan59572542017-11-27 17:22:09 -0800313 ADD_EXECUTABLE(padcod-10.1-test test/mock/padcod-10.1.cc)
314 TARGET_INCLUDE_DIRECTORIES(padcod-10.1-test PRIVATE test/mock)
315 TARGET_LINK_LIBRARIES(padcod-10.1-test PRIVATE cpuinfo_mock gtest)
316 ADD_TEST(padcod-10.1-test padcod-10.1-test)
317
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700318 ADD_EXECUTABLE(xiaomi-redmi-2a-test test/mock/xiaomi-redmi-2a.cc)
319 TARGET_INCLUDE_DIRECTORIES(xiaomi-redmi-2a-test PRIVATE test/mock)
320 TARGET_LINK_LIBRARIES(xiaomi-redmi-2a-test PRIVATE cpuinfo_mock gtest)
321 ADD_TEST(xiaomi-redmi-2a-test xiaomi-redmi-2a-test)
Marat Dukhanad741842017-12-03 23:11:46 -0800322
323 ADD_EXECUTABLE(xperia-sl-test test/mock/xperia-sl.cc)
324 TARGET_INCLUDE_DIRECTORIES(xperia-sl-test PRIVATE test/mock)
325 TARGET_LINK_LIBRARIES(xperia-sl-test PRIVATE cpuinfo_mock gtest)
326 ADD_TEST(xperia-sl-test xperia-sl-test)
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700327 ENDIF()
328
329 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7-a|aarch64)$")
330 ADD_EXECUTABLE(galaxy-c9-pro-test test/mock/galaxy-c9-pro.cc)
331 TARGET_INCLUDE_DIRECTORIES(galaxy-c9-pro-test PRIVATE test/mock)
332 TARGET_LINK_LIBRARIES(galaxy-c9-pro-test PRIVATE cpuinfo_mock gtest)
333 ADD_TEST(galaxy-c9-pro-test galaxy-c9-pro-test)
334
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700335 ADD_EXECUTABLE(galaxy-s6-test test/mock/galaxy-s6.cc)
336 TARGET_INCLUDE_DIRECTORIES(galaxy-s6-test PRIVATE test/mock)
337 TARGET_LINK_LIBRARIES(galaxy-s6-test PRIVATE cpuinfo_mock gtest)
338 ADD_TEST(galaxy-s6-test galaxy-s6-test)
339
340 ADD_EXECUTABLE(galaxy-s7-us-test test/mock/galaxy-s7-us.cc)
341 TARGET_INCLUDE_DIRECTORIES(galaxy-s7-us-test PRIVATE test/mock)
342 TARGET_LINK_LIBRARIES(galaxy-s7-us-test PRIVATE cpuinfo_mock gtest)
343 ADD_TEST(galaxy-s7-us-test galaxy-s7-us-test)
344
345 ADD_EXECUTABLE(galaxy-s7-global-test test/mock/galaxy-s7-global.cc)
346 TARGET_INCLUDE_DIRECTORIES(galaxy-s7-global-test PRIVATE test/mock)
347 TARGET_LINK_LIBRARIES(galaxy-s7-global-test PRIVATE cpuinfo_mock gtest)
348 ADD_TEST(galaxy-s7-global-test galaxy-s7-global-test)
349
350 ADD_EXECUTABLE(galaxy-s8-us-test test/mock/galaxy-s8-us.cc)
351 TARGET_INCLUDE_DIRECTORIES(galaxy-s8-us-test PRIVATE test/mock)
352 TARGET_LINK_LIBRARIES(galaxy-s8-us-test PRIVATE cpuinfo_mock gtest)
353 ADD_TEST(galaxy-s8-us-test galaxy-s8-us-test)
354
355 ADD_EXECUTABLE(galaxy-s8-global-test test/mock/galaxy-s8-global.cc)
356 TARGET_INCLUDE_DIRECTORIES(galaxy-s8-global-test PRIVATE test/mock)
357 TARGET_LINK_LIBRARIES(galaxy-s8-global-test PRIVATE cpuinfo_mock gtest)
358 ADD_TEST(galaxy-s8-global-test galaxy-s8-global-test)
359
Marat Dukhancd98c282017-11-29 16:10:26 -0800360 ADD_EXECUTABLE(huawei-p8-lite-test test/mock/huawei-p8-lite.cc)
361 TARGET_INCLUDE_DIRECTORIES(huawei-p8-lite-test PRIVATE test/mock)
362 TARGET_LINK_LIBRARIES(huawei-p8-lite-test PRIVATE cpuinfo_mock gtest)
363 ADD_TEST(huawei-p8-lite-test huawei-p8-lite-test)
364
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700365 ADD_EXECUTABLE(huawei-p9-lite-test test/mock/huawei-p9-lite.cc)
366 TARGET_INCLUDE_DIRECTORIES(huawei-p9-lite-test PRIVATE test/mock)
367 TARGET_LINK_LIBRARIES(huawei-p9-lite-test PRIVATE cpuinfo_mock gtest)
368 ADD_TEST(huawei-p9-lite-test huawei-p9-lite-test)
369
370 ADD_EXECUTABLE(huawei-mate-8-test test/mock/huawei-mate-8.cc)
371 TARGET_INCLUDE_DIRECTORIES(huawei-mate-8-test PRIVATE test/mock)
372 TARGET_LINK_LIBRARIES(huawei-mate-8-test PRIVATE cpuinfo_mock gtest)
373 ADD_TEST(huawei-mate-8-test huawei-mate-8-test)
374
375 ADD_EXECUTABLE(huawei-mate-9-test test/mock/huawei-mate-9.cc)
376 TARGET_INCLUDE_DIRECTORIES(huawei-mate-9-test PRIVATE test/mock)
377 TARGET_LINK_LIBRARIES(huawei-mate-9-test PRIVATE cpuinfo_mock gtest)
378 ADD_TEST(huawei-mate-9-test huawei-mate-9-test)
379
Marat Dukhan7be11402017-11-27 14:57:02 -0800380 ADD_EXECUTABLE(huawei-mate-10-test test/mock/huawei-mate-10.cc)
381 TARGET_INCLUDE_DIRECTORIES(huawei-mate-10-test PRIVATE test/mock)
382 TARGET_LINK_LIBRARIES(huawei-mate-10-test PRIVATE cpuinfo_mock gtest)
383 ADD_TEST(huawei-mate-10-test huawei-mate-10-test)
384
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700385 ADD_EXECUTABLE(meizu-pro-6-test test/mock/meizu-pro-6.cc)
386 TARGET_INCLUDE_DIRECTORIES(meizu-pro-6-test PRIVATE test/mock)
387 TARGET_LINK_LIBRARIES(meizu-pro-6-test PRIVATE cpuinfo_mock gtest)
388 ADD_TEST(meizu-pro-6-test meizu-pro-6-test)
389
390 ADD_EXECUTABLE(meizu-pro-6s-test test/mock/meizu-pro-6s.cc)
391 TARGET_INCLUDE_DIRECTORIES(meizu-pro-6s-test PRIVATE test/mock)
392 TARGET_LINK_LIBRARIES(meizu-pro-6s-test PRIVATE cpuinfo_mock gtest)
393 ADD_TEST(meizu-pro-6s-test meizu-pro-6s-test)
394
395 ADD_EXECUTABLE(meizu-pro-7-plus-test test/mock/meizu-pro-7-plus.cc)
396 TARGET_INCLUDE_DIRECTORIES(meizu-pro-7-plus-test PRIVATE test/mock)
397 TARGET_LINK_LIBRARIES(meizu-pro-7-plus-test PRIVATE cpuinfo_mock gtest)
398 ADD_TEST(meizu-pro-7-plus-test meizu-pro-7-plus-test)
399
400 ADD_EXECUTABLE(nexus5x-test test/mock/nexus5x.cc)
401 TARGET_INCLUDE_DIRECTORIES(nexus5x-test PRIVATE test/mock)
402 TARGET_LINK_LIBRARIES(nexus5x-test PRIVATE cpuinfo_mock gtest)
403 ADD_TEST(nexus5x-test nexus5x-test)
404
405 ADD_EXECUTABLE(nexus6p-test test/mock/nexus6p.cc)
406 TARGET_INCLUDE_DIRECTORIES(nexus6p-test PRIVATE test/mock)
407 TARGET_LINK_LIBRARIES(nexus6p-test PRIVATE cpuinfo_mock gtest)
408 ADD_TEST(nexus6p-test nexus6p-test)
409
410 ADD_EXECUTABLE(nexus9-test test/mock/nexus9.cc)
411 TARGET_INCLUDE_DIRECTORIES(nexus9-test PRIVATE test/mock)
412 TARGET_LINK_LIBRARIES(nexus9-test PRIVATE cpuinfo_mock gtest)
413 ADD_TEST(nexus9-test nexus9-test)
414
Marat Dukhan75dd8a12017-12-04 15:43:02 -0800415 ADD_EXECUTABLE(oppo-a37-test test/mock/oppo-a37.cc)
416 TARGET_INCLUDE_DIRECTORIES(oppo-a37-test PRIVATE test/mock)
417 TARGET_LINK_LIBRARIES(oppo-a37-test PRIVATE cpuinfo_mock gtest)
418 ADD_TEST(oppo-a37-test oppo-a37-test)
419
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700420 ADD_EXECUTABLE(oppo-r9-test test/mock/oppo-r9.cc)
421 TARGET_INCLUDE_DIRECTORIES(oppo-r9-test PRIVATE test/mock)
422 TARGET_LINK_LIBRARIES(oppo-r9-test PRIVATE cpuinfo_mock gtest)
423 ADD_TEST(oppo-r9-test oppo-r9-test)
424
425 ADD_EXECUTABLE(pixel-test test/mock/pixel.cc)
426 TARGET_INCLUDE_DIRECTORIES(pixel-test PRIVATE test/mock)
427 TARGET_LINK_LIBRARIES(pixel-test PRIVATE cpuinfo_mock gtest)
428 ADD_TEST(pixel-test pixel-test)
429
430 ADD_EXECUTABLE(pixel-c-test test/mock/pixel-c.cc)
431 TARGET_INCLUDE_DIRECTORIES(pixel-c-test PRIVATE test/mock)
432 TARGET_LINK_LIBRARIES(pixel-c-test PRIVATE cpuinfo_mock gtest)
433 ADD_TEST(pixel-c-test pixel-c-test)
434
435 ADD_EXECUTABLE(pixel-xl-test test/mock/pixel-xl.cc)
436 TARGET_INCLUDE_DIRECTORIES(pixel-xl-test PRIVATE test/mock)
437 TARGET_LINK_LIBRARIES(pixel-xl-test PRIVATE cpuinfo_mock gtest)
438 ADD_TEST(pixel-xl-test pixel-xl-test)
439
Marat Dukhan9bfb1072017-11-27 17:02:25 -0800440 ADD_EXECUTABLE(pixel-2-xl-test test/mock/pixel-2-xl.cc)
441 TARGET_INCLUDE_DIRECTORIES(pixel-2-xl-test PRIVATE test/mock)
442 TARGET_LINK_LIBRARIES(pixel-2-xl-test PRIVATE cpuinfo_mock gtest)
443 ADD_TEST(pixel-2-xl-test pixel-2-xl-test)
444
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700445 ADD_EXECUTABLE(xiaomi-mi-5c-test test/mock/xiaomi-mi-5c.cc)
446 TARGET_INCLUDE_DIRECTORIES(xiaomi-mi-5c-test PRIVATE test/mock)
447 TARGET_LINK_LIBRARIES(xiaomi-mi-5c-test PRIVATE cpuinfo_mock gtest)
448 ADD_TEST(xiaomi-mi-5c-test xiaomi-mi-5c-test)
449
450 ADD_EXECUTABLE(xiaomi-redmi-note-3-test test/mock/xiaomi-redmi-note-3.cc)
451 TARGET_INCLUDE_DIRECTORIES(xiaomi-redmi-note-3-test PRIVATE test/mock)
452 TARGET_LINK_LIBRARIES(xiaomi-redmi-note-3-test PRIVATE cpuinfo_mock gtest)
453 ADD_TEST(xiaomi-redmi-note-3-test xiaomi-redmi-note-3-test)
454
Marat Dukhana5fda232017-12-04 16:08:25 -0800455 ADD_EXECUTABLE(xiaomi-redmi-note-4-test test/mock/xiaomi-redmi-note-4.cc)
456 TARGET_INCLUDE_DIRECTORIES(xiaomi-redmi-note-4-test PRIVATE test/mock)
457 TARGET_LINK_LIBRARIES(xiaomi-redmi-note-4-test PRIVATE cpuinfo_mock gtest)
458 ADD_TEST(xiaomi-redmi-note-4-test xiaomi-redmi-note-4-test)
459
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700460 ADD_EXECUTABLE(xperia-c4-dual-test test/mock/xperia-c4-dual.cc)
461 TARGET_INCLUDE_DIRECTORIES(xperia-c4-dual-test PRIVATE test/mock)
462 TARGET_LINK_LIBRARIES(xperia-c4-dual-test PRIVATE cpuinfo_mock gtest)
463 ADD_TEST(xperia-c4-dual-test xperia-c4-dual-test)
464 ENDIF()
465
466 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(i686|x86_64)$")
Marat Dukhanaf8a12d2017-12-08 16:12:16 -0800467 ADD_EXECUTABLE(alldocube-iwork8-test test/mock/alldocube-iwork8.cc)
468 TARGET_INCLUDE_DIRECTORIES(alldocube-iwork8-test PRIVATE test/mock)
469 TARGET_LINK_LIBRARIES(alldocube-iwork8-test PRIVATE cpuinfo_mock gtest)
470 ADD_TEST(alldocube-iwork8-test alldocube-iwork8-test)
471
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700472 ADD_EXECUTABLE(memo-pad-7-test test/mock/memo-pad-7.cc)
473 TARGET_INCLUDE_DIRECTORIES(memo-pad-7-test PRIVATE test/mock)
474 TARGET_LINK_LIBRARIES(memo-pad-7-test PRIVATE cpuinfo_mock gtest)
475 ADD_TEST(memo-pad-7-test memo-pad-7-test)
476
477 ADD_EXECUTABLE(zenfone-c-test test/mock/zenfone-c.cc)
478 TARGET_INCLUDE_DIRECTORIES(zenfone-c-test PRIVATE test/mock)
479 TARGET_LINK_LIBRARIES(zenfone-c-test PRIVATE cpuinfo_mock gtest)
480 ADD_TEST(zenfone-c-test zenfone-c-test)
481
482 ADD_EXECUTABLE(zenfone-2-test test/mock/zenfone-2.cc)
483 TARGET_INCLUDE_DIRECTORIES(zenfone-2-test PRIVATE test/mock)
484 TARGET_LINK_LIBRARIES(zenfone-2-test PRIVATE cpuinfo_mock gtest)
485 ADD_TEST(zenfone-2-test zenfone-2-test)
486
487 ADD_EXECUTABLE(zenfone-2e-test test/mock/zenfone-2e.cc)
488 TARGET_INCLUDE_DIRECTORIES(zenfone-2e-test PRIVATE test/mock)
489 TARGET_LINK_LIBRARIES(zenfone-2e-test PRIVATE cpuinfo_mock gtest)
490 ADD_TEST(zenfone-2e-test zenfone-2e-test)
491 ENDIF()
492ENDIF()
493
494# ---[ cpuinfo unit tests
495IF(CPUINFO_BUILD_UNIT_TESTS)
496 ADD_EXECUTABLE(init-test test/init.cc)
497 TARGET_LINK_LIBRARIES(init-test PRIVATE cpuinfo gtest)
498 ADD_TEST(init-test init-test)
499
500 IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android")
501 ADD_EXECUTABLE(get-current-test test/get-current.cc)
502 TARGET_LINK_LIBRARIES(get-current-test PRIVATE cpuinfo gtest)
503 ADD_TEST(get-current-test get-current-test)
504 ENDIF()
505
506 IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i686|x86_64)$")
507 ADD_EXECUTABLE(brand-string-test test/name/brand-string.cc)
508 TARGET_LINK_LIBRARIES(brand-string-test PRIVATE cpuinfo gtest gtest_main)
509 ADD_TEST(brand-string-test brand-string-test)
510 ENDIF()
511
512 IF(CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7-a|aarch64)$")
513 ADD_LIBRARY(android_properties_interface test/name/android-properties-interface.c)
514 TARGET_INCLUDE_DIRECTORIES(android_properties_interface PRIVATE src)
515 TARGET_LINK_LIBRARIES(android_properties_interface PRIVATE cpuinfo)
516
517 ADD_EXECUTABLE(chipset-test
518 test/name/proc-cpuinfo-hardware.cc
519 test/name/ro-product-board.cc
520 test/name/ro-board-platform.cc
521 test/name/ro-mediatek-platform.cc
522 test/name/ro-chipname.cc
523 test/name/android-properties.cc)
524 TARGET_LINK_LIBRARIES(chipset-test PRIVATE android_properties_interface gtest gtest_main)
525 ADD_TEST(chipset-test chipset-test)
526
527 ADD_EXECUTABLE(cache-test test/arm-cache.cc)
528 TARGET_COMPILE_DEFINITIONS(cache-test PRIVATE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS)
529 TARGET_INCLUDE_DIRECTORIES(cache-test PRIVATE src)
530 TARGET_LINK_LIBRARIES(cache-test PRIVATE cpuinfo gtest gtest_main)
531 ADD_TEST(cache-test, cache-test)
532 ENDIF()
Marat Dukhanb8a83372017-10-13 21:07:44 -0400533ENDIF()
534
Marat Dukhan3645b922017-10-13 17:03:35 -0400535# ---[ Helper and debug tools
Marat Dukhanf1c4a5c2017-10-25 17:22:11 -0700536IF(CPUINFO_BUILD_TOOLS)
Marat Dukhan3645b922017-10-13 17:03:35 -0400537 ADD_EXECUTABLE(isa-info tools/isa-info.c)
538 TARGET_LINK_LIBRARIES(isa-info PRIVATE cpuinfo)
539
540 ADD_EXECUTABLE(cpu-info tools/cpu-info.c)
541 TARGET_LINK_LIBRARIES(cpu-info PRIVATE cpuinfo)
542
543 ADD_EXECUTABLE(cache-info tools/cache-info.c)
544 TARGET_LINK_LIBRARIES(cache-info PRIVATE cpuinfo)
545
Marat Dukhanf3a71e62017-11-29 15:15:36 -0800546 IF(CMAKE_SYSTEM_NAME MATCHES "^(Android|Linux)$" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7|armv7-a|armv7l|arm64|aarch64)$")
547 ADD_EXECUTABLE(auxv-dump tools/auxv-dump.c)
548 TARGET_INCLUDE_DIRECTORIES(auxv-dump PRIVATE src)
549 TARGET_INCLUDE_DIRECTORIES(auxv-dump PRIVATE include)
550 ENDIF()
551
Marat Dukhan3645b922017-10-13 17:03:35 -0400552 IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i686|x86_64)$")
553 ADD_EXECUTABLE(cpuid-dump tools/cpuid-dump.c)
554 TARGET_INCLUDE_DIRECTORIES(cpuid-dump PRIVATE src)
555 TARGET_INCLUDE_DIRECTORIES(cpuid-dump PRIVATE include)
556 ENDIF()
557ENDIF()