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. * =pkgdata_DATA=
Are the files that will be placed in _$prefix/share/pkg_, see: [[How to Use Separate 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: * [[How to Use Separate Compilation]]