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 (the section called “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. the section called “Generic Program and File Checks”, for information about the AC_CHECK_TOOL macro which does that.