aboutsummaryrefslogtreecommitdiffstats
path: root/Mk
diff options
context:
space:
mode:
authortijl <tijl@FreeBSD.org>2014-04-23 21:25:16 +0800
committertijl <tijl@FreeBSD.org>2014-04-23 21:25:16 +0800
commit55e5c34e31b90aa95311b10bd4a3072f2163ebfe (patch)
tree69c07cdc4812f0f8be0cc44c38513f540c058778 /Mk
parent0c15193d405451f0e1452ba981c8efb1df1447dd (diff)
downloadfreebsd-ports-gnome-55e5c34e31b90aa95311b10bd4a3072f2163ebfe.tar.gz
freebsd-ports-gnome-55e5c34e31b90aa95311b10bd4a3072f2163ebfe.tar.zst
freebsd-ports-gnome-55e5c34e31b90aa95311b10bd4a3072f2163ebfe.zip
When linking a library libA with a library libB using libtool, if libB.la
exists, libtool will add all libraries libB.la refers to (dependency_libs field) to the linker command line and store them in the dependency_libs field of libA.la. So everything that subsequently links with libA will also link to these extra libraries. This causes too much overlinking. This commit modifies Mk/Uses/libtool.mk so it empties the dependency_libs field in .la libraries during staging. However, because .la libraries have very limited use when dependency_libs is empty it makes sense to completely remove them during staging. So with this commit USES=libtool is modified to remove .la libraries and a new form (USES=libtool:keepla) is introduced in case they need to be kept (dependency_libs is still emptied). PORTREVISION is bumped on all ports with USES=libtool that install .la libraries. Most ports are also changed to add :keepla because .la libraries have to be kept around as long as there are dependent ports with .la libraries that refer to them in their dependency_libs field. In most cases :keepla can be removed again as soon as all dependent ports that install .la libraries have some form of USES=libtool added to their Makefile. PR: ports/188759 Exp-run: bdrewery Approved by: portmgr (bdrewery)
Diffstat (limited to 'Mk')
-rw-r--r--Mk/Uses/libtool.mk17
-rw-r--r--Mk/bsd.port.mk26
-rw-r--r--Mk/bsd.xorg.mk2
3 files changed, 32 insertions, 13 deletions
diff --git a/Mk/Uses/libtool.mk b/Mk/Uses/libtool.mk
index 0f4c401c0a9a..64a85dfd5b93 100644
--- a/Mk/Uses/libtool.mk
+++ b/Mk/Uses/libtool.mk
@@ -3,7 +3,13 @@
# Bring libtool scripts up to date.
#
# Feature: libtool
-# Usage: USES=libtool
+# Usage: USES=libtool or USES=libtool:args
+# Valid args: keepla Normally libtool libraries (*.la) are not installed.
+# With this option they are. This is needed as long
+# as there are dependent ports with .la libraries that
+# refer to .la libraries in this port. As soon as all
+# those dependent ports have some form of USES=libtool
+# keepla can be removed.
#
# MAINTAINER: autotools@FreeBSD.org
@@ -54,4 +60,13 @@ patch-libtool:
/versuffix=/s/=.*/="$$major.$$age.$$revision"/; }'
.endif
+patch-lafiles:
+.if ${libtool_ARGS} == keepla || ${libtool_ARGS} == oldver
+ @${FIND} ${STAGEDIR} -type f -name '*.la' | \
+ ${XARGS} ${SED} -i '' -e "/dependency_libs=/s/=.*/=''/"
+.else
+ @${FIND} ${STAGEDIR} -type f -name '*.la' | \
+ ${XARGS} ${GREP} -l 'libtool library' | ${XARGS} ${RM}
+.endif
+
.endif
diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk
index 02a5c97547bd..40f800defe53 100644
--- a/Mk/bsd.port.mk
+++ b/Mk/bsd.port.mk
@@ -6530,22 +6530,26 @@ _STAGE_DEP= build
_STAGE_SEQ= stage-message stage-dir run-depends lib-depends apply-slist pre-install generate-plist \
pre-su-install
.if defined(NEED_ROOT)
-_STAGE_SUSEQ= create-users-groups do-install desktop-file-post-install kmod-post-install \
- shared-mime-post-install webplugin-post-install \
- post-install post-install-script move-uniquefiles post-stage compress-man \
+_STAGE_SUSEQ= create-users-groups do-install desktop-file-post-install \
+ kmod-post-install shared-mime-post-install \
+ webplugin-post-install post-install post-install-script \
+ move-uniquefiles post-stage compress-man patch-lafiles \
install-rc-script install-ldconfig-file install-license \
- install-desktop-entries add-plist-info add-plist-docs add-plist-examples \
- add-plist-data add-plist-post move-uniquefiles-plist fix-plist-sequence
+ install-desktop-entries add-plist-info add-plist-docs \
+ add-plist-examples add-plist-data add-plist-post \
+ move-uniquefiles-plist fix-plist-sequence
.if defined(DEVELOPER)
_STAGE_SUSEQ+= stage-qa
.endif
.else
-_STAGE_SEQ+= create-users-groups do-install desktop-file-post-install kmod-post-install \
- shared-mime-post-install webplugin-post-install post-install post-install-script \
- move-uniquefiles post-stage compress-man install-rc-script install-ldconfig-file \
- install-license install-desktop-entries add-plist-info add-plist-docs \
- add-plist-examples add-plist-data add-plist-post move-uniquefiles-plist \
- fix-plist-sequence
+_STAGE_SEQ+= create-users-groups do-install desktop-file-post-install \
+ kmod-post-install shared-mime-post-install \
+ webplugin-post-install post-install post-install-script \
+ move-uniquefiles post-stage compress-man patch-lafiles \
+ install-rc-script install-ldconfig-file install-license \
+ install-desktop-entries add-plist-info add-plist-docs \
+ add-plist-examples add-plist-data add-plist-post \
+ move-uniquefiles-plist fix-plist-sequence
.if defined(DEVELOPER)
_STAGE_SEQ+= stage-qa
.endif
diff --git a/Mk/bsd.xorg.mk b/Mk/bsd.xorg.mk
index 106463146e58..124c2c958cf7 100644
--- a/Mk/bsd.xorg.mk
+++ b/Mk/bsd.xorg.mk
@@ -140,7 +140,7 @@ post-install:
.endif
. if ${XORG_CAT} == "lib"
-USES+= pathfix libtool
+USES+= pathfix libtool:keepla
USE_LDCONFIG= yes
CONFIGURE_ARGS+=--enable-malloc0returnsnull
. endif