Here is a patch working with current master, It's now fully working. It contains a test to ensure that it works, I tested it with autopkgtest.
From 44fa7251911378bb0ca16a23024b7f7ede5a8f84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Corentin=20No=C3=ABl?= <coren...@elementary.io> Date: Tue, 7 Nov 2017 20:38:13 +0100 Subject: [PATCH] Enable PkgConfig on the apt-pkg and apt-inst libraries
--- apt-inst/CMakeLists.txt | 3 +++ apt-inst/apt-inst.pc.in | 11 +++++++++++ apt-pkg/CMakeLists.txt | 3 +++ apt-pkg/apt-pkg.pc.in | 10 ++++++++++ debian/libapt-pkg-dev.install | 1 + debian/tests/control | 5 +++-- debian/tests/pkg-config-test | 22 ++++++++++++++++++++++ 7 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 apt-inst/apt-inst.pc.in create mode 100644 apt-pkg/apt-pkg.pc.in create mode 100644 debian/tests/pkg-config-test diff --git a/apt-inst/CMakeLists.txt b/apt-inst/CMakeLists.txt index 31da115e4..063b40318 100644 --- a/apt-inst/CMakeLists.txt +++ b/apt-inst/CMakeLists.txt @@ -12,6 +12,8 @@ set(APT_INST_MAJOR ${MAJOR} PARENT_SCOPE) file(GLOB_RECURSE library "*.cc") file(GLOB_RECURSE headers "*.h") +configure_file(apt-inst.pc.in ${CMAKE_CURRENT_BINARY_DIR}/apt-inst.pc @ONLY) + # Create a library using the C++ files add_library(apt-inst SHARED ${library}) @@ -25,4 +27,5 @@ add_version_script(apt-inst) # Install the library and the headers install(TARGETS apt-inst LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(FILES ${headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/apt-pkg) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/apt-inst.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) flatify(${PROJECT_BINARY_DIR}/include/apt-pkg/ "${headers}") diff --git a/apt-inst/apt-inst.pc.in b/apt-inst/apt-inst.pc.in new file mode 100644 index 000000000..c752f4657 --- /dev/null +++ b/apt-inst/apt-inst.pc.in @@ -0,0 +1,11 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ + +Name: apt-inst +Description: deb package format runtime library +Version: @MAJOR@.@MINOR@ +Libs: -L${libdir} -lapt-inst +Cflags: -I${includedir}/apt-pkg +Requires: apt-pkg diff --git a/apt-pkg/CMakeLists.txt b/apt-pkg/CMakeLists.txt index 2f5ad3200..44e5fd9c7 100644 --- a/apt-pkg/CMakeLists.txt +++ b/apt-pkg/CMakeLists.txt @@ -29,6 +29,8 @@ execute_process(COMMAND grep "^#define APT_PKG_RELEASE" message(STATUS "Building libapt-pkg ${MAJOR} (release ${MINOR})") set(APT_PKG_MAJOR ${MAJOR} PARENT_SCOPE) # exporting for methods/CMakeLists.txt +configure_file(apt-pkg.pc.in ${CMAKE_CURRENT_BINARY_DIR}/apt-pkg.pc @ONLY) + # Definition of the C++ files used to build the library - note that this # is expanded at CMake time, so you have to rerun cmake if you add or remove # a file (you can just run cmake . in the build directory) @@ -65,6 +67,7 @@ add_version_script(apt-pkg) # Install the library and the header files install(TARGETS apt-pkg LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(FILES ${headers} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/apt-pkg) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/apt-pkg.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) flatify(${PROJECT_BINARY_DIR}/include/apt-pkg/ "${headers}") if(CMAKE_BUILD_TYPE STREQUAL "Coverage") diff --git a/apt-pkg/apt-pkg.pc.in b/apt-pkg/apt-pkg.pc.in new file mode 100644 index 000000000..97c90ce5e --- /dev/null +++ b/apt-pkg/apt-pkg.pc.in @@ -0,0 +1,10 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ + +Name: apt-pkg +Description: package management runtime library +Version: @MAJOR@.@MINOR@ +Libs: -L${libdir} -lapt-pkg -pthread +Cflags: -I${includedir}/apt-pkg diff --git a/debian/libapt-pkg-dev.install b/debian/libapt-pkg-dev.install index 42e7c34d5..563e99909 100644 --- a/debian/libapt-pkg-dev.install +++ b/debian/libapt-pkg-dev.install @@ -1,3 +1,4 @@ usr/include/apt-pkg/ usr/lib/*/libapt-inst*.so usr/lib/*/libapt-pkg*.so +usr/lib/*/pkgconfig/apt-*.pc diff --git a/debian/tests/control b/debian/tests/control index 85b16e062..a0234b50b 100644 --- a/debian/tests/control +++ b/debian/tests/control @@ -1,8 +1,9 @@ -Tests: run-tests +Tests: run-tests, pkg-config-test Restrictions: allow-stderr Depends: @, @builddeps@, dpkg, fakeroot, wget, stunnel4, lsof, db-util, gnupg (>= 2) | gnupg2, gnupg1 | gnupg (<< 2), gpgv (>= 2) | gpgv2, gpgv1 | gpgv (<< 2), - libfile-fcntllock-perl, python3-apt + libfile-fcntllock-perl, python3-apt, + pkg-config diff --git a/debian/tests/pkg-config-test b/debian/tests/pkg-config-test new file mode 100644 index 000000000..cb8d1ffb0 --- /dev/null +++ b/debian/tests/pkg-config-test @@ -0,0 +1,22 @@ +#!/bin/sh + +set -e + +WORKDIR=$(mktemp -d) +trap "rm -rf $WORKDIR" 0 INT QUIT ABRT PIPE TERM +cd $WORKDIR +cat <<EOF > pkgconfigtest.c +#include <apt-pkg/init.h> + +int main() +{ + printf("Apt Version: %s \n", pkgVersion); + return 0; +} +EOF + +g++ -o pkgconfigtest pkgconfigtest.c `pkg-config --cflags --libs apt-pkg apt-inst` +echo "build: OK" +[ -x pkgconfigtest ] +./pkgconfigtest +echo "run: OK" -- 2.14.1