The autoxt package provides Autoconf and Automake support for packages
constructed with the XT toolset. The package provides the
autoxt
tool
which should be run as part of the Autoconf/Automake bootstrapping process,
prior to running
autoconf
. A typical
bootstrap
script looks like:
#! /bin/sh
autoxt
autoreconf -if
The toplevel
Makefile.am
should declare:
ACLOCAL_AMFLAGS = -I .
Autoconf
Autoxt installs a set of m4 macros
autoxt.m4
with support for
package configuration switches. By just including the macro call
XT_USE_XT_PACKAGES
a
configure.ac
file can be parameterized with
switches for all the StrategoXT packages:
AC_INIT([java-front],[0.6],[stratego-bugs@cs.uu.nl])
AM_INIT_AUTOMAKE
XT_USE_XT_PACKAGES
XT_PKG_ATERM
XT_PKG_SDF
XT_PKG_STRATEGOXT
AC_PROG_CC
AC_PROG_INSTALL
AC_CONFIG_FILES([Makefile syn/Makefile])
AC_OUTPUT
Available Macros
-
XT_USE_XT_PACKAGES
Adds configuration options to configure the package with the location of the ATerm library, SDF and StrategoXT.
-
XT_PKG_ATERM
Checks if the ATerm library is installed at the specified prefix of the ATerm library.
-
XT_PKG_SDF
Checks if the SDF packages are installed at the specified prefix of SDF.
-
XT_PKG_STRATEGOXT
checks if StrategoXT is installed at the specified prefix of StrategoXT.
-
XT_TERM_DEFINE
Defines some Stratego strategies that will return the values (as strings) of various Autoconf variables: PACKAGE_NAME_TERM()
, PACKAGE_TARNAME_TERM()
, PACKAGE_VERSION_TERM()
, PACKAGE_BUGREPORT_TERM()
, and SVN_REVISION_TERM()
. These strategies can be used in any Stratego program in this package.
-
XT_PRE_RELEASE
Adds the suffix pre${SVN_REVISION}
to the PACKAGE_VERSION
and VERSION
variables. This is a naming convention for unstable packages that we are using in our release management system.
Automake
Furthermore, autoxt installs
Makefile.xt
, a collection of automake
rules for compiling Stratego programs and applying other XT tools,
such as signature generation. Using this makefile, a makefile
reduces to a declaration of programs to be compiled. The makefile
automatically takes care of distributing the generated C code. The
specification will only be compiled when it is newer than the C
code. This means that packages using autoxt can be built using only
the Stratego Run-Time System (srts).
include $(top_srcdir)/Makefile.xt
include $(wildcard *.dep)
bin_PROGRAMS = xtc
pkgdata_DATA = xtc-lib.rtree xtc-rep.rtree xtc-proc.rtree
SCFLAGS = --main $*
STRINCLUDES = -I $(XTC)/share/xtc
EXTRA_DIST = $(pkgdata_DATA) $(wildcard *.str) $(wildcard *.meta)
CLEANFILES = $(wildcard *.dep)
BOOTCLEANFILES = xtc.c
Explanation of the example
-
include $(top_srcdir)/Makefile.xt
Instructs the Stratego
compiler to compile the Stratego files.
-
include $(wildcard *.dep)
The Stratego compiler generates .dep
files which contain information about file dependencies. When these .dep
files are included a rebuild is forced when a dependent file changes.
-
bin_PROGRAMS
Specifies the resulting binaries from the compilation.
-
SCFLAGS
Contains compiler flags passed to the Stratego compiler.
-
STRINCLUDES
Are the additional includes necessary for a succesful compilation.
-
EXTRA_DIST
Specifies which auxilary files have to be included in the
distribution.
-
CLEANFILES
Deletes these files when the make clean command is issued.
-
BOOTCLEANFILES
In addition to files specified in CLEANFILES, deletes
these files when the make bootclean command is issued.
See also: