summaryrefslogtreecommitdiff
path: root/ports-mgmt/portmk/Mk/bsd.autotools.mk
diff options
context:
space:
mode:
Diffstat (limited to 'ports-mgmt/portmk/Mk/bsd.autotools.mk')
-rw-r--r--ports-mgmt/portmk/Mk/bsd.autotools.mk325
1 files changed, 325 insertions, 0 deletions
diff --git a/ports-mgmt/portmk/Mk/bsd.autotools.mk b/ports-mgmt/portmk/Mk/bsd.autotools.mk
new file mode 100644
index 000000000000..bf11a6938957
--- /dev/null
+++ b/ports-mgmt/portmk/Mk/bsd.autotools.mk
@@ -0,0 +1,325 @@
+#-*- 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[:env] ...
+#
+# 'tool' can currently be one of:
+# libtool, libltdl, autoconf, autoheader, automake, aclocal
+#
+# 'version' is tool dependent
+#
+# ':env' is used to pecify 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=<value>
+# - Arguments passed to libtool during configure step
+#
+# 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"
+#
+#---------------------------------------------------------------------------
+
+# XXX: here be dragons :)
+#
+.for item in ${USE_AUTOTOOLS}
+AUTOTOOL_${item:C/^([^:]+).*/\1/}${item:M*\:*\:*:C/^[^:]+:[^:]+:([^:]+)/_\1/}= ${item:C/^[^:]+:([^:]+).*/\1/}
+.endfor
+
+# XXX: temporary to highlight any missed ports in the conversion
+#
+.if defined(AUTOTOOL_libtool_inc)
+IGNORE+= error: libtool:${AUTOTOOL_libtool_inc}:inc construct no longer available
+.endif
+
+#---------------------------------------------------------------------------
+# 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)
+IGNORE+= cannot install: 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)
+IGNORE+= cannot install: 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_env)
+LIBTOOL_VERSION= ${AUTOTOOL_libtool_env}
+
+# Make sure we specified a legal version of libtool
+#
+. if !exists(${PORTSDIR}/devel/libtool${LIBTOOL_VERSION}/Makefile)
+IGNORE+= cannot install: unknown LIBTOOL version: ${LIBTOOL_VERSION}
+. endif
+
+# Set up the libtool environment
+#
+LIBTOOL= ${LOCALBASE}/bin/libtool
+LIBTOOLIZE= ${LOCALBASE}/bin/libtoolize
+LIBTOOL_LIBEXECDIR= ${LOCALBASE}/libexec/libtool
+LIBTOOL_SHAREDIR= ${LOCALBASE}/share/libtool
+LIBTOOL_M4= ${LOCALBASE}/share/aclocal/libtool.m4
+LTMAIN= ${LIBTOOL_SHAREDIR}/ltmain.sh
+LIBTOOL_VARS= LIBTOOL=${LIBTOOL} LIBTOOLIZE=${LIBTOOLIZE} LIBTOOL_M4=${LIBTOOL_M4}
+
+LIBTOOL_DEPENDS= ${LIBTOOL}:${PORTSDIR}/devel/libtool${LIBTOOL_VERSION}
+BUILD_DEPENDS+= ${LIBTOOL_DEPENDS}
+
+LIBTOOLFLAGS?= # default to empty
+
+. 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}
+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)
+ @(cd ${PATCH_WRKSRC}; \
+ for file in ${LIBTOOLFILES}; do \
+ ${CP} $$file $$file.tmp; \
+ ${SED} -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