THRIFT-4760: Configure and install pkgconfig files when using cmake
Client: cpp
diff --git a/build/cmake/DefineInstallationPaths.cmake b/build/cmake/DefineInstallationPaths.cmake
index 122f0f6..d9a7174 100644
--- a/build/cmake/DefineInstallationPaths.cmake
+++ b/build/cmake/DefineInstallationPaths.cmake
@@ -23,4 +23,9 @@
set(LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE PATH "The library install dir (default: lib${LIB_SUFFIX})")
set(INCLUDE_INSTALL_DIR "include" CACHE PATH "The library install dir (default: include)")
set(CMAKE_INSTALL_DIR "cmake" CACHE PATH "The subdirectory to install cmake config files (default: cmake)")
+set(PKGCONFIG_INSTALL_DIR "lib/pkgconfig" CACHE PATH "The subdirectory to install pkgconfig config files (default: lib/pkgconfig)")
set(DOC_INSTALL_DIR "share/doc" CACHE PATH "The subdirectory to install documentation files (default: share/doc)")
+set(prefix "${CMAKE_INSTALL_PREFIX}")
+set(exec_prefix "${CMAKE_INSTALL_PREFIX}/bin")
+set(libdir "${CMAKE_INSTALL_PREFIX}/lib")
+set(includedir "${CMAKE_INSTALL_PREFIX}/include")
diff --git a/build/cmake/ThriftMacros.cmake b/build/cmake/ThriftMacros.cmake
index 366719f..8f370df 100644
--- a/build/cmake/ThriftMacros.cmake
+++ b/build/cmake/ThriftMacros.cmake
@@ -17,6 +17,13 @@
# under the License.
#
+macro(ADD_PKGCONFIG_THRIFT name)
+ configure_file("${name}.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/${name}.pc" @ONLY)
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${name}.pc"
+ DESTINATION "${PKGCONFIG_INSTALL_DIR}")
+endmacro(ADD_PKGCONFIG_THRIFT)
+
+
macro(ADD_LIBRARY_THRIFT name)
add_library(${name} ${ARGN})
set_target_properties(${name} PROPERTIES
diff --git a/lib/cpp/CMakeLists.txt b/lib/cpp/CMakeLists.txt
index f4e8104..dd90c80 100755
--- a/lib/cpp/CMakeLists.txt
+++ b/lib/cpp/CMakeLists.txt
@@ -144,6 +144,7 @@
else()
TARGET_LINK_LIBRARIES_THRIFT(thrift ${SYSLIBS})
endif()
+ADD_PKGCONFIG_THRIFT(thrift)
if(WITH_LIBEVENT)
find_package(Libevent REQUIRED) # Libevent comes with CMake support form upstream
@@ -152,6 +153,7 @@
ADD_LIBRARY_THRIFT(thriftnb ${thriftcppnb_SOURCES})
LINK_AGAINST_THRIFT_LIBRARY(thriftnb thrift)
TARGET_LINK_LIBRARIES_THRIFT(thriftnb ${SYSLIBS} ${LIBEVENT_LIBRARIES})
+ ADD_PKGCONFIG_THRIFT(thrift-nb)
endif()
if(WITH_ZLIB)
@@ -161,10 +163,12 @@
ADD_LIBRARY_THRIFT(thriftz ${thriftcppz_SOURCES})
TARGET_LINK_LIBRARIES_THRIFT(thriftz ${SYSLIBS} ${ZLIB_LIBRARIES})
TARGET_LINK_LIBRARIES_THRIFT_AGAINST_THRIFT_LIBRARY(thriftz thrift)
+ ADD_PKGCONFIG_THRIFT(thrift-z)
endif()
if(WITH_QT5)
add_subdirectory(src/thrift/qt)
+ ADD_PKGCONFIG_THRIFT(thrift-qt5)
endif()
if(MSVC)