1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-09 06:51:44 +00:00
freebsd-ports/Mk/Uses/libtool.mk
Tijl Coosemans 88c67cd38c - Update devel/libtool and devel/libltdl to version 2.4.2.418
- Patch libtool so it uses the same library version specification as on
  Darwin, Linux and other systems.  Given the version current:revision:age
  a library will be given the extension .so.major.age.revision with major
  equal to current-age.  Before libtool would use .so.current on FreeBSD.
- Patch libtoolize to remove two cases of umask 0 that caused libltdl
  files to be copied world writable (--ltdl option)
- Let USES=libtool patch this new version correctly
- Adjust all ports with USES=libtool:build and bump PORTREVISION on their
  dependent ports if a library version changed

PR:		194068
Exp-run by:	antoine
Approved by:	portmgr (antoine)
2014-10-05 18:01:19 +00:00

86 lines
3.1 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
patch-libtool:
@${FIND} ${WRKDIR} \( -name configure -or -name ltconfig \) \
-type f | while read i; do ${SED} -i.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 '/objformat=/s/echo aout/echo elf/' \
-e "/freebsd-elf\\*)/,/;;/ { \
/deplibs_check_method=/s/=.*/=pass_all/; }" \
$${i} && ${TOUCH} -mr $${i}.bak $${i}; done
@${FIND} ${WRKDIR} -type f -name ltmain.sh | \
${XARGS} ${REINPLACE_CMD} \
-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*|-p|-pg|/'
.if ! ${libtool_ARGS:Moldver}
@${FIND} ${WRKDIR} \( -name configure -or -name ltconfig \) \
-type f | while read i; do ${SED} -i.bak \
-e "/freebsd-elf\\*)/,/;;/ { \
/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}.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"/; }'
.endif
patch-lafiles:
.if ${libtool_ARGS:Mkeepla} || ${libtool_ARGS:Moldver}
@${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