mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-06-25 14:06:27 +02:00
add MSGPACK_CXX_ONLY option to build c++ libraries only
This commit is contained in:
parent
d04520044f
commit
d9c5978958
@ -156,6 +156,23 @@ IF (GTEST_FOUND AND ZLIB_FOUND AND THREADS_FOUND AND NOT "${MSGPACK_FUZZ_REGRESS
|
||||
OPTION (MSGPACK_GEN_COVERAGE "Enable running gcov to get a test coverage report." OFF)
|
||||
ENDIF ()
|
||||
|
||||
OPTION (MSGPACK_ENABLE_CXX "Enable C++ interface." ON)
|
||||
|
||||
OPTION (MSGPACK_CXX_ONLY "Build only C++ libraries (header-only)." OFF)
|
||||
IF (MSGPACK_CXX_ONLY)
|
||||
IF (DEFINED MSGPACK_ENABLE_SHARED AND MSGPACK_ENABLE_SHARED)
|
||||
MESSAGE(WARNING "MSGPACK_ENABLE_SHARED is overridden to OFF by MSGPACK_CXX_ONLY")
|
||||
ENDIF ()
|
||||
SET (MSGPACK_ENABLE_SHARED OFF)
|
||||
IF (DEFINED MSGPACK_ENABLE_STATIC AND MSGPACK_ENABLE_STATIC)
|
||||
MESSAGE(WARNING "MSGPACK_ENABLE_STATIC is overridden to OFF by MSGPACK_CXX_ONLY")
|
||||
ENDIF ()
|
||||
SET (MSGPACK_ENABLE_STATIC OFF)
|
||||
IF (DEFINED MSGPACK_ENABLE_CXX AND NOT MSGPACK_ENABLE_CXX)
|
||||
MESSAGE(WARNING "MSGPACK_ENABLE_CXX is overridden to ON by MSGPACK_CXX_ONLY")
|
||||
ENDIF ()
|
||||
SET (MSGPACK_ENABLE_CXX ON)
|
||||
ELSE ()
|
||||
IF (DEFINED BUILD_SHARED_LIBS)
|
||||
IF (BUILD_SHARED_LIBS)
|
||||
IF (DEFINED MSGPACK_ENABLE_SHARED AND NOT MSGPACK_ENABLE_SHARED)
|
||||
@ -185,8 +202,7 @@ ELSE ()
|
||||
ENDIF ()
|
||||
SET (BUILD_SHARED_LIBS ${MSGPACK_ENABLE_SHARED})
|
||||
ENDIF ()
|
||||
|
||||
OPTION (MSGPACK_ENABLE_CXX "Enable C++ interface." ON)
|
||||
ENDIF ()
|
||||
|
||||
INCLUDE (CheckCXXSourceCompiles)
|
||||
CHECK_CXX_SOURCE_COMPILES ("
|
||||
@ -380,7 +396,7 @@ FOREACH (file ${msgpackc_HEADERS})
|
||||
GET_FILENAME_COMPONENT (dir ${file} PATH)
|
||||
INSTALL (FILES ${file} DESTINATION ${CMAKE_INSTALL_PREFIX}/${dir})
|
||||
ENDFOREACH ()
|
||||
IF (NOT MSVC)
|
||||
IF (NOT MSGPACK_CXX_ONLY AND NOT MSVC)
|
||||
INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/msgpack.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||
ENDIF ()
|
||||
|
||||
@ -454,6 +470,7 @@ CONFIGURE_PACKAGE_CONFIG_FILE (msgpack-config.cmake.in
|
||||
INSTALL_DESTINATION "${CMAKE_INSTALL_CMAKEDIR}"
|
||||
)
|
||||
|
||||
IF (NOT MSGPACK_CXX_ONLY)
|
||||
INSTALL (EXPORT msgpack-targets
|
||||
FILE
|
||||
msgpack-targets.cmake
|
||||
@ -468,3 +485,4 @@ INSTALL (
|
||||
DESTINATION
|
||||
"${CMAKE_INSTALL_CMAKEDIR}"
|
||||
)
|
||||
ENDIF ()
|
||||
|
34
Files.cmake
34
Files.cmake
@ -5,14 +5,11 @@ LIST (APPEND msgpackc_SOURCES
|
||||
src/vrefbuffer.c
|
||||
src/zone.c
|
||||
)
|
||||
|
||||
# For both C and C++ libraries
|
||||
LIST (APPEND msgpackc_HEADERS
|
||||
include/msgpack.h
|
||||
include/msgpack/fbuffer.h
|
||||
include/msgpack/gcc_atomic.h
|
||||
include/msgpack/object.h
|
||||
include/msgpack/pack.h
|
||||
include/msgpack/pack_define.h
|
||||
include/msgpack/pack_template.h
|
||||
include/msgpack/predef.h
|
||||
include/msgpack/predef/architecture.h
|
||||
include/msgpack/predef/architecture/alpha.h
|
||||
@ -152,20 +149,33 @@ LIST (APPEND msgpackc_HEADERS
|
||||
include/msgpack/predef/platform/windows_uwp.h
|
||||
include/msgpack/predef/version.h
|
||||
include/msgpack/predef/version_number.h
|
||||
include/msgpack/sbuffer.h
|
||||
include/msgpack/sysdep.h
|
||||
include/msgpack/timestamp.h
|
||||
include/msgpack/unpack.h
|
||||
include/msgpack/unpack_define.h
|
||||
include/msgpack/unpack_template.h
|
||||
include/msgpack/util.h
|
||||
include/msgpack/version.h
|
||||
include/msgpack/version_master.h
|
||||
include/msgpack/vrefbuffer.h
|
||||
include/msgpack/zbuffer.h
|
||||
include/msgpack/zone.h
|
||||
)
|
||||
|
||||
IF (NOT MSGPACK_CXX_ONLY)
|
||||
# Only for C library
|
||||
LIST (APPEND msgpackc_HEADERS
|
||||
include/msgpack.h
|
||||
include/msgpack/gcc_atomic.h
|
||||
include/msgpack/pack.h
|
||||
include/msgpack/pack_define.h
|
||||
include/msgpack/pack_template.h
|
||||
include/msgpack/sbuffer.h
|
||||
include/msgpack/timestamp.h
|
||||
include/msgpack/unpack.h
|
||||
include/msgpack/unpack_template.h
|
||||
include/msgpack/util.h
|
||||
include/msgpack/version.h
|
||||
include/msgpack/vrefbuffer.h
|
||||
)
|
||||
ENDIF ()
|
||||
|
||||
IF (MSGPACK_ENABLE_CXX)
|
||||
# Only for C++ library
|
||||
LIST (APPEND msgpackc_HEADERS
|
||||
include/msgpack.hpp
|
||||
include/msgpack/adaptor/adaptor_base.hpp
|
||||
|
@ -1,5 +1,9 @@
|
||||
IF (NOT MSGPACK_CXX_ONLY)
|
||||
ADD_SUBDIRECTORY (c)
|
||||
ENDIF ()
|
||||
IF (MSGPACK_ENABLE_CXX)
|
||||
ADD_SUBDIRECTORY (cpp03)
|
||||
ADD_SUBDIRECTORY (cpp11)
|
||||
ADD_SUBDIRECTORY (boost)
|
||||
ADD_SUBDIRECTORY (x3)
|
||||
ENDIF ()
|
||||
|
@ -27,7 +27,7 @@ FOREACH (source_file ${exec_PROGRAMS})
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
||||
PRIVATE
|
||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
)
|
||||
TARGET_LINK_LIBRARIES (${source_file_we}
|
||||
${Boost_SYSTEM_LIBRARY}
|
||||
|
@ -37,7 +37,7 @@ FOREACH (source_file ${exec_PROGRAMS})
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
||||
PRIVATE
|
||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
)
|
||||
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")
|
||||
@ -59,7 +59,7 @@ FOREACH (source_file ${with_pthread_PROGRAMS})
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
||||
PRIVATE
|
||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
)
|
||||
TARGET_LINK_LIBRARIES (${source_file_we}
|
||||
${CMAKE_THREAD_LIBS_INIT}
|
||||
@ -88,7 +88,7 @@ FOREACH (source_file ${with_boost_lib_PROGRAMS})
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
||||
PRIVATE
|
||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
)
|
||||
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
|
||||
TARGET_LINK_LIBRARIES (${source_file_we}
|
||||
|
@ -22,7 +22,7 @@ IF (MSGPACK_CXX11 OR MSGPACK_CXX17)
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
||||
PRIVATE
|
||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
)
|
||||
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")
|
||||
|
@ -20,7 +20,7 @@ IF (MSGPACK_USE_X3_PARSE AND MSGPACK_DEFAULT_API_VERSION VERSION_GREATER 1)
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
||||
PRIVATE
|
||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
)
|
||||
IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||
SET_PROPERTY (TARGET ${source_file_we} APPEND_STRING PROPERTY COMPILE_FLAGS " -Wall -Wextra")
|
||||
@ -46,7 +46,7 @@ IF (MSGPACK_USE_X3_PARSE AND MSGPACK_DEFAULT_API_VERSION VERSION_GREATER 1)
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES (${source_file_we}
|
||||
PRIVATE
|
||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
)
|
||||
TARGET_LINK_LIBRARIES (${source_file_we}
|
||||
${Boost_CONTEXT_LIBRARY}
|
||||
|
@ -1,21 +1,48 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
c_headers=(
|
||||
include/msgpack.h
|
||||
include/msgpack/gcc_atomic.h
|
||||
include/msgpack/pack.h
|
||||
include/msgpack/pack_define.h
|
||||
include/msgpack/pack_template.h
|
||||
include/msgpack/sbuffer.h
|
||||
include/msgpack/timestamp.h
|
||||
include/msgpack/unpack.h
|
||||
include/msgpack/unpack_template.h
|
||||
include/msgpack/util.h
|
||||
include/msgpack/version.h
|
||||
include/msgpack/vrefbuffer.h
|
||||
)
|
||||
|
||||
rm -f c_headers.tmp
|
||||
for hdr in ${c_headers[@]}; do
|
||||
echo $hdr >> c_headers.tmp
|
||||
done
|
||||
|
||||
find src -name "*.c" | sed -e 's/\s\+/\n/g' | sort > srcs.tmp
|
||||
find include -name "*.h" | sed -e 's/\s\+/\n/g' | sort > c_headers.tmp
|
||||
find include -name "*.h" | grep -vFf c_headers.tmp | sed -e 's/\s\+/\n/g' | sort > c_cpp_headers.tmp
|
||||
find include -name "*.hpp" | sed -e 's/\s\+/\n/g' | sort > cpp_headers.tmp
|
||||
|
||||
echo 'LIST (APPEND msgpackc_SOURCES' > Files.cmake
|
||||
cat srcs.tmp | sed -e 's/^/ /g' >> Files.cmake
|
||||
echo ')' >> Files.cmake
|
||||
echo -e ')\n' >> Files.cmake
|
||||
|
||||
echo 'LIST (APPEND msgpackc_HEADERS' >> Files.cmake
|
||||
echo '# For both C and C++ libraries
|
||||
LIST (APPEND msgpackc_HEADERS' >> Files.cmake
|
||||
cat c_cpp_headers.tmp | sed -e 's/^/ /g' >> Files.cmake
|
||||
echo -e ')\n' >> Files.cmake
|
||||
|
||||
echo 'IF (NOT MSGPACK_CXX_ONLY)
|
||||
# Only for C library
|
||||
LIST (APPEND msgpackc_HEADERS' >> Files.cmake
|
||||
cat c_headers.tmp | sed -e 's/^/ /g' >> Files.cmake
|
||||
echo ')' >> Files.cmake
|
||||
echo -e ' )\nENDIF ()\n' >> Files.cmake
|
||||
|
||||
echo 'IF (MSGPACK_ENABLE_CXX)' >> Files.cmake
|
||||
echo ' LIST (APPEND msgpackc_HEADERS' >> Files.cmake
|
||||
echo 'IF (MSGPACK_ENABLE_CXX)
|
||||
# Only for C++ library
|
||||
LIST (APPEND msgpackc_HEADERS' >> Files.cmake
|
||||
cat cpp_headers.tmp | sed -e 's/^/ /g' >> Files.cmake
|
||||
echo ' )' >> Files.cmake
|
||||
echo 'ENDIF ()' >> Files.cmake
|
||||
echo -e ' )\nENDIF ()' >> Files.cmake
|
||||
|
||||
rm -f srcs.tmp c_headers.tmp cpp_headers.tmp
|
||||
rm -f srcs.tmp c_headers.tmp cpp_headers.tmp c_cpp_headers.tmp
|
||||
|
@ -7,6 +7,20 @@ INCLUDE_DIRECTORIES (
|
||||
${ZLIB_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
SET (tests_C
|
||||
fixint_c.cpp
|
||||
msgpack_c.cpp
|
||||
pack_unpack_c.cpp
|
||||
streaming_c.cpp
|
||||
)
|
||||
|
||||
IF (NOT MSGPACK_CXX_ONLY)
|
||||
LIST (APPEND check_PROGRAMS
|
||||
${tests_C}
|
||||
)
|
||||
ENDIF ()
|
||||
|
||||
IF (MSGPACK_ENABLE_CXX)
|
||||
LIST (APPEND check_PROGRAMS
|
||||
array_ref.cpp
|
||||
buffer.cpp
|
||||
@ -14,12 +28,10 @@ LIST (APPEND check_PROGRAMS
|
||||
cases.cpp
|
||||
convert.cpp
|
||||
fixint.cpp
|
||||
fixint_c.cpp
|
||||
inc_adaptor_define.cpp
|
||||
json.cpp
|
||||
limit.cpp
|
||||
msgpack_basic.cpp
|
||||
msgpack_c.cpp
|
||||
msgpack_container.cpp
|
||||
msgpack_stream.cpp
|
||||
msgpack_tuple.cpp
|
||||
@ -27,12 +39,10 @@ LIST (APPEND check_PROGRAMS
|
||||
object.cpp
|
||||
object_with_zone.cpp
|
||||
pack_unpack.cpp
|
||||
pack_unpack_c.cpp
|
||||
raw.cpp
|
||||
reference.cpp
|
||||
size_equal_only.cpp
|
||||
streaming.cpp
|
||||
streaming_c.cpp
|
||||
user_class.cpp
|
||||
version.cpp
|
||||
visitor.cpp
|
||||
@ -74,6 +84,7 @@ IF (MSGPACK_CXX17)
|
||||
msgpack_cpp17.cpp
|
||||
)
|
||||
ENDIF ()
|
||||
ENDIF (MSGPACK_ENABLE_CXX)
|
||||
|
||||
FOREACH (source_file ${check_PROGRAMS})
|
||||
GET_FILENAME_COMPONENT (source_file_we ${source_file} NAME_WE)
|
||||
@ -81,8 +92,16 @@ FOREACH (source_file ${check_PROGRAMS})
|
||||
${source_file_we}
|
||||
${source_file}
|
||||
)
|
||||
|
||||
LIST (FIND tests_C ${source_file} idx)
|
||||
IF (idx GREATER -1)
|
||||
SET (link_target msgpackc)
|
||||
ELSE ()
|
||||
SET (link_target msgpackc-cxx)
|
||||
ENDIF ()
|
||||
|
||||
TARGET_LINK_LIBRARIES (${source_file_we}
|
||||
msgpackc
|
||||
${link_target}
|
||||
${GTEST_BOTH_LIBRARIES}
|
||||
${ZLIB_LIBRARIES}
|
||||
${CMAKE_THREAD_LIBS_INIT}
|
||||
@ -104,12 +123,14 @@ FOREACH (source_file ${check_PROGRAMS})
|
||||
ENDIF ()
|
||||
ENDFOREACH ()
|
||||
|
||||
IF (MSGPACK_ENABLE_CXX)
|
||||
ADD_EXECUTABLE (
|
||||
multi_file
|
||||
multi_file1.cpp multi_file2.cpp
|
||||
)
|
||||
TARGET_INCLUDE_DIRECTORIES (multi_file
|
||||
PRIVATE
|
||||
$<TARGET_PROPERTY:msgpackc,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
$<TARGET_PROPERTY:msgpackc-cxx,INTERFACE_INCLUDE_DIRECTORIES>
|
||||
)
|
||||
ADD_TEST (multi_file multi_file)
|
||||
ENDIF ()
|
||||
|
Loading…
x
Reference in New Issue
Block a user