diff --git a/CMakeLists.txt b/CMakeLists.txt index cdd38335..e9bfcf01 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -456,10 +456,21 @@ file(RELATIVE_PATH top_builddir "${CMAKE_CURRENT_BINARY_DIR}/dir" "${CMAKE_CURRE set(abs_top_srcdir "${CMAKE_CURRENT_SOURCE_DIR}") set(abs_top_builddir "${CMAKE_CURRENT_BINARY_DIR}") # libnghttp2.pc (pkg-config file) +if(RELOCATABLE_PKGCONFIG) +file(RELATIVE_PATH PKGCONF_TO_PREFIX "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig" "${CMAKE_INSTALL_PREFIX}") +file(RELATIVE_PATH EXEC_PREFIX_TO_LIBDIR "${CMAKE_INSTALL_PREFIX}" "${CMAKE_INSTALL_FULL_LIBDIR}") +file(RELATIVE_PATH PREFIX_TO_INCLUDEDIR "${CMAKE_INSTALL_PREFIX}" "${CMAKE_INSTALL_FULL_INCLUDEDIR}") + +set(prefix "\${pcfiledir}/${PKGCONF_TO_PREFIX}") +set(exec_prefix "\${prefix}") +set(libdir "\${exec_prefix}/${EXEC_PREFIX_TO_LIBDIR}") +set(includedir "\${prefix}/${PREFIX_TO_INCLUDEDIR}") +else() set(prefix "${CMAKE_INSTALL_PREFIX}") set(exec_prefix "${CMAKE_INSTALL_PREFIX}") set(libdir "${CMAKE_INSTALL_FULL_LIBDIR}") set(includedir "${CMAKE_INSTALL_FULL_INCLUDEDIR}") +endif() set(VERSION "${PACKAGE_VERSION}") # For init scripts and systemd service file (in contrib/) set(bindir "${CMAKE_INSTALL_FULL_BINDIR}") @@ -505,6 +516,27 @@ set(PKGLIBDIR "${CMAKE_INSTALL_FULL_LIBDIR}/${CMAKE_PROJECT_NAME}") install(FILES README.rst DESTINATION "${CMAKE_INSTALL_DOCDIR}") +install( + EXPORT nghttp2-targets + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/nghttp2" + NAMESPACE nghttp2:: + FILE nghttp2-config.cmake +) + +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + nghttp2-config-version.cmake + VERSION ${nghttp2_VERSION} + COMPATIBILITY SameMajorVersion +) + +install( + FILES + "${CMAKE_CURRENT_BINARY_DIR}/nghttp2-config-version.cmake" + DESTINATION + "${CMAKE_INSTALL_LIBDIR}/cmake/nghttp2" +) + add_subdirectory(lib) #add_subdirectory(lib/includes) add_subdirectory(third-party) diff --git a/CMakeOptions.txt b/CMakeOptions.txt index 0e671e6b..4a53e7b6 100644 --- a/CMakeOptions.txt +++ b/CMakeOptions.txt @@ -28,4 +28,6 @@ option(WITH_MRUBY "Use mruby") option(WITH_NEVERBLEED "Use neverbleed") option(WITH_LIBBPF "Use libbpf") +option(RELOCATABLE_PKGCONFIG "Make the pkg-config files relocatable") + # vim: ft=cmake: diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index fb24fa18..a2f914f1 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -47,11 +47,13 @@ if(ENABLE_SHARED_LIB) C_VISIBILITY_PRESET hidden ) target_include_directories(nghttp2 INTERFACE - "${CMAKE_CURRENT_BINARY_DIR}/includes" - "${CMAKE_CURRENT_SOURCE_DIR}/includes" + "$" + "$" + "$" ) install(TARGETS nghttp2 + EXPORT nghttp2-targets ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")