kumquat-buildroot/package/libcurl/0001-configure.ac-find-libpsl-with-pkg-config.patch
Fabrice Fontaine bedcd1cd39 package/libcurl: fix libpsl static build
Fix the following static build failure with libpsl raised since bump to
version 8.6.0 in commit 5cee6b6be6:

configure:28830: /home/autobuild/autobuild/instance-6/output-1/host/bin/aarch64_be-buildroot-linux-musl-gcc -o conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O3 -g0 -static -Werror-implicit-function-declaration -Wno-system-headers -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -I/home/autobuild/autobuild/instance-6/output-1/host/aarch64_be-buildroot-linux-musl/sysroot/usr/include  -static -L/home/autobuild/autobuild/instance-6/output-1/host/bin/../aarch64_be-buildroot-linux-musl/sysroot/usr/lib  -L/home/autobuild/autobuild/instance-6/output-1/host/aarch64_be-buildroot-linux-musl/sysroot/usr/lib conftest.c -lpsl  -lmbedtls -lmbedx509 -lmbedcrypto -lz  -latomic >&5
/home/autobuild/autobuild/instance-6/output-1/host/lib/gcc/aarch64_be-buildroot-linux-musl/11.4.0/../../../../aarch64_be-buildroot-linux-musl/bin/ld: /home/autobuild/autobuild/instance-6/output-1/host/bin/../aarch64_be-buildroot-linux-musl/sysroot/usr/lib/libpsl.a(psl.c.o): in function `is_public_suffix':
psl.c:(.text+0x2a8): undefined reference to `idn2_lookup_u8'

[...]

checking for library containing psl_builtin... no
configure: error: libpsl was not found

Fixes: 5cee6b6be6
 - http://autobuild.buildroot.org/results/1fb15e1a99472c403d0d3b1a688902f32e78d002

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2024-02-25 08:53:34 +01:00

110 lines
3.4 KiB
Diff

From 9b3f67e267d1fa8d7867655d133bdbf8830a0ab3 Mon Sep 17 00:00:00 2001
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Date: Thu, 15 Feb 2024 20:59:25 +0100
Subject: [PATCH] configure.ac: find libpsl with pkg-config
Find libpsl with pkg-config to avoid static build failures.
Ref: http://autobuild.buildroot.org/results/1fb15e1a99472c403d0d3b1a688902f32e78d002
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Closes #12947
Upstream: https://github.com/curl/curl/commit/9b3f67e267d1fa8d7867655d133bdbf8830a0ab3
---
configure.ac | 79 ++++++++++++++++++++++++++++++++++++++++++++--------
docs/TODO | 7 -----
2 files changed, 67 insertions(+), 19 deletions(-)
diff --git a/configure.ac b/configure.ac
index cd0e2d07d8d164..09d5364f4de575 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2075,19 +2075,74 @@ dnl **********************************************************************
dnl Check for libpsl
dnl **********************************************************************
-AC_ARG_WITH(libpsl,
- AS_HELP_STRING([--without-libpsl],
- [disable support for libpsl]),
- with_libpsl=$withval,
- with_libpsl=yes)
-curl_psl_msg="no (libpsl disabled)"
-if test $with_libpsl != "no"; then
- AC_SEARCH_LIBS(psl_builtin, psl,
- [curl_psl_msg="enabled";
- AC_DEFINE([USE_LIBPSL], [1], [PSL support enabled])
- ],
- [AC_MSG_ERROR([libpsl was not found]) ]
+dnl Default to compiler & linker defaults for LIBPSL files & libraries.
+OPT_LIBPSL=off
+AC_ARG_WITH(libpsl,dnl
+AS_HELP_STRING([--with-libpsl=PATH],[Where to look for libpsl, PATH points to the LIBPSL installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
+AS_HELP_STRING([--without-libpsl], [disable LIBPSL]),
+ OPT_LIBPSL=$withval)
+
+if test X"$OPT_LIBPSL" != Xno; then
+ dnl backup the pre-libpsl variables
+ CLEANLDFLAGS="$LDFLAGS"
+ CLEANCPPFLAGS="$CPPFLAGS"
+ CLEANLIBS="$LIBS"
+
+ case "$OPT_LIBPSL" in
+ yes)
+ dnl --with-libpsl (without path) used
+ CURL_CHECK_PKGCONFIG(libpsl)
+
+ if test "$PKGCONFIG" != "no" ; then
+ LIB_PSL=`$PKGCONFIG --libs-only-l libpsl`
+ LD_PSL=`$PKGCONFIG --libs-only-L libpsl`
+ CPP_PSL=`$PKGCONFIG --cflags-only-I libpsl`
+ else
+ dnl no libpsl pkg-config found
+ LIB_PSL="-lpsl"
+ fi
+
+ ;;
+ off)
+ dnl no --with-libpsl option given, just check default places
+ LIB_PSL="-lpsl"
+ ;;
+ *)
+ dnl use the given --with-libpsl spot
+ LIB_PSL="-lpsl"
+ PREFIX_PSL=$OPT_LIBPSL
+ ;;
+ esac
+
+ dnl if given with a prefix, we set -L and -I based on that
+ if test -n "$PREFIX_PSL"; then
+ LD_PSL=-L${PREFIX_PSL}/lib$libsuff
+ CPP_PSL=-I${PREFIX_PSL}/include
+ fi
+
+ LDFLAGS="$LDFLAGS $LD_PSL"
+ CPPFLAGS="$CPPFLAGS $CPP_PSL"
+ LIBS="$LIB_PSL $LIBS"
+
+ AC_CHECK_LIB(psl, psl_builtin,
+ [
+ AC_CHECK_HEADERS(libpsl.h,
+ curl_psl_msg="enabled"
+ LIBPSL_ENABLED=1
+ AC_DEFINE(USE_LIBPSL, 1, [if libpsl is in use])
+ AC_SUBST(USE_LIBPSL, [1])
+ )
+ ],
+ dnl not found, revert back to clean variables
+ LDFLAGS=$CLEANLDFLAGS
+ CPPFLAGS=$CLEANCPPFLAGS
+ LIBS=$CLEANLIBS
)
+
+ if test X"$OPT_LIBPSL" != Xoff &&
+ test "$LIBPSL_ENABLED" != "1"; then
+ AC_MSG_ERROR([libpsl libs and/or directories were not found where specified!])
+ fi
fi
AM_CONDITIONAL([USE_LIBPSL], [test "$curl_psl_msg" = "enabled"])