summaryrefslogtreecommitdiff
path: root/Mk
diff options
context:
space:
mode:
Diffstat (limited to 'Mk')
-rw-r--r--Mk/bsd.port.mk320
1 files changed, 240 insertions, 80 deletions
diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk
index 9e674cd73662..28f14a0dfb27 100644
--- a/Mk/bsd.port.mk
+++ b/Mk/bsd.port.mk
@@ -1,4 +1,4 @@
-#-*- mode: Fundamental; tab-width: 4; -*-
+#-*- mode: makefile; tab-width: 4; -*-
# ex:ts=4
#
# $FreeBSD$
@@ -145,54 +145,74 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org
# the system or installed from a port.
# USE_GMAKE - Says that the port uses gmake.
# GMAKE - Set to path of GNU make if not in $PATH (default: gmake).
-# USE_AUTOMAKE - Says that the port uses automake. Implies
-# USE_AUTOCONF and USE_AUTOMAKE_VER?=14.
-# USE_AUTOMAKE_VER - Says that the port uses automake. Possible
-# values: 14, 15;
-# each specify a version of automake to use
-# and appropriatly set both AUTOMAKE{,_DIR}
-# and ACLOCAL{,_DIR} variables.
-# Implies USE_AUTOMAKE. If set with
-# unknown value, defaults to 14.
-# AUTOMAKE - Set to path of GNU automake if not in $PATH (default:
-# according to USE_AUTOMAKE_VER value)
-# AUTOMAKE_ARGS - Pass these args to ${AUTOMAKE} if ${USE_AUTOMAKE_VER} is set.
-# AUTOMAKE_ENV - Pass these env (shell-like) to ${AUTOMAKE} if
-# ${USE_AUTOMAKE_VER} is set.
-# ACLOCAL - Set to path of GNU automake aclocal if not in $PATH (default:
-# according to USE_AUTOMAKE_VER value)
-# ACLOCAL_DIR - Set to path of GNU automake aclocal shared directory (default:
-# according to USE_AUTOMAKE_VER value)
-# AUTOMAKE_DIR - Set to path of GNU automake shared directory (default:
-# according to USE_AUTOMAKE_VER value)
-# USE_AUTOCONF_VER - Says that the port uses autoconf. Possible
-# values: 213;
-# each specify a version of autoconf to use
-# and appropriatly set both AUTOCONF{,_DIR}
-# and ACLOCAL{,_DIR} variables.
-# Implies USE_AUTOCONF. If set with
-# unknown value, defaults to 213.
-# USE_AUTOCONF - Says that the port uses autoconf. Implies
-# GNU_CONFIGURE and USE_AUTOCONF_VER?=213.
-# AUTOCONF - Set to path of GNU autoconf if not in $PATH (default:
-# according to USE_AUTOCONF_VER value)
-# AUTOCONF_ARGS - Pass these args to ${AUTOCONF} if ${USE_AUTOCONF} is set.
-# AUTOCONF_ENV - Pass these env (shell-like) to ${AUTOCONF} if
-# ${USE_AUTOCONF} is set.
-# AUTOHEADER - Set to path of GNU autoconf autoheader
-# if not in $PATH (default: according
-# to USE_AUTOCONF_VER value)
-# AUTORECONF - Set to path of GNU autoconf autoreconf
-# if not in $PATH (default: according
-# to USE_AUTOCONF_VER value)
-# AUTOSCAN - Set to path of GNU autoconf autoscan
-# if not in $PATH (default: according
-# to USE_AUTOCONF_VER value)
-# AUTOIFNAMES - Set to path of GNU autoconf autoifnames
-# if not in $PATH (default: according
-# to USE_AUTOCONF_VER value)
-# AUTOCONF_DIR - Set to path of GNU autoconf shared directory (default:
-# according to USE_AUTOCONF_VER value)
+# USE_AUTOMAKE (PORT MAY SET THIS VALUE)
+# - Says that the port uses automake.
+# - Implies USE_AUTOCONF and USE_AUTOMAKE_VER?=14.
+# - Causes automake execution prior to configure step.
+# USE_AUTOMAKE_VER (PORT MAY SET THIS VALUE)
+# - Says that the port uses automake; legal values
+# are: 14, 15, 17.
+# - Each specify a version of automake to use
+# and appropriatly set both AUTOMAKE{,_DIR}
+# and ACLOCAL{,_DIR} variables.
+# - Implies USE_AUTOMAKE.
+# - If set with an unknown value, the port is marked BROKEN.
+# AUTOMAKE_ARGS (PORT MAY ALTER THIS VALUE)
+# - Pass these args to ${AUTOMAKE} if ${USE_AUTOMAKE_VER}
+# is set. If an application sets this value, it should
+# use the += form of assignment to append, not overwrite.
+# USE_AUTOCONF (PORT MAY SET THIS VALUE)
+# - Says that the port uses autoconf.
+# - Implies GNU_CONFIGURE=yes and USE_AUTOCONF_VER?=213.
+# - Causes autoconf execution prior to configure step.
+# USE_AUTOCONF_VER (PORT MAY SET THIS VALUE)
+# - Says that the port uses autoconf; legal values
+# are: 213, 253, 254.
+# - Each specify a version of autoconf to use
+# and appropriatly set AUTOCONF{,_DIR} and other
+# autoconf-related program paths.
+# - Implies USE_AUTOCONF.
+# - If set with an unknown value, the port is marked BROKEN.
+# AUTOCONF_ARGS (PORT MAY ALTER THIS VALUE)
+# - Pass these args to ${AUTOCONF} if ${USE_AUTOCONF_VER}
+# is set. If an application sets this value, it should
+# use the += form of assignment to append, not overwrite.
+# AUTOMAKE (READ-ONLY)
+# - Set to path of GNU automake (default:
+# according to USE_AUTOMAKE_VER value)
+# AUTOMAKE_ENV (READ-ONLY)
+# - Pass these env var=value pairs (shell-like)
+# to ${AUTOMAKE} if ${USE_AUTOMAKE_VER} is set.
+# ACLOCAL (READ-ONLY)
+# - Set to path of GNU automake aclocal (default:
+# according to USE_AUTOMAKE_VER value)
+# ACLOCAL_DIR (READ-ONLY)
+# - Set to path of GNU automake aclocal shared directory
+# (default: according to USE_AUTOMAKE_VER value)
+# AUTOMAKE_DIR (READ-ONLY)
+# - Set to path of GNU automake shared directory (default:
+# according to USE_AUTOMAKE_VER value)
+# AUTOCONF (READ-ONLY)
+# - Set to path of GNU autoconf (default:
+# according to USE_AUTOCONF_VER value)
+# AUTOCONF_ENV (READ-ONLY)
+# - Pass these env var=value pairs (shell-like)
+# to ${AUTOCONF} if ${USE_AUTOCONF_VER} is set.
+# AUTOHEADER (READ-ONLY)
+# - Set to path of GNU autoconf autoheader
+# (default: according to USE_AUTOCONF_VER value)
+# AUTORECONF (READ-ONLY)
+# - Set to path of GNU autoconf autoreconf
+# (default: according to USE_AUTOCONF_VER value)
+# AUTOSCAN (READ-ONLY)
+# - Set to path of GNU autoconf autoscan
+# (default: according to USE_AUTOCONF_VER value)
+# AUTOIFNAMES (READ-ONLY)
+# - Set to path of GNU autoconf autoifnames
+# (default: according to USE_AUTOCONF_VER value)
+# AUTOCONF_DIR (READ-ONLY)
+# - Set to path of GNU autoconf shared directory (default:
+# according to USE_AUTOCONF_VER value)
# USE_LIBTOOL - Says that the port uses Libtool. Implies GNU_CONFIGURE.
# LIBTOOL - Set to path of libtool (default: libtool).
# LIBTOOLFILES - Files to patch for libtool (defaults: "aclocal.m4" if
@@ -209,8 +229,16 @@ FreeBSD_MAINTAINER= portmgr@FreeBSD.org
# Use this if you need to replace "#!" lines in scripts.
# PERL_VERSION - Full version of perl5 (see below for current value).
# PERL_VER - Short version of perl5 (see below for current value).
+# PERL_LEVEL - Perl version as an integer of the form MNNNPP, where
+# M is major version, N is minor version, and P is
+# the patch level. E.g., PERL_VERSION=5.6.1 would give
+# a PERL_LEVEL of 500601. This can be used in comparisons
+# to determine if the version of perl is high enough,
+# whether a particular dependency is needed, etc.
# PERL_ARCH - Directory name of architecture dependent libraries
# (value: ${ARCH}-freebsd).
+# SITE_PERL - Directory name where site specific perl packages go.
+# This value is added to PLIST_SUB.
# USE_BISON - Says that the port uses bison for building.
# USE_IMAKE - Says that the port uses imake. Implies USE_X_PREFIX.
# XMKMF - Set to path of `xmkmf' if not in $PATH (default: xmkmf -a ).
@@ -878,36 +906,146 @@ BUILD_DEPENDS+= unzip:${PORTSDIR}/archivers/unzip
BUILD_DEPENDS+= gmake:${PORTSDIR}/devel/gmake
CONFIGURE_ENV+= MAKE=${GMAKE}
.endif
-.if defined(USE_AUTOMAKE) || defined(USE_AUTOMAKE_VER)
-USE_AUTOMAKE?= yes
-USE_AUTOMAKE_VER?= 14
-USE_AUTOCONF= yes
-.endif
-.if defined(USE_AUTOMAKE_VER)
-.if ${USE_AUTOMAKE_VER} == 15
-BUILD_DEPENDS+= automake:${PORTSDIR}/devel/automake
+######################################################################
+# AUTOMAKE/AUTOCONF
+# current => non-renamed, non-relocated version
-ACLOCAL?= aclocal
-AUTOMAKE?= automake
-ACLOCAL_DIR?= ${LOCALBASE}/share/aclocal
-AUTOMAKE_DIR?= ${LOCALBASE}/share/automake
-.else
-BUILD_DEPENDS+= automake14:${PORTSDIR}/devel/automake14
+########## private variables
+# old_{am,ac}ver ==> numeric version of "old" port[*]
+# cur_{am,ac}ver ==> numeric version of "current" port
+# dev_{am,ac}ver ==> numeric version of "devel" port
+# use_{am,ac}path ==> numeric version we are using here
+# {am,ac}path ==> path to non-suffixed binary, if any
+# autotools_path ==> string to prepend to PATH, if any
+#
+# [*] "default" version in case of USE_AUTOMAKE or USE_AUTOCONF w/o version
-AUTOMAKE_ARGS+= -i
-USE_AUTOCONF_VER?= 213
-.endif
-.endif
-.if defined(USE_AUTOCONF) || defined(USE_AUTOCONF_VER)
-USE_AUTOCONF?= yes
-USE_AUTOCONF_VER?= 213
+##########
+#.if defined(AUTOMAKE) || defined(AUTOCONF)
+#BROKEN="AUTOMAKE and AUTOCONF are read-only values. \
+# You may not assign to them"
+#.endif # defined(AUTOMAKE) || defined(AUTOCONF)
+
+########## versions
+old_amver= 14
+cur_amver= 15
+dev_amver= 17
+old_acver= 213
+cur_acver= 253
+dev_acver= 254
+########## automake setup
+.if defined(USE_AUTOMAKE) || defined(USE_AUTOMAKE_VER)
+USE_AUTOMAKE?= yes
+USE_AUTOMAKE_VER?= ${old_amver}
+use_amver= ${USE_AUTOMAKE_VER:L}
+.if ${use_amver} == ${cur_amver}
+ACLOCAL_DIR= ${LOCALBASE}/share/aclocal
+AUTOMAKE_DIR= ${LOCALBASE}/share/automake
+BUILD_DEPENDS+= automake:${PORTSDIR}/devel/automake
+USE_AUTOCONF_VER= ${cur_acver}
+.elif ${use_amver} == ${old_amver} || ${use_amver} == ${dev_amver}
+ACLOCAL_DIR= ${LOCALBASE}/share/aclocal${use_amver}
+AUTOMAKE_DIR= ${LOCALBASE}/share/automake${use_amver}
+BUILD_DEPENDS+= automake${use_amver}:${PORTSDIR}/devel/automake${use_amver}
+ampath= ${LOCALBASE}/libexec/automake${use_amver}:
+.if ${use_amver} == ${old_amver}
+AUTOMAKE_ARGS+= -i
+USE_AUTOCONF_VER=${old_acver}
+.else
+USE_AUTOCONF_VER=${dev_acver}
+.endif # ${use_amver} == ${old_amver}
+.else # bad automake version
+BROKEN="unknown AUTOMAKE version: ${USE_AUTOMAKE_VER}"
+.endif # ${use_amver} == ${cur_amver}
+.endif # defined(USE_AUTOMAKE) || defined(USE_AUTOMAKE_VER)
+
+########## autoconf setup
+.if defined(USE_AUTOCONF) || defined(USE_AUTOCONF_VER)
+USE_AUTOCONF?= yes
+USE_AUTOCONF_VER?= ${old_acver}
+use_acver= ${USE_AUTOCONF_VER:L}
+.if ${use_acver} == ${cur_acver}
+AUTOCONF_DIR= ${LOCALBASE}/share/autoconf
+BUILD_DEPENDS+= autoconf:${PORTSDIR}/devel/autoconf
+USE_AUTOCONF_VER= ${cur_acver}
+.elif ${use_acver} == ${old_acver} || ${use_acver} == ${dev_acver}
+AUTOCONF_DIR= ${LOCALBASE}/share/autoconf${use_acver}
+BUILD_DEPENDS+= autoconf${use_acver}:${PORTSDIR}/devel/autoconf${use_acver}
+acpath= ${LOCALBASE}/libexec/autoconf${use_acver}
+.else # bad autoconf version
+BROKEN="unknown AUTOCONF version: ${USE_AUTOCONF_VER}"
+.endif # ${use_acver} == ${cur_acver}
+.endif # defined(USE_AUTOCONF) || defined(USE_AUTOCONF_VER)
+
+########## auto* ==> GNU 'configure'
+.if defined(USE_AUTOMAKE_VER) || defined(USE_AUTOCONF_VER)
GNU_CONFIGURE= yes
-.endif
-.if defined(USE_AUTOCONF_VER)
-BUILD_DEPENDS+= autoconf213:${PORTSDIR}/devel/autoconf213
-.endif
+.endif # defined(USE_AUTOMAKE_VER) || defined(USE_AUTOCONF_VER)
+
+########## set up paths to tools
+.if defined(ampath)
+autotools_path=${ampath}${acpath}
+.elif defined(acpath)
+autotools_path=${acpath}
+.endif # defined(ampath)
+
+########## prefix to path, add to env vars
+.if defined(autotools_path)
+MAKE_ENV+= PATH=${autotools_path}:${PATH}
+CONFIGURE_ENV+= PATH=${autotools_path}:${PATH}
+SCRIPTS_ENV+= PATH=${autotools_path}:${PATH}
+AUTOCONF_ENV+= PATH=${autotools_path}:${PATH}
+AUTOMAKE_ENV+= PATH=${autotools_path}:${PATH}
+AUTOTOOLS_ENV+= PATH=${autotools_path}:${PATH}
+.endif # defined(autotools_path)
+
+########## set up automake "names"
+.if defined(use_amver)
+.if !defined(ampath)
+ACLOCAL?= aclocal
+AUTOMAKE?= automake
+.else # defined(ampath)
+ACLOCAL?= ${ampath:S/://}/aclocal
+AUTOMAKE?= ${ampath:S/://}/automake
+.endif # !defined(ampath)
+.endif # defined(use_amver)
+
+########## set up autoconf "names"
+.if defined(use_acver)
+.if !defined(acpath)
+AUTOCONF?= autoconf
+AUTOHEADER?= autoheader
+AUTOIFNAMES?= ifnames
+AUTORECONF?= autoreconf
+AUTOSCAN?= autoscan
+AUTOUPDATE?= autoupdate
+.else # defined(acpath)
+AUTOCONF?= ${acpath}/autoconf
+AUTOHEADER?= ${acpath}/autoheader
+AUTOIFNAMES?= ${acpath}/ifnames
+AUTORECONF?= ${acpath}/autoreconf
+AUTOSCAN?= ${acpath}/autoscan
+AUTOUPDATE?= ${acpath}/autoupdate
+.endif # !defined(acpath)
+.endif # defined(use_acver)
+
+########## stupid port error checking
+# Set all unset vars for the programs to ${FALSE}. This way
+# we can catch a certain class of port Makefile errors quickly.
+ACLOCAL?= ${FALSE}
+AUTOMAKE?= ${FALSE}
+AUTOCONF?= ${FALSE}
+AUTOHEADER?=${FALSE}
+AUTOIFNAMES?=${FALSE}
+AUTORECONF?=${FALSE}
+AUTOSCAN?= ${FALSE}
+AUTOUPDATE?=${FALSE}
+
+# END AUTOMAKE/AUTOCONF
+######################################################################
+
.if defined(USE_LIBTOOL)
GNU_CONFIGURE= yes
BUILD_DEPENDS+= libtool:${PORTSDIR}/devel/libtool
@@ -1004,9 +1142,27 @@ PERL_VER?= 5.005
PERL_ARCH?= ${ARCH}-freebsd
.endif
.endif
+
+.if !defined(PERL_LEVEL)
+perl_major= ${PERL_VERSION:C|^([1-9]+).*|\1|}
+_perl_minor= 00${PERL_VERSION:C|^([1-9]+)\.([0-9]+).*|\2|}
+perl_minor= ${_perl_minor:C|^.*(...)|\1|}
+.if ${perl_minor} >= 100
+perl_minor= ${PERL_VERSION:C|^([1-9]+)\.([0-9][0-9][0-9]).*|\2|}
+perl_patch= ${PERL_VERSION:C|^.*(..)|\1|}
+.else # ${perl_minor} < 100
+_perl_patch= 0${PERL_VERSION:C|^([1-9]+)\.([0-9]+)\.*|0|}
+perl_patch= ${_perl_patch:C|^.*(..)|\1|}
+.endif # ${perl_minor} < 100
+PERL_LEVEL= ${perl_major}${perl_minor}${perl_patch}
+.endif # !defined(PERL_LEVEL)
+
+SITE_PERL?= ${LOCALBASE}/lib/perl5/site_perl/${PERL_VER}
+
PLIST_SUB+= PERL_VERSION=${PERL_VERSION} \
PERL_VER=${PERL_VER} \
- PERL_ARCH=${PERL_ARCH}
+ PERL_ARCH=${PERL_ARCH} \
+ SITE_PERL=${SITE_PERL:S|^${LOCALBASE}/||}
.if defined(PERL_CONFIGURE)
USE_PERL5= yes
@@ -1869,7 +2025,15 @@ XFREE86_HTML_MAN?= no
.endif
.endif
-# Put this for down as possible so it will catch all PLIST_SUB definitions.
+DOCSDIR?= ${PREFIX}/share/doc/${PORTNAME}
+EXAMPLESDIR?= ${PREFIX}/share/examples/${PORTNAME}
+DATADIR?= ${PREFIX}/share/${PORTNAME}
+
+PLIST_SUB+= DOCSDIR="${DOCSDIR:S,^${PREFIX}/,,}" \
+ EXAMPLESDIR="${EXAMPLESDIR:S,^${PREFIX}/,,}" \
+ DATADIR="${DATADIR:S,^${PREFIX}/,,}"
+
+# Put this as far down as possible so it will catch all PLIST_SUB definitions.
.if defined(INSTALLS_SHLIB)
LDCONFIG_DIRS?= %%PREFIX%%/lib
@@ -1877,10 +2041,6 @@ LDCONFIG_PLIST!= ${ECHO_CMD} ${LDCONFIG_DIRS} | ${SED} ${PLIST_SUB:S/$/!g/:S/^/
LDCONFIG_RUNLIST!= ${ECHO_CMD} ${LDCONFIG_PLIST} | ${SED} -e "s!%D!${PREFIX}!g"
.endif
-DOCSDIR?= ${PREFIX}/share/doc/${PORTNAME}
-EXAMPLESDIR?= ${PREFIX}/share/examples/${PORTNAME}
-DATADIR?= ${PREFIX}/share/${PORTNAME}
-
.MAIN: all
################################################################