Add MSGPACK_ENABLE_SHARED option, defaulting to ON

This allows building just static libraries using the CMake build, which
is useful if your product is entirely statically linked. By default
there is no change to the output - MSGPACK_ENABLE_SHARED must be
explicitly set to false to disable building the shared library.
This commit is contained in:
James Nugent
2015-07-15 18:06:59 -05:00
committed by James Nugent
parent 1b13523c7f
commit 5f1d5e8722

View File

@@ -53,6 +53,7 @@ IF (GTEST_FOUND AND ZLIB_FOUND AND THREADS_FOUND)
ENDIF ()
OPTION (MSGPACK_ENABLE_CXX "Enable C++ interface." ON)
OPTION (MSGPACK_ENABLE_SHARED "Build shared libaries in addition to static libraries." ON)
INCLUDE (CheckCXXSourceCompiles)
CHECK_CXX_SOURCE_COMPILES ("
@@ -177,10 +178,12 @@ INCLUDE_DIRECTORIES (
${MSGPACK_BOOST_DIR}
)
ADD_LIBRARY (msgpack SHARED
${msgpack_SOURCES}
${msgpack_HEADERS}
)
IF (MSGPACK_ENABLE_SHARED)
ADD_LIBRARY (msgpack SHARED
${msgpack_SOURCES}
${msgpack_HEADERS}
)
ENDIF ()
ADD_LIBRARY (msgpack-static STATIC
${msgpack_SOURCES}
@@ -188,8 +191,10 @@ ADD_LIBRARY (msgpack-static STATIC
)
SET_TARGET_PROPERTIES (msgpack-static PROPERTIES OUTPUT_NAME "msgpack")
SET_TARGET_PROPERTIES (msgpack PROPERTIES IMPORT_SUFFIX "_import.lib")
SET_TARGET_PROPERTIES (msgpack PROPERTIES SOVERSION 3 VERSION 4.0.0)
IF (MSGPACK_ENABLE_SHARED)
SET_TARGET_PROPERTIES (msgpack PROPERTIES IMPORT_SUFFIX "_import.lib")
SET_TARGET_PROPERTIES (msgpack PROPERTIES SOVERSION 3 VERSION 4.0.0)
ENDIF ()
IF (MSGPACK_BUILD_TESTS)
ENABLE_TESTING ()
@@ -201,7 +206,9 @@ IF (MSGPACK_BUILD_TESTS)
ENDIF ()
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
SET_PROPERTY (TARGET msgpack APPEND_STRING PROPERTY COMPILE_FLAGS "-Wall -Wextra -Werror -g -O3 -DPIC")
IF (MSGPACK_ENABLE_SHARED)
SET_PROPERTY (TARGET msgpack APPEND_STRING PROPERTY COMPILE_FLAGS "-Wall -Wextra -Werror -g -O3 -DPIC")
ENDIF ()
SET_PROPERTY (TARGET msgpack-static APPEND_STRING PROPERTY COMPILE_FLAGS "-Wall -Wextra -Werror -g -O3" )
ENDIF ()
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
@@ -220,7 +227,13 @@ IF (NOT DEFINED CMAKE_INSTALL_LIBDIR)
SET(CMAKE_INSTALL_LIBDIR lib)
ENDIF ()
INSTALL (TARGETS msgpack msgpack-static DESTINATION ${CMAKE_INSTALL_LIBDIR})
IF (MSGPACK_ENABLE_SHARED)
SET (MSGPACK_INSTALLTARGETS msgpack msgpack-static)
ELSE()
SET (MSGPACK_INSTALLTARGETS msgpack-static)
ENDIF ()
INSTALL (TARGETS ${MSGPACK_INSTALLTARGETS} DESTINATION ${CMAKE_INSTALL_LIBDIR})
INSTALL (DIRECTORY include DESTINATION ${CMAKE_INSTALL_PREFIX})
INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/msgpack.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)