aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorMarat Dukhan <marat@fb.com>2018-01-31 23:55:05 -0800
committerMarat Dukhan <marat@fb.com>2018-01-31 23:55:05 -0800
commitdaafc28863b53f206b7b925e2f70277883eef440 (patch)
tree056e9df3642966c61a05b0d997606bd2c1cc35fe /CMakeLists.txt
parent4853ef457e4afd94b42c93659f2f26cf2c9b91b8 (diff)
downloadcpuinfo-daafc28863b53f206b7b925e2f70277883eef440.tar.gz
CMake: support CPUINFO_LIBRARY_TYPE option
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt14
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)