aboutsummaryrefslogtreecommitdiff
path: root/Mk/bsd.autotools.mk
diff options
context:
space:
mode:
authorAde Lovett <ade@FreeBSD.org>2004-06-04 17:27:29 +0000
committerAde Lovett <ade@FreeBSD.org>2004-06-04 17:27:29 +0000
commite36045259908a038527b61ac84da649f2a520f0f (patch)
tree727b88562d7cc31f44e0e2cbc7eb2a112e6c0eed /Mk/bsd.autotools.mk
parentf50e24aaea1ec4cc8b411942b38010f004412f67 (diff)
downloadports-e36045259908a038527b61ac84da649f2a520f0f.tar.gz
ports-e36045259908a038527b61ac84da649f2a520f0f.zip
Over the past few weeks, we have been testing the next
incarnation of ports/Mk/bsd.autotools.mk on the road to bringing at least some semblance of sanity back to this corner of the ports collection. By far and away the easiest way to see the changes will be to view the new file once committed, but here is a summary of the changes: 1. USE_LIBTOOL, USE_AUTOCONF, USE_AUTOHEADER, USE_AUTOMAKE have been fully deprecated. Ports attempting to use these variables after the commit will error out, and most obviously break INDEX generation, with a helpful error message. Instead, ports must now specifically choose the version of any of these tools that they need with the corresponding USE_*_VER variables. Note that these variables understand any and all versions of autotools ports in the tree, there is no longer a need to have specific version numbers hardcoded in the infrastructure of bsd.autotools.mk (as there is now). In particular, this will immediately open up automake18 and autoconf259 for general use and beating. 2. Similarly for WANT_LIBTOOL, WANT_AUTOCONF, and WANT_AUTOMAKE. Again, these have been fully deprecated, and the equivalent WANT_*_VER versions should be used. In order to preserve existing behavior for these variables, please note the 20040314 entry in ports/CHANGES for the appropriate version numbers to use for any ports in the GNATS queue. Both WANT_* and USE_* bring in the relevant tool as a build dependency, and set up a reasonably large number of variables pointing to the right programs to be using in the port. The only difference at the moment, is that USE_* will run an extra autotools-related configuration step, whereas WANT_* merely requests the environment. 3. The helper knob USE_LIBLTDL has been added which currently simply adds a LIB dependency on the libltdl port. 4. Three new variables have been introduced, WANT_{LIBTOOL,AUTOCONF,AUTOMAKE}_RUN=yes. These variables will do nothing by themselves (a Work-In-Progress), but if the appropriate autotool version is defined (either through WANT_*_VER or USE_*_VER), this will add the relevant dependency to RUN_DEPENDS. Steps 3 and 4 now essentially negate the need for any kind of direct dependency within a non-autotools port Makefile on devel/autoconf*, devel/automake*, devel/libtool*, and devel/libltdl. PR: 66037 Reviewed by: 4-exp bento cluster
Notes
Notes: svn path=/head/; revision=110839
Diffstat (limited to 'Mk/bsd.autotools.mk')
-rw-r--r--Mk/bsd.autotools.mk641
1 files changed, 330 insertions, 311 deletions
diff --git a/Mk/bsd.autotools.mk b/Mk/bsd.autotools.mk
index c6e1469a99b0..b1e27da628af 100644
--- a/Mk/bsd.autotools.mk
+++ b/Mk/bsd.autotools.mk
@@ -2,362 +2,381 @@
# ex:ts=4
#
# $FreeBSD$
+#
# Please view me with 4 column tabs!
+#
# Please make sure all changes to this file are passed either through
-# the maintainer, or portmgr
+# the maintainer, or portmgr@FreeBSD.org
Autotools_Include_MAINTAINER= ade@FreeBSD.org
-# USE_AUTOCONF_VER (PORT MAY SET THIS VALUE)
-# - Implies USE_AUTOCONF.
-# - Implies WANT_AUTOCONF_VER=(value)
-# USE_AUTOCONF (PORT MAY SET THIS VALUE)
-# - Implies WANT_AUTOCONF_VER?=213.
-# - Causes autoconf execution prior to configure step.
-# USE_AUTOHEADER (PORT MAY SET THIS VALUE)
-# - Implies USE_AUTOCONF.
-# WANT_AUTOCONF_VER (PORT MAY SET THIS VALUE)
-# - Implies GNU_CONFIGURE=yes.
-# - Says that the port wants autoconf; legal values
-# are: 213, 253, 257.
-# - Each specify a version of autoconf to use
-# and appropriatly set AUTOCONF{,_DIR} and other
-# autoconf-related program paths.
-# - 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.
-# AUTOHEADER_ARGS (PORT MAY ALTER THIS VALUE)
-# - Pass these args to ${AUTOHEADER} if ${USE_AUTOHEADER}
-# 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_VER (PORT MAY SET THIS VALUE)
-# - Implies USE_LIBTOOL.
-# - Implies WANT_LIBTOOL_VER=(value)
-# USE_LIBTOOL (PORT MAY SET THIS VALUE)
-# - Says that the port uses Libtool.
-# - Implies GNU_CONFIGURE.
-# - Implies WANT_LIBTOOL_VER?=13
-# LIBTOOL (READ-ONLY)
-# - Set to path of libtool (default:
-# according to USE_LIBTOOL_VER value)
-# LIBTOOLIZE (READ-ONLY)
-# - Set to path of libtoolize (default:
-# according to USE_LIBTOOL_VER value)
-# LIBTOOL_VERSION (READ-ONLY)
-# - Exported version of USE_LIBTOOL_VER
-# LIBTOOL_SHAREDIR (READ-ONLY)
-# - Set to path of GNU libtool shared directory (default:
-# according to USE_LIBTOOL_VER value)
-# LIBTOOL_LIBEXECDIR (READ-ONLY)
-# - Set to path of GNU libtool libexec directory (default:
-# according to USE_LIBTOOL_VER value)
-# LIBTOOLFILES - Files to patch for libtool (defaults: "aclocal.m4" if
-# USE_AUTOCONF is set, "configure" otherwise).
-# LIBTOOLFLAGS - Additional flags to pass to ltconfig
-# (default: --disable-ltlibs)
-
-######################################################################
-# AUTOMAKE/AUTOCONF
-# current => non-renamed, non-relocated version
-
-########## 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
-
-##########
-#.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= 257
-
-########## automake setup
+#---------------------------------------------------------------------------
+# Entry points into the autotools system
+#---------------------------------------------------------------------------
+#
+# USE_AUTOMAKE_VER=<value>
+# - Port wishes to use automake, including the configuration step
+# - Implies GNU_CONFIGURE?=yes and WANT_AUTOMAKE_VER=<value>
+#
+# WANT_AUTOMAKE_VER=<value>
+# - Port needs access to the automake build environment
+#
+# WANT_AUTOMAKE_RUN=yes
+# - Port also needs access to automake as a run-time dependency
+# This is a NULL-OP if neither {USE,WANT}_AUTOMAKE_VER are defined
+#
+# AUTOMAKE_ARGS=...
+# - Extra arguments passed to automake during configure step
+#
+#---------------------------------------------------------------------------
+#
+# USE_AUTOCONF_VER=<value>
+# - Port wishes to use autoconf, including the configuration step
+# - Implies GNU_CONFIGURE?=yes and WANT_AUTOCONF_VER=<value>
+#
+# USE_AUTOHEADER_VER=<value>
+# - Port wishes to use autoheader in the configuration step
+# - Implies USE_AUTOCONF_VER=<value>
+#
+# WANT_AUTOCONF_VER=<value>
+# - Port needs access to the autoconf build environment
+#
+# WANT_AUTOCONF_RUN=yes
+# - Port also needs access to autoconf as a run-time dependency
+# This is a NULL-OP if neither {USE,WANT}_AUTOCONF_VER are defined
+#
+# AUTOCONF_ARGS=...
+# - Extra arguments passed to autoconf during configure step
+#
+# AUTOHEADER_ARGS=...
+# - Extra arguments passed to autoheader during configure step
+#
+#---------------------------------------------------------------------------
+#
+# USE_LIBLTDL=yes
+# - Convenience knob to depend on the library from devel/libltdl
+#
+# USE_LIBTOOL_VER=<value>
+# - Port wishes to use libtool, including the configuration step
+# - Implies GNU_CONFIGURE?=yes and WANT_LIBTOOL_VER=<value>
+#
+# WANT_LIBTOOL_VER=<value>
+# - Port needs access to the libtool build environment
+#
+# WANT_LIBTOOL_RUN=yes
+# - Port also needs access to autoconf as a run-time dependency
+# This is a NULL-OP if neither {USE,WANT}_LIBTOOL_VER are defined
+#
+# LIBTOOLFLAGS=<value>
+# - Arguments passed to libtool during configure step
+# Currently defaults to "--disable-ltlibs", but this will be going
+# away when libtool .la files are brought back
+#
+# LIBTOOLFILES=<list-of-files>
+# - A list of files to patch during libtool pre-configuration
+# Defaults to "aclocal.m4" if autoconf is in use, otherwise "configure"
+#
+#---------------------------------------------------------------------------
+# Major changes:
+#
+# - USE_AUTOMAKE, USE_AUTOCONF, USE_AUTOHEADER, and USE_LIBTOOL have
+# been deprecated in favor of USE_<x>_VER=...
+# As of 4/21/2004, changes should be made as follows:
+# USE_AUTOMAKE -> USE_AUTOMAKE_VER=14
+# USE_AUTOCONF -> USE_AUTOCONF_VER=213
+# USE_AUTOHEADER -> USE_AUTOHEADER_VER=213
+# USE_LIBTOOL -> USE_LIBTOOL_VER=13
+# Currently, an error message is kicked out, and make(1) will stop
+# if any of these deprecated variables are used.
+#
+# - additional variables WANT_{AUTOMAKE,AUTOCONF,AUTOHEADER,LIBTOOL}_RUN
+# have been added to include a run-time dependency on the appropriate
+# autotools port, as part of work in progress to remove ALL explicit
+# dependencies on autotools in port Makefiles, in favor of using the
+# autotools knobs
+#
+# - USE_LIBLTDL has been added as a convenience function to provide
+# a lib dependency on devel/libltdl, so that if the major version
+# number changes in future, only one item has to be updated
+#
+# - {WANT,USE}_AUTOMAKE_VER no longer automatically brings in
+# autoconf as before, to allow for greater flexibility in version
+# matching, and to simplify bsd.autotools.mk
+# It is now the port Makefile responsibility to specifically bring
+# in the "appropriate" version of autoconf if automake is specified.
+# The mappings are as follows (automake,autoconf pairs):
+# (14,213) (15,253) (17,257) (18,259)
+#
+# - Only set GNU_CONFIGURE automatically if USE_<x>_VER is specified,
+# since WANT_<x>_VER implies that we want the environment, but not
+# the configuration steps. XXX: this may break some ports
+#
+# Things to do:
+# - Move both autoconf and automake to true versioned ports
+# (devel/autoconf253 and devel/automake14 respectively). This is
+# likely to break a number of ports that make assumptions about
+# "autoconf", "automake", et al. but is required if we are to move
+# to strictly-versioned autotools.
+#
+# - Work on killing off as many "old" autotools ports as possible
+#
+# - Bring back the installation of libtool .la files by default, removing
+# those FreeBSD-specific knobs added to prevent this
+#
+# - Migrate the myriad of autotools-related knobs into a single
+# USE_AUTOTOOLS=... (to be defined) variable, akin to USE_GNOME=...
+
+#---------------------------------------------------------------------------
+# DEPRECATED ENTRY POINTS
+#---------------------------------------------------------------------------
+
+.for i in AUTOMAKE AUTOCONF AUTOHEADER LIBTOOL
+. if defined(USE_${i})
+. error USE_${i} deprecated: replace with USE_${i}_VER=...
+. endif
+.endfor
+
+#---------------------------------------------------------------------------
+# AUTOMAKE
+#---------------------------------------------------------------------------
+
.if defined(USE_AUTOMAKE_VER)
-USE_AUTOMAKE?= yes
WANT_AUTOMAKE_VER?= ${USE_AUTOMAKE_VER}
-.endif # defined(USE_AUTOMAKE_VER)
-.if defined(USE_AUTOMAKE)
-USE_AUTOCONF?= yes
-WANT_AUTOMAKE_VER?= ${old_amver}
-.endif # defined(USE_AUTOMAKE)
-.if defined(WANT_AUTOMAKE_VER)
GNU_CONFIGURE?= yes
-use_amver= ${WANT_AUTOMAKE_VER:L}
-.if ${use_amver} == ${cur_amver}
-ACLOCAL_DIR= ${LOCALBASE}/share/aclocal
-AUTOMAKE_DIR= ${LOCALBASE}/share/automake
-BUILD_DEPENDS+= ${LOCALBASE}/bin/automake:${PORTSDIR}/devel/automake
-WANT_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}
-.if ${use_amver} == ${old_amver}
-ampath= ${LOCALBASE}/libexec/automake${use_amver}:
-BUILD_DEPENDS+= ${ampath:S/://}/automake:${PORTSDIR}/devel/automake${use_amver}
-AUTOMAKE_ARGS+= -i
-WANT_AUTOCONF_VER?=${old_acver}
-.else
-BUILD_DEPENDS+= ${LOCALBASE}/bin/automake${dev_amver}:${PORTSDIR}/devel/automake${dev_amver}
-WANT_AUTOCONF_VER?=${dev_acver}
-.endif # ${use_amver} == ${old_amver}
-.else # bad automake version
-BROKEN="unknown AUTOMAKE version: ${use_amver}"
-.endif # ${use_amver} == ${cur_amver}
-.endif # defined(WANT_AUTOMAKE_VER)
-
-########## autoconf setup
+.endif
+
+.if defined(WANT_AUTOMAKE_VER)
+
+# XXX: hackery to handle non-versioned "legacy" ports
+# destined to die
+#
+. if ${WANT_AUTOMAKE_VER} == 15
+AUTOMAKE_SUFFIX= # empty
+. else
+AUTOMAKE_SUFFIX= ${WANT_AUTOMAKE_VER}
+. endif
+
+# Make sure we specified a legal version of automake
+#
+. if !exists(${PORTSDIR}/devel/automake${AUTOMAKE_SUFFIX}/Makefile)
+. error Unknown AUTOMAKE version: ${WANT_AUTOMAKE_VER}
+. endif
+
+# Set up the automake environment
+#
+AUTOMAKE= ${LOCALBASE}/bin/automake${AUTOMAKE_SUFFIX}
+AUTOMAKE_DIR= ${LOCALBASE}/share/automake${AUTOMAKE_SUFFIX}
+ACLOCAL= ${LOCALBASE}/bin/aclocal${AUTOMAKE_SUFFIX}
+ACLOCAL_DIR= ${LOCALBASE}/share/aclocal${AUTOMAKE_SUFFIX}
+AUTOMAKE_PATH= ${LOCALBASE}/libexec/automake${AUTOMAKE_SUFFIX}:
+AUTOMAKE_VARS= ACLOCAL=${ACLOCAL} AUTOMAKE=${AUTOMAKE}
+AUTOMAKE_VERSION= ${WANT_AUTOMAKE_VER}
+
+AUTOMAKE_DEPENDS= ${AUTOMAKE}:${PORTSDIR}/devel/automake${AUTOMAKE_SUFFIX}
+BUILD_DEPENDS+= ${AUTOMAKE_DEPENDS}
+. if defined(WANT_AUTOMAKE_RUN)
+RUN_DEPENDS+= ${AUTOMAKE_DEPENDS}
+. endif
+
+# XXX: here be dragons, for some reason
+#
+. if ${WANT_AUTOMAKE_VER} == 14
+AUTOMAKE_ARGS+= -i
+. endif
+
+.endif
+
+#---------------------------------------------------------------------------
+# AUTOCONF/AUTOHEADER
+#---------------------------------------------------------------------------
+
+.if defined(USE_AUTOHEADER_VER)
+USE_AUTOCONF_VER?= ${USE_AUTOHEADER_VER}
+.endif
+
.if defined(USE_AUTOCONF_VER)
-USE_AUTOCONF?= yes
WANT_AUTOCONF_VER?= ${USE_AUTOCONF_VER}
-.endif # defined(USE_AUTOCONF_VER)
-.if defined(USE_AUTOHEADER)
-USE_AUTOCONF?= yes
-.endif # defined(USE_AUTOHEADER)
-.if defined(USE_AUTOCONF)
-WANT_AUTOCONF_VER?= ${old_acver}
-.endif # defined(USE_AUTOCONF)
-.if defined(WANT_AUTOCONF_VER)
GNU_CONFIGURE?= yes
-use_acver= ${WANT_AUTOCONF_VER:L}
-.if ${use_acver} == ${cur_acver}
-AUTOCONF_DIR= ${LOCALBASE}/share/autoconf
-BUILD_DEPENDS+= ${LOCALBASE}/bin/autoconf:${PORTSDIR}/devel/autoconf
-.elif ${use_acver} == ${old_acver}
-AUTOCONF_DIR= ${LOCALBASE}/share/autoconf${use_acver}
-acpath= ${LOCALBASE}/libexec/autoconf${use_acver}
-BUILD_DEPENDS+= ${acpath}/autoconf:${PORTSDIR}/devel/autoconf${use_acver}
-.elif ${use_acver} == ${dev_acver}
-AUTOCONF_DIR= ${LOCALBASE}/share/autoconf${dev_acver}
-BUILD_DEPENDS+= ${LOCALBASE}/bin/autoconf${dev_acver}:${PORTSDIR}/devel/autoconf${dev_acver}
-.else # bad autoconf version
-BROKEN="unknown AUTOCONF version: ${use_acver}"
-.endif # ${use_acver} == ${cur_acver}
-.endif # defined(WANT_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}
-AUTOHEADER_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)
-.if ${use_amver} == ${cur_amver}
-ACLOCAL?= aclocal
-AUTOMAKE?= automake
-.else
-ACLOCAL?= aclocal${dev_amver}
-AUTOMAKE?= automake${dev_amver}
.endif
-.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)
-.if ${use_acver} == ${cur_acver}
-AUTOCONF?= autoconf
-AUTOHEADER?= autoheader
-AUTOIFNAMES?= ifnames
-AUTORECONF?= autoreconf
-AUTOSCAN?= autoscan
-AUTOUPDATE?= autoupdate
-.else
-AUTOCONF?= autoconf${dev_acver}
-AUTOHEADER?= autoheader${dev_acver}
-AUTOIFNAMES?= ifnames${dev_acver}
-AUTORECONF?= autoreconf${dev_acver}
-AUTOSCAN?= autoscan${dev_acver}
-AUTOUPDATE?= autoupdate${dev_acver}
+
+# Sanity checking - we can't use a different version of
+# autoheader and autoconf
+#
+.if defined(USE_AUTOHEADER_VER) && defined(USE_AUTOCONF_VER) && \
+ ${USE_AUTOHEADER_VER} != ${USE_AUTOCONF_VER}
+.error Incompatible autoheader ${USE_AUTOHEADER_VER} and autoconf ${USE_AUTOCONF_VER}
.endif
-.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}
-ACLOCAL_DIR?=${NONEXISTENT}
-AUTOMAKE_DIR?=${NONEXISTENT}
-AUTOCONF_DIR?=${NONEXISTENT}
-
-# END AUTOMAKE/AUTOCONF
-######################################################################
-
-######################################################################
-# LIBTOOL
-.if defined(USE_LIBTOOL_VER)
-USE_LIBTOOL?= yes
-WANT_LIBTOOL_VER?= ${USE_LIBTOOL_VER}
+.if defined(WANT_AUTOHEADER_VER) && defined(WANT_AUTOCONF_VER) && \
+ ${WANT_AUTOHEADER_VER} != ${WANT_AUTOCONF_VER}
+.error Incompatible autoheader ${WANT_AUTOHEADER_VER} and autoconf ${WANT_AUTOCONF_VER}
.endif
-.if defined(USE_LIBTOOL)
-GNU_CONFIGURE= yes
-WANT_LIBTOOL_VER?= 13
+.if defined(WANT_AUTOCONF_VER)
+
+# XXX: hackery to handle non-versioned "legacy" ports
+# destined to die
+#
+. if ${WANT_AUTOCONF_VER} == 253
+AUTOCONF_SUFFIX= # empty
+. else
+AUTOCONF_SUFFIX= ${WANT_AUTOCONF_VER}
+. endif
+
+# Make sure we specified a legal version of autoconf
+#
+. if !exists(${PORTSDIR}/devel/autoconf${AUTOCONF_SUFFIX}/Makefile)
+. error Unknown AUTOCONF version: ${WANT_AUTOCONF_VER}
+. endif
+
+# Set up the autoconf/autoheader environment
+#
+AUTOCONF= ${LOCALBASE}/bin/autoconf${AUTOCONF_SUFFIX}
+AUTOCONF_DIR= ${LOCALBASE}/share/autoconf${AUTOCONF_SUFFIX}
+AUTOHEADER= ${LOCALBASE}/bin/autoheader${AUTOCONF_SUFFIX}
+AUTOIFNAMES= ${LOCALBASE}/bin/ifnames${AUTOCONF_SUFFIX}
+AUTOM4TE= ${LOCALBASE}/bin/autom4te${AUTOCONF_SUFFIX}
+AUTORECONF= ${LOCALBASE}/bin/autoreconf${AUTOCONF_SUFFIX}
+AUTOSCAN= ${LOCALBASE}/bin/autoscan${AUTOCONF_SUFFIX}
+AUTOUPDATE= ${LOCALBASE}/bin/autoupdate${AUTOCONF_SUFFIX}
+AUTOCONF_PATH= ${LOCALBASE}/libexec/autoconf${AUTOCONF_SUFFIX}:
+AUTOCONF_VARS= AUTOCONF=${AUTOCONF} AUTOHEADER=${AUTOHEADER} AUTOIFNAMES=${AUTOIFNAMES} AUTOM4TE=${AUTOM4TE} AUTORECONF=${AUTORECONF} AUTOSCAN=${AUTOSCAN} AUTOUPDATE=${AUTOUPDATE}
+AUTOCONF_VERSION= ${WANT_AUTOCONF_VER}
+
+AUTOCONF_DEPENDS= ${AUTOCONF}:${PORTSDIR}/devel/autoconf${AUTOCONF_SUFFIX}
+BUILD_DEPENDS+= ${AUTOCONF_DEPENDS}
+. if defined(WANT_AUTOCONF_RUN) || defined(WANT_AUTOHEADER_RUN)
+RUN_DEPENDS+= ${AUTOCONF_DEPENDS}
+. endif
+
.endif
-.if defined(WANT_LIBTOOL_VER)
-LIBTOOL_VERSION= ${WANT_LIBTOOL_VER:L}
+#---------------------------------------------------------------------------
+# LIBTOOL/LIBLTDL
+#---------------------------------------------------------------------------
-.if exists(${PORTSDIR}/devel/libtool${LIBTOOL_VERSION}/Makefile)
-LIBTOOL_SHAREDIR= ${LOCALBASE}/share/libtool${LIBTOOL_VERSION}
-LIBTOOL_LIBEXECDIR= ${LOCALBASE}/libexec/libtool${LIBTOOL_VERSION}
-BUILD_DEPENDS+= ${LIBTOOL_LIBEXECDIR}/libtool:${PORTSDIR}/devel/libtool${LIBTOOL_VERSION}
-.else
-BROKEN="unknown LIBTOOL version: ${USE_LIBTOOL_VER}"
+# Convenience function to save people having to depend directly on
+# devel/libltdl
+#
+.if defined(USE_LIBLTDL)
+LIB_DEPENDS+= ltdl.4:${PORTSDIR}/devel/libltdl
.endif
-.if defined(USE_AUTOCONF)
+.if defined(USE_LIBTOOL_VER)
+GNU_CONFIGURE?= yes
+WANT_LIBTOOL_VER?= ${USE_LIBTOOL_VER}
+.endif
+
+# Note that there aren't any non-versioned libtools, so we can skip
+# a little bit of cruft that exists in automake/autoconf above
+#
+.if defined(WANT_LIBTOOL_VER)
+LIBTOOL_SUFFIX= ${WANT_LIBTOOL_VER}
+
+# Make sure we specified a legal version of libtool
+#
+. if !exists(${PORTSDIR}/devel/libtool${LIBTOOL_SUFFIX}/Makefile)
+. error Unknown LIBTOOL version: ${WANT_LIBTOOL_VER}
+. endif
+
+# Set up the libtool environment
+#
+LIBTOOL= ${LOCALBASE}/bin/libtool${LIBTOOL_SUFFIX}
+LIBTOOLIZE= ${LOCALBASE}/bin/libtoolize${LIBTOOL_SUFFIX}
+LIBTOOL_LIBEXECDIR= ${LOCALBASE}/libexec/libtool${LIBTOOL_SUFFIX}
+LIBTOOL_SHAREDIR= ${LOCALBASE}/share/libtool${LIBTOOL_SUFFIX}
+LIBTOOL_PATH= ${LIBTOOL_LIBEXECDIR}:
+LIBTOOL_VARS= LIBTOOL=${LIBTOOL} LIBTOOLIZE=${LIBTOOLIZE}
+LIBTOOL_VERSION= ${WANT_LIBTOOL_VER}
+
+LIBTOOL_DEPENDS= ${LIBTOOL}:${PORTSDIR}/devel/libtool${LIBTOOL_SUFFIX}
+BUILD_DEPENDS+= ${LIBTOOL_DEPENDS}
+. if defined(WANT_LIBTOOL_RUN)
+RUN_DEPENDS+= ${LIBTOOL_DEPENDS}
+. endif
+
+LIBTOOLFLAGS?= --disable-ltlibs # XXX: probably not useful
+. if defined(USE_AUTOCONF_VER)
LIBTOOLFILES?= aclocal.m4
-.else
+. else
LIBTOOLFILES?= configure
-.endif
+. endif
-LIBTOOLFLAGS?= --disable-ltlibs
.endif
-########## prefix to path, add to env vars
-.if defined(LIBTOOL_LIBEXECDIR)
-MAKE_ENV+= PATH=${LIBTOOL_LIBEXECDIR}:${PATH}
-CONFIGURE_ENV+= PATH=${LIBTOOL_LIBEXECDIR}:${PATH}
-SCRIPTS_ENV+= PATH=${LIBTOOL_LIBEXECDIR}:${PATH}
-AUTOCONF_ENV+= PATH=${LIBTOOL_LIBEXECDIR}:${PATH}
-AUTOMAKE_ENV+= PATH=${LIBTOOL_LIBEXECDIR}:${PATH}
-AUTOTOOLS_ENV+= PATH=${LIBTOOL_LIBEXECDIR}:${PATH}
-.endif # defined(ltpath)
+#---------------------------------------------------------------------------
+# Environmental handling
+# Now that we've got our environments defined for autotools, add them
+# in so that the rest of the world can handle them
+#
+AUTOTOOLS_PATH= ${AUTOMAKE_PATH}${AUTOCONF_PATH}${LIBTOOL_PATH}
+AUTOTOOLS_VARS= ${AUTOMAKE_VARS} ${AUTOCONF_VARS} ${LIBTOOL_VARS}
+
+.if defined(AUTOTOOLS_PATH) && (${AUTOTOOLS_PATH} != "")
+AUTOTOOLS_ENV+= PATH=${AUTOTOOLS_PATH}${PATH}
+CONFIGURE_ENV+= PATH=${AUTOTOOLS_PATH}${PATH}
+MAKE_ENV+= PATH=${AUTOTOOLS_PATH}${PATH}
+SCRIPTS_ENV+= PATH=${AUTOTOOLS_PATH}${PATH}
+. if defined(WANT_AUTOMAKE_VER)
+AUTOMAKE_ENV+= PATH=${AUTOTOOLS_PATH}${PATH}
+. endif
+. if defined(WANT_AUTOCONF_VER)
+AUTOCONF_ENV+= PATH=${AUTOTOOLS_PATH}${PATH}
+. endif
+. if defined(WANT_AUTOHEADER_VER)
+AUTOHEADER_ENV+=PATH=${AUTOTOOLS_PATH}${PATH}
+. endif
+.endif
-LIBTOOL?= ${LIBTOOL_LIBEXECDIR}/libtool
-LIBTOOLIZE?= ${LIBTOOL_LIBEXECDIR}/libtoolize
+.if defined(AUTOTOOLS_VARS) && (${AUTOTOOLS_VARS} != "")
+AUTOTOOLS_ENV+= ${AUTOTOOLS_VARS}
+CONFIGURE_ENV+= ${AUTOTOOLS_VARS}
+MAKE_ENV+= ${AUTOTOOLS_VARS}
+SCRIPTS_ENV+= ${AUTOTOOLS_VARS}
+. if defined(WANT_AUTOMAKE_VER)
+AUTOMAKE_ENV+= ${AUTOTOOLS_VARS}
+. endif
+. if defined(WANT_AUTOCONF_VER)
+AUTOCONF_ENV+= ${AUTOTOOLS_VARS}
+. endif
+. if defined(WANT_AUTOHEADER_VER)
+AUTOHEADER_ENV+=${AUTOTOOLS_VARS}
+. endif
+.endif
-# END LIBTOOL
-######################################################################
+#---------------------------------------------------------------------------
+# Make targets
+#---------------------------------------------------------------------------
+# run-autotools
+#
+# Part of the configure set - run appropriate programs prior to
+# the actual configure target if autotools are in use
+#
.if !target(run-autotools)
run-autotools:
-.if defined(USE_AUTOMAKE)
- @(cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOMAKE_ENV} ${AUTOMAKE} \
+.if defined(USE_AUTOMAKE_VER)
+ @(cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOTOOLS_ENV} ${AUTOMAKE} \
${AUTOMAKE_ARGS})
.endif
-.if defined(USE_AUTOCONF)
- @(cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOCONF_ENV} ${AUTOCONF} \
+.if defined(USE_AUTOCONF_VER)
+ @(cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOTOOLS_ENV} ${AUTOCONF} \
${AUTOCONF_ARGS})
.endif
-.if defined(USE_AUTOHEADER)
- @(cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOHEADER_ENV} ${AUTOHEADER} \
+.if defined(USE_AUTOHEADER_VER)
+ @(cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOTOOLS_ENV} ${AUTOHEADER} \
${AUTOHEADER_ARGS})
.endif
.endif
-# patch-autools
+# patch-autotools
#
# Special target to automatically make libtool using ports use the
# 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 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
-# replaced. The port's configure script therefore uses the files
-# installed by the libtool port in place of it's own.
-#
-# Also passed to ltconfig are ${LIBTOOLFLAGS}, which can be used to
-# customise the behaviour of the port. Besides the normal flags the
-# freebsd port of libtool supports three special flags:
-# --disable-ltlibs Don't install the .la files. (on by default)
-# --release-ignore Ignore any -release flags. (off by default)
-# --release-suffix Add the -release to all libraries, not just
-# the shared library. (off by default)
-#
-
.if !target(patch-autotools)
patch-autotools:
-.if defined(USE_LIBTOOL)
+.if defined(USE_LIBTOOL_VER)
@(cd ${PATCH_WRKSRC}; \
for file in ${LIBTOOLFILES}; do \
${CP} $$file $$file.tmp; \