#-*- 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@FreeBSD.org Autotools_Include_MAINTAINER= ade@FreeBSD.org #--------------------------------------------------------------------------- # IMPORTANT! READ ME! YES, THAT MEANS YOU! # # The "versioned" autotools referenced here are for BUILDING other ports # only. THIS CANNOT BE STRESSED HIGHLY ENOUGH. Things WILL BREAK if you # try to use them for anything other than ports/ work. This particularly # includes use as a run-time dependency. # # If you need unmodified versions of autotools, such as for use in an # IDE, then you MUST use the devel/gnu-* equivalents, and NOT these. # See devel/anjuta and devel/kdevelop for examples. # # You have been WARNED! #--------------------------------------------------------------------------- #--------------------------------------------------------------------------- # Entry point into the autotools system #--------------------------------------------------------------------------- # # USE_AUTOTOOLS= tool:version[:inc | :env] ... # # 'tool' can currently be one of: # libtool, libltdl, autoconf, autoheader, automake, aclocal # # 'version' is tool dependent # # ':inc' is for libtool only, and is used to modify the patch-autotools # target to use the relevant included version of libtool # # ':env' is for autoconf/autoheader/automake/aclocal and is used to # specify that the environment variables are needed, but the relevant # tool should NOT be run as part of the run-autotools target # # XXX: there is currently no sanity checking of the supplied variables # other than to detect actually available versions. This should # probably be fixed at some point. # # In addition, the following variables can be set in the port Makefile # to be passed to the relevant tools: # # AUTOMAKE_ARGS=... # - Extra arguments passed to automake during configure step # # ACLOCAL_ARGS=... # - Arguments passed to aclocal during configure step # # AUTOCONF_ARGS=... # - Extra arguments passed to autoconf during configure step # # AUTOHEADER_ARGS=... # - Extra arguments passed to autoheader during configure step # # LIBTOOLFLAGS= # - 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= # - A list of files to patch during libtool pre-configuration # Defaults to "aclocal.m4" if autoconf is in use, otherwise "configure" # #--------------------------------------------------------------------------- # XXX: here be dragons :) # .for item in ${USE_AUTOTOOLS} AUTOTOOL_${item:C/^([^:]+).*/\1/}${item:M*\:*\:*:C/^[^:]+:[^:]+:([^:]+)/_\1/}= ${item:C/^[^:]+:([^:]+).*/\1/} .endfor #--------------------------------------------------------------------------- # AUTOMAKE/ACLOCAL #--------------------------------------------------------------------------- .if defined(AUTOTOOL_automake) AUTOTOOL_automake_env= ${AUTOTOOL_automake} GNU_CONFIGURE?= yes .endif .if defined(AUTOTOOL_aclocal) AUTOTOOL_automake_env= ${AUTOTOOL_aclocal} GNU_CONFIGURE?= yes .endif .if defined(AUTOTOOL_automake_env) AUTOMAKE_VERSION= ${AUTOTOOL_automake_env} # Make sure we specified a legal version of automake # . if !exists(${PORTSDIR}/devel/automake${AUTOMAKE_VERSION}/Makefile) BROKEN+= Unknown AUTOMAKE version: ${AUTOMAKE_VERSION} . endif # Set up the automake environment # AUTOMAKE= ${LOCALBASE}/bin/automake${AUTOMAKE_VERSION} AUTOMAKE_DIR= ${LOCALBASE}/share/automake${AUTOMAKE_VERSION} ACLOCAL= ${LOCALBASE}/bin/aclocal${AUTOMAKE_VERSION} ACLOCAL_DIR= ${LOCALBASE}/share/aclocal${AUTOMAKE_VERSION} AUTOMAKE_PATH= ${LOCALBASE}/libexec/automake${AUTOMAKE_VERSION}: AUTOMAKE_VARS= ACLOCAL=${ACLOCAL} AUTOMAKE=${AUTOMAKE} AUTOMAKE_DEPENDS= ${AUTOMAKE}:${PORTSDIR}/devel/automake${AUTOMAKE_VERSION} BUILD_DEPENDS+= ${AUTOMAKE_DEPENDS} # XXX: backwards compatibility shim # . if ${AUTOMAKE_VERSION} == 14 AUTOMAKE_ARGS+= -i . endif . if defined(AUTOTOOL_aclocal) ACLOCAL_ARGS?= --acdir=${ACLOCAL_DIR} . endif .endif #--------------------------------------------------------------------------- # AUTOCONF/AUTOHEADER #--------------------------------------------------------------------------- .if defined(AUTOTOOL_autoheader) AUTOTOOL_autoconf= ${AUTOTOOL_autoheader} .endif .if defined(AUTOTOOL_autoconf) AUTOTOOL_autoconf_env= ${AUTOTOOL_autoconf} GNU_CONFIGURE?= yes .endif .if defined(AUTOTOOL_autoconf_env) AUTOCONF_VERSION= ${AUTOTOOL_autoconf_env} # Make sure we specified a legal version of autoconf # . if !exists(${PORTSDIR}/devel/autoconf${AUTOCONF_VERSION}/Makefile) BROKEN+= Unknown AUTOCONF version: ${AUTOCONF_VERSION} . endif # Set up the autoconf/autoheader environment # AUTOCONF= ${LOCALBASE}/bin/autoconf${AUTOCONF_VERSION} AUTOCONF_DIR= ${LOCALBASE}/share/autoconf${AUTOCONF_VERSION} AUTOHEADER= ${LOCALBASE}/bin/autoheader${AUTOCONF_VERSION} AUTOIFNAMES= ${LOCALBASE}/bin/ifnames${AUTOCONF_VERSION} AUTOM4TE= ${LOCALBASE}/bin/autom4te${AUTOCONF_VERSION} AUTORECONF= ${LOCALBASE}/bin/autoreconf${AUTOCONF_VERSION} AUTOSCAN= ${LOCALBASE}/bin/autoscan${AUTOCONF_VERSION} AUTOUPDATE= ${LOCALBASE}/bin/autoupdate${AUTOCONF_VERSION} AUTOCONF_PATH= ${LOCALBASE}/libexec/autoconf${AUTOCONF_VERSION}: AUTOCONF_VARS= AUTOCONF=${AUTOCONF} AUTOHEADER=${AUTOHEADER} AUTOIFNAMES=${AUTOIFNAMES} AUTOM4TE=${AUTOM4TE} AUTORECONF=${AUTORECONF} AUTOSCAN=${AUTOSCAN} AUTOUPDATE=${AUTOUPDATE} AUTOCONF_DEPENDS= ${AUTOCONF}:${PORTSDIR}/devel/autoconf${AUTOCONF_VERSION} BUILD_DEPENDS+= ${AUTOCONF_DEPENDS} .endif #--------------------------------------------------------------------------- # LIBTOOL/LIBLTDL #--------------------------------------------------------------------------- # Convenience function to save people having to depend directly on # devel/libltdl15 # .if defined(AUTOTOOL_libltdl) LIB_DEPENDS+= ltdl.4:${PORTSDIR}/devel/libltdl15 .endif .if defined(AUTOTOOL_libtool) GNU_CONFIGURE?= YES AUTOTOOL_libtool_env= ${AUTOTOOL_libtool} .endif .if defined(AUTOTOOL_libtool_inc) GNU_CONFIGURE?= YES AUTOTOOL_libtool_env= ${AUTOTOOL_libtool_inc} .endif .if defined(AUTOTOOL_libtool_env) LIBTOOL_VERSION= ${AUTOTOOL_libtool_env} # Make sure we specified a legal version of libtool # . if !exists(${PORTSDIR}/devel/libtool${LIBTOOL_VERSION}/Makefile) BROKEN+= Unknown LIBTOOL version: ${LIBTOOL_VERSION} . endif # Set up the libtool environment # LIBTOOL= ${LOCALBASE}/bin/libtool${LIBTOOL_VERSION} LIBTOOLIZE= ${LOCALBASE}/bin/libtoolize${LIBTOOL_VERSION} LIBTOOL_LIBEXECDIR= ${LOCALBASE}/libexec/libtool${LIBTOOL_VERSION} LIBTOOL_SHAREDIR= ${LOCALBASE}/share/libtool${LIBTOOL_VERSION} LIBTOOL_M4= ${LOCALBASE}/share/aclocal/libtool${LIBTOOL_VERSION}.m4 LTMAIN= ${LIBTOOL_SHAREDIR}/ltmain.sh . if ${LIBTOOL_VERSION} == 13 LTCONFIG= ${LIBTOOL_SHAREDIR}/ltconfig${LIBTOOL_VERSION} . else LTCONFIG= ${TRUE} . endif LIBTOOL_PATH= ${LIBTOOL_LIBEXECDIR}: LIBTOOL_VARS= LIBTOOL=${LIBTOOL} LIBTOOLIZE=${LIBTOOLIZE} LIBTOOL_M4=${LIBTOOL_M4} LTCONFIG=${LTCONFIG} LIBTOOL_DEPENDS= ${LIBTOOL}:${PORTSDIR}/devel/libtool${LIBTOOL_VERSION} BUILD_DEPENDS+= ${LIBTOOL_DEPENDS} # XXX: do we really need this? # LIBTOOLFLAGS?= --disable-ltlibs . if defined(AUTOTOOL_autoconf) LIBTOOLFILES?= aclocal.m4 . else LIBTOOLFILES?= configure . endif .endif #--------------------------------------------------------------------------- # 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} . for item in automake aclocal autoconf autoheader libtool . if defined(AUTOTOOL_${item}_env) ${item:U}_ENV+= PATH=${AUTOTOOLS_PATH}${PATH} . endif . endfor .endif .if defined(AUTOTOOLS_VARS) && (${AUTOTOOLS_VARS} != "") AUTOTOOLS_ENV+= ${AUTOTOOLS_VARS} CONFIGURE_ENV+= ${AUTOTOOLS_VARS} MAKE_ENV+= ${AUTOTOOLS_VARS} SCRIPTS_ENV+= ${AUTOTOOLS_VARS} . for item in automake aclocal autoconf autoheader libtool . if defined(AUTOTOOL_${item}_env) ${item:U}_ENV+= ${AUTOTOOLS_VARS} . endif . endfor .endif #--------------------------------------------------------------------------- # Make targets #--------------------------------------------------------------------------- # run-autotools # # Part of the configure set - run appropriate programs prior to # the actual configure target if autotools are in use. # If needed, this target can be overridden, for example to change # the order of autotools running. .if !target(run-autotools) run-autotools:: run-autotools-aclocal patch-autotools run-autotools-autoheader \ run-autotools-autoconf run-autotools-automake .endif .if !target(run-autotools-aclocal) run-autotools-aclocal: . if defined(AUTOTOOL_aclocal) @(cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOTOOLS_ENV} ${ACLOCAL} \ ${ACLOCAL_ARGS}) . else @${DO_NADA} . endif .endif .if !target(run-autotools-automake) run-autotools-automake: . if defined(AUTOTOOL_automake) @(cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOTOOLS_ENV} ${AUTOMAKE} \ ${AUTOMAKE_ARGS}) . else @${DO_NADA} . endif .endif .if !target(run-autotools-autoconf) run-autotools-autoconf: . if defined(AUTOTOOL_autoconf) @(cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOTOOLS_ENV} ${AUTOCONF} \ ${AUTOCONF_ARGS}) . else @${DO_NADA} . endif .endif .if !target(run-autotools-autoheader) run-autotools-autoheader: . if defined(AUTOTOOL_autoheader) @(cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOTOOLS_ENV} ${AUTOHEADER} \ ${AUTOHEADER_ARGS}) . else @${DO_NADA} . endif .endif # patch-autotools # # Special target to automatically make libtool using ports use the # libtool port. See above for default values of LIBTOOLFILES. .if !target(patch-autotools) patch-autotools:: . if defined(AUTOTOOL_libtool_inc) @(cd ${PATCH_WRKSRC}; \ for file in ${LIBTOOLFILES}; do \ ${CP} $$file $$file.tmp; \ ${SED} -e "s^\$$ac_aux_dir/ltconfig^${LTCONFIG}^g" \ -e "/^ltmain=/!s^\$$ac_aux_dir/ltmain.sh^${LIBTOOLFLAGS} ${LTMAIN}^g" \ $$file.tmp > $$file; \ ${RM} $$file.tmp; \ done); . elif defined(AUTOTOOL_libtool) @(cd ${PATCH_WRKSRC}; \ for file in ${LIBTOOLFILES}; do \ ${CP} $$file $$file.tmp; \ ${SED} -e "s^\$$ac_aux_dir/ltconfig^${LTCONFIG}^g" \ -e "/^ltmain=/!s^\$$ac_aux_dir/ltmain.sh^${LIBTOOLFLAGS} ${LTMAIN}^g" \ -e '/^LIBTOOL=/s^\$$(top_builddir)/libtool^${LIBTOOL}^g' \ $$file.tmp > $$file; \ ${RM} $$file.tmp; \ done); . else @${DO_NADA} . endif .endif