1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-12 03:00:28 +00:00
freebsd-ports/Mk/Uses/libtool.mk
Baptiste Daroussin 8cea2b0147 Readd PORTSDIR for now we will only start removing them after 2016Q1 is branched
This gives more time for tools to get updated, available in packages etc before
bothering users
2015-10-15 07:36:38 +00:00

85 lines
3.2 KiB
Makefile

# $FreeBSD$
#
# Bring libtool scripts up to date.
#
# Feature: libtool
# Usage: USES=libtool or USES=libtool:args
# Valid args: keepla Don't remove libtool libraries (*.la) from the stage
# directory. Some ports need them at runtime (e.g. ports
# that call lt_dlopen from libltdl).
# build Add a build dependency on devel/libtool. This can
# be used when a port does not generate its own libtool
# script and relies on the system to provide one.
#
# MAINTAINER: autotools@FreeBSD.org
.if !defined(_INCLUDE_USES_LIBTOOL_MK)
_INCLUDE_USES_LIBTOOL_MK= yes
_USES_POST+= libtool
.if ${libtool_ARGS:Mbuild}
BUILD_DEPENDS+= libtool:${PORTSDIR}/devel/libtool
.endif
.endif
.if defined(_POSTMKINCLUDED) && !defined(_INCLUDE_USES_LIBTOOL_POST_MK)
_INCLUDE_USES_LIBTOOL_POST_MK= yes
_USES_configure+= 480:patch-libtool
patch-libtool:
@${FIND} ${WRKDIR} \( -name configure -or -name ltconfig \) \
-type f | while read i; do ${SED} -i.libtool.bak \
-e '/dragonfly\*/!s/^ *freebsd\*[ )]/dragonfly* | &/' \
-e '/gcc_dir=\\`/s/gcc /$$CC /' \
-e '/gcc_ver=\\`/s/gcc /$$CC /' \
-e '/link_all_deplibs[0-9A-Z_]*=/s/=unknown/=no/' \
-e '/archive_expsym_cmds[0-9A-Z_]*=.$$CC.*-retain-/ { \
s/-retain-symbols-file/-version-script/; \
s/$$export_symbols/$$lib-ver/; \
s/$$CC/echo "{ global:" > $$lib-ver~ \
sed -e "s|$$|;|" < $$export_symbols >> $$lib-ver~ \
echo "local: *; };" >> $$lib-ver~&/; }' \
-e '/objformat=/s/echo aout/echo elf/' \
-e '/STRIP -V/s/"GNU strip"/"strip"/' \
-e "/freebsd-elf\\*)/,/;;/ { \
/deplibs_check_method=/s/=.*/=pass_all/; \
/library_names_spec=.*\\.so/ \
s/=.*/='\$$libname\$$release.so\$$versuffix \
\$$libname\$$release.so\$$major \$$libname.so' \
soname_spec='\$$libname\$$release.so\$$major'/; \
/library_names_spec=.*shared_ext/ \
s/=.*/='\$$libname\$$release\$$shared_ext\$$versuffix \
\$$libname\$$release\$$shared_ext\$$major \
\$$libname\$$shared_ext' \
soname_spec='\$$libname\$$release\$$shared_ext\$$major'/; \
}" $${i} && ${TOUCH} -mr $${i}.libtool.bak $${i}; done
@${FIND} ${WRKDIR} -type f -name ltmain.sh | \
${XARGS} ${REINPLACE_CMD} \
-e '/case $$version_type in/,+2 \
s/darwin|linux|/darwin|freebsd-elf|linux|/' \
-e '/freebsd-elf)/,+2 { \
/major=/s/=.*/=.$$(($$current - $$age))/; \
/versuffix=/s/=.*/="$$major.$$age.$$revision"/; }' \
-e '/if.*linkmode.*prog.*mode.*!= relink/s/if.*;/if :;/'\
-e '/if.*prog.*linkmode.*relink !=.*mode/s/if.*;/if :;/'\
-e '/if.*linkmode.*prog.*mode.* = relink/s/||.*;/;/' \
-e '/if.*prog.*linkmode.*relink = .*mode/s/||.*;/;/' \
-e 's/|-p|-pg|/|-B*|-fstack-protector*|-p|-pg|/'
_USES_stage+= 790:patch-lafiles
patch-lafiles:
.if ${libtool_ARGS:Mkeepla}
@${FIND} ${STAGEDIR} -type f -name '*.la' | \
${XARGS} ${SED} -i '' -e "/dependency_libs=/s/=.*/=''/"
.else
@${FIND} ${STAGEDIR} -type l -exec ${SH} -c \
'case `${REALPATH} -q "{}"` in \
*.la) ${ECHO_CMD} "{}" ;; esac' \; | \
${XARGS} ${GREP} -l 'libtool library' | ${XARGS} ${RM}
@${FIND} ${STAGEDIR} -type f -name '*.la' | \
${XARGS} ${GREP} -l 'libtool library' | ${XARGS} ${RM}
.endif
.endif