# Run autoreconf in AUTORECONF_WRKSRC to update configure, Makefile.in and
# other build scripts.
#
# Autoreconf runs the following commands provided by devel/autoconf and
# devel/automake.  Each command applies to a single configure.ac or
# configure.in (old name).  If configure.ac defines subdirectories with their
# own configure.ac (using AC_CONFIG_SUBDIRS), autoreconf will recursively
# update those as well.
#
# aclocal	Looks up definitions of m4 macros used in configure.ac that are
#		not provided by autoconf and copies them from their source *.m4
#		file to aclocal.m4.  Local *.m4 files included with the source
#		code take precedence over systemwide *.m4 files.
# autoconf	Generates configure from configure.ac using macro definitions
#		provided by autoconf itself and aclocal.m4.
# autoheader	Generates a configuration header (typically config.h.in) from
#		configure.ac and the macro definitions in aclocal.m4.  Run by
#		autoreconf if configure.ac (or one of the macros it uses)
#		contains AC_CONFIG_HEADERS, AC_CONFIG_HEADER (undocumented), or
#		AM_CONFIG_HEADER (obsolete).
# automake	Generates Makefile.in from Makefile.am for each Makefile
#		listed in configure.ac (using AC_CONFIG_FILES).  Also updates
#		build scripts like compile, depcomp, install-sh, ylwrap,...
#		Run by autoreconf if configure.ac (or one of the macros it
#		uses) contains AM_INIT_AUTOMAKE.
#
# Autoreconf may also run these additional commands provided by other ports.
# A port needs to have a build depdendency on these ports when that's the case.
#
# autopoint	Provided by devel/gettext-tools.  Updates gettext related *.m4
#		files included with the source code and build scripts such as
#		config.rpath.  Run by autoreconf if configure.ac (or one of the
#		macros it uses) contains AM_GNU_GETTEXT.  A build dependency on
#		devel/gettext-tools can be added with USES+=gettext-tools.
#		Note that autoreconf runs autopoint even if a port has an NLS
#		option and the option is disabled.  The build dependency on
#		gettext-tools is not optional.  If the run dependency on
#		gettext is optional this can be specified with
#		NLS_USES=gettext-runtime.
# gtkdocize	Provided by textproc/gtk-doc.  Updates gtk-doc related *.m4
#		files included with the source code and build scripts such as
#		gtk-doc.make.  Run by autoreconf if configure.ac contains
#		GTK_DOC_CHECK.  The build dependency can be made optional with
#		DOCS option and DOCS_BUILD_DEPENDS+=gtkdocize:textproc/gtk-doc
#		on condition that you remove GTK_DOC_CHECK from configure.ac,
#		for instance using a post-patch-DOCS-off target with the
#		following command:
#		@${REINPLACE_CMD} /^GTK_DOC_CHECK/d ${WRKSRC}/configure.ac
#		It is likely that more patching is needed to eliminate or avoid
#		use of gtk-doc.
# intltoolize	Provided by textproc/intltool.  Updates intltool related *.m4
#		files included with the source code and build scripts such as
#		po/Makefile.in.in.  Run by autoreconf if configure.ac contains
#		(AC|IT)_PROG_INTLTOOL.  A build dependency on textproc/intltool
#		can be added with USES+=gnome and USE_GNOME+=intltool.
# libtoolize	Provided by devel/libtool.  Updates libtool related *.m4 files
#		included with the source code and build scripts such as
#		ltmain.sh.  Run by autoreconf if configure.ac  (or one of the
#		macros it uses) contains AC_PROG_LIBTOOL or LT_INIT.  A build
#		dependency on devel/libtool is added implicitly when USES
#		contains both autoreconf and libtool.
#
# Feature:	autoreconf
# Usage:	USES=autoreconf or USES=autoreconf:args
# Valid args:	build	Don't run autoreconf, only add build dependencies
#		2.69	Use this legacy version
#
# Port maintainers can set the following variable:
#
# AUTORECONF_ARGS	The string to pass to autoreconf in addition to
# 			the default "-f -i"
#
# MAINTAINER:	ports@FreeBSD.org

.if !defined(_INCLUDE_USES_AUTORECONF_MK)
_INCLUDE_USES_AUTORECONF_MK=	yes
_USES_POST+=	autoreconf

AUTORECONF?=	${LOCALBASE}/bin/autoreconf${_AUTORECONF}
AUTORECONF_WRKSRC?=	${WRKSRC}

.endif

.if defined(_POSTMKINCLUDED) && !defined(_INCLUDE_USES_AUTORECONF_POST_MK)
_INCLUDE_USES_AUTORECONF_POST_MK=	yes

.  if ${autoreconf_ARGS:M2.69}
_AUTORECONF=	2.69
BUILD_DEPENDS+=	autoconf2.69>=2.69:devel/autoconf2.69
.  else
_AUTORECONF=	2.72
BUILD_DEPENDS+=	autoconf>=${_AUTORECONF}:devel/autoconf
.  endif

BUILD_DEPENDS+=	automake>=1.17:devel/automake

.  if defined(libtool_ARGS) && empty(libtool_ARGS:Mbuild)
BUILD_DEPENDS+=	libtoolize:devel/libtool
.  endif

# In case autoconf-switch wrapper scripts are used during build.
CONFIGURE_ENV+=	DEFAULT_AUTOCONF=${_AUTORECONF}
MAKE_ENV+=	DEFAULT_AUTOCONF=${_AUTORECONF}
WRK_ENV+=	DEFAULT_AUTOCONF=${_AUTORECONF}

.  if ${autoreconf_ARGS:Nbuild:N2.69}
IGNORE= 	incorrect 'USES+=autoreconf:${autoreconf_ARGS}'\
		expecting 'USES+=autoreconf[:build,2.69]'
.  endif

.  if ! ${autoreconf_ARGS:Mbuild}
_USES_configure+=	470:do-autoreconf
do-autoreconf:
.    for f in AUTHORS ChangeLog INSTALL NEWS README
# Don't modify time stamps if the files already exist
	@test -e ${AUTORECONF_WRKSRC}/${f} || ${TOUCH} ${AUTORECONF_WRKSRC}/${f}
.    endfor
.    if ${_AUTORECONF} == 2.69
	@(cd ${AUTORECONF_WRKSRC} && \
		if test -f configure.ac; then configure=configure.ac; \
		else configure=configure.in; fi && \
		if ${GREP} -q '^GTK_DOC_CHECK' $${configure}; \
		then if ! ${LOCALBASE}/bin/gtkdocize --copy; then \
		${ECHO_MSG} '===>  Mk/Uses/autoreconf.mk: Error running gtkdocize'; \
		${FALSE}; fi; fi && \
		if ${EGREP} -q '^(AC|IT)_PROG_INTLTOOL' $${configure}; \
		then if ! ${LOCALBASE}/bin/intltoolize -f -c; then \
		${ECHO_MSG} '===>  Mk/Uses/autoreconf.mk: Error running intltoolize'; \
		${FALSE}; fi; fi)
.    endif
	@(cd ${AUTORECONF_WRKSRC} && if ! ${AUTORECONF} -f -i ${AUTORECONF_ARGS}; then \
		${ECHO_MSG} '===>  Mk/Uses/autoreconf.mk: Error running ${AUTORECONF}'; \
		${FALSE}; fi)
.  endif

.endif
