include <stdlib.h> and <stddef.h> if STDC_HEADERS is defined.
[platform/upstream/glib.git] / acglib.m4
1 dnl GLIB_IF_VAR_EQ (ENV_VAR, VALUE [, EQUALS_ACTION] [, ELSE_ACTION])
2 AC_DEFUN(GLIB_IF_VAR_EQ,[
3         case "$[$1]" in
4         "[$2]"[)]
5                 [$3]
6                 ;;
7         *[)]
8                 [$4]
9                 ;;
10         esac
11 ])
12 dnl GLIB_STR_CONTAINS (SRC_STRING, SUB_STRING [, CONTAINS_ACTION] [, ELSE_ACTION])
13 AC_DEFUN(GLIB_STR_CONTAINS,[
14         case "[$1]" in
15         *"[$2]"*[)]
16                 [$3]
17                 ;;
18         *[)]
19                 [$4]
20                 ;;
21         esac
22 ])
23 dnl GLIB_ADD_TO_VAR (ENV_VARIABLE, CHECK_STRING, ADD_STRING)
24 AC_DEFUN(GLIB_ADD_TO_VAR,[
25         GLIB_STR_CONTAINS($[$1], [$2], [$1]="$[$1]", [$1]="$[$1] [$3]")
26 ])
27
28 dnl GLIB_SIZEOF (INCLUDES, TYPE, ALIAS [, CROSS-SIZE])
29 AC_DEFUN(GLIB_SIZEOF,
30 [changequote(<<, >>)dnl
31 dnl The name to #define.
32 define(<<AC_TYPE_NAME>>, translit(glib_sizeof_$3, [a-z *], [A-Z_P]))dnl
33 dnl The cache variable name.
34 define(<<AC_CV_NAME>>, translit(glib_cv_sizeof_$3, [ *], [_p]))dnl
35 changequote([, ])dnl
36 AC_MSG_CHECKING(size of $2)
37 AC_CACHE_VAL(AC_CV_NAME,
38 [AC_TRY_RUN([#include <stdio.h>
39 #if STDC_HEADERS
40 #include <stdlib.h>
41 #include <stddef.h>
42 #endif
43 $1
44 main()
45 {
46   FILE *f=fopen("conftestval", "w");
47   if (!f) exit(1);
48   fprintf(f, "%d\n", sizeof($2));
49   exit(0);
50 }], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$4], , , AC_CV_NAME=$4))])dnl
51 AC_MSG_RESULT($AC_CV_NAME)
52 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
53 undefine([AC_TYPE_NAME])dnl
54 undefine([AC_CV_NAME])dnl
55 ])
56
57 dnl GLIB_BYTE_CONTENTS (INCLUDES, TYPE, ALIAS, N_BYTES, INITIALIZER)
58 AC_DEFUN(GLIB_BYTE_CONTENTS,
59 [changequote(<<, >>)dnl
60 dnl The name to #define.
61 define(<<AC_TYPE_NAME>>, translit(glib_byte_contents_$3, [a-z *], [A-Z_P]))dnl
62 dnl The cache variable name.
63 define(<<AC_CV_NAME>>, translit(glib_cv_byte_contents_$3, [ *], [_p]))dnl
64 changequote([, ])dnl
65 AC_MSG_CHECKING(byte contents of $5)
66 AC_CACHE_VAL(AC_CV_NAME,
67 [AC_TRY_RUN([#include <stdio.h>
68 $1
69 main()
70 {
71   static $2 tv = $5;
72   char *p = (char*) &tv;
73   int i;
74   FILE *f=fopen("conftestval", "w");
75   if (!f) exit(1);
76   for (i = 0; i < $4; i++)
77     fprintf(f, "%s%d", i?",":"", *(p++));
78   fprintf(f, "\n");
79   exit(0);
80 }], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=no, AC_CV_NAME=no)])dnl
81 AC_MSG_RESULT($AC_CV_NAME)
82 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
83 undefine([AC_TYPE_NAME])dnl
84 undefine([AC_CV_NAME])dnl
85 ])
86
87 dnl GLIB_SYSDEFS (INCLUDES, DEFS_LIST, OFILE [, PREFIX])
88 AC_DEFUN(GLIB_SYSDEFS,
89 [glib_sysdefso="translit($3, [-_a-zA-Z0-9 *], [-_a-zA-Z0-9])"
90 glib_sysdef_msg=`echo $2 | sed 's/:[[^  ]]*//g'`
91 if test "x`(echo '\n') 2>/dev/null`" != 'x\n'; then
92   glib_nl='\\n'
93 else
94   glib_nl='\n'
95 fi
96 AC_MSG_CHECKING(system definitions for $glib_sysdef_msg)
97 cat >confrun.c <<_______EOF
98 #include <stdio.h>
99 $1
100 int main (int c, char **v) {
101   FILE *f = fopen ("$glib_sysdefso", "a");
102   if (!f) return 1;
103 _______EOF
104 for glib_sysdef_input in $2 ; do
105         glib_sysdef=`echo $glib_sysdef_input | sed 's/^\([[^:]]*\):.*$/\1/'`
106         glib_default=`echo $glib_sysdef_input | sed 's/^[[^:]]*:\(.*\)$/\1/'`
107         echo "#ifdef $glib_sysdef" >>confrun.c
108         echo "  fprintf (f, \"#define GLIB_SYSDEF_%s %s%d${glib_nl}\", \"$glib_sysdef\", \"$4\", $glib_sysdef);" >>confrun.c
109         echo "#else" >>confrun.c
110         if test $glib_sysdef != $glib_default; then
111                 echo "  fprintf (f, \"#define GLIB_SYSDEF_%s %s%d${glib_nl}\", \"$glib_sysdef\", \"$4\", $glib_default);" >>confrun.c
112         else
113                 echo "  fprintf (f, \"#define GLIB_SYSDEF_%s${glib_nl}\", \"$glib_sysdef\");" >>confrun.c
114         fi
115         echo "#endif" >>confrun.c
116 done
117 echo "return 0; }" >>confrun.c
118 AC_TRY_RUN(`cat confrun.c`, AC_MSG_RESULT(done),
119 [       for glib_sysdef_input in $2 ; do
120                 glib_sysdef=`echo $glib_sysdef_input | sed 's/^\([[^:]]*\):.*$/\1/'`
121                 glib_default=`echo $glib_sysdef_input | sed 's/^[[^:]]*:\(.*\)$/\1/'`
122                 if test $glib_sysdef != $glib_default; then
123                         glib_default=" $4$glib_default"
124                 else
125                         glib_default=
126                 fi
127                 echo "#define GLIB_SYSDEF_$glib_sysdef$glib_default" >>$glib_sysdefso
128         done
129         AC_MSG_RESULT(failed)])
130 rm -f confrun.c
131 ])