From fe02dfa873a7904ab104a656dad11a027e86752f Mon Sep 17 00:00:00 2001 From: Esun Kim Date: Thu, 17 Oct 2024 10:33:33 -0700 Subject: [PATCH] Added RE2_ENABLE_INSTALL --- CMakeLists.txt | 68 +++++++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 29 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a2ade77a0..5c55442b8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,14 @@ option(RE2_BUILD_FRAMEWORK "build RE2 as a framework" OFF) # so we provide an option similar to BUILD_TESTING, but just for RE2. option(RE2_BUILD_TESTING "enable testing for RE2" OFF) +# When re2 is included as subproject (i.e. using add_subdirectory(re2)) +# in the source tree of a project that uses it, install rules are disabled. +if(NOT CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) + option(RE2_ENABLE_INSTALL "enable install for RE2" OFF) +else() + option(RE2_ENABLE_INSTALL "enable install for RE2" ON) +endif() + # The pkg-config Requires: field. set(REQUIRES) @@ -237,32 +245,34 @@ if(RE2_BUILD_TESTING) endforeach() endif() -install(TARGETS re2 - EXPORT re2Targets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/re2 - INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -install(EXPORT re2Targets - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/re2 - NAMESPACE re2::) - -configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/re2Config.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/re2Config.cmake - INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/re2) -write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/re2ConfigVersion.cmake - VERSION ${SONAME}.0.0 - COMPATIBILITY SameMajorVersion) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/re2Config.cmake - ${CMAKE_CURRENT_BINARY_DIR}/re2ConfigVersion.cmake - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/re2) - -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/re2.pc.in - ${CMAKE_CURRENT_BINARY_DIR}/re2.pc - @ONLY) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/re2.pc - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) +if(RE2_ENABLE_INSTALL) + install(TARGETS re2 + EXPORT re2Targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/re2 + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + install(EXPORT re2Targets + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/re2 + NAMESPACE re2::) + + configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/re2Config.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/re2Config.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/re2) + write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/re2ConfigVersion.cmake + VERSION ${SONAME}.0.0 + COMPATIBILITY SameMajorVersion) + + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/re2Config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/re2ConfigVersion.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/re2) + + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/re2.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/re2.pc + @ONLY) + + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/re2.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) +endif()