dnl @synopsis AC_CREATE_TARGET_H [(HEADER-FILE [,PREFIX)] dnl dnl create the header-file and let it contain '#defines' dnl for the target platform. This macro is used for libraries dnl that have platform-specific quirks. Instead of inventing a dnl target-specific target.h.in files, just let it create a dnl header file from the definitions of AC_CANONICAL_SYSTEM dnl and put only ifdef's in the installed header-files. dnl dnl if the HEADER-FILE is absent, [target.h] is used. dnl if the PREFIX is absent, [TARGET] is used. dnl the prefix can be the packagename. (y:a-z-:A-Z_:) dnl dnl the defines look like... dnl dnl #ifndef TARGET_CPU_M68K dnl #define TARGET_CPU_M68K "m68k" dnl #endif dnl dnl #ifndef TARGET_OS_LINUX dnl #define TARGET_OS_LINUX "linux-gnu" dnl #endif dnl dnl #ifndef TARGET_OS_TYPE /* the string itself */ dnl #define TARGET_OS_TYPE "linux-gnu" dnl #endif dnl dnl detail: in the case of hppa1.1, the three idents "hppa1_1" "hppa1" dnl and "hppa" are derived, for an m68k it just two, "m68k" and "m" dnl dnl the CREATE_TARGET_H__ variant is almost the same function, but everything dnl is lowercased instead of uppercased, and there is a "__" in front of dnl each prefix, so it looks like... dnl dnl #ifndef __target_os_linux dnl #define __target_os_linux "linux-gnulibc2" dnl #endif dnl dnl #ifndef __target_os__ /* the string itself */ dnl #define __target_os__ "linux-gnulibc2" dnl #endif dnl dnl #ifndef __target_cpu_i586 dnl #define __target_cpu_i586 "i586" dnl #endif dnl dnl #ifndef __target_arch_i386 dnl #define __target_arch_i386 "i386" dnl #endif dnl dnl #ifndef __target_arch__ /* cpu family arch */ dnl #define __target_arch__ "i386" dnl #endif dnl dnl other differences: the default string-define is "__" insteadof "_TYPE" dnl dnl personally I prefer the second variant (which had been the first in dnl the devprocess of this file but I assume people will often fallback dnl to the primary variant presented herein). dnl dnl NOTE: CREATE_TARGET_H does also fill HOST_OS-defines dnl functionality has been split over functions called CREATE_TARGET_H_UPPER dnl CREATE_TARGET_H_LOWER CREATE_TARGET_HOST_UPPER CREATE_TARGET_HOST_LOWER dnl CREATE_TARGET_H uses CREATE_TARGET_H_UPPER CREATE_TARGET_HOST_UPPER dnl CREATE_TARGET_H_ uses CREATE_TARGET_H_LOWER CREATE_TARGET_HOST_LOWER dnl dnl there is now a CREATE_PREFIX_TARGET_H in this file as a shorthand for dnl PREFIX_CONFIG_H from a target.h file, however w/o the target.h ever created dnl (the prefix is a bit different, since we add an extra -target- and -host-) dnl dnl @version: $Id: acinclude.m4,v 1.8 2006/12/22 19:45:32 acab Exp $ dnl @author Guido Draheim STATUS: used often AC_DEFUN([AC_CREATE_TARGET_H], [AC_REQUIRE([AC_CANONICAL_CPU_ARCH]) AC_CREATE_TARGET_H_UPPER($1,$2) AC_CREATE_TARGET_HOST_UPPER($1,$2) ]) AC_DEFUN([AC_CREATE_TARGET_OS_H], [AC_REQUIRE([AC_CANONICAL_CPU_ARCH]) AC_CREATE_TARGET_H_LOWER($1,$2) AC_CREATE_TARGET_HOST_LOWER($1,$2) ]) AC_DEFUN([AC_CREATE_TARGET_H__], [AC_REQUIRE([AC_CANONICAL_CPU_ARCH]) AC_CREATE_TARGET_H_LOWER($1,$2) AC_CREATE_TARGET_HOST_LOWER($1,$2) ]) dnl [(OUT-FILE [, PREFIX])] defaults: PREFIX=$PACKAGE OUTFILE=$PREFIX-target.h AC_DEFUN([AC_CREATE_PREFIX_TARGET_H],[dnl ac_prefix_conf_PKG=`echo ifelse($2, , $PACKAGE, $2)` ac_prefix_conf_OUT=`echo ifelse($1, , $ac_prefix_conf_PKG-target.h, $1)` ac_prefix_conf_PRE=`echo $ac_prefix_conf_PKG-target | sed -e 'y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:'` AC_CREATE_TARGET_H_UPPER($ac_prefix_conf_PRE,$ac_perfix_conf_OUT) ac_prefix_conf_PRE=`echo __$ac_prefix_conf_PKG-host | sed -e 'y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:'` AC_CREATE_TARGET_HOST_UPPER($ac_prefix_conf_PRE,$ac_perfix_conf_OUT) ]) dnl [(OUT-FILE[, PREFIX])] defaults: PREFIX=$PACKAGE OUTFILE=$PREFIX-target.h AC_DEFUN([AC_CREATE_PREFIX_TARGET_H_],[dnl ac_prefix_conf_PKG=`echo ifelse($2, , $PACKAGE, $2)` ac_prefix_conf_OUT=`echo ifelse($1, , $ac_prefix_conf_PKG-target.h, $1)` ac_prefix_conf_PRE=`echo __$ac_prefix_conf_PKG-target | sed -e 'y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:'` AC_CREATE_TARGET_H_LOWER($ac_prefix_conf_PRE,$ac_perfix_conf_OUT) ac_prefix_conf_PRE=`echo __$ac_prefix_conf_PKG-host | sed -e 'y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:'` AC_CREATE_TARGET_HOST_LOWER($ac_prefix_conf_PRE,$ac_perfix_conf_OUT) ]) AC_DEFUN([AC_CREATE_TARGET_H_FILE],[dnl ac_need_target_h_file_new=true ]) AC_DEFUN([AC_CREATE_TARGET_H_UPPER], [AC_REQUIRE([AC_CANONICAL_CPU_ARCH]) AC_REQUIRE([AC_CREATE_TARGET_H_FILE]) changequote({, })dnl ac_need_target_h_file=`echo ifelse($1, , target.h, $1)` ac_need_target_h_prefix=`echo ifelse($2, , target, $2) | sed -e 'y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:' -e 's:[^A-Z0-9_]::g'` # target_os0=`echo "$target_os" | sed -e 'y:abcdefghijklmnopqrstuvwxyz.-:ABCDEFGHIJKLMNOPQRSTUVWXYZ__:' -e 's:[^A-Z0-9_]::g'` target_os1=`echo "$target_os0" | sed -e 's:\([^0-9]*\).*:\1:' ` target_os2=`echo "$target_os0" | sed -e 's:\([^_]*\).*:\1:' ` target_os3=`echo "$target_os2" | sed -e 's:\([^0-9]*\).*:\1:' ` # target_cpu0=`echo "$target_cpu" | sed -e 'y:abcdefghijklmnopqrstuvwxyz.-:ABCDEFGHIJKLMNOPQRSTUVWXYZ__:' -e 's:[^A-Z0-9_]::g'` target_cpu1=`echo "$target_cpu0" | sed -e 's:\([^0-9]*\).*:\1:' ` target_cpu2=`echo "$target_cpu0" | sed -e 's:\([^_]*\).*:\1:' ` target_cpu3=`echo "$target_cpu2" | sed -e 's:\([^0-9]*\).*:\1:' ` # target_cpu_arch0=`echo "$target_cpu_arch" | sed -e 'y:abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:'` # changequote([, ])dnl # if $ac_need_target_h_file_new ; then AC_MSG_RESULT(creating $ac_need_target_h_file - canonical system defines) echo /'*' automatically generated by $PACKAGE configure '*'/ >$ac_need_target_h_file echo /'*' on `date` '*'/ >>$ac_need_target_h_file ac_need_target_h_file_new=false fi echo /'*' target uppercase defines '*'/ >>$ac_need_target_h_file dnl old1="" old2="" for i in $target_os0 $target_os1 $target_os2 $target_os3 "TYPE" do if test "$old1" != "$i"; then if test "$old2" != "$i"; then echo " " >>$ac_need_target_h_file echo "#ifndef "$ac_need_target_h_prefix"_OS_"$i >>$ac_need_target_h_file echo "#define "$ac_need_target_h_prefix"_OS_"$i '"'"$target_os"'"' >>$ac_need_target_h_file echo "#endif" >>$ac_need_target_h_file fi fi old2="$old1" old1="$i" done # old1="" old2="" for i in $target_cpu0 $target_cpu1 $target_cpu2 $target_cpu3 "TYPE" do if test "$old1" != "$i"; then if test "$old2" != "$i"; then echo " " >>$ac_need_target_h_file echo "#ifndef "$ac_need_target_h_prefix"_CPU_"$i >>$ac_need_target_h_file echo "#define "$ac_need_target_h_prefix"_CPU_"$i '"'"$target_cpu"'"' >>$ac_need_target_h_file echo "#endif" >>$ac_need_target_h_file fi fi old2="$old1" old1="$i" done # old1="" old2="" for i in $target_cpu_arch0 "TYPE" do if test "$old1" != "$i"; then if test "$old2" != "$i"; then echo " " >>$ac_need_target_h_file echo "#ifndef "$ac_need_target_h_prefix"_ARCH_"$i >>$ac_need_target_h_file echo "#define "$ac_need_target_h_prefix"_ARCH_"$i '"'"$target_cpu_arch"'"' >>$ac_need_target_h_file echo "#endif" >>$ac_need_target_h_file fi fi old2="$old1" old1="$i" done ]) dnl dnl ... the lowercase variant ... dnl AC_DEFUN([AC_CREATE_TARGET_H_LOWER], [AC_REQUIRE([AC_CANONICAL_CPU_ARCH]) AC_REQUIRE([AC_CREATE_TARGET_H_FILE]) changequote({, })dnl ac_need_target_h_file=`echo ifelse($1, , target-os.h, $1)` ac_need_target_h_prefix=`echo ifelse($2, , target, $2) | sed -e 'y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:' -e 's:[^a-z0-9_]::g'` # target_os0=`echo "$target_os" | sed -e 'y:ABCDEFGHIJKLMNOPQRSTUVWXYZ.-:abcdefghijklmnopqrstuvwxyz__:' -e 's:[^a-z0-9_]::g'` target_os1=`echo "$target_os0" | sed -e 's:\([^0-9]*\).*:\1:' ` target_os2=`echo "$target_os0" | sed -e 's:\([^_]*\).*:\1:' ` target_os3=`echo "$target_os2" | sed -e 's:\([^0-9]*\).*:\1:' ` # target_cpu0=`echo "$target_cpu" | sed -e 'y:ABCDEFGHIJKLMNOPQRSTUVWXYZ.-:abcdefghijklmnopqrstuvwxyz__:' -e 's:[^a-z0-9_]::g'` target_cpu1=`echo "$target_cpu0" | sed -e 's:\([^0-9]*\).*:\1:' ` target_cpu2=`echo "$target_cpu0" | sed -e 's:\([^_]*\).*:\1:' ` target_cpu3=`echo "$target_cpu2" | sed -e 's:\([^0-9]*\).*:\1:' ` # target_cpu_arch0=`echo "$target_cpu_arch" | sed -e 'y:ABCDEFGHIJKLMNOPQRSTUVWXYZ:abcdefghijklmnopqrstuvwxyz:'` # changequote([, ])dnl # if $ac_need_target_h_file_new ; then AC_MSG_RESULT(creating $ac_need_target_h_file - canonical system defines) echo /'*' automatically generated by $PACKAGE configure '*'/ >$ac_need_target_h_file echo /'*' on `date` '*'/ >>$ac_need_target_h_file ac_need_target_h_file_new=false fi echo /'*' target lowercase defines '*'/ >>$ac_need_target_h_file dnl old1="" old2="" for i in $target_os0 $target_os1 $target_os2 $target_os3 "_"; do if test "$old1" != "$i"; then if test "$old2" != "$i"; then echo " " >>$ac_need_target_h_file echo "#ifndef __"$ac_need_target_h_prefix"_os_"$i >>$ac_need_target_h_file echo "#define __"$ac_need_target_h_prefix"_os_"$i '"'"$target_os"'"' >>$ac_need_target_h_file echo "#endif" >>$ac_need_target_h_file fi fi old2="$old1" old1="$i" done # old1="" old2="" for i in $target_cpu0 $target_cpu1 $target_cpu2 $target_cpu3 "_" do if test "$old1" != "$i"; then if test "$old2" != "$i"; then echo " " >>$ac_need_target_h_file echo "#ifndef __"$ac_need_target_h_prefix"_cpu_"$i >>$ac_need_target_h_file echo "#define __"$ac_need_target_h_prefix"_cpu_"$i '"'"$target_cpu"'"' >>$ac_need_target_h_file echo "#endif" >>$ac_need_target_h_file fi fi old2="$old1" old1="$i" done # old1="" old2="" for i in $target_cpu_arch0 "_" do if test "$old1" != "$i"; then if test "$old2" != "$i"; then echo " " >>$ac_need_target_h_file echo "#ifndef __"$ac_need_target_h_prefix"_arch_"$i >>$ac_need_target_h_file echo "#define __"$ac_need_target_h_prefix"_arch_"$i '"'"$target_cpu_arch"'"' >>$ac_need_target_h_file echo "#endif" >>$ac_need_target_h_file fi fi old2="$old1" old1="$i" done ]) dnl ------------------------------------------------------------------- dnl dnl ... the uppercase variant for the host ... dnl AC_DEFUN([AC_CREATE_TARGET_HOST_UPPER], [AC_REQUIRE([AC_CANONICAL_CPU_ARCH]) AC_REQUIRE([AC_CREATE_TARGET_H_FILE]) changequote({, })dnl ac_need_target_h_file=`echo ifelse($1, , target.h, $1)` ac_need_target_h_prefix=`echo ifelse($2, , host, $2) | sed -e 'y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:' -e 's:[^A-Z0-9_]::g'` # host_os0=`echo "$host_os" | sed -e 'y:abcdefghijklmnopqrstuvwxyz.-:ABCDEFGHIJKLMNOPQRSTUVWXYZ__:' -e 's:[^A-Z0-9_]::g'` host_os1=`echo "$host_os0" | sed -e 's:\([^0-9]*\).*:\1:' ` host_os2=`echo "$host_os0" | sed -e 's:\([^_]*\).*:\1:' ` host_os3=`echo "$host_os2" | sed -e 's:\([^0-9]*\).*:\1:' ` # host_cpu0=`echo "$host_cpu" | sed -e 'y:abcdefghijklmnopqrstuvwxyz.-:ABCDEFGHIJKLMNOPQRSTUVWXYZ__:' -e 's:[^A-Z0-9]::g'` host_cpu1=`echo "$host_cpu0" | sed -e 's:\([^0-9]*\).*:\1:' ` host_cpu2=`echo "$host_cpu0" | sed -e 's:\([^_]*\).*:\1:' ` host_cpu3=`echo "$host_cpu2" | sed -e 's:\([^0-9]*\).*:\1:' ` # host_cpu_arch0=`echo "$host_cpu_arch" | sed -e 'y:abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:'` # changequote([, ])dnl # if $ac_need_target_h_file_new ; then AC_MSG_RESULT(creating $ac_need_target_h_file - canonical system defines) echo /'*' automatically generated by $PACKAGE configure '*'/ >$ac_need_target_h_file echo /'*' on `date` '*'/ >>$ac_need_target_h_file ac_need_target_h_file_new=false fi echo /'*' host uppercase defines '*'/ >>$ac_need_target_h_file dnl old1="" old2="" for i in $host_os0 $host_os1 $host_os2 $host_os3 "TYPE" do if test "$old1" != "$i"; then if test "$old2" != "$i"; then echo " " >>$ac_need_target_h_file echo "#ifndef "$ac_need_target_h_prefix"_OS_"$i >>$ac_need_target_h_file echo "#define "$ac_need_target_h_prefix"_OS_"$i '"'"$host_os"'"' >>$ac_need_target_h_file echo "#endif" >>$ac_need_target_h_file fi fi old2="$old1" old1="$i" done # old1="" old2="" for i in $host_cpu0 $host_cpu1 $host_cpu2 $host_cpu3 "TYPE" do if test "$old1" != "$i"; then if test "$old2" != "$i"; then echo " " >>$ac_need_target_h_file echo "#ifndef "$ac_need_target_h_prefix"_CPU_"$i >>$ac_need_target_h_file echo "#define "$ac_need_target_h_prefix"_CPU_"$i '"'"$host_cpu"'"' >>$ac_need_target_h_file echo "#endif" >>$ac_need_target_h_file fi fi old2="$old1" old1="$i" done # old1="" old2="" for i in $host_cpu_arch0 "TYPE" do if test "$old1" != "$i"; then if test "$old2" != "$i"; then echo " " >>$ac_need_target_h_file echo "#ifndef "$ac_need_target_h_prefix"_ARCH_"$i >>$ac_need_target_h_file echo "#define "$ac_need_target_h_prefix"_ARCH_"$i '"'"$host_cpu_arch"'"' >>$ac_need_target_h_file echo "#endif" >>$ac_need_target_h_file fi fi old2="$old1" old1="$i" done ]) dnl --------------------------------------------------------------------- dnl dnl ... the lowercase variant for the host ... dnl AC_DEFUN([AC_CREATE_TARGET_HOST_LOWER], [AC_REQUIRE([AC_CANONICAL_CPU_ARCH]) AC_REQUIRE([AC_CREATE_TARGET_H_FILE]) changequote({, })dnl ac_need_target_h_file=`echo ifelse($1, , target.h, $1)` ac_need_target_h_prefix=`echo ifelse($2, , host, $2) | sed -e 'y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:' -e 's:[^a-z0-9_]::g'` # host_os0=`echo "$host_os" | sed -e 'y:ABCDEFGHIJKLMNOPQRSTUVWXYZ.-:abcdefghijklmnopqrstuvwxyz__:' -e 's:[^a-z0-9_]::g'` host_os1=`echo "$host_os0" | sed -e 's:\([^0-9]*\).*:\1:' ` host_os2=`echo "$host_os0" | sed -e 's:\([^_]*\).*:\1:' ` host_os3=`echo "$host_os2" | sed -e 's:\([^0-9]*\).*:\1:' ` # host_cpu0=`echo "$host_cpu" | sed -e 'y:ABCDEFGHIJKLMNOPQRSTUVWXYZ.-:abcdefghijklmnopqrstuvwxyz__:' -e 's:[^a-z0-9_]::g'` host_cpu1=`echo "$host_cpu0" | sed -e 's:\([^0-9]*\).*:\1:' ` host_cpu2=`echo "$host_cpu0" | sed -e 's:\([^_]*\).*:\1:' ` host_cpu3=`echo "$host_cpu2" | sed -e 's:\([^0-9]*\).*:\1:' ` # host_cpu_arch0=`echo "$host_cpu_arch" | sed -e 'y:ABCDEFGHIJKLMNOPQRSTUVWXYZ:abcdefghijklmnopqrstuvwxyz:'` # changequote([, ])dnl # if $ac_need_target_h_file_new ; then AC_MSG_RESULT(creating $ac_need_target_h_file - canonical system defines) echo /'*' automatically generated by $PACKAGE configure '*'/ >$ac_need_target_h_file echo /'*' on `date` '*'/ >>$ac_need_target_h_file ac_need_target_h_file_new=false fi echo /'*' host lowercase defines '*'/ >>$ac_need_target_h_file dnl old1="" old2="" for i in $host_os0 $host_os1 $host_os2 $host_os3 "_"; do if test "$old1" != "$i"; then if test "$old2" != "$i"; then echo " " >>$ac_need_target_h_file echo "#ifndef __"$ac_need_target_h_prefix"_os_"$i >>$ac_need_target_h_file echo "#define __"$ac_need_target_h_prefix"_os_"$i '"'"$host_os"'"' >>$ac_need_target_h_file echo "#endif" >>$ac_need_target_h_file fi fi old2="$old1" old1="$i" done # old1="" old2="" for i in $host_cpu0 $host_cpu1 $host_cpu2 $host_cpu3 "_" do if test "$old1" != "$i"; then if test "$old2" != "$i"; then echo " " >>$ac_need_target_h_file echo "#ifndef __"$ac_need_target_h_prefix"_cpu_"$i >>$ac_need_target_h_file echo "#define __"$ac_need_target_h_prefix"_cpu_"$i '"'"$host_cpu"'"' >>$ac_need_target_h_file echo "#endif" >>$ac_need_target_h_file fi fi old2="$old1" old1="$i" done # old1="" old2="" for i in $host_cpu_arch0 "_" do if test "$old1" != "$i"; then if test "$old2" != "$i"; then echo " " >>$ac_need_target_h_file echo "#ifndef __"$ac_need_target_h_prefix"_arch_"$i >>$ac_need_target_h_file echo "#define __"$ac_need_target_h_prefix"_arch_"$i '"'"$host_cpu_arch"'"' >>$ac_need_target_h_file echo "#endif" >>$ac_need_target_h_file fi fi old2="$old1" old1="$i" done ]) dnl ------------------------------------------------------------------- dnl dnl the instruction set architecture (ISA) has evolved for a small set dnl of cpu types. So they often have specific names, e.g. sparclite, dnl yet they share quite a few similarities. This macro will set the dnl shell-var $target_cpu_arch to the basic type. Note that these dnl names are often in conflict with their original 32-bit type name dnl of these processors, just use them for directory-handling or add dnl a prefix/suffix to distinguish them from $target_cpu dnl dnl this macros has been invented since config.guess is sometimes dnl too specific about the cpu-type. I chose the names along the lines dnl of linux/arch/ which is modelled after widespread arch-naming, IMHO. dnl AC_DEFUN([AC_CANONICAL_CPU_ARCH], [AC_REQUIRE([AC_CANONICAL_SYSTEM]) target_cpu_arch="unknown" case $target_cpu in i386*|i486*|i586*|i686*|i786*) target_cpu_arch=i386 ;; power*) target_cpu_arch=ppc ;; arm*) target_cpu_arch=arm ;; sparc64*) target_cpu_arch=sparc64 ;; sparc*) target_cpu_arch=sparc ;; mips64*) target_cpu_arch=mips64 ;; mips*) target_cpu_arch=mips ;; alpha*) target_cpu_arch=alpha ;; hppa1*) target_cpu_arch=hppa1 ;; hppa2*) target_cpu_arch=hppa2 ;; arm*) target_cpu_arch=arm ;; m68???|mcf54??) target_cpu_arch=m68k ;; *) target_cpu_arch="$target_cpu" ;; esac host_cpu_arch="unknown" case $host_cpu in i386*|i486*|i586*|i686*|i786*) host_cpu_arch=i386 ;; power*) host_cpu_arch=ppc ;; arm*) host_cpu_arch=arm ;; sparc64*) host_cpu_arch=sparc64 ;; sparc*) host_cpu_arch=sparc ;; mips64*) host_cpu_arch=mips64 ;; mips*) host_cpu_arch=mips ;; alpha*) host_cpu_arch=alpha ;; hppa1*) host_cpu_arch=hppa1 ;; hppa2*) host_cpu_arch=hppa2 ;; arm*) host_cpu_arch=arm ;; m68???|mcf54??) host_cpu_arch=m68k ;; *) host_cpu_arch="$target_cpu" ;; esac ]) dnl @synopsis AC_COMPILE_CHECK_SIZEOF(TYPE [, HEADERS [, EXTRA_SIZES...]]) dnl dnl This macro checks for the size of TYPE using compile checks, not dnl run checks. You can supply extra HEADERS to look into. the check dnl will cycle through 1 2 4 8 16 and any EXTRA_SIZES the user dnl supplies. If a match is found, it will #define SIZEOF_`TYPE' to dnl that value. Otherwise it will emit a configure time error dnl indicating the size of the type could not be determined. dnl dnl The trick is that C will not allow duplicate case labels. While dnl this is valid C code: dnl dnl switch (0) case 0: case 1:; dnl dnl The following is not: dnl dnl switch (0) case 0: case 0:; dnl dnl Thus, the AC_TRY_COMPILE will fail if the currently tried size dnl does not match. dnl dnl Here is an example skeleton configure.in script, demonstrating the dnl macro's usage: dnl dnl AC_PROG_CC dnl AC_CHECK_HEADERS(stddef.h unistd.h) dnl AC_TYPE_SIZE_T dnl AC_CHECK_TYPE(ssize_t, int) dnl dnl headers='#ifdef HAVE_STDDEF_H dnl #include dnl #endif dnl #ifdef HAVE_UNISTD_H dnl #include dnl #endif dnl ' dnl dnl AC_COMPILE_CHECK_SIZEOF(char) dnl AC_COMPILE_CHECK_SIZEOF(short) dnl AC_COMPILE_CHECK_SIZEOF(int) dnl AC_COMPILE_CHECK_SIZEOF(long) dnl AC_COMPILE_CHECK_SIZEOF(unsigned char *) dnl AC_COMPILE_CHECK_SIZEOF(void *) dnl AC_COMPILE_CHECK_SIZEOF(size_t, $headers) dnl AC_COMPILE_CHECK_SIZEOF(ssize_t, $headers) dnl AC_COMPILE_CHECK_SIZEOF(ptrdiff_t, $headers) dnl AC_COMPILE_CHECK_SIZEOF(off_t, $headers) dnl dnl @author Kaveh Ghazi dnl @version $Id: acinclude.m4,v 1.8 2006/12/22 19:45:32 acab Exp $ dnl AC_DEFUN([AC_COMPILE_CHECK_SIZEOF], [changequote(<<, >>)dnl dnl The name to #define. define(<>, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl dnl The cache variable name. define(<>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl changequote([, ])dnl AC_MSG_CHECKING(size of $1) AC_CACHE_VAL(AC_CV_NAME, [for ac_size in 4 8 1 2 16 $2 ; do # List sizes in rough order of prevalence. AC_TRY_COMPILE([#include "confdefs.h" #include $2 ], [switch (0) case 0: case (sizeof ($1) == $ac_size):;], AC_CV_NAME=$ac_size) if test x$AC_CV_NAME != x ; then break; fi done ]) if test x$AC_CV_NAME = x ; then AC_MSG_ERROR([cannot determine a size for $1]) fi AC_MSG_RESULT($AC_CV_NAME) AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [The number of bytes in type $1]) undefine([AC_TYPE_NAME])dnl undefine([AC_CV_NAME])dnl ]) dnl Add --enable-maintainer-mode option to configure. dnl From Jim Meyering dnl serial 1 AC_DEFUN([AM_MAINTAINER_MODE], [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode is disabled by default AC_ARG_ENABLE(maintainer-mode, [ --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer], USE_MAINTAINER_MODE=$enableval, USE_MAINTAINER_MODE=no) AC_MSG_RESULT($USE_MAINTAINER_MODE) AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST(MAINT)dnl ] )