aboutsummaryrefslogtreecommitdiff
path: root/Mk/bsd.port.mk
diff options
context:
space:
mode:
Diffstat (limited to 'Mk/bsd.port.mk')
-rw-r--r--Mk/bsd.port.mk150
1 files changed, 42 insertions, 108 deletions
diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk
index c14ef4c9375a..b3b4f0a41328 100644
--- a/Mk/bsd.port.mk
+++ b/Mk/bsd.port.mk
@@ -116,7 +116,9 @@ FreeBSD_MAINTAINER= asami@FreeBSD.org
# ONLY_FOR_ARCHS - Only build ports if ${ARCH} matches one of these.
# NOT_FOR_ARCHS - Only build ports if ${ARCH} doesn't match one of these.
#
-# Use these if your port uses some of the common software packages.
+# Use these if your port uses some of the common software packages. By
+# convention these should be set to 'yes', although they only need to be
+# defined.
#
# USE_BZIP2 - Says that the port tarballs use bzip2, not gzip, for
# compression.
@@ -136,7 +138,8 @@ FreeBSD_MAINTAINER= asami@FreeBSD.org
# LIBTOOL - Set to path of libtool (default: libtool).
# LIBTOOLFILES - Files to patch for libtool (defaults: "aclocal.m4" if
# USE_AUTOCONF is set, "configure" otherwise).
-# LIBTOOLFLAGS - Additional flags to pass to ltconfig.
+# LIBTOOLFLAGS - Additional flags to pass to ltconfig
+# (default: --disable-ltlibs)
# USE_PERL5 - Says that the port uses perl5 for building and running.
# PERL5 - Set to full path of perl5, either in the system or
# installed from a port.
@@ -409,6 +412,16 @@ FreeBSD_MAINTAINER= asami@FreeBSD.org
# (default: ${WRKDIR}/.PLIST.mktmp).
# PLIST_SUB - List of "variable=value" pair for substitution in ${PLIST}
# (default: see below).
+# INSTALLS_SHLIBS - If set, bsd.port.mk will automatically run ldconfig commands
+# from post-install and also add appropriate @exec/@unexec
+# directives to directories listed in LDCONFIG_DIRS.
+# LDCONFIG_DIRS - List of directories to run ldconfig if
+# INSTALLS_SHLIBS is set (default: %%PREFIX%%/lib).
+# Note that this is passed through sed just like the
+# rest of PLIST, so ${PLIST_SUB} substitutions also
+# apply here. It is recommended that you use
+# %%PREFIX%% for ${PREFIX}, %%LOCALBASE%% for
+# ${LOCALBASE} and %%X11BASE%% for ${X11BASE}.
#
# Note that the install target will automatically add manpages (see
# above) and also substitute special sequences of characters (delimited
@@ -438,7 +451,7 @@ FreeBSD_MAINTAINER= asami@FreeBSD.org
# PATCH_DEBUG - If set, print out more information about the patches as
# it attempts to apply them.
# PKG_DBDIR - Where package installation is recorded (default: /var/db/pkg)
-# NO_PKG_REGISTER - Don't register a port install as a package.
+# NO_PKG_REGISTER - Don't register a port installation as a package.
# FORCE_PKG_REGISTER - If set, it will overwrite any existing package
# registration information in ${PKG_DBDIR}/${PKGNAME}.
# NO_DEPENDS - Don't verify build of dependencies.
@@ -599,6 +612,8 @@ PREFIX?= ${X11BASE}
PREFIX?= ${LOCALBASE}
.endif
+PLIST_SUB+= PREFIX=%D LOCALBASE=${LOCALBASE} X11BASE=${X11BASE}
+
.if defined(USE_OPENSSL)
.if ${OSVERSION} >= 400014
.if !exists(/usr/lib/libcrypto.so)
@@ -801,6 +816,9 @@ PACKAGE_COOKIE?= ${WRKDIR}/.package_done
# do something.
DO_NADA?= /usr/bin/true
+# Use this as the first operand to always build dependency.
+NONEXISTENT?= /nonexistent
+
# Miscellaneous overridable commands:
GMAKE?= gmake
AUTOMAKE?= automake
@@ -881,7 +899,7 @@ EXTRACT_CMD?= ${GZIP_CMD}
.endif
# Figure out where the local mtree file is
-.if !defined(MTREE_FILE)
+.if !defined(MTREE_FILE) && !defined(NO_MTREE)
.if defined(USE_X_PREFIX)
MTREE_FILE= /etc/mtree/BSD.x11.dist
.else
@@ -891,15 +909,6 @@ MTREE_FILE= /etc/mtree/BSD.local.dist
MTREE_CMD?= /usr/sbin/mtree
MTREE_ARGS?= -U -f ${MTREE_FILE} -d -e -p
-.if !target(mtree-file)
-mtree-file:
-.if !defined(NO_MTREE)
- @${ECHO} ${MTREE_FILE}
-.else
- @${DO_NADA}
-.endif
-.endif
-
# A few aliases for *-install targets
INSTALL_PROGRAM= \
${INSTALL} ${COPY} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE}
@@ -1003,87 +1012,7 @@ ALL_TARGET?= all
INSTALL_TARGET?= install
# Popular master sites
-MASTER_SITE_XCONTRIB+= \
- ftp://crl.dec.com/pub/X11/contrib/%SUBDIR%/ \
- ftp://uiarchive.uiuc.edu/pub/X11/contrib/%SUBDIR%/ \
- ftp://ftp.duke.edu/pub/X11/contrib/%SUBDIR%/ \
- ftp://ftp.sunet.se/pub/X11/contrib/%SUBDIR%/ \
- ftp://sunsite.sut.ac.jp/pub/archives/X11/contrib/%SUBDIR%/
-
-MASTER_SITE_GNU+= \
- ftp://ftp.gnu.org/gnu/%SUBDIR%/ \
- ftp://ftp.freesoftware.com/pub/gnu/%SUBDIR%/ \
- ftp://ftp.digital.com/pub/GNU/%SUBDIR%/ \
- ftp://ftp.uu.net/archive/systems/gnu/%SUBDIR%/ \
- ftp://ftp.de.uu.net/pub/gnu/%SUBDIR%/ \
- ftp://ftp.ecrc.net/pub/gnu/%SUBDIR%/ \
- ftp://ftp.funet.fi/pub/gnu/prep/%SUBDIR%/ \
- ftp://ftp.leo.org/pub/comp/os/unix/gnu/%SUBDIR%/ \
- ftp://ftp.digex.net/pub/gnu/%SUBDIR%/ \
- ftp://ftp.wustl.edu/systems/gnu/%SUBDIR%/ \
- ftp://ftp.kddlabs.co.jp/pub/gnu/%SUBDIR%/
-
-MASTER_SITE_PERL_CPAN+= \
- ftp://ftp.digital.com/pub/plan/perl/CPAN/modules/by-module/%SUBDIR%/ \
- ftp://ftp.freesoftware.com/pub/perl/CPAN/modules/by-module/%SUBDIR%/
-
-MASTER_SITE_TEX_CTAN+= \
- ftp://ftp.freesoftware.com/pub/tex/ctan/%SUBDIR%/ \
- ftp://wuarchive.wustl.edu/packages/TeX/%SUBDIR%/ \
- ftp://ftp.funet.fi/pub/TeX/CTAN/%SUBDIR%/ \
- ftp://ftp.tex.ac.uk/tex-archive/%SUBDIR%/ \
- ftp://ftp.dante.de/tex-archive/%SUBDIR%/
-
-MASTER_SITE_SUNSITE+= \
- ftp://metalab.unc.edu/pub/Linux/%SUBDIR%/ \
- ftp://ftp.infomagic.com/pub/mirrors/linux/sunsite/%SUBDIR%/ \
- ftp://ftp.freesoftware.com/pub/linux/sunsite/%SUBDIR%/
-
-MASTER_SITE_KDE+= \
- ftp://ftp.us.kde.org/pub/kde/%SUBDIR%/ \
- ftp://ftp.kde.org/pub/kde/%SUBDIR%/ \
- ftp://ftp.tuniv.szczecin.pl/pub/kde/%SUBDIR%/ \
- ftp://ftp.fu-berlin.de/pub/unix/X11/gui/kde/%SUBDIR%/ \
- ftp://ftp.dataplus.se/pub/linux/kde/%SUBDIR%/
-
-MASTER_SITE_COMP_SOURCES+= \
- ftp://gatekeeper.dec.com/pub/usenet/comp.sources.%SUBDIR%/ \
- ftp://ftp.uu.net/usenet/comp.sources.%SUBDIR%/ \
- ftp://rtfm.mit.edu/pub/usenet/comp.sources.%SUBDIR%/
-
-MASTER_SITE_GNOME+= \
- ftp://ftp.gnome.org/pub/GNOME/%SUBDIR%/ \
- ftp://download.sourceforge.net/pub/mirrors/gnome/%SUBDIR%/ \
- ftp://ftp.cybertrails.com/pub/gnome/%SUBDIR%/ \
- ftp://ftp.snoopy.net/pub/mirrors/GNOME/%SUBDIR%/
-
-MASTER_SITE_AFTERSTEP+= \
- ftp://ftp.afterstep.org/%SUBDIR%/ \
- ftp://ftp.digex.net/pub/X11/window-managers/afterstep/%SUBDIR%/ \
- ftp://ftp.alpha1.net/pub/mirrors/ftp.afterstep.org/%SUBDIR%/ \
- ftp://ftp.math.uni-bonn.de/pub/mirror/ftp.afterstep.org/pub/%SUBDIR%/ \
- ftp://ftp.dti.ad.jp/pub/X/AfterStep/%SUBDIR%/ \
- ftp://casper.yz.yamagata-u.ac.jp/pub/X11/apps/afterstep/%SUBDIR%/
-
-MASTER_SITE_WINDOWMAKER+= \
- ftp://ftp.windowmaker.org/pub/%SUBDIR%/ \
- ftp://ftp.goldweb.com.au/pub/WindowMaker/%SUBDIR%/ \
- ftp://ftp.io.com/pub/%SUBDIR%/ \
- ftp://ftp.ameth.org/pub/mirrors/ftp.windowmaker.org/%SUBDIR%/
-
-MASTER_SITE_PORTS_JP+= \
- ftp://ports.jp.FreeBSD.org/pub/FreeBSD-jp/ports-jp/LOCAL_PORTS/%SUBDIR%/ \
- ftp://ftp4.jp.FreeBSD.org/pub/FreeBSD-jp/ports-jp/LOCAL_PORTS/%SUBDIR%/ \
- ftp://ftp.ics.es.osaka-u.ac.jp/pub/mirrors/FreeBSD-jp/ports-jp/LOCAL_PORTS/%SUBDIR%/
-
-MASTER_SITE_TCLTK+= \
- ftp://ftp.scriptics.com/pub/tcl/%SUBDIR%/ \
- ftp://mirror.neosoft.com/pub/tcl/mirror/ftp.scriptics.com/%SUBDIR%/ \
- ftp://sunsite.utk.edu/pub/tcl/%SUBDIR%/ \
- ftp://ftp.funet.fi/pub/languages/tcl/tcl/%SUBDIR%/ \
- ftp://ftp.cs.tu-berlin.de/pub/tcl/distrib/%SUBDIR%/ \
- ftp://ftp.srcc.msu.su/mirror/ftp.scriptics.com/pub/tcl/%SUBDIR%/ \
- ftp://ftp.lip6.fr/pub/tcl/distrib/%SUBDIR%/
+.include "bsd.sites.mk"
# Empty declaration to avoid "variable MASTER_SITES recursive" error
MASTER_SITES?=
@@ -1112,10 +1041,6 @@ MASTER_SITE_BACKUP?= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/
MASTER_SITE_BACKUP:= ${MASTER_SITE_BACKUP:S^\${DIST_SUBDIR}/^^}
-# Where to put distfiles that don't have any other master site
-MASTER_SITE_LOCAL?= \
- ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/LOCAL_PORTS/
-
# If the user has MASTER_SITE_FREEBSD set, go to the FreeBSD repository
# for everything, but don't search it twice by appending it to the end.
.if !defined(MASTER_SITE_FREEBSD)
@@ -1221,9 +1146,7 @@ PKGFILE?= ${.CURDIR}/${PKGNAME}${PKG_SUFX}
# The "latest version" link -- ${PKGNAME} minus everthing after the last '-'
PKGLATESTREPOSITORY?= ${PACKAGES}/Latest
-.if !defined(PKGBASE)
-PKGBASE!= ${ECHO} ${PKGNAME} | ${SED} -e 's/-[^-]*$$//'
-.endif
+PKGBASE?= ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}
PKGLATESTFILE?= ${PKGLATESTREPOSITORY}/${PKGBASE}${PKG_SUFX}
CONFIGURE_WRKSRC?= ${WRKSRC}
@@ -1322,6 +1245,14 @@ __MANPAGES:= ${_MANPAGES:S^${PREFIX}/^^:S/""//:S^//^/^g:S/$/.gz/}
_MANPAGES:= ${_MANPAGES:S/$/.gz/}
.endif
+# Put this for down as possible so it will catch all PLIST_SUB definitions.
+
+.if defined(INSTALLS_SHLIBS)
+LDCONFIG_DIRS?= %%PREFIX%%/lib
+LDCONFIG_PLIST!= ${ECHO} ${LDCONFIG_DIRS} | ${SED} ${PLIST_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/}
+LDCONFIG_RUNLIST!= ${ECHO} ${LDCONFIG_PLIST} | ${SED} -e "s!%D!${PREFIX}!"
+.endif
+
.MAIN: all
################################################################
@@ -1944,6 +1875,10 @@ _PORT_USE: .USE
.if make(real-install) && (defined(_MANPAGES) || defined(_MLINKS))
@cd ${.CURDIR} && ${MAKE} ${__softMAKEFLAGS} compress-man
.endif
+.if make(real-install) && defined(INSTALLS_SHLIBS)
+ @${ECHO_MSG} "===> Running ldconfig"
+ ${LDCONFIG} -m ${LDCONFIG_RUNLIST}
+.endif
.if make(real-install) && !defined(NO_PKG_REGISTER)
@cd ${.CURDIR} && ${MAKE} ${__softMAKEFLAGS} fake-pkg
.endif
@@ -2048,7 +1983,7 @@ post-${name}:
# libtool port. See above for default values of LIBTOOLFILES.
#
# This target works by first checking the version of the installed
-# libtool shell script, which is not actually used. Rather it's path
+# libtool shell script, which is not actually used. Rather its path
# is determined, and used to find the path to ltconfig and ltmain.sh
# (which is ../share/libtool/). Then the configure script is copied
# and the default paths for ltconfig and ltmain.sh (normally ./) is
@@ -2325,11 +2260,6 @@ package-noinstall:
-@${RMDIR} ${WRKDIR}
.endif
-.if !target(prefix)
-prefix:
- @${ECHO} ${PREFIX}
-.endif
-
################################################################
# Dependency checking
################################################################
@@ -2732,6 +2662,10 @@ generate-plist:
.endfor
@${SED} ${PLIST_SUB:S/$/!g/:S/^/ -e s!%%/:S/=/%%!/} ${PLIST} >> ${TMPPLIST}
@${ECHO} "@unexec if [ -f %D/info/dir ]; then if sed -e '1,/Menu:/d' %D/info/dir | grep -q '^[*] '; then true; else rm %D/info/dir; fi; fi" >> ${TMPPLIST}
+.if defined(INSTALLS_SHLIBS)
+ @${ECHO} "@exec ${LDCONFIG} -m ${LDCONFIG_PLIST}" >> ${TMPPLIST}
+ @${ECHO} "@unexec ${LDCONFIG} -R" >> ${TMPPLIST}
+.endif
.if !defined(NO_FILTER_SHLIBS)
.if (${PORTOBJFORMAT} == "aout")
@${SED} -e 's,\(/lib.*\.so\.[0-9]*\)$$,\1.0,' ${TMPPLIST} > ${TMPPLIST}.tmp
@@ -2831,7 +2765,7 @@ tags:
.endif
.if !defined(NOPRECIOUSMAKEVARS)
-.for softvar in CKSUMFILES _MLINKS PKGBASE
+.for softvar in CKSUMFILES _MLINKS
.if defined(${softvar})
__softMAKEFLAGS+= '${softvar}+=${${softvar}:S/'/'\''/g}'
.endif