[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

11.3 Using the System Type

How do you use a canonical system type? Usually, you use it in one or more case statements in `configure.ac' to select system-specific C files. Then, using AC_CONFIG_LINKS, link those files which have names based on the system name, to generic names, such as `host.h' or `target.c' (see section 4.10 Creating Configuration Links). The case statement patterns can use shell wild cards to group several cases together, like in this fragment:

 
case $target in
i386-*-mach* | i386-*-gnu*)
             obj_format=aout emulation=mach bfd_gas=yes ;;
i960-*-bout) obj_format=bout ;;
esac

and later in `configure.ac', use:

 
AC_CONFIG_LINKS(host.h:config/$machine.h
                object.h:config/$obj_format.h)

Note that the above example uses $target because it's taken from a tool which can be built on some architecture ($build), run on another ($host), but yet handle data for a third architecture ($target). Such tools are usually part of a compiler suite, they generate code for a specific $target.

However $target should be meaningless for most packages. If you want to base a decision on the system where your program will be run, make sure you use the $host variable, as in the following excerpt:

 
case $host in
  *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-cygwin* | *-*-windows*)
    MUMBLE_INIT="mumble.ini"
    ;;
  *)
    MUMBLE_INIT=".mumbleinit"
    ;;
esac
AC_SUBST([MUMBLE_INIT])

You can also use the host system type to find cross-compilation tools. See section 5.2.2 Generic Program and File Checks, for information about the AC_CHECK_TOOL macro which does that.



This document was generated by Jeff Bailey on December, 24 2002 using texi2html