From c8b1d2fafff16c57ec50d413c999796ec2085413 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= <martin@martin.st> Date: Thu, 26 Jun 2014 10:30:42 +0300 Subject: [PATCH] Include private dependencies automatically in pkg-config for non-shared builds When a user invokes pkg-config to get the necessary linker flags for linking to libhogweed, the user can add --static to get the private dependencies included, which are necessary for static linking. If the hogweed build contains both static and shared libraries, this works as intended - if the user explicitly passes -static to the linker to have it favor static libs over shared ones, the same user also needs to tell pkg-config about this intention. If the hogweed build happens to be static-only, the user of the library might not be aware of this, and might not realize needing to pass --static to pkg-config. (This is even more an issue in setups with a large number of libraries, where only a few of them are built static-only.) For these cases, where a library is built as only a static library, one fairly common convention (not used everywhere, but at least in some libraries I regularly use) is to include the private dependencies in the non-private section. This makes sure a user of the library doesn't need to be concerned about which way this library was built (unless the user intentionally overrides defaults by passing flags such as -static to the linker). --- configure.ac | 3 +++ hogweed.pc.in | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 2ea58662..6923d3a3 100644 --- a/configure.ac +++ b/configure.ac @@ -757,8 +757,10 @@ fi if test "x$enable_shared" = xyes ; then IF_SHARED='' + IF_NOT_SHARED='#' else IF_SHARED='#' + IF_NOT_SHARED='' fi # Documentation tools @@ -792,6 +794,7 @@ fi AC_SUBST(IF_HOGWEED) AC_SUBST(IF_STATIC) AC_SUBST(IF_SHARED) +AC_SUBST(IF_NOT_SHARED) AC_SUBST(IF_DOCUMENTATION) AC_SUBST(IF_DLL) AC_SUBST(IF_MINI_GMP) diff --git a/hogweed.pc.in b/hogweed.pc.in index 839f7d0d..97fb9d46 100644 --- a/hogweed.pc.in +++ b/hogweed.pc.in @@ -11,8 +11,9 @@ Name: Hogweed Description: Nettle low-level cryptographic library (public-key algorithms) URL: http://www.lysator.liu.se/~nisse/nettle Version: @PACKAGE_VERSION@ -Requires.private: nettle -Libs: -L${libdir} -lhogweed -Libs.private: @LIBS@ +Requires: @IF_NOT_SHARED@ nettle +Requires.private: @IF_SHARED@ nettle +Libs: -L${libdir} -lhogweed @IF_NOT_SHARED@ @LIBS@ +Libs.private: @IF_SHARED@ @LIBS@ Cflags: -I${includedir} -- GitLab