@@ -13,6 +13,11 @@ SET(CPUINFO_RUNTIME_TYPE "default" CACHE STRING "Type of runtime library (shared
1313SET_PROPERTY (CACHE CPUINFO_RUNTIME_TYPE PROPERTY STRINGS default static shared)
1414SET (CPUINFO_LOG_LEVEL "default" CACHE STRING "Minimum logging level (info with lower severity will be ignored)" )
1515SET_PROPERTY (CACHE CPUINFO_LOG_LEVEL PROPERTY STRINGS default debug info warning error fatal none)
16+ IF (ANDROID)
17+ OPTION (CPUINFO_LOG_TO_STDIO "Log errors, warnings, and information to stdout/stderr" OFF )
18+ ELSE ()
19+ OPTION (CPUINFO_LOG_TO_STDIO "Log errors, warnings, and information to stdout/stderr" ON )
20+ ENDIF ()
1621OPTION (CPUINFO_BUILD_TOOLS "Build command-line tools" ON )
1722OPTION (CPUINFO_BUILD_UNIT_TESTS "Build cpuinfo unit tests" ON )
1823OPTION (CPUINFO_BUILD_MOCK_TESTS "Build cpuinfo mock tests" ON )
@@ -129,10 +134,7 @@ IF(CPUINFO_BUILD_BENCHMARKS)
129134ENDIF ()
130135
131136# ---[ cpuinfo library
132- SET (CPUINFO_SRCS
133- src/init.c
134- src/api.c
135- src/cache .c)
137+ SET (CPUINFO_SRCS src/api.c src/cache .c src/init.c src/log .c)
136138
137139IF (CPUINFO_SUPPORTED_PLATFORM)
138140 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)$" ))
@@ -233,29 +235,34 @@ IF(CMAKE_SYSTEM_NAME MATCHES "^(Windows|WindowsStore|CYGWIN|MSYS)$")
233235 TARGET_LINK_LIBRARIES (cpuinfo PUBLIC Kernel32)
234236 endif ()
235237ENDIF ()
238+ IF (ANDROID AND NOT CPUINFO_LOG_TO_STDIO)
239+ TARGET_LINK_LIBRARIES (cpuinfo PRIVATE "log" )
240+ ENDIF ()
236241SET_TARGET_PROPERTIES (cpuinfo PROPERTIES PUBLIC_HEADER include /cpuinfo.h)
237242TARGET_INCLUDE_DIRECTORIES (cpuinfo BEFORE PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /include > $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >)
238243TARGET_INCLUDE_DIRECTORIES (cpuinfo BEFORE PRIVATE src)
239244TARGET_INCLUDE_DIRECTORIES (cpuinfo_internals BEFORE PUBLIC include src)
245+ TARGET_COMPILE_DEFINITIONS (cpuinfo PRIVATE "CPUINFO_LOG_TO_STDIO=$<BOOL:${CPUINFO_LOG_TO_STDIO} >" )
240246IF (CPUINFO_LOG_LEVEL STREQUAL "default" )
241247 # default logging level: error (subject to change)
242- TARGET_COMPILE_DEFINITIONS (cpuinfo PRIVATE CPUINFO_LOG_LEVEL=2)
248+ TARGET_COMPILE_DEFINITIONS (cpuinfo PRIVATE " CPUINFO_LOG_LEVEL=2" )
243249ELSEIF (CPUINFO_LOG_LEVEL STREQUAL "debug" )
244- TARGET_COMPILE_DEFINITIONS (cpuinfo PRIVATE CPUINFO_LOG_LEVEL=5)
250+ TARGET_COMPILE_DEFINITIONS (cpuinfo PRIVATE " CPUINFO_LOG_LEVEL=5" )
245251ELSEIF (CPUINFO_LOG_LEVEL STREQUAL "info" )
246- TARGET_COMPILE_DEFINITIONS (cpuinfo PRIVATE CPUINFO_LOG_LEVEL=4)
252+ TARGET_COMPILE_DEFINITIONS (cpuinfo PRIVATE " CPUINFO_LOG_LEVEL=4" )
247253ELSEIF (CPUINFO_LOG_LEVEL STREQUAL "warning" )
248- TARGET_COMPILE_DEFINITIONS (cpuinfo PRIVATE CPUINFO_LOG_LEVEL=3)
254+ TARGET_COMPILE_DEFINITIONS (cpuinfo PRIVATE " CPUINFO_LOG_LEVEL=3" )
249255ELSEIF (CPUINFO_LOG_LEVEL STREQUAL "error" )
250- TARGET_COMPILE_DEFINITIONS (cpuinfo PRIVATE CPUINFO_LOG_LEVEL=2)
256+ TARGET_COMPILE_DEFINITIONS (cpuinfo PRIVATE " CPUINFO_LOG_LEVEL=2" )
251257ELSEIF (CPUINFO_LOG_LEVEL STREQUAL "fatal" )
252- TARGET_COMPILE_DEFINITIONS (cpuinfo PRIVATE CPUINFO_LOG_LEVEL=1)
258+ TARGET_COMPILE_DEFINITIONS (cpuinfo PRIVATE " CPUINFO_LOG_LEVEL=1" )
253259ELSEIF (CPUINFO_LOG_LEVEL STREQUAL "none" )
254- TARGET_COMPILE_DEFINITIONS (cpuinfo PRIVATE CPUINFO_LOG_LEVEL=0)
260+ TARGET_COMPILE_DEFINITIONS (cpuinfo PRIVATE " CPUINFO_LOG_LEVEL=0" )
255261ELSE ()
256262 MESSAGE (FATAL_ERROR "Unsupported logging level ${CPUINFO_LOG_LEVEL} " )
257263ENDIF ()
258- TARGET_COMPILE_DEFINITIONS (cpuinfo_internals PRIVATE CPUINFO_LOG_LEVEL=0)
264+ TARGET_COMPILE_DEFINITIONS (cpuinfo_internals PRIVATE "CPUINFO_LOG_LEVEL=0" )
265+ TARGET_COMPILE_DEFINITIONS (cpuinfo_internals PRIVATE "CPUINFO_LOG_TO_STDIO=1" )
259266
260267IF (CPUINFO_SUPPORTED_PLATFORM)
261268 TARGET_COMPILE_DEFINITIONS (cpuinfo INTERFACE CPUINFO_SUPPORTED_PLATFORM=1)
@@ -269,21 +276,6 @@ ELSE()
269276 TARGET_COMPILE_DEFINITIONS (cpuinfo INTERFACE CPUINFO_SUPPORTED_PLATFORM=0)
270277ENDIF ()
271278
272- # ---[ cpuinfo dependencies: clog
273- IF (NOT DEFINED CLOG_SOURCE_DIR)
274- SET (CLOG_SOURCE_DIR "${PROJECT_SOURCE_DIR} /deps/clog" )
275- ENDIF ()
276- IF (NOT TARGET clog)
277- SET (CLOG_BUILD_TESTS OFF CACHE BOOL "" )
278- SET (CLOG_RUNTIME_TYPE "${CPUINFO_RUNTIME_TYPE} " CACHE STRING "" )
279- ADD_SUBDIRECTORY (
280- "${CLOG_SOURCE_DIR} " )
281- # We build static version of clog but a dynamic library may indirectly depend on it
282- SET_PROPERTY (TARGET clog PROPERTY POSITION_INDEPENDENT_CODE ON )
283- ENDIF ()
284- TARGET_LINK_LIBRARIES (cpuinfo PRIVATE clog)
285- TARGET_LINK_LIBRARIES (cpuinfo_internals PRIVATE clog)
286-
287279ADD_LIBRARY (${PROJECT_NAME} ::cpuinfo ALIAS cpuinfo)
288280
289281# support find_package(cpuinfo CONFIG)
@@ -302,7 +294,7 @@ INSTALL(TARGETS cpuinfo
302294 PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} )
303295
304296INSTALL (EXPORT cpuinfo-targets
305- NAMESPACE ${PROJECT_NAME} :: # IMPORTED cpuinfo::cpuinfo, cpuinfo::clog
297+ NAMESPACE ${PROJECT_NAME} :: # IMPORTED cpuinfo::cpuinfo
306298 DESTINATION ${CMAKE_INSTALL_DATAROOTDIR} /${PROJECT_NAME} )
307299
308300# ---[ cpuinfo micro-benchmarks
@@ -354,13 +346,13 @@ IF(CPUINFO_SUPPORTED_PLATFORM AND CPUINFO_BUILD_MOCK_TESTS)
354346 SET_TARGET_PROPERTIES (cpuinfo_mock PROPERTIES PUBLIC_HEADER include /cpuinfo.h)
355347 TARGET_INCLUDE_DIRECTORIES (cpuinfo_mock BEFORE PUBLIC include )
356348 TARGET_INCLUDE_DIRECTORIES (cpuinfo_mock BEFORE PRIVATE src)
357- TARGET_COMPILE_DEFINITIONS (cpuinfo_mock PUBLIC CPUINFO_MOCK=1)
358- TARGET_COMPILE_DEFINITIONS (cpuinfo_mock PRIVATE CLOG_LOG_TO_STDIO=1)
349+ TARGET_COMPILE_DEFINITIONS (cpuinfo_mock PUBLIC "CPUINFO_MOCK=1" )
350+ TARGET_COMPILE_DEFINITIONS (cpuinfo_mock PRIVATE "CPUINFO_LOG_LEVEL=5" )
351+ TARGET_COMPILE_DEFINITIONS (cpuinfo_mock PRIVATE "CPUINFO_LOG_TO_STDIO=1" )
359352 IF (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android" )
360353 TARGET_LINK_LIBRARIES (cpuinfo_mock PUBLIC ${CMAKE_THREAD_LIBS_INIT} )
361354 TARGET_COMPILE_DEFINITIONS (cpuinfo_mock PRIVATE _GNU_SOURCE=1)
362355 ENDIF ()
363- TARGET_LINK_LIBRARIES (cpuinfo_mock PRIVATE clog)
364356
365357 IF (CMAKE_SYSTEM_NAME STREQUAL "Android" AND CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv5te|armv7-a)$" )
366358 ADD_EXECUTABLE (atm7029b-tablet-test test /mock/atm7029b-tablet.cc)
0 commit comments