diff options
author | Marat Dukhan <marat@fb.com> | 2018-01-31 23:55:05 -0800 |
---|---|---|
committer | Marat Dukhan <marat@fb.com> | 2018-01-31 23:55:05 -0800 |
commit | daafc28863b53f206b7b925e2f70277883eef440 (patch) | |
tree | 056e9df3642966c61a05b0d997606bd2c1cc35fe /CMakeLists.txt | |
parent | 4853ef457e4afd94b42c93659f2f26cf2c9b91b8 (diff) | |
download | cpuinfo-daafc28863b53f206b7b925e2f70277883eef440.tar.gz |
CMake: support CPUINFO_LIBRARY_TYPE option
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 1ef42b7..29cc54c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,8 @@ INCLUDE(GNUInstallDirs) PROJECT(cpuinfo C CXX) # ---[ Options. +SET(CPUINFO_LIBRARY_TYPE "default" CACHE STRING "Type of cpuinfo library (shared, static, or default) to build") +SET_PROPERTY(CACHE CPUINFO_LIBRARY_TYPE PROPERTY STRINGS default static shared) OPTION(CPUINFO_BUILD_TOOLS "Build command-line tools" ON) OPTION(CPUINFO_BUILD_UNIT_TESTS "Build cpuinfo unit tests" ON) OPTION(CPUINFO_BUILD_MOCK_TESTS "Build cpuinfo mock tests" ON) @@ -144,7 +146,15 @@ IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android") FIND_PACKAGE(Threads REQUIRED) ENDIF() -ADD_LIBRARY(cpuinfo ${CPUINFO_SRCS}) +IF(CPUINFO_LIBRARY_TYPE STREQUAL "default") + ADD_LIBRARY(cpuinfo ${CPUINFO_SRCS}) +ELSEIF(CPUINFO_LIBRARY_TYPE STREQUAL "shared") + ADD_LIBRARY(cpuinfo SHARED ${CPUINFO_SRCS}) +ELSEIF(CPUINFO_LIBRARY_TYPE STREQUAL "static") + ADD_LIBRARY(cpuinfo STATIC ${CPUINFO_SRCS}) +ELSE() + MESSAGE(FATAL_ERROR "Unsupported library type ${CPUINFO_LIBRARY_TYPE}") +ENDIF() SET_TARGET_PROPERTIES(cpuinfo PROPERTIES PUBLIC_HEADER include/cpuinfo.h) TARGET_INCLUDE_DIRECTORIES(cpuinfo PUBLIC include) TARGET_INCLUDE_DIRECTORIES(cpuinfo PRIVATE src) @@ -207,7 +217,7 @@ IF(CPUINFO_BUILD_MOCK_TESTS) LIST(APPEND CPUINFO_MOCK_SRCS src/linux/mockfile.c) ENDIF() - ADD_LIBRARY(cpuinfo_mock ${CPUINFO_MOCK_SRCS}) + ADD_LIBRARY(cpuinfo_mock STATIC ${CPUINFO_MOCK_SRCS}) SET_TARGET_PROPERTIES(cpuinfo_mock PROPERTIES PUBLIC_HEADER include/cpuinfo.h) TARGET_INCLUDE_DIRECTORIES(cpuinfo_mock PUBLIC include) TARGET_INCLUDE_DIRECTORIES(cpuinfo_mock PRIVATE src) |