mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-02-10 01:47:29 -08:00
Closes: https://bugs.gentoo.org/867955 Signed-off-by: Azamat H. Hackimov <azamat.hackimov@gmail.com> Closes: https://github.com/gentoo/gentoo/pull/27302 Signed-off-by: Sam James <sam@gentoo.org>
102 lines
3.9 KiB
Diff
102 lines
3.9 KiB
Diff
From d5d68286cdd983f99f88b6141a3c34d3bf633d98 Mon Sep 17 00:00:00 2001
|
|
From: Felix Schwitzer <flx107809@gmail.com>
|
|
Date: Fri, 1 Apr 2022 05:26:47 +0200
|
|
Subject: [PATCH] Fix CMake export files (#1077)
|
|
|
|
After configuring the file `yaml-cpp-config.cmake.in`, the result ends up with
|
|
empty variables. (see also the discussion in #774).
|
|
|
|
Rework this file and the call to `configure_package_config_file` according the
|
|
cmake documentation
|
|
(https://cmake.org/cmake/help/v3.22/module/CMakePackageConfigHelpers.html?highlight=configure_package_config#command:configure_package_config_file)
|
|
to overcome this issue and allow a simple `find_package` after install.
|
|
|
|
As there was some discussion about the place where to install the
|
|
`yaml-cpp-config.cmake` file, e.g. #1055, factor out the install location into
|
|
an extra variable to make it easier changing this location in the future.
|
|
|
|
Also untabify CMakeLists.txt in some places to align with the other code parts in this file.
|
|
--- a/CMakeLists.txt
|
|
+++ b/CMakeLists.txt
|
|
@@ -127,10 +127,16 @@ set_target_properties(yaml-cpp PROPERTIES
|
|
PROJECT_LABEL "yaml-cpp ${yaml-cpp-label-postfix}"
|
|
DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
|
|
|
|
+# FIXME(felix2012): A more common place for the cmake export would be
|
|
+# `CMAKE_INSTALL_LIBDIR`, as e.g. done in ubuntu or in this project for GTest
|
|
+set(CONFIG_EXPORT_DIR "${CMAKE_INSTALL_DATADIR}/cmake/yaml-cpp")
|
|
+set(EXPORT_TARGETS yaml-cpp)
|
|
configure_package_config_file(
|
|
"${PROJECT_SOURCE_DIR}/yaml-cpp-config.cmake.in"
|
|
"${PROJECT_BINARY_DIR}/yaml-cpp-config.cmake"
|
|
- INSTALL_DESTINATION "${CMAKE_INSTALL_DATADIR}/cmake/yaml-cpp")
|
|
+ INSTALL_DESTINATION "${CONFIG_EXPORT_DIR}"
|
|
+ PATH_VARS CMAKE_INSTALL_INCLUDEDIR CONFIG_EXPORT_DIR)
|
|
+unset(EXPORT_TARGETS)
|
|
|
|
write_basic_package_version_file(
|
|
"${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake"
|
|
@@ -139,30 +145,31 @@ write_basic_package_version_file(
|
|
configure_file(yaml-cpp.pc.in yaml-cpp.pc @ONLY)
|
|
|
|
if (YAML_CPP_INSTALL)
|
|
- install(TARGETS yaml-cpp
|
|
+ install(TARGETS yaml-cpp
|
|
EXPORT yaml-cpp-targets
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
- install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/
|
|
+ install(DIRECTORY ${PROJECT_SOURCE_DIR}/include/
|
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
|
- FILES_MATCHING PATTERN "*.h")
|
|
+ FILES_MATCHING PATTERN "*.h")
|
|
install(EXPORT yaml-cpp-targets
|
|
- DESTINATION "${CMAKE_INSTALL_DATADIR}/cmake/yaml-cpp")
|
|
- install(FILES
|
|
- "${PROJECT_BINARY_DIR}/yaml-cpp-config.cmake"
|
|
- "${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake"
|
|
- DESTINATION "${CMAKE_INSTALL_DATADIR}/cmake/yaml-cpp")
|
|
+ DESTINATION "${CONFIG_EXPORT_DIR}")
|
|
+ install(FILES
|
|
+ "${PROJECT_BINARY_DIR}/yaml-cpp-config.cmake"
|
|
+ "${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake"
|
|
+ DESTINATION "${CONFIG_EXPORT_DIR}")
|
|
install(FILES "${PROJECT_BINARY_DIR}/yaml-cpp.pc"
|
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/pkgconfig)
|
|
endif()
|
|
+unset(CONFIG_EXPORT_DIR)
|
|
|
|
if(YAML_CPP_BUILD_TESTS)
|
|
- add_subdirectory(test)
|
|
+ add_subdirectory(test)
|
|
endif()
|
|
|
|
if(YAML_CPP_BUILD_TOOLS)
|
|
- add_subdirectory(util)
|
|
+ add_subdirectory(util)
|
|
endif()
|
|
|
|
if (YAML_CPP_CLANG_FORMAT_EXE)
|
|
--- a/yaml-cpp-config.cmake.in
|
|
+++ b/yaml-cpp-config.cmake.in
|
|
@@ -3,12 +3,14 @@
|
|
# YAML_CPP_INCLUDE_DIR - include directory
|
|
# YAML_CPP_LIBRARIES - libraries to link against
|
|
|
|
-# Compute paths
|
|
-get_filename_component(YAML_CPP_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
|
-set(YAML_CPP_INCLUDE_DIR "@CONFIG_INCLUDE_DIRS@")
|
|
+@PACKAGE_INIT@
|
|
+
|
|
+set_and_check(YAML_CPP_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@")
|
|
|
|
# Our library dependencies (contains definitions for IMPORTED targets)
|
|
-include("${YAML_CPP_CMAKE_DIR}/yaml-cpp-targets.cmake")
|
|
+include(@PACKAGE_CONFIG_EXPORT_DIR@/yaml-cpp-targets.cmake)
|
|
|
|
# These are IMPORTED targets created by yaml-cpp-targets.cmake
|
|
set(YAML_CPP_LIBRARIES "@EXPORT_TARGETS@")
|
|
+
|
|
+check_required_components(@EXPORT_TARGETS@)
|