Blob Blame History Raw
From cb5bbb250e07e7621a5cfe3818f8141e33967f0e Mon Sep 17 00:00:00 2001
From: Andrei BENCSIK <andrei.bencsik@gmail.com>
Date: Fri, 24 Dec 2021 14:04:47 +0200
Subject: [PATCH] Fix CMake packaging for installation.

Add CMake config file (re2Config.cmake) for find_package(re2) - fixes finding Threads dependency
Add CMake version file (re2ConfigVersion.cmake) - allows find_package(re2 <VERSION> ...)

Change-Id: I6c1de1bfc59121085d70a277bd0821504b9d8736
Reviewed-on: https://code-review.googlesource.com/c/re2/+/59530
Reviewed-by: Andrei Bencsik <andrei.bencsik@gmail.com>
Reviewed-by: Paul Wankadia <junyer@google.com>
---
 CMakeLists.txt     | 18 ++++++++++++++++--
 re2Config.cmake.in | 22 ++++++++++++++++++++++
 2 files changed, 38 insertions(+), 2 deletions(-)
 create mode 100644 re2Config.cmake.in

diff --git a/CMakeLists.txt b/CMakeLists.txt
index fcd3870..62d4995 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,6 +6,7 @@
 cmake_minimum_required(VERSION 3.5.1)
 
 project(RE2 CXX)
+include(CMakePackageConfigHelpers)
 include(CTest)
 include(GNUInstallDirs)
 
@@ -154,10 +155,23 @@ set(RE2_HEADERS
 
 install(FILES ${RE2_HEADERS}
         DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/re2)
-install(TARGETS re2 EXPORT re2Config
+install(TARGETS re2 EXPORT re2Targets
         ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
         LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
         RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
         INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
-install(EXPORT re2Config
+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)
diff --git a/re2Config.cmake.in b/re2Config.cmake.in
new file mode 100644
index 0000000..7698107
--- /dev/null
+++ b/re2Config.cmake.in
@@ -0,0 +1,22 @@
+# Copyright 2022 The RE2 Authors.  All Rights Reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+@PACKAGE_INIT@
+
+include(CMakeFindDependencyMacro)
+
+set_and_check(re2_INCLUDE_DIR ${PACKAGE_PREFIX_DIR}/@CMAKE_INSTALL_INCLUDEDIR@)
+
+if(UNIX)
+  set(THREADS_PREFER_PTHREAD_FLAG ON)
+  find_dependency(Threads REQUIRED)
+endif()
+
+check_required_components(re2)
+
+if(TARGET re2::re2)
+  return()
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/re2Targets.cmake)
-- 
2.34.1