#-*- 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 #--------------------------------------------------------------------------- # Entry points into the autotools system #--------------------------------------------------------------------------- # # USE_AUTOMAKE_VER= # - Port wishes to use automake, including the configuration step # - Implies GNU_CONFIGURE?=yes and WANT_AUTOMAKE_VER= # # WANT_AUTOMAKE_VER= # - 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= # - Port wishes to use autoconf, including the configuration step # - Implies GNU_CONFIGURE?=yes and WANT_AUTOCONF_VER= # # USE_AUTOHEADER_VER= # - Port wishes to use autoheader in the configuration step # - Implies USE_AUTOCONF_VER= # # WANT_AUTOCONF_VER= # - 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/libltdl15 # # USE_LIBTOOL_VER= # - Port wishes to use libtool, including the configuration step # - Port will use the ports version of libtool # - Implies GNU_CONFIGURE?=yes and WANT_LIBTOOL_VER= # # USE_INC_LIBTOOL_VER= # - Port wishes to use libtool, including the configuration step # - Port will use its own included version of libtool # - Implies GNU_CONFIGURE?=yes and WANT_LIBTOOL_VER= # # WANT_LIBTOOL_VER= # - 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= # - 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" # #--------------------------------------------------------------------------- # Major changes: # # - USE_AUTOMAKE, USE_AUTOCONF, USE_AUTOHEADER, and USE_LIBTOOL have # been deprecated in favor of USE__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 # # - 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/libltdl15, 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) (18,259) # # - Only set GNU_CONFIGURE automatically if USE__VER is specified, # since WANT__VER implies that we want the environment, but not # the configuration steps. # # 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}) BROKEN= "USE_${i} deprecated: replace with USE_${i}_VER=..." . endif . if defined(WANT_${i}) BROKEN= "WANT_${i} deprecated: replace with WANT_${i}_VER=..." . endif .endfor #--------------------------------------------------------------------------- # AUTOMAKE #--------------------------------------------------------------------------- .if defined(USE_AUTOMAKE_VER) WANT_AUTOMAKE_VER?= ${USE_AUTOMAKE_VER} GNU_CONFIGURE?= yes .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) BROKEN= "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) WANT_AUTOCONF_VER?= ${USE_AUTOCONF_VER} GNU_CONFIGURE?= yes .endif # 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} BROKEN= "Incompatible autoheader ${USE_AUTOHEADER_VER} and autoconf ${USE_AUTOCONF_VER}" .endif .if defined(WANT_AUTOHEADER_VER) && defined(WANT_AUTOCONF_VER) && \ ${WANT_AUTOHEADER_VER} != ${WANT_AUTOCONF_VER} BROKEN= "Incompatible autoheader ${WANT_AUTOHEADER_VER} and autoconf ${WANT_AUTOCONF_VER}" .endif .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) BROKEN= "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 #--------------------------------------------------------------------------- # LIBTOOL/LIBLTDL #--------------------------------------------------------------------------- # Convenience function to save people having to depend directly on # devel/libltdl15 # .if defined(USE_LIBLTDL) LIB_DEPENDS+= ltdl.4:${PORTSDIR}/devel/libltdl15 .endif .if defined(USE_LIBTOOL_VER) GNU_CONFIGURE?= yes WANT_LIBTOOL_VER?= ${USE_LIBTOOL_VER} .elif defined(USE_INC_LIBTOOL_VER) GNU_CONFIGURE?= yes WANT_LIBTOOL_VER?= ${USE_INC_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) BROKEN= "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_VERSION= ${WANT_LIBTOOL_VER} 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_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 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} . 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 .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 #--------------------------------------------------------------------------- # 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_VER) @(cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOTOOLS_ENV} ${AUTOMAKE} \ ${AUTOMAKE_ARGS}) . endif . if defined(USE_AUTOCONF_VER) @(cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOTOOLS_ENV} ${AUTOCONF} \ ${AUTOCONF_ARGS}) . endif . if defined(USE_AUTOHEADER_VER) @(cd ${CONFIGURE_WRKSRC} && ${SETENV} ${AUTOTOOLS_ENV} ${AUTOHEADER} \ ${AUTOHEADER_ARGS}) . 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(USE_INC_LIBTOOL_VER) @(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(USE_LIBTOOL_VER) @(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