# Definition of Autom4te option sets.                     -*- Makefile -*-
#
# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
# Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

## -------------------------- ##
## Autoheader preselections.  ##
## -------------------------- ##

begin-language: "Autoheader-preselections"
args: --preselect AC_CONFIG_HEADERS
args: --preselect AH_OUTPUT
args: --preselect AC_DEFINE_TRACE_LITERAL
end-language: "Autoheader-preselections"


## ------------------------ ##
## Automake-preselections.  ##
## ------------------------ ##

begin-language: "Automake-preselections"
args: --preselect AC_CANONICAL_BUILD
args: --preselect AC_CANONICAL_HOST
# AC_CANONICAL_SYSTEM was traced from Automake 1.7 to Automake 1.9.
# Later versions trace AC_CANONICAL_TARGET instead.
args: --preselect AC_CANONICAL_SYSTEM
args: --preselect AC_CANONICAL_TARGET
args: --preselect AC_CONFIG_AUX_DIR
args: --preselect AC_CONFIG_FILES
args: --preselect AC_CONFIG_HEADERS
args: --preselect AC_CONFIG_LIBOBJ_DIR
args: --preselect AC_CONFIG_LINKS
args: --preselect AC_FC_FREEFORM
args: --preselect AC_FC_SRCEXT
args: --preselect AC_INIT
args: --preselect AC_LIBSOURCE
args: --preselect AC_REQUIRE_AUX_FILE
# Automake < 1.10 traces AC_SUBST.  Automake >= 1.10 traces AC_SUBST_TRACE.
args: --preselect AC_SUBST
args: --preselect AC_SUBST_TRACE
args: --preselect AM_AUTOMAKE_VERSION
args: --preselect AM_CONDITIONAL
args: --preselect AM_ENABLE_MULTILIB
args: --preselect AM_GNU_GETTEXT
args: --preselect AM_GNU_GETTEXT_INTL_SUBDIR
args: --preselect AM_INIT_AUTOMAKE
args: --preselect AM_MAINTAINER_MODE
args: --preselect AM_PROG_CC_C_O
args: --preselect AM_PROG_CXX_C_O
args: --preselect AM_PROG_F77_C_O
args: --preselect AM_PROG_FC_C_O
args: --preselect AM_SILENT_RULES
args: --preselect _AM_SUBST_NOTMAKE
args: --preselect _AM_COND_IF
args: --preselect _AM_COND_ELSE
args: --preselect _AM_COND_ENDIF
args: --preselect LT_SUPPORTED_TAG
args: --preselect _LT_AC_TAGCONFIG
args: --preselect m4_include
args: --preselect m4_sinclude
end-language: "Automake-preselections"


## -------------------------- ##
## Autoreconf-preselections.  ##
## -------------------------- ##

begin-language: "Autoreconf-preselections"
args: --preselect AC_CONFIG_AUX_DIR
args: --preselect AC_CONFIG_HEADERS
args: --preselect AC_CONFIG_SUBDIRS
args: --preselect AC_INIT
args: --preselect AC_PROG_LIBTOOL
args: --preselect LT_INIT
args: --preselect LT_CONFIG_LTDL_DIR
args: --preselect AM_GNU_GETTEXT
end-language: "Autoreconf-preselections"


## ----------------------------- ##
## Autoconf without aclocal.m4.  ##
## ----------------------------- ##

# This intermediate language is used by aclocal to build aclocal.m4.

begin-language: "Autoconf-without-aclocal-m4"
args: --prepend-include '/usr/local/google/apenwarr/athena/out.mstc/host/usr/share/autoconf'
args: --cache=autom4te.cache
args: autoconf/autoconf.m4f
args: acsite.m4?
args: --mode 777
args: --language M4sh
end-language: "Autoconf-without-aclocal-m4"


## ---------- ##
## Autoconf.  ##
## ---------- ##

begin-language: "Autoconf"
args: --language Autoheader-preselections
args: --language Automake-preselections
args: --language Autoreconf-preselections
args: --language Autoconf-without-aclocal-m4
args: aclocal.m4?
end-language: "Autoconf"


## -------- ##
## Autotest ##
## -------- ##

begin-language: "Autotest"
args: --prepend-include '/usr/local/google/apenwarr/athena/out.mstc/host/usr/share/autoconf'
args: autotest/autotest.m4f
args: package.m4?
args: local.at?
args: --mode 777
args: --language M4sh
end-language: "Autotest"


## ---- ##
## M4sh ##
## ---- ##

begin-language: "M4sh"
args: --prepend-include '/usr/local/google/apenwarr/athena/out.mstc/host/usr/share/autoconf'
args: m4sugar/m4sh.m4f
args: --mode 777
args: --language M4sugar
end-language: "M4sh"


## ------- ##
## M4sugar ##
## ------- ##

begin-language: "M4sugar"
args: --prepend-include '/usr/local/google/apenwarr/athena/out.mstc/host/usr/share/autoconf'
args: m4sugar/m4sugar.m4f
args: --warnings syntax
end-language: "M4sugar"
