diff options
author | Ade Lovett <ade@FreeBSD.org> | 2004-04-19 01:37:12 +0000 |
---|---|---|
committer | Ade Lovett <ade@FreeBSD.org> | 2004-04-19 01:37:12 +0000 |
commit | 08b6cdcb5e94e06df62cf2c3f94a9b56243cb722 (patch) | |
tree | 3f774b691c85dca8c9c9c6d0e1e5a8a04163f16f /Mk/bsd.autotools.mk | |
parent | 0fd102c0a7eb7369550093c27e80aeb38b95f48d (diff) | |
download | ports-08b6cdcb5e94e06df62cf2c3f94a9b56243cb722.tar.gz ports-08b6cdcb5e94e06df62cf2c3f94a9b56243cb722.zip |
Notes
Diffstat (limited to 'Mk/bsd.autotools.mk')
-rw-r--r-- | Mk/bsd.autotools.mk | 371 |
1 files changed, 371 insertions, 0 deletions
diff --git a/Mk/bsd.autotools.mk b/Mk/bsd.autotools.mk new file mode 100644 index 000000000000..c6e1469a99b0 --- /dev/null +++ b/Mk/bsd.autotools.mk @@ -0,0 +1,371 @@ +#-*- mode: makefile; tab-width: 4; -*- +# 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 + +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 +.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 +.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} +.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} +.endif + +.if defined(USE_LIBTOOL) +GNU_CONFIGURE= yes +WANT_LIBTOOL_VER?= 13 +.endif + +.if defined(WANT_LIBTOOL_VER) +LIBTOOL_VERSION= ${WANT_LIBTOOL_VER:L} + +.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}" +.endif + +.if defined(USE_AUTOCONF) +LIBTOOLFILES?= aclocal.m4 +.else +LIBTOOLFILES?= configure +.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) + +LIBTOOL?= ${LIBTOOL_LIBEXECDIR}/libtool +LIBTOOLIZE?= ${LIBTOOL_LIBEXECDIR}/libtoolize + +# END LIBTOOL +###################################################################### + +.if !target(run-autotools) +run-autotools: +.if defined(USE_AUTOMAKE) + @(cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOMAKE_ENV} ${AUTOMAKE} \ + ${AUTOMAKE_ARGS}) +.endif +.if defined(USE_AUTOCONF) + @(cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOCONF_ENV} ${AUTOCONF} \ + ${AUTOCONF_ARGS}) +.endif +.if defined(USE_AUTOHEADER) + @(cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOHEADER_ENV} ${AUTOHEADER} \ + ${AUTOHEADER_ARGS}) +.endif +.endif + +# patch-autools +# +# 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) + @(cd ${PATCH_WRKSRC}; \ + for file in ${LIBTOOLFILES}; do \ + ${CP} $$file $$file.tmp; \ + ${SED} -e "s^\$$ac_aux_dir/ltconfig^${LIBTOOL_SHAREDIR}/ltconfig${LIBTOOL_VERSION}^g" \ + -e "/^ltmain=/!s^\$$ac_aux_dir/ltmain.sh^${LIBTOOLFLAGS} ${LIBTOOL_SHAREDIR}/ltmain.sh^g" \ + $$file.tmp > $$file; \ + done); +.else + @${DO_NADA} +.endif +.endif |