xref: /aosp_15_r20/external/cpuinfo/deps/clog/CMakeLists.txt (revision 2b54f0db79fd8303838913b20ff3780cddaa909f)
1*2b54f0dbSXin LiCMAKE_MINIMUM_REQUIRED(VERSION 3.1 FATAL_ERROR)
2*2b54f0dbSXin Li
3*2b54f0dbSXin LiINCLUDE(GNUInstallDirs)
4*2b54f0dbSXin Li
5*2b54f0dbSXin Li# ---[ Project and semantic versioning.
6*2b54f0dbSXin LiPROJECT(clog C CXX)
7*2b54f0dbSXin Li
8*2b54f0dbSXin Li# ---[ Options.
9*2b54f0dbSXin LiSET(CLOG_RUNTIME_TYPE "default" CACHE STRING "Type of runtime library (shared, static, or default) to use")
10*2b54f0dbSXin LiSET_PROPERTY(CACHE CLOG_RUNTIME_TYPE PROPERTY STRINGS default static shared)
11*2b54f0dbSXin LiIF(ANDROID)
12*2b54f0dbSXin Li  OPTION(CLOG_LOG_TO_STDIO "Log errors, warnings, and information to stdout/stderr" OFF)
13*2b54f0dbSXin LiELSE()
14*2b54f0dbSXin Li  OPTION(CLOG_LOG_TO_STDIO "Log errors, warnings, and information to stdout/stderr" ON)
15*2b54f0dbSXin LiENDIF()
16*2b54f0dbSXin LiOPTION(CLOG_BUILD_TESTS "Build clog tests" ON)
17*2b54f0dbSXin Li
18*2b54f0dbSXin Li# ---[ CMake options
19*2b54f0dbSXin LiIF(CLOG_BUILD_TESTS)
20*2b54f0dbSXin Li  ENABLE_TESTING()
21*2b54f0dbSXin LiENDIF()
22*2b54f0dbSXin Li
23*2b54f0dbSXin LiMACRO(CLOG_TARGET_RUNTIME_LIBRARY target)
24*2b54f0dbSXin Li  IF(MSVC AND NOT CLOG_RUNTIME_TYPE STREQUAL "default")
25*2b54f0dbSXin Li    IF(CLOG_RUNTIME_TYPE STREQUAL "shared")
26*2b54f0dbSXin Li      TARGET_COMPILE_OPTIONS(${target} PRIVATE
27*2b54f0dbSXin Li        "/MD$<$<CONFIG:Debug>:d>")
28*2b54f0dbSXin Li    ELSEIF(CLOG_RUNTIME_TYPE STREQUAL "static")
29*2b54f0dbSXin Li      TARGET_COMPILE_OPTIONS(${target} PRIVATE
30*2b54f0dbSXin Li        "/MT$<$<CONFIG:Debug>:d>")
31*2b54f0dbSXin Li    ENDIF()
32*2b54f0dbSXin Li  ENDIF()
33*2b54f0dbSXin LiENDMACRO()
34*2b54f0dbSXin Li
35*2b54f0dbSXin Li# ---[ Download deps
36*2b54f0dbSXin LiSET(CONFU_DEPENDENCIES_SOURCE_DIR ${CMAKE_SOURCE_DIR}/deps
37*2b54f0dbSXin Li  CACHE PATH "Confu-style dependencies source directory")
38*2b54f0dbSXin LiSET(CONFU_DEPENDENCIES_BINARY_DIR ${CMAKE_BINARY_DIR}/deps
39*2b54f0dbSXin Li  CACHE PATH "Confu-style dependencies binary directory")
40*2b54f0dbSXin Li
41*2b54f0dbSXin LiIF(CLOG_BUILD_TESTS)
42*2b54f0dbSXin Li  IF(NOT DEFINED GOOGLETEST_SOURCE_DIR)
43*2b54f0dbSXin Li    MESSAGE(STATUS "Downloading Google Test to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest (define GOOGLETEST_SOURCE_DIR to avoid it)")
44*2b54f0dbSXin Li    CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download/CMakeLists.txt")
45*2b54f0dbSXin Li    EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" .
46*2b54f0dbSXin Li      WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download")
47*2b54f0dbSXin Li    EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" --build .
48*2b54f0dbSXin Li      WORKING_DIRECTORY "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download")
49*2b54f0dbSXin Li    SET(GOOGLETEST_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest" CACHE STRING "Google Test source directory")
50*2b54f0dbSXin Li  ENDIF()
51*2b54f0dbSXin LiENDIF()
52*2b54f0dbSXin Li
53*2b54f0dbSXin Li# ---[ clog library
54*2b54f0dbSXin LiADD_LIBRARY(clog STATIC src/clog.c)
55*2b54f0dbSXin LiSET_TARGET_PROPERTIES(clog PROPERTIES
56*2b54f0dbSXin Li  C_STANDARD 99
57*2b54f0dbSXin Li  C_EXTENSIONS NO)
58*2b54f0dbSXin LiCLOG_TARGET_RUNTIME_LIBRARY(clog)
59*2b54f0dbSXin LiSET_TARGET_PROPERTIES(clog PROPERTIES PUBLIC_HEADER include/clog.h)
60*2b54f0dbSXin LiTARGET_INCLUDE_DIRECTORIES(clog PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
61*2b54f0dbSXin LiIF(CLOG_LOG_TO_STDIO)
62*2b54f0dbSXin Li  TARGET_COMPILE_DEFINITIONS(clog PRIVATE CLOG_LOG_TO_STDIO=1)
63*2b54f0dbSXin LiELSE()
64*2b54f0dbSXin Li  TARGET_COMPILE_DEFINITIONS(clog PRIVATE CLOG_LOG_TO_STDIO=0)
65*2b54f0dbSXin LiENDIF()
66*2b54f0dbSXin LiIF(ANDROID AND NOT CLOG_LOG_TO_STDIO)
67*2b54f0dbSXin Li  TARGET_LINK_LIBRARIES(clog PRIVATE log)
68*2b54f0dbSXin LiENDIF()
69*2b54f0dbSXin Li
70*2b54f0dbSXin LiADD_LIBRARY(cpuinfo::clog ALIAS clog)
71*2b54f0dbSXin Li
72*2b54f0dbSXin LiINSTALL(TARGETS clog
73*2b54f0dbSXin Li  EXPORT cpuinfo-targets
74*2b54f0dbSXin Li  LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
75*2b54f0dbSXin Li  ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
76*2b54f0dbSXin Li  PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
77*2b54f0dbSXin Li
78*2b54f0dbSXin Li# ---[ clog tests
79*2b54f0dbSXin LiIF(CLOG_BUILD_TESTS)
80*2b54f0dbSXin Li  # ---[ Build google test
81*2b54f0dbSXin Li  IF(NOT TARGET gtest)
82*2b54f0dbSXin Li    IF(MSVC AND NOT CLOG_RUNTIME_TYPE STREQUAL "static")
83*2b54f0dbSXin Li      SET(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
84*2b54f0dbSXin Li    ENDIF()
85*2b54f0dbSXin Li    ADD_SUBDIRECTORY(
86*2b54f0dbSXin Li      "${GOOGLETEST_SOURCE_DIR}"
87*2b54f0dbSXin Li      "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest")
88*2b54f0dbSXin Li  ENDIF()
89*2b54f0dbSXin Li
90*2b54f0dbSXin Li  ADD_EXECUTABLE(clog-test test/clog.cc)
91*2b54f0dbSXin Li  SET_TARGET_PROPERTIES(clog-test PROPERTIES
92*2b54f0dbSXin Li    CXX_STANDARD 11
93*2b54f0dbSXin Li    CXX_EXTENSIONS NO)
94*2b54f0dbSXin Li  CLOG_TARGET_RUNTIME_LIBRARY(clog-test)
95*2b54f0dbSXin Li  TARGET_LINK_LIBRARIES(clog-test PRIVATE clog gtest gtest_main)
96*2b54f0dbSXin Li  ADD_TEST(clog-test clog-test)
97*2b54f0dbSXin LiENDIF()
98