## Portability defines that help interoperate with classic and modern autoconfs ifdef([AC_TR_SH],[ define([GLIB_TR_SH],[AC_TR_SH([$1])]) define([GLIB_TR_CPP],[AC_TR_CPP([$1])]) ], [ define([GLIB_TR_SH], [patsubst(translit([[$1]], [*+], [pp]), [[^a-zA-Z0-9_]], [_])]) define([GLIB_TR_CPP], [patsubst(translit([[$1]], [*abcdefghijklmnopqrstuvwxyz], [PABCDEFGHIJKLMNOPQRSTUVWXYZ]), [[^A-Z0-9_]], [_])]) ]) # GLIB_AC_DIVERT_BEFORE_HELP(STUFF) # --------------------------------- # Put STUFF early enough so that they are available for $ac_help expansion. # Handle both classic (<= v2.13) and modern autoconf AC_DEFUN([GLIB_AC_DIVERT_BEFORE_HELP], [ifdef([m4_divert_text], [m4_divert_text([NOTICE],[$1])], [ifdef([AC_DIVERT], [AC_DIVERT([NOTICE],[$1])], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl $1 AC_DIVERT_POP()])])]) dnl GLIB_IF_VAR_EQ (ENV_VAR, VALUE [, EQUALS_ACTION] [, ELSE_ACTION]) AC_DEFUN(GLIB_IF_VAR_EQ,[ case "$[$1]" in "[$2]"[)] [$3] ;; *[)] [$4] ;; esac ]) dnl GLIB_STR_CONTAINS (SRC_STRING, SUB_STRING [, CONTAINS_ACTION] [, ELSE_ACTION]) AC_DEFUN(GLIB_STR_CONTAINS,[ case "[$1]" in *"[$2]"*[)] [$3] ;; *[)] [$4] ;; esac ]) dnl GLIB_ADD_TO_VAR (ENV_VARIABLE, CHECK_STRING, ADD_STRING) AC_DEFUN(GLIB_ADD_TO_VAR,[ GLIB_STR_CONTAINS($[$1], [$2], [$1]="$[$1]", [$1]="$[$1] [$3]") ]) dnl GLIB_SIZEOF (INCLUDES, TYPE, ALIAS [, CROSS-SIZE]) AC_DEFUN(GLIB_SIZEOF, [pushdef([glib_Sizeof], GLIB_TR_SH([glib_cv_sizeof_$3]))dnl AC_CACHE_CHECK([size of $2], glib_Sizeof, [AC_TRY_RUN([#include #if STDC_HEADERS #include #include #endif $1 main() { FILE *f=fopen("conftestval", "w"); if (!f) exit(1); fprintf(f, "%d\n", sizeof($2)); exit(0); }], [glib_Sizeof=`cat conftestval` dnl'' ], [glib_Sizeof=0], ifelse([$4], [], [], [glib_Sizeof=$4]))]) AC_DEFINE_UNQUOTED(GLIB_TR_CPP(glib_sizeof_$3), [$[]glib_Sizeof], [Size of $3]) popdef([glib_Sizeof])dnl ]) dnl GLIB_BYTE_CONTENTS (INCLUDES, TYPE, ALIAS, N_BYTES, INITIALIZER) AC_DEFUN(GLIB_BYTE_CONTENTS, [pushdef([glib_ByteContents], GLIB_TR_SH([glib_cv_byte_contents_$3]))dnl AC_CACHE_CHECK([byte contents of $5], glib_ByteContents, [AC_TRY_RUN([#include $1 main() { static $2 tv = $5; char *p = (char*) &tv; int i; FILE *f=fopen("conftestval", "w"); if (!f) exit(1); for (i = 0; i < $4; i++) fprintf(f, "%s%d", i?",":"", *(p++)); fprintf(f, "\n"); exit(0); }], [glib_ByteContents=`cat conftestval` dnl'' ], [glib_ByteContents=no], [glib_ByteContents=no])]) AC_DEFINE_UNQUOTED(GLIB_TR_CPP(glib_byte_contents_$3), [$[]glib_ByteContents], [Byte contents of $3]) popdef([glib_ByteContents])dnl ]) dnl GLIB_SYSDEFS (INCLUDES, DEFS_LIST, OFILE [, PREFIX]) AC_DEFUN(GLIB_SYSDEFS, [glib_sysdefso="translit($3, [-_a-zA-Z0-9 *], [-_a-zA-Z0-9])" glib_sysdef_msg=`echo $2 | sed 's/:[[^ ]]*//g'` if test "x`(echo '\n') 2>/dev/null`" != 'x\n'; then glib_nl='\\n' else glib_nl='\n' fi AC_MSG_CHECKING(system definitions for $glib_sysdef_msg) cat >confrun.c <<_______EOF #include $1 int main (int c, char **v) { FILE *f = fopen ("$glib_sysdefso", "a"); if (!f) return 1; _______EOF for glib_sysdef_input in $2 ; do glib_sysdef=`echo $glib_sysdef_input | sed 's/^\([[^:]]*\):.*$/\1/'` glib_default=`echo $glib_sysdef_input | sed 's/^[[^:]]*:\(.*\)$/\1/'` echo "#ifdef $glib_sysdef" >>confrun.c echo " fprintf (f, \"#define GLIB_SYSDEF_%s %s%d${glib_nl}\", \"$glib_sysdef\", \"$4\", $glib_sysdef);" >>confrun.c echo "#else" >>confrun.c if test $glib_sysdef != $glib_default; then echo " fprintf (f, \"#define GLIB_SYSDEF_%s %s%d${glib_nl}\", \"$glib_sysdef\", \"$4\", $glib_default);" >>confrun.c else echo " fprintf (f, \"#define GLIB_SYSDEF_%s${glib_nl}\", \"$glib_sysdef\");" >>confrun.c fi echo "#endif" >>confrun.c done echo "return 0; }" >>confrun.c AC_TRY_RUN(`cat confrun.c`, AC_MSG_RESULT(done), [ for glib_sysdef_input in $2 ; do glib_sysdef=`echo $glib_sysdef_input | sed 's/^\([[^:]]*\):.*$/\1/'` glib_default=`echo $glib_sysdef_input | sed 's/^[[^:]]*:\(.*\)$/\1/'` if test $glib_sysdef != $glib_default; then glib_default=" $4$glib_default" else glib_default= fi echo "#define GLIB_SYSDEF_$glib_sysdef$glib_default" >>$glib_sysdefso done AC_MSG_RESULT(failed)]) rm -f confrun.c ])