Random notes about the autoconfing of AST Initial version imported from a tarball supplied by DSB. The tarball contained David's RCS repository plus the development directory (dev/) and the `reference' directory (ref/) which contains a checkout of the RCS repository. The development directory contains working versions of the files in the reference directory, plus miscellaneous test files and notes, plus copies of sdt.tar.Z (the RCS wrapper which has long been used for AST development) and sst_source.tar.Z (the documentation builder). The RCS repository was dropped into the CVS repository on 14 November 2003, and tagged with ast-3-1-0-import. After thinking a bit about tagging policies (and writing these up on the wiki and posting to the stardev group), I tagged this same point as bp-dev-nxg-20031121-autoconfing and created a branch dev-nxg-20031121-autoconfing (21 November -- busy week since the 14th...). That's the one I'll work on. I've created configure.ac, and I've developed the build system using reasonably current versions of the autotools (namely autoconf-2.57, automake versions 1.6.3 or 1.7.5, and libtool versions 1.4.2 or 1.5). There's no point jumping through hoops to use random obsolete versions (reading old documentation, and trying to keep things forwards compatible, untestably) simply because they're installed on RH7.3. If anyone plans to install these newer versions, I recall that autoconf, libtool, automake was the order that worked (it matters), and you need to install GNU m4 first on Solaris or Alpha Created starlink.m4, which includes macro STAR_FACILITY_CODE which facilitates declaring the `err' facility code which has been allocated to this library. This also AC_SUBSTs the variable ERR_FACILITY_CODE, and I've moved ast_err.msg and error.h to the corresponding .in files, modified them to have that code inserted, and put them in AC_CONFIG_FILES. This file should be moved to a central location when I work out where such a central location should be. At that point, ./bootstrap should be edited to contain that location. The two files in grp.make's F_ROUTINES group, object.f and frame.f, don't appear to be used anywhere. I've omitted them in Makefile.am Building AST ------------ To build AST directly from the repository, you need reasonably current versions of the autotools (as noted above). If anyone plans to install these newer versions, I recall that autoconf, libtool, automake was the order that worked (it matters), and you need to install GNU m4 first on Solaris or Alpha. Recall the discussion we had on stardev about autotools and generated files. I have now checked in the generated files configure, config.h.in and Makefile.in. Later, I'll either add the fixes I added to autoastrom to make the `missing' script work, or see if there's a more supported way to do that. With those fixes and additions, it _will_not_matter_ which autotools versions you have, as long as you don't have to alter Makefile.am or configure.ac, and in any case it the autotools are completely unneeded for building from the distribution tarball. To build from the repository, do ./bootstrap ./configure make Conventions and facilities so far --------------------------------- The version number is set in the AC_INIT line in configure.ac, and propagated from there to the locations where it's needed. The string @STAR_BOILERPLATE@ must be in Makefile.{am,in}. All this does at present is include boilerplate for calling messgen _if_ STAR_FACILITY_CODE is present (which it is, for AST). configure.ac should have STAR_DEFAULTS near the beginning (sets the default installation location to be /star rather than GNU default /usr/local, ensures that the STARLINK environment variable is set). STAR_FACILITY_CODE declares the error-reporting system facility code which has been allocated to this library. Modifications to AST files -------------------------- ast_err.msg is now created from ast_err.msg.in, and has the facility code declared in STAR_FACILITY_CODE edited into it at that point. Same for error.h and error.h.in. ast_cpp generated from ast_cpp.in with the CC edited in makeh now calls ast_cpp through /bin/sh (avoids having to worry about execute bits) Versioning: The version number (as mentioned above, set in configure.ac) is now substituted into version.h.in, broken into major.minor-release, and version.h is included in ast.h. File object.c now includes version.h to implement the astVersion_ function. AST_MAJOR_VERS and co removed from makeh (since they're now included in ast.h inside version.h).