implemented g_datalist_* along the lines of g_dataset, but operates on an
[platform/upstream/glib.git] / configure.in
1 # Process this file with autoconf to produce a configure script.
2 AC_INIT(glist.c)
3
4 # Save this value here, since automake will set cflags later
5 cflags_set=${CFLAGS+set}
6
7 # Making releases:
8 #   GLIB_MICRO_VERSION += 1;
9 #   GLIB_INTERFACE_AGE += 1;
10 #   GLIB_BINARY_AGE += 1;
11 # if any functions have been added, set GLIB_INTERFACE_AGE to 0.
12 # if backwards compatibility has been broken,
13 # set GLIB_BINARY_AGE and GLIB_INTERFACE_AGE to 0.
14 #
15 GLIB_MAJOR_VERSION=1
16 GLIB_MINOR_VERSION=1
17 GLIB_MICRO_VERSION=3
18 GLIB_INTERFACE_AGE=0
19 GLIB_BINARY_AGE=0
20 GLIB_VERSION=$GLIB_MAJOR_VERSION.$GLIB_MINOR_VERSION.$GLIB_MICRO_VERSION
21 AC_SUBST(GLIB_VERSION)
22
23 # libtool versioning
24 LT_RELEASE=$GLIB_MAJOR_VERSION.$GLIB_MINOR_VERSION
25 LT_CURRENT=`expr $GLIB_MICRO_VERSION - $GLIB_INTERFACE_AGE`
26 LT_REVISION=$GLIB_INTERFACE_AGE
27 LT_AGE=`expr $GLIB_BINARY_AGE - $GLIB_INTERFACE_AGE`
28 AC_SUBST(LT_RELEASE)
29 AC_SUBST(LT_CURRENT)
30 AC_SUBST(LT_REVISION)
31 AC_SUBST(LT_AGE)
32
33 VERSION=$GLIB_VERSION
34 PACKAGE=glib
35
36 AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
37
38 # Specify a configuration file
39 AM_CONFIG_HEADER(glibconfig.h)
40
41 AC_DEFINE_UNQUOTED(GLIB_MAJOR_VERSION, $GLIB_MAJOR_VERSION)
42 AC_DEFINE_UNQUOTED(GLIB_MINOR_VERSION, $GLIB_MINOR_VERSION)
43 AC_DEFINE_UNQUOTED(GLIB_MICRO_VERSION, $GLIB_MICRO_VERSION)
44 AC_DEFINE_UNQUOTED(GLIB_INTERFACE_AGE, $GLIB_INTERFACE_AGE)
45 AC_DEFINE_UNQUOTED(GLIB_BINARY_AGE, $GLIB_BINARY_AGE)
46
47 dnl Initialize libtool
48 AM_PROG_LIBTOOL
49
50 dnl Initialize maintainer mode
51 AM_MAINTAINER_MODE
52
53 AC_CANONICAL_HOST
54
55 AC_ARG_ENABLE(debug, [  --enable-debug=[no/minimum/yes] turn on debugging [default=minimum]],,enable_debug=minimum)
56 AC_ARG_ENABLE(mem_check, [  --enable-mem-check=[no/yes] turn on malloc/free sanity checking [default=no]],,enable_mem_check=no)
57 AC_ARG_ENABLE(mem_profile, [  --enable-mem-profile=[no/yes] turn on malloc profiling atexit [default=no]],,enable_mem_profile=no)
58
59 AC_ARG_ENABLE(ansi, [  --enable-ansi           turn on strict ansi [default=no]],
60                     , enable_ansi=no)
61
62 AC_MSG_CHECKING(whether to enable memory checking)
63 if test "x$enable_mem_check" = "xyes"; then
64   AC_DEFINE(ENABLE_MEM_CHECK, 1)
65   AC_SUBST(ENABLE_MEM_CHECK)
66   AC_MSG_RESULT(yes)
67 else
68   AC_MSG_RESULT(no)
69 fi
70
71 AC_MSG_CHECKING(whether to enable memory profiling)
72 if test "x$enable_mem_profile" = "xyes"; then
73   AC_DEFINE(ENABLE_MEM_PROFILE, 1)
74   AC_SUBST(ENABLE_MEM_PROFILE)
75   AC_MSG_RESULT(yes)
76 else
77   AC_MSG_RESULT(no)
78 fi
79
80 if test "x$enable_debug" = "xyes"; then
81   test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
82   CFLAGS="$CFLAGS -DG_ENABLE_DEBUG"
83 else
84   if test "x$enable_debug" = "xno"; then
85     CFLAGS="$CFLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
86   fi
87 fi
88
89 AC_DEFINE_UNQUOTED(G_COMPILED_WITH_DEBUGGING, "${enable_debug}")
90
91 # Checks for programs.
92 AC_PROG_CC
93 AM_PROG_CC_STDC
94 AC_PROG_INSTALL
95
96 if eval "test x$GCC = xyes"; then
97   if eval test -z \"`echo "$CFLAGS" | grep "\-Wall" 2> /dev/null`\" ; then
98     CFLAGS="$CFLAGS -Wall"
99   fi
100
101   if eval "test x$enable_ansi = xyes"; then
102     if eval test -z \"`echo "$CFLAGS" | grep "\-ansi" 2> /dev/null`\" ; then
103       CFLAGS="$CFLAGS -ansi"
104     fi
105
106     if eval test -z \"`echo "$CFLAGS" | grep "\-pedantic" 2> /dev/null`\" ; then
107       CFLAGS="$CFLAGS -pedantic"
108     fi
109   fi
110 fi
111
112 dnl DU4 native cc currently needs -std1 for ANSI mode (instead of K&R)
113 AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
114 glib_save_LIBS=$LIBS
115 LIBS="$LIBS -lm"
116 AC_TRY_RUN([#include <math.h>
117              int main (void) { return (log(1) != log(1.)); }],
118      AC_MSG_RESULT(none needed),
119      glib_save_CFLAGS=$CFLAGS
120      CFLAGS="$CFLAGS -std1"
121      AC_TRY_RUN([#include <math.h>
122                  int main (void) { return (log(1) != log(1.)); }],
123          AC_MSG_RESULT(-std1),
124          AC_MSG_RESULT()
125          CFLAGS=$glib_save_CFLAGS
126          AC_MSG_WARN(
127                 [No ANSI prototypes found in library. (-std1 didn't work.)])
128      )
129 )
130 LIBS=$glib_save_LIBS
131
132 dnl NeXTStep cc seems to need this
133 AC_MSG_CHECKING([for extra flags for POSIX compliance])
134 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
135   AC_MSG_RESULT(none needed),
136   glib_save_CFLAGS=$CFLAGS
137   CFLAGS="$CFLAGS -posix"
138   AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
139     AC_MSG_RESULT(-posix),
140     AC_MSG_RESULT()
141     CFLAGS=$glib_save_CFLAGS
142     AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
143
144 # Checks for header files.
145 AC_HEADER_STDC
146
147 # Checks for library functions.
148 AC_FUNC_VPRINTF
149
150 AC_CHECK_FUNCS(atexit on_exit)
151
152 AC_CHECK_SIZEOF(char)
153 AC_CHECK_SIZEOF(short)
154 AC_CHECK_SIZEOF(long)
155 AC_CHECK_SIZEOF(int)
156 AC_CHECK_SIZEOF(void *)
157 AC_CHECK_SIZEOF(long long)
158
159 dnl long doubles were not used, and a portability problem 
160 dnl AC_C_LONG_DOUBLE
161 AC_C_CONST
162
163 dnl AC_C_INLINE is useless to us since it bails out too early, we need to
164 dnl truely know which ones of `inline', `__inline' and `__inline__' are
165 dnl actually supported.
166 AC_MSG_CHECKING(for __inline)
167 AC_CACHE_VAL(glib_cv_has__inline,[
168         AC_TRY_RUN([
169         __inline int foo () { return 0; }
170         int main () { return foo (); }
171         ],
172         glib_cv_has__inline=yes
173         ,
174         glib_cv_has__inline=no
175         ,)
176 ])
177 AC_MSG_RESULT($glib_cv_has__inline)
178 case x$glib_cv_has__inline in
179 xyes) AC_DEFINE(G_HAVE___INLINE)
180 esac
181 AC_MSG_CHECKING(for __inline__)
182 AC_CACHE_VAL(glib_cv_has__inline__,[
183         AC_TRY_RUN([
184         __inline__ int foo () { return 0; }
185         int main () { return foo (); }
186         ],
187         glib_cv_has__inline__=yes
188         ,
189         glib_cv_has__inline__=no
190         ,)
191 ])
192 AC_MSG_RESULT($glib_cv_has__inline__)
193 case x$glib_cv_has__inline__ in
194 xyes) AC_DEFINE(G_HAVE___INLINE__)
195 esac
196 AC_MSG_CHECKING(for inline)
197 AC_CACHE_VAL(glib_cv_hasinline,[
198         AC_TRY_RUN([
199         inline int foo () { return 0; }
200         int main () { return foo (); }
201         ],
202         glib_cv_hasinline=yes
203         ,
204         glib_cv_hasinline=no
205         ,)
206 ])
207 AC_MSG_RESULT($glib_cv_hasinline)
208 case x$glib_cv_hasinline in
209 xyes) AC_DEFINE(G_HAVE_INLINE)
210 esac
211
212
213 dnl header file checks
214 AC_CHECK_HEADERS(float.h, AC_DEFINE(HAVE_FLOAT_H))
215 AC_CHECK_HEADERS(limits.h, AC_DEFINE(HAVE_LIMITS_H))
216 AC_CHECK_HEADERS(values.h, AC_DEFINE(HAVE_VALUES_H))
217
218 # Check for strerror, strsignal, memmove, vsnprintf, and strcasecmp functions
219 AC_CHECK_FUNCS(strerror strsignal memmove vsnprintf strcasecmp)
220
221 # Check for sys_errlist
222 AC_MSG_CHECKING(for sys_errlist)
223 AC_TRY_LINK(, [
224 extern char *sys_errlist[];
225 extern int sys_nerr;
226 sys_errlist[sys_nerr-1][0] = 0;
227 ], glib_ok=yes, glib_ok=no)
228 AC_MSG_RESULT($glib_ok)
229 if test $glib_ok = no; then
230     AC_DEFINE(NO_SYS_ERRLIST)
231 fi
232
233 # Check for sys_siglist
234 AC_MSG_CHECKING(for sys_siglist)
235 AC_TRY_LINK(, [
236 extern char *sys_siglist[];
237 sys_siglist[1][0] = 0;
238 ], glib_ok=yes, glib_ok=no)
239 AC_MSG_RESULT($glib_ok)
240 if test $glib_ok = no; then
241     AC_DEFINE(NO_SYS_SIGLIST)
242 fi
243
244 # Check if <sys/select.h> needs to be included for fd_set
245 AC_MSG_CHECKING([for fd_set])
246 AC_TRY_COMPILE([#include <sys/types.h>],
247         [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
248 if test $gtk_ok = yes; then
249     AC_MSG_RESULT([yes, found in sys/types.h])
250 else
251     AC_HEADER_EGREP(fd_mask, sys/select.h, gtk_ok=yes)
252     if test $gtk_ok = yes; then
253         AC_DEFINE(HAVE_SYS_SELECT_H)
254         AC_MSG_RESULT([yes, found in sys/select.h])
255     else
256         AC_DEFINE(NO_FD_SET)
257         AC_MSG_RESULT(no)
258     fi
259 fi
260
261 # This stuff is here, only so that we can define these
262 # things in glibconfig.h. If ../config.h was installed
263 # (under some other name?) then the definitions would
264 # belong there. (They are only used in GDK)
265
266 # Check for wchar.h
267
268 AC_MSG_CHECKING(for wchar.h)
269 AC_TRY_CPP([#include <wchar.h>], gtk_ok=yes, gtk_ok=no)
270 if test $gtk_ok = yes; then
271    AC_DEFINE(HAVE_WCHAR_H)
272 fi
273 AC_MSG_RESULT($gtk_ok)
274
275 # Check for wctype.h (for iswalnum)
276
277 AC_MSG_CHECKING(for wctype.h)
278 AC_TRY_CPP([#include <wctype.h>], gtk_ok=yes, gtk_ok=no)
279 if test $gtk_ok = yes; then
280    AC_DEFINE(HAVE_WCTYPE_H)
281 fi
282 AC_MSG_RESULT($gtk_ok)
283
284 # The following is necessary for Linux libc-5.4.38
285
286 AC_MSG_CHECKING(if iswalnum() and friends are properly defined)
287 AC_TRY_LINK([#include <stdlib.h>],[
288 #if (defined(HAVE_WCTYPE_H) || defined(HAVE_WCHAR_H))
289 #  ifdef HAVE_WCTYPE_H
290 #    include <wctype.h>
291 #  else
292 #    ifdef HAVE_WCHAR_H
293 #      include <wchar.h>
294 #    endif
295 #  endif
296 #else
297 #  define iswalnum(c) ((wchar_t)(c) <= 0xFF && isalnum(c))
298 #endif
299 iswalnum((wchar_t) 0);
300 ], gtk_ok=yes, gtk_ok=no)
301
302 if test $gtk_ok = no; then
303    AC_DEFINE(HAVE_BROKEN_WCTYPE)
304 fi
305 AC_MSG_RESULT($gtk_ok)
306
307 dnl **********************
308 dnl *** va_copy checks ***
309 dnl **********************
310 dnl we currently check for all three va_copy possibilities, so we get
311 dnl all results in config.log for bug reports.
312 AC_MSG_CHECKING(for an implementation of va_copy())
313 AC_CACHE_VAL(glib_cv_va_copy,[
314         AC_TRY_RUN([
315         #include <stdarg.h>
316         void f (int i, ...) {
317         va_list args1, args2;
318         va_start (args1, i);
319         va_copy (args2, args1);
320         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
321           exit (1);
322         va_end (args1); va_end (args2);
323         }
324         int main() {
325           f (0, 42);
326           return 0;
327         }],
328         glib_cv_va_copy=yes
329         ,
330         glib_cv_va_copy=no
331         ,)
332 ])
333 AC_MSG_RESULT($glib_cv_va_copy)
334 AC_MSG_CHECKING(for an implementation of __va_copy())
335 AC_CACHE_VAL(glib_cv___va_copy,[
336         AC_TRY_RUN([
337         #include <stdarg.h>
338         void f (int i, ...) {
339         va_list args1, args2;
340         va_start (args1, i);
341         __va_copy (args2, args1);
342         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
343           exit (1);
344         va_end (args1); va_end (args2);
345         }
346         int main() {
347           f (0, 42);
348           return 0;
349         }],
350         glib_cv___va_copy=yes
351         ,
352         glib_cv___va_copy=no
353         ,)
354 ])
355 AC_MSG_RESULT($glib_cv___va_copy)
356 AC_MSG_CHECKING(whether va_lists can be copied by value)
357 AC_CACHE_VAL(glib_cv_va_val_copy,[
358         AC_TRY_RUN([
359         #include <stdarg.h>
360         void f (int i, ...) {
361         va_list args1, args2;
362         va_start (args1, i);
363         args2 = args1;
364         if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
365           exit (1);
366         va_end (args1); va_end (args2);
367         }
368         int main() {
369           f (0, 42);
370           return 0;
371         }],
372         glib_cv_va_val_copy=yes
373         ,
374         glib_cv_va_val_copy=no
375         ,)
376 ])
377 if test "x$glib_cv_va_copy" = "xyes"; then
378   AC_DEFINE(G_VA_COPY, va_copy)
379 else if test "x$glib_cv___va_copy" = "xyes"; then
380   AC_DEFINE(G_VA_COPY, __va_copy)
381 fi
382 fi
383 if test "x$glib_cv_va_val_copy" = "xno"; then
384   AC_DEFINE(G_VA_COPY_AS_ARRAY)
385 fi
386 AC_MSG_RESULT($glib_cv_va_val_copy)
387
388
389 dnl ***********************
390 dnl *** g_module checks ***
391 dnl ***********************
392 G_MODULE_LIBS=
393 G_MODULE_LDFLAGS=
394 G_MODULE_IMPL=
395 G_MODULE_NEED_USCORE=0
396 G_MODULE_HAVE_DLERROR=0
397 dnl *** dlopen() in system libraries
398 if test -z "$G_MODULE_IMPL"; then
399         AC_CHECK_FUNC(dlopen,
400                 G_MODULE_IMPL=G_MODULE_IMPL_DL
401         ,)
402 fi
403 dnl *** dlopen() in libdl
404 if test -z "$G_MODULE_IMPL"; then
405         AC_CHECK_LIB(dl, dlopen,
406                 G_MODULE_LIBS=-ldl
407                 G_MODULE_IMPL=G_MODULE_IMPL_DL
408         ,)
409 fi
410 dnl *** shl_load() in libdld (HP-UX)
411 if test -z "$G_MODULE_IMPL"; then
412         G_MODULE_LDFLAGS='-Wl,-E'
413         AC_CHECK_LIB(dld, shl_load,
414                 G_MODULE_LIBS=-ldld
415                 G_MODULE_IMPL=G_MODULE_IMPL_DLD
416         ,)
417 fi
418 dnl *** additional checks for G_MODULE_IMPL_DL
419 if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL"; then
420         if test -d /usr/include/linux; then
421                 G_MODULE_LDFLAGS='-rdynamic'
422         fi
423         LIBS_orig="$LIBS"
424         LDFLAGS_orig="$LDFLAGS"
425         LIBS="$LIBS $G_MODULE_LIBS"
426         LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
427 dnl *** check whether we need preceeding underscores
428         AC_MSG_CHECKING(for preceeding underscore in symbols)
429         AC_CACHE_VAL(glib_cv_uscore,[
430                 AC_TRY_RUN([
431                 #include <dlfcn.h>
432                 int glib_underscore_test (void) { return 42; }
433                 int main() {
434                   void *f1 = (void*)0, *f2 = (void*)0, *handle;
435                   handle = dlopen ((void*)0, 0);
436                   if (handle) {
437                     f1 = dlsym (handle, "glib_underscore_test");
438                     f2 = dlsym (handle, "_glib_underscore_test");
439                   } return !(f2 && !f1);
440                 }],
441                         glib_cv_uscore=yes
442                         G_MODULE_NEED_USCORE=1
443                 ,
444                         glib_cv_uscore=no
445                         G_MODULE_NEED_USCORE=0
446                 ,)
447         ])
448         AC_MSG_RESULT($glib_cv_uscore)
449         LDFLAGS="$LDFLAGS_orig"
450 dnl *** check for having dlerror()
451         AC_CHECK_FUNC(dlerror,
452                 G_MODULE_HAVE_DLERROR=1,
453                 G_MODULE_HAVE_DLERROR=0)
454         LIBS="$LIBS_orig"
455 fi
456 dnl *** done, have e got an implementation?
457 if test -z "$G_MODULE_IMPL"; then
458         G_MODULE_IMPL=0
459 fi
460 AC_SUBST(G_MODULE_IMPL)
461 AC_SUBST(G_MODULE_LIBS)
462 AC_SUBST(G_MODULE_LDFLAGS)
463 AC_SUBST(G_MODULE_HAVE_DLERROR)
464 AC_SUBST(G_MODULE_NEED_USCORE)
465
466
467 AC_OUTPUT([
468 Makefile
469 glib-config
470 gmodule/gmoduleconf.h
471 gmodule/Makefile
472 ],[chmod +x glib-config])