-
Notifications
You must be signed in to change notification settings - Fork 2
BIC-MNI/mni-acmacros
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
How to use the MNI Autoconf Macros ---------------------------------- This directory contains several .m4 files, each containing one or several related autoconf macros. This document describes how to incorporate the commonly-used macros in your package. Other macros are described in their source .m4 file. Preliminaries ------------- First, you need to put the macro source files into your sources. If you are using CVS for your sources, the following command will enable you to track the mni-acmacros repository, thereby receiving updated sources each time you "cvs update" cvs -d /software/source/libraries checkout -d m4 mni-acmacros Note the "-d m4" option: that tells cvs to put mni-acmacros into a directory called "m4", which is traditional. It doesn't matter what you call this directory, but be sure to use the correct name when invoking "aclocal"; see below. The macro definitions are eventually copied into the configure script. This happens in two stages. First, the command "aclocal" will scan the m4 files and copy the required macros into the file "aclocal.m4". You need to tell "aclocal" in which directory the macro sources are located. If you use "m4", then "aclocal -I m4" is the command to run. If you are using automake, the generated Makefile will include rules to refresh "aclocal.m4" when needed by re-running "aclocal". You need to insert ACLOCAL_AMFLAGS = -I m4 to have "aclocal" scan the correct directory (change the -I option as appropriate). Your package will also need to distribute the m4 files since they are required to regenerate the file "aclocal.m4". Automake will generate a rule for "aclocal.m4" that depends on all the .m4 files. Unfortunately, automake is too conservative in this regard: the generated rule will depend on *all* the m4 files scanned, even if the macro contained is not used. Thus, you will need to include by hand all the files m4/*.m4 in the EXTRA_DIST list. Add the following to Makefile.am: EXTRA_DIST = $(m4_files) ... m4_files = \ m4/mni_REQUIRE_LIB.m4 \ m4/mni_REQUIRE_MNILIBS.m4 \ m4/mni_REQUIRE_OPENINVENTOR.m4 \ m4/mni_cxx_have_koenig_lookup.m4 \ m4/smr_OPTIONAL_LIB.m4 \ m4/smr_REQUIRED_LIB.m4 \ m4/smr_WITH_BUILD_PATH.m4 Macro smr_WITH_BUILD_PATH ------------------------- I strongly suggest you always use this one. It adds a "--with-build-path" option to the generated configure script. This configure option provides a convenient way to add "-I" options to CPPFLAGS and "-L" options to LDFLAGS, at configure time. Invoking "./configure --with-build-path=DIR" results in "-I DIR/include" being added to CPPFLAGS if DIR/include exists, and "-L DIR/lib" being added to LDFLAGS if DIR/lib exists. Separate multiple directories using colons; e.g. "--with-build-path=DIR1:DIR2:DIR3". Usage: smr_WITH_BUILD_PATH (i.e. insert the above into configure.ac or configure.in) Macro mni_REQUIRE_MINC ---------------------- Use this if your program requires the MINC libraries. The libraries libm, libnetcdf, and libminc will be probed for at configure time (this is when --with-build-path comes in handy!). If any of the three libraries cannot be found, configure will stop with an error message. If the libraries are all found, the LIBS makefile variable will be set appropriately. When using automake, this suffices to properly link against MINC. Usage: mni_REQUIRE_MINC Macro mni_REQUIRE_VOLUMEIO -------------------------- Extends mni_REQUIRE_MINC to also search for libvolume_io. When using this macro, mni_REQUIRE_MINC is automatically invoked, so you needn't have both in your configure.ac. Usage: mni_REQUIRE_VOLUMEIO Macro mni_REQUIRE_BICPL ----------------------- Extends mni_REQUIRE_VOLUMEIO to also search for libbicpl. When using this macro, mni_REQUIRE_VOLUMEIO is automatically invoked, so you needn't have both in your configure.ac. Usage: mni_REQUIRE_BICPL Macro mni_REQUIRE_OPENINVENTOR ------------------------------ Use this if your program requires OpenInventor. This macro will search first for the COIN library (an OpenInventor clone), then for SGI's libInventor. If one is found, LIBS is set appropriately, else the configure script bombs with an error.