@@ -156,38 +156,54 @@ IF (GTEST_FOUND AND ZLIB_FOUND AND THREADS_FOUND AND NOT "${MSGPACK_FUZZ_REGRESS
156156 OPTION (MSGPACK_GEN_COVERAGE "Enable running gcov to get a test coverage report." OFF )
157157ENDIF ()
158158
159- IF (DEFINED BUILD_SHARED_LIBS )
160- IF (BUILD_SHARED_LIBS )
161- IF (DEFINED MSGPACK_ENABLE_SHARED AND NOT MSGPACK_ENABLE_SHARED)
162- MESSAGE (WARNING "MSGPACK_ENABLE_SHARED is overridden to ON by BUILD_SHARED_LIBS" )
163- ENDIF ()
164- SET (MSGPACK_ENABLE_SHARED ON )
165- IF (DEFINED MSGPACK_ENABLE_STATIC AND MSGPACK_ENABLE_STATIC)
166- MESSAGE (WARNING "MSGPACK_ENABLE_STATIC is overridden to OFF by BUILD_SHARED_LIBS" )
159+ OPTION (MSGPACK_ENABLE_CXX "Enable C++ interface." ON )
160+
161+ OPTION (MSGPACK_CXX_ONLY "Build only C++ libraries (header-only)." OFF )
162+ IF (MSGPACK_CXX_ONLY)
163+ IF (DEFINED MSGPACK_ENABLE_SHARED AND MSGPACK_ENABLE_SHARED)
164+ MESSAGE (WARNING "MSGPACK_ENABLE_SHARED is overridden to OFF by MSGPACK_CXX_ONLY" )
165+ ENDIF ()
166+ SET (MSGPACK_ENABLE_SHARED OFF )
167+ IF (DEFINED MSGPACK_ENABLE_STATIC AND MSGPACK_ENABLE_STATIC)
168+ MESSAGE (WARNING "MSGPACK_ENABLE_STATIC is overridden to OFF by MSGPACK_CXX_ONLY" )
169+ ENDIF ()
170+ SET (MSGPACK_ENABLE_STATIC OFF )
171+ IF (DEFINED MSGPACK_ENABLE_CXX AND NOT MSGPACK_ENABLE_CXX)
172+ MESSAGE (WARNING "MSGPACK_ENABLE_CXX is overridden to ON by MSGPACK_CXX_ONLY" )
173+ ENDIF ()
174+ SET (MSGPACK_ENABLE_CXX ON )
175+ ELSE ()
176+ IF (DEFINED BUILD_SHARED_LIBS )
177+ IF (BUILD_SHARED_LIBS )
178+ IF (DEFINED MSGPACK_ENABLE_SHARED AND NOT MSGPACK_ENABLE_SHARED)
179+ MESSAGE (WARNING "MSGPACK_ENABLE_SHARED is overridden to ON by BUILD_SHARED_LIBS" )
180+ ENDIF ()
181+ SET (MSGPACK_ENABLE_SHARED ON )
182+ IF (DEFINED MSGPACK_ENABLE_STATIC AND MSGPACK_ENABLE_STATIC)
183+ MESSAGE (WARNING "MSGPACK_ENABLE_STATIC is overridden to OFF by BUILD_SHARED_LIBS" )
184+ ENDIF ()
185+ SET (MSGPACK_ENABLE_STATIC OFF )
186+ ELSE ()
187+ IF (DEFINED MSGPACK_ENABLE_SHARED AND MSGPACK_ENABLE_SHARED)
188+ MESSAGE (WARNING "MSGPACK_ENABLE_SHARED is overridden to OFF by BUILD_SHARED_LIBS" )
189+ ENDIF ()
190+ SET (MSGPACK_ENABLE_SHARED OFF )
191+ IF (DEFINED MSGPACK_ENABLE_STATIC AND NOT MSGPACK_ENABLE_STATIC)
192+ MESSAGE (WARNING "MSGPACK_ENABLE_STATIC is overridden to ON by BUILD_SHARED_LIBS" )
193+ ENDIF ()
194+ SET (MSGPACK_ENABLE_STATIC ON )
167195 ENDIF ()
168- SET (MSGPACK_ENABLE_STATIC OFF )
169196 ELSE ()
170- IF (DEFINED MSGPACK_ENABLE_SHARED AND MSGPACK_ENABLE_SHARED)
171- MESSAGE (WARNING " MSGPACK_ENABLE_SHARED is overridden to OFF by BUILD_SHARED_LIBS" )
197+ IF (NOT DEFINED MSGPACK_ENABLE_SHARED)
198+ SET ( MSGPACK_ENABLE_SHARED ON )
172199 ENDIF ()
173- SET (MSGPACK_ENABLE_SHARED OFF )
174- IF (DEFINED MSGPACK_ENABLE_STATIC AND NOT MSGPACK_ENABLE_STATIC)
175- MESSAGE (WARNING "MSGPACK_ENABLE_STATIC is overridden to ON by BUILD_SHARED_LIBS" )
200+ IF (NOT DEFINED MSGPACK_ENABLE_STATIC)
201+ SET (MSGPACK_ENABLE_STATIC ON )
176202 ENDIF ()
177- SET (MSGPACK_ENABLE_STATIC ON )
178- ENDIF ()
179- ELSE ()
180- IF (NOT DEFINED MSGPACK_ENABLE_SHARED)
181- SET (MSGPACK_ENABLE_SHARED ON )
203+ SET (BUILD_SHARED_LIBS ${MSGPACK_ENABLE_SHARED} )
182204 ENDIF ()
183- IF (NOT DEFINED MSGPACK_ENABLE_STATIC)
184- SET (MSGPACK_ENABLE_STATIC ON )
185- ENDIF ()
186- SET (BUILD_SHARED_LIBS ${MSGPACK_ENABLE_SHARED} )
187205ENDIF ()
188206
189- OPTION (MSGPACK_ENABLE_CXX "Enable C++ interface." ON )
190-
191207INCLUDE (CheckCXXSourceCompiles)
192208CHECK_CXX_SOURCE_COMPILES ("
193209#include <bits/atomicity.h>
@@ -380,7 +396,7 @@ FOREACH (file ${msgpackc_HEADERS})
380396 GET_FILENAME_COMPONENT (dir ${file} PATH )
381397 INSTALL (FILES ${file} DESTINATION ${CMAKE_INSTALL_PREFIX} /${dir} )
382398ENDFOREACH ()
383- IF (NOT MSVC )
399+ IF (NOT MSGPACK_CXX_ONLY AND NOT MSVC )
384400 INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR} /msgpack.pc DESTINATION ${CMAKE_INSTALL_LIBDIR} /pkgconfig)
385401ENDIF ()
386402
@@ -454,17 +470,19 @@ CONFIGURE_PACKAGE_CONFIG_FILE (msgpack-config.cmake.in
454470 INSTALL_DESTINATION "${CMAKE_INSTALL_CMAKEDIR} "
455471)
456472
457- INSTALL (EXPORT msgpack-targets
458- FILE
459- msgpack-targets.cmake
460- DESTINATION
461- "${CMAKE_INSTALL_CMAKEDIR} "
462- )
473+ IF (NOT MSGPACK_CXX_ONLY)
474+ INSTALL (EXPORT msgpack-targets
475+ FILE
476+ msgpack-targets.cmake
477+ DESTINATION
478+ "${CMAKE_INSTALL_CMAKEDIR} "
479+ )
463480
464- INSTALL (
465- FILES
466- "${CMAKE_CURRENT_BINARY_DIR} /msgpack-config.cmake"
467- "${CMAKE_CURRENT_BINARY_DIR} /msgpack-config-version.cmake"
468- DESTINATION
469- "${CMAKE_INSTALL_CMAKEDIR} "
470- )
481+ INSTALL (
482+ FILES
483+ "${CMAKE_CURRENT_BINARY_DIR} /msgpack-config.cmake"
484+ "${CMAKE_CURRENT_BINARY_DIR} /msgpack-config-version.cmake"
485+ DESTINATION
486+ "${CMAKE_INSTALL_CMAKEDIR} "
487+ )
488+ ENDIF ()
0 commit comments