From e0b508ea2db8b65938759decf9b4e17a585147ba Mon Sep 17 00:00:00 2001 From: Mohamed Akram Date: Wed, 30 Apr 2025 20:38:11 +0400 Subject: [PATCH] Improve linking Add libz dependency for curl rather than getting it through libarchive and fix overlinking on macOS where --as-needed isn't available. --- libpkg/Makefile.autosetup | 10 ++++++---- src/Makefile.autosetup | 19 ++++++++++++------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/libpkg/Makefile.autosetup b/libpkg/Makefile.autosetup index 839e0c1d7..0a7316cb8 100644 --- a/libpkg/Makefile.autosetup +++ b/libpkg/Makefile.autosetup @@ -125,9 +125,7 @@ LOCAL_LDFLAGS+= -ldl @endif @if pkgos_darwin -LOCAL_LDFLAGS+= -lresolv -lz \ - -framework CoreFoundation -framework CoreServices \ - -framework SystemConfiguration +LOCAL_LDFLAGS+= -lresolv @else @if pkgos_freebsd LOCAL_LDFLAGS+= -Wl,--version-script=$(top_srcdir)/libpkg/libpkg.ver,--undefined-version @@ -171,8 +169,12 @@ LOCAL_CFLAGS+= @PKG_LIBCURL_CFLAGS@ LOCAL_LDFLAGS+= @PKG_LIBCURL_LDFLAGS@ @PKG_LIBCURL_LIBS@ @else LOCAL_CFLAGS+= -I$(top_srcdir)/external/curl/include -LOCAL_LDFLAGS+= -L$(top_builddir)/external/libcurl -lcurl_pic +LOCAL_LDFLAGS+= -L$(top_builddir)/external/libcurl -lcurl_pic -lz STATIC_LIBS+= $(top_builddir)/external/libcurl/libcurl.a +@if pkgos_darwin +LOCAL_LDFLAGS+= -framework CoreFoundation -framework CoreServices \ + -framework SystemConfiguration +@endif @endif VPATH= $(top_srcdir)/libpkg diff --git a/src/Makefile.autosetup b/src/Makefile.autosetup index 5dd4fe475..ef10532d4 100644 --- a/src/Makefile.autosetup +++ b/src/Makefile.autosetup @@ -54,7 +54,7 @@ OTHER_LIBS= @EXTRA_LIBS@ -lm -pthread OTHER_LIBS+= @PKG_LIBARCHIVE_LDFLAGS@ @PKG_LIBARCHIVE_LIBS@ LOCAL_CFLAGS+= @PKG_LIBARCHIVE_CFLAGS@ @else -OTHER_LIBS+= -larchive -lbz2 -lz -llzma @ZSTDLIB@ +OTHER_LIBS+= -larchive @endif @if HAVE_LIBUTIL @@ -83,15 +83,17 @@ OTHER_LIBS+= -lssl -lcrypto @if PKG_LIBCURL_LIBS LOCAL_CFLAGS+= @PKG_LIBCURL_CFLAGS@ OTHER_LIBS+= @PKG_LIBCURL_LDFLAGS@ @PKG_LIBCURL_LIBS@ +@else +OTHER_LIBS+= -lz +@if pkgos_darwin +OTHER_LIBS+= -framework CoreFoundation -framework CoreServices \ + -framework SystemConfiguration +@endif @endif @if pkgos_darwin -LOCAL_LDFLAGS= $(LIBPKGFLAT) $(LIBS) $(OTHER_LIBS) -lresolv -lz \ - -framework CoreFoundation -framework CoreServices \ - -framework SystemConfiguration -STATIC_LDFLAGS= $(LIBPKGFLAT) $(LIBS) $(OTHER_LIBS) -lresolv -lz \ - -framework CoreFoundation -framework CoreServices \ - -framework SystemConfiguration +LOCAL_LDFLAGS= $(LIBPKGFLAT) $(LIBS) $(OTHER_LIBS) -lresolv +STATIC_LDFLAGS= $(LIBPKGFLAT) $(LIBS) $(OTHER_LIBS) -lresolv # OSX doesn't support static binaries, sigh STATIC_ARG= @else @@ -104,6 +106,9 @@ STATIC_ARG= -static STATIC_LDFLAGS= $(LIBPKGFLAT) $(LIBS) $(OTHER_LIBS) @endif +# For libarchive +STATIC_LDFLAGS+= -lbz2 -lz -llzma @ZSTDLIB@ + VPATH= $(top_srcdir)/src include $(MK)/prog.mk