aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Le Cuirot <chewi@gentoo.org>2020-05-11 20:50:02 +0100
committerDaniel Stenberg <daniel@haxx.se>2020-05-12 08:53:12 +0200
commit98e5904165859679cd78825bcccb52306ee3bb66 (patch)
tree29882f61577e640f4c304d30cf0ef40c8901949c
parentad6416986755e417c66e2c646d532561b445a5b5 (diff)
libcurl.pc: Merge Libs.private into Libs for static-only builds
A project being built entirely statically will call pkg-config with --static, which utilises the Libs.private field. Conversely it will not use --static when not being built entirely statically, even if there is only a static build of libcurl available. This will most likely cause the build to fail due to underlinking unless we merge the Libs fields. Consider that this is what the Meson build system does when it generates pkg-config files. I have also reflected this in the --libs argument of curl-config even though REQUIRE_LIB_DEPS always seems to be "yes" anyway. Closes #5373
-rw-r--r--CMakeLists.txt16
-rwxr-xr-xconfigure.ac7
-rw-r--r--curl-config.in2
-rw-r--r--libcurl.pc.in2
4 files changed, 18 insertions, 9 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e9b90860c..616b9dcbc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1391,13 +1391,6 @@ set(CONFIGURE_OPTIONS "")
# TODO when to set "-DCURL_STATICLIB" for CPPFLAG_CURL_STATICLIB?
set(CPPFLAG_CURL_STATICLIB "")
set(CURLVERSION "${CURL_VERSION}")
-if(BUILD_SHARED_LIBS)
- set(ENABLE_SHARED "yes")
- set(ENABLE_STATIC "no")
-else()
- set(ENABLE_SHARED "no")
- set(ENABLE_STATIC "yes")
-endif()
set(exec_prefix "\${prefix}")
set(includedir "\${prefix}/include")
set(LDFLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
@@ -1410,6 +1403,15 @@ foreach(_lib ${CMAKE_C_IMPLICIT_LINK_LIBRARIES} ${CURL_LIBS})
set(LIBCURL_LIBS "${LIBCURL_LIBS} -l${_lib}")
endif()
endforeach()
+if(BUILD_SHARED_LIBS)
+ set(ENABLE_SHARED "yes")
+ set(ENABLE_STATIC "no")
+ set(LIBCURL_NO_SHARED "")
+else()
+ set(ENABLE_SHARED "no")
+ set(ENABLE_STATIC "yes")
+ set(LIBCURL_NO_SHARED "${LIBCURL_LIBS}")
+endif()
# "a" (Linux) or "lib" (Windows)
string(REPLACE "." "" libext "${CMAKE_STATIC_LIBRARY_SUFFIX}")
set(prefix "${CMAKE_INSTALL_PREFIX}")
diff --git a/configure.ac b/configure.ac
index aa79cfa42..6de818a3e 100755
--- a/configure.ac
+++ b/configure.ac
@@ -4727,6 +4727,13 @@ dnl to let curl-config output the static libraries correctly
ENABLE_STATIC="$enable_static"
AC_SUBST(ENABLE_STATIC)
+dnl merge the pkg-config Libs.private field into Libs when static-only
+if test "x$enable_shared" = "xno"; then
+ LIBCURL_NO_SHARED=$LIBCURL_LIBS
+else
+ LIBCURL_NO_SHARED=
+fi
+AC_SUBST(LIBCURL_NO_SHARED)
dnl
dnl For keeping supported features and protocols also in pkg-config file
diff --git a/curl-config.in b/curl-config.in
index 0a7e0353f..86cf8b21c 100644
--- a/curl-config.in
+++ b/curl-config.in
@@ -160,7 +160,7 @@ while test $# -gt 0; do
else
CURLLIBDIR=""
fi
- if test "X@REQUIRE_LIB_DEPS@" = "Xyes"; then
+ if test "X@ENABLE_SHARED@" = "Xno" -o "X@REQUIRE_LIB_DEPS@" = "Xyes"; then
echo ${CURLLIBDIR}-lcurl @LIBCURL_LIBS@
else
echo ${CURLLIBDIR}-lcurl
diff --git a/libcurl.pc.in b/libcurl.pc.in
index abc12bb8c..fd1ce2204 100644
--- a/libcurl.pc.in
+++ b/libcurl.pc.in
@@ -34,6 +34,6 @@ Name: libcurl
URL: https://curl.haxx.se/
Description: Library to transfer files with ftp, http, etc.
Version: @CURLVERSION@
-Libs: -L${libdir} -lcurl
+Libs: -L${libdir} -lcurl @LIBCURL_NO_SHARED@
Libs.private: @LIBCURL_LIBS@
Cflags: -I${includedir} @CPPFLAG_CURL_STATICLIB@