diff --git a/CMakeLists.txt b/CMakeLists.txt index 5454df2b..28529e73 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,9 +24,11 @@ cmake_minimum_required(VERSION 3.9 FATAL_ERROR) # Detect if Check is being used in another build as a subproject # probably with command FetchContent*(). -set(THIS_IS_MAIN_PROJECT TRUE) +set(THIS_IS_SUBPROJECT FALSE) if(DEFINED PROJECT_NAME) - set(THIS_IS_MAIN_PROJECT FALSE) + set(THIS_IS_SUBPROJECT TRUE) + message(STATUS "Turned off installing because Check is a subproject.") + message(STATUS "Turned off building tests because Check is a subproject.") endif() if(POLICY CMP0090) @@ -400,62 +402,65 @@ set(CONFIG_HEADER ${CMAKE_CURRENT_BINARY_DIR}/config.h) # configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/check_stdint.h.in ${CMAKE_CURRENT_BINARY_DIR}/check_stdint.h @ONLY) -install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/check_stdint.h - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} -) +if(NOT THIS_IS_SUBPROJECT) + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/check_stdint.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +endif() ############################################################################### # Generate "check.pc", the package config (pkgconfig) file for libtool -set(prefix_save "${PREFIX}") -set(prefix "${CMAKE_INSTALL_PREFIX}") -set(exec_prefix "\${prefix}") -set(libdir "\${exec_prefix}/lib") -set(includedir "\${prefix}/include") -set(VERSION "${PROJECT_VERSION}") - -if (HAVE_SUBUNIT) - set(LIBSUBUNIT_PC "libsubunit") -else (HAVE_SUBINIT) - set(LIBSUBUNIT_PC "") -endif (HAVE_SUBUNIT) - -if (CHECK_ENABLE_GCOV) - set(GCOV_LIBS "-lgcov") -else (CHECK_ENABLE_GCOV) - set(GCOV_LIBS "") -endif (CHECK_ENABLE_GCOV) - -set(PTHREAD_LIBS "") -set(LIBS "") - -if (HAVE_LIBM) - set(LIBS "${LIBS} -lm") -endif (HAVE_LIBM) - -if (HAVE_LIBRT) - set(LIBS "${LIBS} -lrt") -endif (HAVE_LIBRT) - -set(PTHREAD_CFLAGS "-pthread") - -configure_file(check.pc.in check.pc @ONLY) - -unset(PTHREAD_CFLAGS) -unset(LIBS) -unset(PTHREAD_LIBS) -unset(GCOV_LIBS) -unset(LIBSUBUNIT_PC) -unset(VERSION) -unset(includedir) -unset(libdir) -unset(exec_prefix) -set(PREFIX "${prefix_save}") - -install( - FILES ${CMAKE_CURRENT_BINARY_DIR}/check.pc - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig -) +if(NOT THIS_IS_SUBPROJECT) + set(prefix_save "${PREFIX}") + set(prefix "${CMAKE_INSTALL_PREFIX}") + set(exec_prefix "\${prefix}") + set(libdir "\${exec_prefix}/lib") + set(includedir "\${prefix}/include") + set(VERSION "${PROJECT_VERSION}") + + if (HAVE_SUBUNIT) + set(LIBSUBUNIT_PC "libsubunit") + else (HAVE_SUBINIT) + set(LIBSUBUNIT_PC "") + endif (HAVE_SUBUNIT) + + if (CHECK_ENABLE_GCOV) + set(GCOV_LIBS "-lgcov") + else (CHECK_ENABLE_GCOV) + set(GCOV_LIBS "") + endif (CHECK_ENABLE_GCOV) + + set(PTHREAD_LIBS "") + set(LIBS "") + + if (HAVE_LIBM) + set(LIBS "${LIBS} -lm") + endif (HAVE_LIBM) + + if (HAVE_LIBRT) + set(LIBS "${LIBS} -lrt") + endif (HAVE_LIBRT) + + set(PTHREAD_CFLAGS "-pthread") + + configure_file(check.pc.in check.pc @ONLY) + + unset(PTHREAD_CFLAGS) + unset(LIBS) + unset(PTHREAD_LIBS) + unset(GCOV_LIBS) + unset(LIBSUBUNIT_PC) + unset(VERSION) + unset(includedir) + unset(libdir) + unset(exec_prefix) + set(PREFIX "${prefix_save}") + + install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/check.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig + ) +endif() ############################################################################### # Subdirectories @@ -465,7 +470,7 @@ add_subdirectory(checkmk) ############################################################################### # Unit tests -if (BUILD_TESTING AND THIS_IS_MAIN_PROJECT) +if(BUILD_TESTING AND NOT THIS_IS_SUBPROJECT) add_subdirectory(tests) add_test(NAME check_check COMMAND check_check) add_test(NAME check_check_export COMMAND check_check_export) @@ -494,39 +499,41 @@ if (BUILD_TESTING AND THIS_IS_MAIN_PROJECT) WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/tests COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_set_max_msg_size.sh) endif(UNIX OR MINGW OR MSYS) -endif (BUILD_TESTING AND THIS_IS_MAIN_PROJECT) +endif() ############################################################################### # Export project, prepare a config and config-version files -string(TOLOWER ${PROJECT_NAME} EXPORT_NAME) -include(CMakePackageConfigHelpers) -configure_package_config_file( - ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${EXPORT_NAME}-config.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/cmake/${EXPORT_NAME}-config.cmake - INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/${EXPORT_NAME}/cmake -) -write_basic_package_version_file( - ${CMAKE_CURRENT_BINARY_DIR}/cmake/${EXPORT_NAME}-config-version.cmake - VERSION ${PROJECT_VERSION} - COMPATIBILITY AnyNewerVersion -) - -export(EXPORT check-targets - FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/${EXPORT_NAME}-targets.cmake" - NAMESPACE "${PROJECT_NAME}::" -) - -install(EXPORT check-targets - NAMESPACE "${PROJECT_NAME}::" - FILE "${EXPORT_NAME}-targets.cmake" - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${EXPORT_NAME} -) -install( - FILES - "${CMAKE_CURRENT_BINARY_DIR}/cmake/${EXPORT_NAME}-config.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/cmake/${EXPORT_NAME}-config-version.cmake" - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${EXPORT_NAME} -) +if(NOT THIS_IS_SUBPROJECT) + string(TOLOWER ${PROJECT_NAME} EXPORT_NAME) + include(CMakePackageConfigHelpers) + configure_package_config_file( + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${EXPORT_NAME}-config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/cmake/${EXPORT_NAME}-config.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/${EXPORT_NAME}/cmake + ) + write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/cmake/${EXPORT_NAME}-config-version.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion + ) + + export(EXPORT check-targets + FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/${EXPORT_NAME}-targets.cmake" + NAMESPACE "${PROJECT_NAME}::" + ) + + install(EXPORT check-targets + NAMESPACE "${PROJECT_NAME}::" + FILE "${EXPORT_NAME}-targets.cmake" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${EXPORT_NAME} + ) + install( + FILES + "${CMAKE_CURRENT_BINARY_DIR}/cmake/${EXPORT_NAME}-config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/cmake/${EXPORT_NAME}-config-version.cmake" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${EXPORT_NAME} + ) +endif() # Store the current build directory in the CMake user package registry. # This helps dependent projects use a package from the current @@ -540,7 +547,9 @@ install( # this side effect should not be enabled by default. # Therefore CMake 3.15 and above prefer that export(PACKAGE) does nothing # unless an explicit CMAKE_EXPORT_PACKAGE_REGISTRY variable is set. -export(PACKAGE "${PROJECT_NAME}") +if(NOT THIS_IS_SUBPROJECT) + export(PACKAGE "${PROJECT_NAME}") +endif() # vim: shiftwidth=2:softtabstop=2:tabstop=2:expandtab:autoindent diff --git a/checkmk/CMakeLists.txt b/checkmk/CMakeLists.txt index 325b8944..cd201308 100644 --- a/checkmk/CMakeLists.txt +++ b/checkmk/CMakeLists.txt @@ -27,7 +27,7 @@ configure_file(checkmk.in checkmk @ONLY) file(COPY doc/checkmk.1 DESTINATION man/man1) option(INSTALL_CHECKMK "Install checkmk" ON) -if(INSTALL_CHECKMK) +if(INSTALL_CHECKMK AND NOT THIS_IS_SUBPROJECT) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/checkmk DESTINATION ${CMAKE_INSTALL_BINDIR} @@ -37,7 +37,7 @@ if(INSTALL_CHECKMK) DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man DESTINATION ${CMAKE_INSTALL_DATAROOTDIR} ) -endif(INSTALL_CHECKMK) +endif() # vim: shiftwidth=2:softtabstop=2:tabstop=2:expandtab:autoindent diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1e75ee5e..24d5c11c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -182,13 +182,15 @@ target_include_directories(checkShared $ ) -install(TARGETS check checkShared - EXPORT check-targets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} -) +if(NOT THIS_IS_SUBPROJECT) + install(TARGETS check checkShared + EXPORT check-targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + ) +endif() # vim: shiftwidth=2:softtabstop=2:tabstop=2:expandtab:autoindent