diff --git a/.travis.yml b/.travis.yml index 2b6a55b3..848d19e5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,13 +37,13 @@ install: env: - ACTION="ci/build_autotools.sh" VERSION="cpp03" ARCH="64" LIBPATH="/usr/local/lib" BOOST="boost" BOOST_INC="/usr/local/boost" - - ACTION="ci/build_autotools.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="" + - ACTION="ci/build_autotools.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="" BOOST_INC="" - ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib" BOOST="boost" BOOST_INC="/usr/local/boost" - - ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="" - - ACTION="ci/build_autotools.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib" BOOST="" + - ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="" BOOST_INC="" SHARED="OFF" + - ACTION="ci/build_autotools.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib" BOOST="" BOOST_INC="" - ACTION="ci/build_autotools.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="boost" BOOST_INC="/usr/local/boost" - - ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="64" LIBPATH="/usr/local/lib" BOOST="" - - ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="boost" BOOST_INC="/usr/local/boost" + - ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="64" LIBPATH="/usr/local/lib" BOOST="" BOOST_INC="" + - ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="boost" BOOST_INC="/usr/local/boost" SHARED="OFF" before_script: - export PATH=/usr/local/bin:$PATH && rm -rf install @@ -53,39 +53,39 @@ matrix: - os: osx compiler: gcc - os: osx - env: ACTION="ci/build_autotools.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="" + env: ACTION="ci/build_autotools.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="" BOOST_INC="" - os: osx - env: ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="" + env: ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="" BOOST_INC="" SHARED="OFF" - os: osx env: ACTION="ci/build_autotools.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="boost" BOOST_INC="/usr/local/boost" - os: osx - env: ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="boost" BOOST_INC="/usr/local/boost" + env: ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="boost" BOOST_INC="/usr/local/boost" SHARED="OFF" - os: linux compiler: gcc env: ACTION="ci/build_autotools.sh" VERSION="cpp03" ARCH="64" LIBPATH="/usr/local/lib" BOOST="boost" BOOST_INC="/usr/local/boost" - os: linux compiler: gcc - env: ACTION="ci/build_autotools.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="" + env: ACTION="ci/build_autotools.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="" BOOST_INC="" - os: linux compiler: gcc env: ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib" BOOST="boost" BOOST_INC="/usr/local/boost" - os: linux compiler: gcc - env: ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="" + env: ACTION="ci/build_cmake.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="" BOOST_INC="" SHARED="OFF" - os: linux compiler: clang - env: ACTION="ci/build_autotools.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib" BOOST="" + env: ACTION="ci/build_autotools.sh" VERSION="cpp11" ARCH="64" LIBPATH="/usr/local/lib" BOOST="" BOOST_INC="" - os: linux compiler: clang env: ACTION="ci/build_autotools.sh" VERSION="cpp11" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="boost" BOOST_INC="/usr/local/boost" - os: linux compiler: clang - env: ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="64" LIBPATH="/usr/local/lib" BOOST="" + env: ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="64" LIBPATH="/usr/local/lib" BOOST="" BOOST_INC="" - os: linux compiler: clang - env: ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="boost" BOOST_INC="/usr/local/boost" + env: ACTION="ci/build_cmake.sh" VERSION="cpp03" ARCH="32" LIBPATH="/usr/local/lib32" BOOST="boost" BOOST_INC="/usr/local/boost" SHARED="OFF" script: - git clean -xdf && CMAKE_LIBRARY_PATH=${LIBPATH} ${ACTION} ${VERSION} ${ARCH} ${BOOST} ${BOOST_INC} diff --git a/CMakeLists.txt b/CMakeLists.txt index 7665674f..853a359b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,6 +89,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 (" @@ -227,10 +228,12 @@ INCLUDE_DIRECTORIES ( ${CMAKE_CURRENT_BINARY_DIR}/include/ ) -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} @@ -238,8 +241,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 () @@ -251,7 +256,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 -Wno-mismatched-tags -Werror -g -O3 -DPIC") + IF (MSGPACK_ENABLE_SHARED) + SET_PROPERTY (TARGET msgpack APPEND_STRING PROPERTY COMPILE_FLAGS "-Wall -Wextra -Wno-mismatched-tags -Werror -g -O3 -DPIC") + ENDIF () SET_PROPERTY (TARGET msgpack-static APPEND_STRING PROPERTY COMPILE_FLAGS "-Wall -Wextra -Wno-mismatched-tags -Werror -g -O3" ) ENDIF () IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") @@ -272,7 +279,13 @@ ENDIF () ADD_SUBDIRECTORY (example) -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}) IF (NOT MSVC) INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/msgpack.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) diff --git a/ci/build_cmake.sh b/ci/build_cmake.sh index 1fca59c8..4f9505e7 100755 --- a/ci/build_cmake.sh +++ b/ci/build_cmake.sh @@ -44,7 +44,14 @@ else boost_dir="" fi -cmake $cpp11 $bit32 $boost $boost_dir .. +if [ "$5" = "OFF" ] +then + shared="-DMSGPACK_ENABLE_SHARED=OFF" +else + shared="" +fi + +cmake $cpp11 $bit32 $boost $boost_dir $shared .. ret=$? if [ $ret -ne 0 ] diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index c05084f0..9dcbb107 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -53,6 +53,12 @@ IF (MSGPACK_CXX11) ) ENDIF () +IF (MSGPACK_ENABLE_SHARED) + SET (MSGPACK_TEST_LIB msgpack) +ELSE () + SET (MSGPACK_TEST_LIB msgpack-static) +ENDIF () + FOREACH (source_file ${check_PROGRAMS}) GET_FILENAME_COMPONENT (source_file_we ${source_file} NAME_WE) ADD_EXECUTABLE ( @@ -60,7 +66,7 @@ FOREACH (source_file ${check_PROGRAMS}) ${source_file} ) TARGET_LINK_LIBRARIES (${source_file_we} - msgpack + ${MSGPACK_TEST_LIB} ${GTEST_BOTH_LIBRARIES} ${ZLIB_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}