From 3aaadb9b12261ec163735dc09a44689f324b48a9 Mon Sep 17 00:00:00 2001 From: Takatoshi Kondo Date: Wed, 8 Aug 2018 20:02:40 +0900 Subject: [PATCH] Fixed #703. Added no build static-library option. --- CMakeLists.txt | 80 +++++++++++++++++++++++----------------- ci/build_cmake.sh | 2 +- example/c/CMakeLists.txt | 6 ++- 3 files changed, 52 insertions(+), 36 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9227fbd1..b5443892 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -154,8 +154,13 @@ IF (GTEST_FOUND AND ZLIB_FOUND AND THREADS_FOUND AND NOT "${MSGPACK_FUZZ_REGRESS OPTION (MSGPACK_BUILD_TESTS "Build msgpack tests." ON) ENDIF () +IF (MSGPACK_ENABLE_SHARED) + MESSAGE (DEPRECATION "MSGPACK_ENABLE_SHARED is deprecated. Use BUILD_SHARED_LIBS instead.") +ENDIF () + OPTION (MSGPACK_ENABLE_CXX "Enable C++ interface." ON) -OPTION (MSGPACK_ENABLE_SHARED "Build shared libaries in addition to static libraries." ON) +OPTION (MSGPACK_ENABLE_SHARED "Build shared libaries." ON) +OPTION (MSGPACK_ENABLE_STATIC "Build static libaries." ON) INCLUDE (CheckCXXSourceCompiles) CHECK_CXX_SOURCE_COMPILES (" @@ -181,7 +186,7 @@ CONFIGURE_FILE ( @ONLY ) -IF (MSGPACK_ENABLE_SHARED) +IF (BUILD_SHARED_LIBS OR MSGPACK_ENABLE_SHARED) ADD_LIBRARY (msgpackc SHARED ${msgpackc_SOURCES} ${msgpackc_HEADERS} @@ -197,33 +202,36 @@ IF (MSGPACK_ENABLE_SHARED) ) ENDIF () -ADD_LIBRARY (msgpackc-static STATIC - ${msgpackc_SOURCES} - ${msgpackc_HEADERS} -) +IF (MSGPACK_ENABLE_STATIC) + ADD_LIBRARY (msgpackc-static STATIC + ${msgpackc_SOURCES} + ${msgpackc_HEADERS} + ) -TARGET_INCLUDE_DIRECTORIES (msgpackc-static - PUBLIC - $ - $ - $ - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR} -) + TARGET_INCLUDE_DIRECTORIES (msgpackc-static + PUBLIC + $ + $ + $ + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} + ) -IF (NOT MSGPACK_ENABLE_SHARED) - # Add alias for subdirectories - ADD_LIBRARY (msgpackc ALIAS msgpackc-static) -ENDIF () - -SET_TARGET_PROPERTIES (msgpackc-static PROPERTIES OUTPUT_NAME "msgpackc") -IF (MSGPACK_ENABLE_SHARED) - IF (MSVC) - SET_TARGET_PROPERTIES (msgpackc PROPERTIES IMPORT_SUFFIX "_import.lib") - ELSEIF (MINGW) - SET_TARGET_PROPERTIES (msgpackc PROPERTIES IMPORT_SUFFIX ".dll.a") + IF (NOT BUILD_SHARED_LIBS AND NOT MSGPACK_ENABLE_SHARED) + # Add alias for subdirectories + ADD_LIBRARY (msgpackc ALIAS msgpackc-static) + ENDIF () + + SET_TARGET_PROPERTIES (msgpackc-static PROPERTIES OUTPUT_NAME "msgpackc") + + IF (BUILD_SHARED_LIBS OR MSGPACK_ENABLE_SHARED) + IF (MSVC) + SET_TARGET_PROPERTIES (msgpackc PROPERTIES IMPORT_SUFFIX "_import.lib") + ELSEIF (MINGW) + SET_TARGET_PROPERTIES (msgpackc PROPERTIES IMPORT_SUFFIX ".dll.a") + ENDIF () + SET_TARGET_PROPERTIES (msgpackc PROPERTIES SOVERSION 2 VERSION 2.0.0) ENDIF () - SET_TARGET_PROPERTIES (msgpackc PROPERTIES SOVERSION 2 VERSION 2.0.0) ENDIF () # enable regression testing @@ -248,17 +256,21 @@ IF (MSGPACK_BUILD_TESTS) ENDIF () IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") - IF (MSGPACK_ENABLE_SHARED) + IF (BUILD_SHARED_LIBS OR MSGPACK_ENABLE_SHARED) SET_PROPERTY (TARGET msgpackc APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra -DPIC") ENDIF () - SET_PROPERTY (TARGET msgpackc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra" ) + IF (MSGPACK_ENABLE_STATIC) + SET_PROPERTY (TARGET msgpackc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra" ) + ENDIF () ENDIF () IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - IF (MSGPACK_ENABLE_SHARED) + IF (BUILD_SHARED_LIBS OR MSGPACK_ENABLE_SHARED) SET_PROPERTY (TARGET msgpackc APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-mismatched-tags") ENDIF () - SET_PROPERTY (TARGET msgpackc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-mismatched-tags") + IF (MSGPACK_ENABLE_STATIC) + SET_PROPERTY (TARGET msgpackc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-mismatched-tags") + ENDIF () ENDIF () IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") @@ -290,9 +302,11 @@ IF (MSGPACK_BUILD_EXAMPLES) ADD_SUBDIRECTORY (example) ENDIF () -IF (MSGPACK_ENABLE_SHARED) - SET (MSGPACK_INSTALLTARGETS msgpackc msgpackc-static) -ELSE() +IF (BUILD_SHARED_LIBS OR MSGPACK_ENABLE_SHARED) + SET (MSGPACK_INSTALLTARGETS msgpackc) +ENDIF () + +IF (MSGPACK_ENABLE_STATIC) SET (MSGPACK_INSTALLTARGETS msgpackc-static) ENDIF () diff --git a/ci/build_cmake.sh b/ci/build_cmake.sh index 9dd03066..ec56eb1e 100755 --- a/ci/build_cmake.sh +++ b/ci/build_cmake.sh @@ -23,7 +23,7 @@ else export BIT32="OFF" fi -cmake -DMSGPACK_CXX11=${CXX11} -DMSGPACK_32BIT=${BIT32} -DMSGPACK_BOOST=${BOOST} -DMSGPACK_ENABLE_SHARED=${SHARED} -DMSGPACK_CHAR_SIGN=${CHAR_SIGN} -DMSGPACK_DEFAULT_API_VERSION=${API_VERSION} -DMSGPACK_USE_X3_PARSE=${X3_PARSE} .. +cmake -DMSGPACK_CXX11=${CXX11} -DMSGPACK_32BIT=${BIT32} -DMSGPACK_BOOST=${BOOST} -DBUILD_SHARED_LIBS=${SHARED} -DMSGPACK_CHAR_SIGN=${CHAR_SIGN} -DMSGPACK_DEFAULT_API_VERSION=${API_VERSION} -DMSGPACK_USE_X3_PARSE=${X3_PARSE} .. ret=$? if [ $ret -ne 0 ] diff --git a/example/c/CMakeLists.txt b/example/c/CMakeLists.txt index 363d5c11..46c0bbc8 100644 --- a/example/c/CMakeLists.txt +++ b/example/c/CMakeLists.txt @@ -1,6 +1,8 @@ -IF (MSGPACK_ENABLE_SHARED) +IF (BUILD_SHARED_LIBS OR MSGPACK_ENABLE_SHARED) SET (MSGPACK_LIB msgpackc) -ELSE () +ENDIF () + +IF (MSGPACK_ENABLE_STATIC) SET (MSGPACK_LIB msgpackc-static) ENDIF ()