~ubuntu-branches/ubuntu/utopic/glib2.0/utopic

« back to all changes in this revision

Viewing changes to .pc/0001-Prevent-an-invalid-CARBON_LIBS-from-appearing-in-the.patch/configure.ac

  • Committer: Package Import Robot
  • Author(s): Iain Lane, Andreas Henriksson, Emilio Pozuelo Monfort, Iain Lane
  • Date: 2014-06-16 10:17:36 UTC
  • mfrom: (172.1.33 experimental)
  • Revision ID: package-import@ubuntu.com-20140616101736-vb8n9mv7s45b1w33
Tags: 2.41.0-2
[ Andreas Henriksson ]
* Bump python:any build-dependency to >= 2.7.5-5~ (Closes: #747928)

[ Emilio Pozuelo Monfort ]
* Use the default compiler on sparc, since it's already >> 4.7.
  Closes: #751313.

[ Iain Lane ]
* 0001-Prevent-an-invalid-CARBON_LIBS-from-appearing-in-the.patch:
  Cherry-pick patch from upstream to fix an invalid "@CARBON_LIBS@" token
  appearing in Libs.private in the pcfile. (LP: #1330033)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Process this file with autoconf to produce a configure script.
 
2
AC_PREREQ([2.62])
 
3
 
 
4
dnl ***********************************
 
5
dnl *** include special GLib macros ***
 
6
dnl ***********************************
 
7
 
 
8
m4_define(glib_configure_ac)
 
9
 
 
10
#
 
11
# The following version number definitions apply to GLib, GModule, GObject,
 
12
# GThread and GIO as a whole, so if changes occurred in any of them, they are
 
13
# all treated with the same interface and binary age.
 
14
#
 
15
# Making releases:
 
16
#   glib_micro_version += 1;
 
17
#   glib_interface_age += 1;
 
18
#   glib_binary_age += 1;
 
19
# if any functions have been added, set glib_interface_age to 0.
 
20
# if backwards compatibility has been broken,
 
21
# set glib_binary_age _and_ glib_interface_age to 0.
 
22
#
 
23
# remember to add a GLIB_VERSION_2_xx macro every time the minor version is
 
24
# bumped, as well as the GLIB_DEPRECATED_IN and GLIB_AVAILABLE_IN macros
 
25
# for that version - see gversion.h for further information.
 
26
#
 
27
# in easier to understand terms:
 
28
#
 
29
# <mclasen> on the stable branch, interface age == micro
 
30
# <mclasen> on the unstable (ie master), interface age = 0
 
31
 
 
32
m4_define([glib_major_version], [2])
 
33
m4_define([glib_minor_version], [41])
 
34
m4_define([glib_micro_version], [0])
 
35
m4_define([glib_interface_age], [0])
 
36
m4_define([glib_binary_age],
 
37
          [m4_eval(100 * glib_minor_version + glib_micro_version)])
 
38
m4_define([glib_version],
 
39
          [glib_major_version.glib_minor_version.glib_micro_version])
 
40
 
 
41
# libtool version related macros
 
42
m4_define([glib_lt_release], [glib_major_version.glib_minor_version])
 
43
m4_define([glib_lt_current],
 
44
          [m4_eval(100 * glib_minor_version + glib_micro_version - glib_interface_age)])
 
45
m4_define([glib_lt_revision], [glib_interface_age])
 
46
m4_define([glib_lt_age], [m4_eval(glib_binary_age - glib_interface_age)])
 
47
m4_define([glib_lt_current_minus_age],
 
48
          [m4_eval(glib_lt_current - glib_lt_age)])
 
49
 
 
50
# if the minor version number is odd, then we want debugging.  Otherwise
 
51
# we only want minimal debugging support.
 
52
m4_define([glib_debug_default],
 
53
          [m4_if(m4_eval(glib_minor_version % 2), [1], [yes], [minimum])])dnl
 
54
 
 
55
 
 
56
AC_INIT(glib, [glib_version],
 
57
        [http://bugzilla.gnome.org/enter_bug.cgi?product=glib])
 
58
 
 
59
AC_CONFIG_HEADERS([config.h])
 
60
AC_CONFIG_SRCDIR([glib/glib.h])
 
61
AC_CONFIG_MACRO_DIR([m4macros])
 
62
 
 
63
# Save this value here, since automake will set cflags later
 
64
cflags_set=${CFLAGS:+set}
 
65
 
 
66
AM_INIT_AUTOMAKE([1.11 -Wno-portability no-define no-dist-gzip dist-xz tar-ustar])
 
67
AM_MAINTAINER_MODE([enable])
 
68
 
 
69
# Support silent build rules. Disable
 
70
# by either passing --disable-silent-rules to configure or passing V=1
 
71
# to make
 
72
AM_SILENT_RULES([yes])
 
73
 
 
74
GLIB_MAJOR_VERSION=glib_major_version
 
75
GLIB_MINOR_VERSION=glib_minor_version
 
76
GLIB_MICRO_VERSION=glib_micro_version
 
77
GLIB_INTERFACE_AGE=glib_interface_age
 
78
GLIB_BINARY_AGE=glib_binary_age
 
79
GLIB_VERSION=glib_version
 
80
 
 
81
AC_SUBST(GLIB_MAJOR_VERSION)
 
82
AC_SUBST(GLIB_MINOR_VERSION)
 
83
AC_SUBST(GLIB_MICRO_VERSION)
 
84
AC_SUBST(GLIB_VERSION)
 
85
AC_SUBST(GLIB_INTERFACE_AGE)
 
86
AC_SUBST(GLIB_BINARY_AGE)
 
87
 
 
88
AC_DEFINE(GLIB_MAJOR_VERSION, [glib_major_version],
 
89
          [Define to the GLIB major version])
 
90
AC_DEFINE(GLIB_MINOR_VERSION, [glib_minor_version],
 
91
          [Define to the GLIB minor version])
 
92
AC_DEFINE(GLIB_MICRO_VERSION, [glib_micro_version],
 
93
          [Define to the GLIB micro version])
 
94
AC_DEFINE(GLIB_INTERFACE_AGE, [glib_interface_age],
 
95
          [Define to the GLIB interface age])
 
96
AC_DEFINE(GLIB_BINARY_AGE, [glib_binary_age],
 
97
          [Define to the GLIB binary age])
 
98
 
 
99
# libtool versioning
 
100
LT_RELEASE=glib_lt_release
 
101
LT_CURRENT=glib_lt_current
 
102
LT_REVISION=glib_lt_revision
 
103
LT_AGE=glib_lt_age
 
104
LT_CURRENT_MINUS_AGE=glib_lt_current_minus_age
 
105
AC_SUBST(LT_RELEASE)
 
106
AC_SUBST(LT_CURRENT)
 
107
AC_SUBST(LT_REVISION)
 
108
AC_SUBST(LT_AGE)
 
109
AC_SUBST(LT_CURRENT_MINUS_AGE)
 
110
 
 
111
dnl Checks for programs.
 
112
AC_PROG_CC
 
113
AC_PROG_CPP
 
114
AC_USE_SYSTEM_EXTENSIONS
 
115
 
 
116
AM_CONDITIONAL(HAVE_GCC, [test "$GCC" = "yes"])
 
117
 
 
118
AC_CANONICAL_HOST
 
119
 
 
120
dnl
 
121
 
 
122
AC_MSG_CHECKING([for Win32])
 
123
LIB_EXE_MACHINE_FLAG=X86
 
124
case "$host" in
 
125
  *-*-mingw*)
 
126
    glib_native_win32=yes
 
127
    glib_pid_type='void *'
 
128
    glib_cv_stack_grows=no
 
129
    # Unfortunately the mingw implementations of C99-style snprintf and vsnprintf
 
130
    # don't seem to be quite good enough, at least not in mingw-runtime-3.14.
 
131
    # (Sorry, I don't know exactly what is the problem, but it is related to
 
132
    # floating point formatting and decimal point vs. comma.)
 
133
    # The simple tests in AC_FUNC_VSNPRINTF_C99 and AC_FUNC_SNPRINTF_C99 aren't
 
134
    # rigorous enough to notice, though.
 
135
    # So preset the autoconf cache variables.
 
136
    ac_cv_func_vsnprintf_c99=no
 
137
    ac_cv_func_snprintf_c99=no
 
138
    case "$host" in
 
139
    x86_64-*-*)
 
140
      LIB_EXE_MACHINE_FLAG=X64
 
141
      ;;
 
142
    esac
 
143
 
 
144
    AC_DEFINE([_WIN32_WINNT], [0x0501], [Target the Windows XP API])
 
145
    ;;
 
146
  *)
 
147
    glib_native_win32=no
 
148
    glib_pid_type=int
 
149
    ;;
 
150
esac
 
151
case $host in
 
152
  *-*-linux*)
 
153
    glib_os_linux=yes
 
154
    ;;
 
155
esac
 
156
 
 
157
AC_MSG_RESULT([$glib_native_win32])
 
158
 
 
159
AC_MSG_CHECKING([for the Android])
 
160
case $host in
 
161
  *android*)
 
162
    glib_native_android="yes"
 
163
    ;;
 
164
  *)
 
165
    glib_native_android="no"
 
166
    ;;
 
167
esac
 
168
AC_MSG_RESULT([$glib_native_android])
 
169
 
 
170
AC_SUBST(LIB_EXE_MACHINE_FLAG)
 
171
 
 
172
glib_have_carbon=no
 
173
AC_MSG_CHECKING([for Mac OS X Carbon support])
 
174
AC_TRY_CPP([
 
175
#include <Carbon/Carbon.h>
 
176
#include <CoreServices/CoreServices.h>
 
177
], glib_have_carbon=yes)
 
178
 
 
179
AC_MSG_RESULT([$glib_have_carbon])
 
180
 
 
181
glib_have_cocoa=no
 
182
AC_MSG_CHECKING([for Mac OS X Cocoa support])
 
183
AC_TRY_CPP([
 
184
#include <Cocoa/Cocoa.h>
 
185
#ifdef GNUSTEP_BASE_VERSION
 
186
#error "Detected GNUstep, not Cocoa"
 
187
#endif
 
188
], glib_have_cocoa=yes)
 
189
 
 
190
AC_MSG_RESULT([$glib_have_cocoa])
 
191
 
 
192
AM_CONDITIONAL(OS_WIN32, [test "$glib_native_win32" = "yes"])
 
193
AM_CONDITIONAL(OS_WIN32_X64, [test "$LIB_EXE_MACHINE_FLAG" = "X64"])
 
194
AM_CONDITIONAL(OS_UNIX, [test "$glib_native_win32" != "yes"])
 
195
AM_CONDITIONAL(OS_LINUX, [test "$glib_os_linux" = "yes"])
 
196
AM_CONDITIONAL(OS_CARBON, [test "$glib_have_carbon" = "yes"])
 
197
AM_CONDITIONAL(OS_COCOA, [test "$glib_have_cocoa" = "yes"])
 
198
 
 
199
AS_IF([test "$glib_native_win32" = "yes"], [
 
200
  AC_CHECK_TOOL(WINDRES, windres, no)
 
201
  if test "$WINDRES" = no; then
 
202
    AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.])
 
203
  fi
 
204
  AC_CHECK_TOOL(NM, nm, no)
 
205
  if test "$NM" = no; then
 
206
    AC_MSG_ERROR([*** Could not find an implementation of nm in your PATH.])
 
207
  fi
 
208
  AC_CHECK_TOOL(RANLIB, ranlib, :)
 
209
  AC_CHECK_TOOL(DLLTOOL, dlltool, :)
 
210
  AC_CHECK_PROG(ms_librarian, [lib.exe], [yes], [no])
 
211
])
 
212
AM_CONDITIONAL(MS_LIB_AVAILABLE, [test x$ms_librarian = xyes])
 
213
 
 
214
AS_IF([test "x$glib_have_carbon" = "xyes"], [
 
215
  AC_DEFINE(HAVE_CARBON, 1, [define to 1 if Carbon is available])
 
216
  CARBON_LIBS="-Wl,-framework,Carbon"
 
217
  LDFLAGS="$LDFLAGS $CARBON_LIBS"
 
218
], [CARBON_LIBS=""])
 
219
 
 
220
AS_IF([test "x$glib_have_cocoa" = "xyes"], [
 
221
  AC_DEFINE(HAVE_COCOA, 1, [define to 1 if Cocoa is available])
 
222
  COCOA_LIBS="-Wl,-framework,Foundation"
 
223
  LDFLAGS="$LDFLAGS $COCOA_LIBS"
 
224
], [COCOA_LIBS=""])
 
225
 
 
226
AC_SUBST([COCOA_LIBS])
 
227
 
 
228
dnl declare --enable-* args and collect ac_help strings
 
229
AC_ARG_ENABLE(debug,
 
230
              AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
 
231
                             [turn on debugging @<:@default=glib_debug_default@:>@]),,
 
232
              enable_debug=glib_debug_default)
 
233
 
 
234
AC_ARG_ENABLE(gc_friendly,
 
235
              [AS_HELP_STRING([--enable-gc-friendly],
 
236
                              [turn on garbage collector friendliness [default=no]])],,
 
237
              [enable_gc_friendly=no])
 
238
AC_ARG_ENABLE(mem_pools,
 
239
              [AS_HELP_STRING([--disable-mem-pools],
 
240
                              [disable all glib memory pools])],,
 
241
              [disable_mem_pools=no])
 
242
AC_ARG_ENABLE(rebuilds,
 
243
              [AS_HELP_STRING([--disable-rebuilds],
 
244
                              [disable all source autogeneration rules])],,
 
245
              [enable_rebuilds=yes])
 
246
 
 
247
GLIB_TESTS
 
248
 
 
249
AC_MSG_CHECKING([whether to enable garbage collector friendliness])
 
250
AS_IF([test "x$enable_gc_friendly" = "xyes"], [
 
251
  AC_DEFINE(ENABLE_GC_FRIENDLY_DEFAULT, 1, [Whether to enable GC friendliness by default])
 
252
  AC_MSG_RESULT([yes])
 
253
], [ AC_MSG_RESULT([no]) ])
 
254
 
 
255
AC_MSG_CHECKING([whether to disable memory pools])
 
256
AS_IF([test "x$disable_mem_pools" = "xno"], [
 
257
  AC_MSG_RESULT([no])
 
258
], [
 
259
  AC_DEFINE(DISABLE_MEM_POOLS, [1], [Whether to disable memory pools])
 
260
  AC_MSG_RESULT([yes])
 
261
])
 
262
 
 
263
dnl location to install runtime libraries, e.g. ../../lib to install
 
264
dnl to /lib if libdir is /usr/lib
 
265
AC_ARG_WITH(runtime-libdir,
 
266
           [AS_HELP_STRING([--with-runtime-libdir=RELPATH],
 
267
                           [install runtime libraries relative to libdir])],
 
268
           [],
 
269
           [with_runtime_libdir=""])
 
270
GLIB_RUNTIME_LIBDIR="$with_runtime_libdir"
 
271
ABS_GLIB_RUNTIME_LIBDIR="`readlink -f $libdir/$with_runtime_libdir`"
 
272
AC_SUBST(GLIB_RUNTIME_LIBDIR)
 
273
AC_SUBST(ABS_GLIB_RUNTIME_LIBDIR)
 
274
AM_CONDITIONAL(HAVE_GLIB_RUNTIME_LIBDIR, [test "x$with_runtime_libdir" != "x"])
 
275
 
 
276
dnl Check for a working C++ compiler, but do not bail out, if none is found.
 
277
AC_CHECK_TOOLS(CXX, [$CCC c++ g++ gcc CC cxx cc++ cl], [gcc])
 
278
AC_LANG_SAVE
 
279
AC_LANG_CPLUSPLUS
 
280
AC_TRY_COMPILE(,[class a { int b; } c;], ,CXX=)
 
281
AM_CONDITIONAL(HAVE_CXX, [test "$CXX" != ""])
 
282
AC_LANG_RESTORE
 
283
 
 
284
AM_PROG_CC_C_O
 
285
AC_PROG_INSTALL
 
286
 
 
287
AC_SYS_LARGEFILE
 
288
 
 
289
PKG_PROG_PKG_CONFIG(0.16)
 
290
 
 
291
if test "x$enable_debug" = "xyes"; then
 
292
  if test "x$cflags_set" != "x" ; then
 
293
      case " $CFLAGS " in
 
294
      *[[\ \    ]]-g[[\ \       ]]*) ;;
 
295
      *) CFLAGS="$CFLAGS -g" ;;
 
296
      esac
 
297
  fi
 
298
  GLIB_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
 
299
else
 
300
  GLIB_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
 
301
 
 
302
  if test "x$enable_debug" = "xno"; then
 
303
    GLIB_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS"
 
304
  fi
 
305
fi
 
306
 
 
307
# Ensure MSVC-compatible struct packing convention is used when
 
308
# compiling for Win32 with gcc.
 
309
# What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
 
310
# gcc2 uses "-fnative-struct".
 
311
if test x"$glib_native_win32" = xyes; then
 
312
  if test x"$GCC" = xyes; then
 
313
    msnative_struct=''
 
314
    AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
 
315
    if test -z "$ac_cv_prog_CC"; then
 
316
      our_gcc="$CC"
 
317
    else
 
318
      our_gcc="$ac_cv_prog_CC"
 
319
    fi
 
320
    case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
 
321
      2.)
 
322
        if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
 
323
          msnative_struct='-fnative-struct'
 
324
        fi
 
325
        ;;
 
326
      *)
 
327
        if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
 
328
          msnative_struct='-mms-bitfields'
 
329
        fi
 
330
        ;;
 
331
    esac
 
332
    if test x"$msnative_struct" = x ; then
 
333
      AC_MSG_RESULT([no way])
 
334
      AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
 
335
    else
 
336
      CFLAGS="$CFLAGS $msnative_struct"
 
337
      AC_MSG_RESULT([${msnative_struct}])
 
338
    fi
 
339
  fi
 
340
fi
 
341
GLIB_EXTRA_CFLAGS="${msnative_struct}"
 
342
AC_SUBST(GLIB_EXTRA_CFLAGS)
 
343
 
 
344
AC_EXEEXT
 
345
 
 
346
# define a MAINT-like variable REBUILD which is set if Perl
 
347
# and awk are found, so autogenerated sources can be rebuilt
 
348
AC_PROG_AWK
 
349
AC_CHECK_PROGS(PERL, [perl5 perl])
 
350
# We would like indent, but don't require it.
 
351
AC_CHECK_PROG(INDENT, indent, indent)
 
352
REBUILD=\#
 
353
if test "x$enable_rebuilds" = "xyes" && \
 
354
     test -n "$PERL" && \
 
355
     $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 && \
 
356
     test -n "$AWK" ; then
 
357
  REBUILD=
 
358
fi
 
359
AC_SUBST(REBUILD)
 
360
 
 
361
# Need full path to Perl for glib-mkenums
 
362
#
 
363
if test "x$PERL" != x ; then
 
364
  AC_PATH_PROG(PERL_PATH, [$PERL])
 
365
fi
 
366
if test "x$PERL_PATH" = x ; then
 
367
  PERL_PATH="/usr/bin/env perl"
 
368
fi
 
369
AC_SUBST(PERL_PATH)
 
370
 
 
371
# option to specify python interpreter to use; this just sets $PYTHON, so that
 
372
# we will fallback to reading $PYTHON if --with-python is not given, and
 
373
# python.m4 will get the expected input
 
374
AC_ARG_WITH(python,
 
375
            AS_HELP_STRING([--with-python=PATH],
 
376
                           [Path to Python interpreter; searches $PATH if only a program name is given; if not given, searches for a few standard names such as "python3" or "python2"]),
 
377
            [PYTHON="$withval"], [])
 
378
if test x"$PYTHON" = xyes; then
 
379
  AC_MSG_ERROR([--with-python option requires a path or program argument])
 
380
fi
 
381
AM_PATH_PYTHON(2.5,,PYTHON="/usr/bin/env python2.5")
 
382
 
 
383
 
 
384
dnl ***********************
 
385
dnl *** Tests for iconv ***
 
386
dnl ***********************
 
387
dnl
 
388
dnl We do this before the gettext checks, to avoid distortion
 
389
 
 
390
dnl On Windows we use a native implementation
 
391
 
 
392
AS_IF([ test x"$glib_native_win32" = xyes], [
 
393
  with_libiconv=native
 
394
], [
 
395
  AC_ARG_WITH(libiconv,
 
396
              [AS_HELP_STRING([--with-libiconv=@<:@no/gnu/native@:>@],
 
397
                              [use the libiconv library])],,
 
398
              [with_libiconv=maybe])
 
399
 
 
400
  found_iconv=no
 
401
  case $with_libiconv in
 
402
    maybe)
 
403
      # Check in the C library first
 
404
      AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
 
405
      # Check if we have GNU libiconv
 
406
      if test $found_iconv = "no"; then
 
407
        AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
 
408
      fi
 
409
      # Check if we have a iconv in -liconv, possibly from vendor
 
410
      if test $found_iconv = "no"; then
 
411
        AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
 
412
      fi
 
413
      ;;
 
414
    no)
 
415
      AC_CHECK_FUNC(iconv_open, [with_libiconv=no; found_iconv=yes])
 
416
      ;;
 
417
    gnu|yes)
 
418
      AC_CHECK_LIB(iconv, libiconv_open, [with_libiconv=gnu; found_iconv=yes])
 
419
      ;;
 
420
    native)
 
421
      AC_CHECK_LIB(iconv, iconv_open, [with_libiconv=native; found_iconv=yes])
 
422
      ;;
 
423
  esac
 
424
 
 
425
  if test "x$found_iconv" = "xno" ; then
 
426
     AC_MSG_ERROR([*** No iconv() implementation found in C library or libiconv])
 
427
  fi
 
428
])
 
429
 
 
430
dnl
 
431
dnl zlib support
 
432
dnl
 
433
PKG_CHECK_MODULES([ZLIB], [zlib], [found_zlib=yes], [found_zlib=no])
 
434
AS_IF([test "x$found_zlib" = "xno"], [
 
435
  AC_CHECK_LIB(z, inflate, [AC_CHECK_HEADER(zlib.h, found_zlib=yes)])
 
436
  if test "x$found_zlib" = "xno" ; then
 
437
    AC_MSG_ERROR([*** Working zlib library and headers not found ***])
 
438
  fi
 
439
  ZLIB_LIBS='-lz'
 
440
  AC_SUBST(ZLIB_LIBS)
 
441
])
 
442
 
 
443
PKG_CHECK_MODULES(LIBFFI, [libffi >= 3.0.0])
 
444
AC_SUBST(LIBFFI_CFLAGS)
 
445
AC_SUBST(LIBFFI_LIBS)
 
446
 
 
447
dnl
 
448
dnl gettext support
 
449
dnl
 
450
 
 
451
ALL_LINGUAS="`grep -v '^#' "$srcdir/po/LINGUAS" | tr '\n' ' '`"
 
452
AC_SUBST([CONFIG_STATUS_DEPENDENCIES],['$(top_srcdir)/po/LINGUAS'])
 
453
GLIB_GNU_GETTEXT
 
454
 
 
455
if test "$gt_cv_have_gettext" != "yes" ; then
 
456
  AC_MSG_ERROR([
 
457
*** You must have either have gettext support in your C library, or use the 
 
458
*** GNU gettext library. (http://www.gnu.org/software/gettext/gettext.html
 
459
])
 
460
fi
 
461
 
 
462
LIBS="$INTLLIBS $LIBS"
 
463
 
 
464
GETTEXT_PACKAGE=glib20
 
465
AC_SUBST(GETTEXT_PACKAGE)
 
466
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, ["$GETTEXT_PACKAGE"], 
 
467
  [Define the gettext package to be used])
 
468
 
 
469
GLIB_DEFINE_LOCALEDIR(GLIB_LOCALE_DIR)
 
470
 
 
471
dnl
 
472
dnl Now we are done with gettext checks, figure out ICONV_LIBS
 
473
dnl
 
474
 
 
475
AS_IF([test x"$glib_native_win32" != xyes], [
 
476
  if test x$with_libiconv != xno ; then
 
477
    case " $INTLLIBS " in
 
478
    *[[\ \      ]]-liconv[[\ \  ]]*) ;;
 
479
    *) ICONV_LIBS="-liconv" ;;
 
480
    esac
 
481
  fi
 
482
])
 
483
AC_SUBST(ICONV_LIBS)
 
484
 
 
485
case $with_libiconv in
 
486
  gnu)
 
487
    AC_DEFINE(USE_LIBICONV_GNU, 1, [Using GNU libiconv])
 
488
    ;;
 
489
  native)
 
490
    AC_DEFINE(USE_LIBICONV_NATIVE, 1, [Using a native implementation of iconv in a separate library])
 
491
    ;;
 
492
esac
 
493
 
 
494
dnl Initialize libtool
 
495
LT_PREREQ([2.2])
 
496
LT_INIT([disable-static win32-dll])
 
497
dnl when using libtool 2.x create libtool early, because it's used in configure
 
498
m4_ifdef([LT_OUTPUT], [LT_OUTPUT])
 
499
 
 
500
 
 
501
AS_IF([test "$glib_native_win32" = "yes"], [
 
502
  if test x$enable_static = xyes -a x$enable_shared = xyes; then
 
503
    AC_MSG_ERROR([Can not build both shared and static at the same time on Windows.])
 
504
  fi
 
505
  if test x$enable_static = xyes; then
 
506
    glib_win32_static_compilation=yes
 
507
    GLIB_WIN32_STATIC_COMPILATION_DEFINE="#define GLIB_STATIC_COMPILATION 1
 
508
#define GOBJECT_STATIC_COMPILATION 1"
 
509
    AC_SUBST(GLIB_WIN32_STATIC_COMPILATION_DEFINE)
 
510
  fi
 
511
])
 
512
AM_CONDITIONAL(OS_WIN32_AND_DLL_COMPILATION, [test x$glib_native_win32 = xyes -a x$glib_win32_static_compilation != xyes])
 
513
 
 
514
# Checks for library functions.
 
515
AC_FUNC_ALLOCA
 
516
AC_CHECK_FUNCS(mmap posix_memalign memalign valloc fsync pipe2 issetugid)
 
517
AC_CHECK_FUNCS(timegm gmtime_r)
 
518
 
 
519
AC_CACHE_CHECK([for __libc_enable_secure], glib_cv_have_libc_enable_secure,
 
520
  [AC_TRY_LINK([#include <unistd.h>
 
521
    extern int __libc_enable_secure;],
 
522
    [return __libc_enable_secure;],
 
523
   glib_cv_have_libc_enable_secure=yes,
 
524
   glib_cv_have_libc_enable_secure=no)])
 
525
AS_IF([test x$glib_cv_have_libc_enable_secure = xyes], [
 
526
   AC_DEFINE(HAVE_LIBC_ENABLE_SECURE, 1,
 
527
     [Define if you have the __libc_enable_secure variable (GNU libc, eglibc)])
 
528
])
 
529
 
 
530
AC_CHECK_SIZEOF(char)
 
531
AC_CHECK_SIZEOF(short)
 
532
AC_CHECK_SIZEOF(long)
 
533
AC_CHECK_SIZEOF(int)
 
534
AC_CHECK_SIZEOF(void *)
 
535
AC_CHECK_SIZEOF(long long)
 
536
AC_CHECK_SIZEOF(__int64)
 
537
 
 
538
AC_CACHE_CHECK([for sig_atomic_t], ac_cv_type_sig_atomic_t,
 
539
  [AC_TRY_LINK([#include <signal.h>
 
540
     #include <sys/types.h>
 
541
     sig_atomic_t val = 42;],
 
542
    [return val == 42 ? 0 : 1],
 
543
   ac_cv_type_sig_atomic_t=yes,
 
544
   ac_cv_type_sig_atomic_t=no)])
 
545
if test x$ac_cv_type_sig_atomic_t = xyes; then
 
546
   AC_DEFINE(HAVE_SIG_ATOMIC_T, 1,
 
547
     [Define if you have the 'sig_atomic_t' type.])
 
548
fi
 
549
 
 
550
if test x$ac_cv_sizeof_long = x8 || test x$ac_cv_sizeof_long_long = x8 || test x$ac_cv_sizeof___int64 = x8 ; then
 
551
  :
 
552
else
 
553
  AC_MSG_ERROR([
 
554
*** GLib requires a 64 bit type. You might want to consider
 
555
*** using the GNU C compiler.
 
556
])
 
557
fi
 
558
 
 
559
AS_IF([test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8], [
 
560
        # long long is a 64 bit integer.
 
561
        AC_MSG_CHECKING(for format to printf and scanf a guint64)
 
562
        AC_CACHE_VAL(glib_cv_long_long_format,[
 
563
                for format in ll q I64; do
 
564
                  AC_TRY_RUN([#include <stdio.h>  
 
565
                        int main()
 
566
                        {
 
567
                          long long b, a = -0x3AFAFAFAFAFAFAFALL;
 
568
                          char buffer[1000];
 
569
                          sprintf (buffer, "%${format}u", a);
 
570
                          sscanf (buffer, "%${format}u", &b);
 
571
                          exit (b!=a);
 
572
                        }
 
573
                        ],
 
574
                        [glib_cv_long_long_format=${format}
 
575
                        break],
 
576
                        [],[:])
 
577
                done])
 
578
        AS_IF([ test -n "$glib_cv_long_long_format"], [
 
579
          AC_MSG_RESULT(%${glib_cv_long_long_format}u)
 
580
          AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
 
581
          if test x"$glib_cv_long_long_format" = xI64; then
 
582
            AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
 
583
          fi
 
584
        ], [AC_MSG_RESULT(none)])
 
585
],[ test x$ac_cv_sizeof___int64 = x8], [
 
586
        # __int64 is a 64 bit integer.
 
587
        AC_MSG_CHECKING(for format to printf and scanf a guint64)
 
588
        # We know this is MSVCRT.DLL, and what the formats are
 
589
        glib_cv_long_long_format=I64
 
590
        AC_MSG_RESULT(%${glib_cv_long_long_format}u)
 
591
        AC_DEFINE(HAVE_LONG_LONG_FORMAT,1,[define if system printf can print long long])
 
592
        AC_DEFINE(HAVE_INT64_AND_I64,1,[define to support printing 64-bit integers with format I64])
 
593
])
 
594
 
 
595
AC_C_CONST
 
596
 
 
597
dnl
 
598
dnl check in which direction the stack grows
 
599
dnl
 
600
AC_CACHE_CHECK([for growing stack pointer],glib_cv_stack_grows,[
 
601
        AC_TRY_RUN([
 
602
        volatile int *a = 0, *b = 0;
 
603
        void f (int i) { volatile int x = 5; if (i == 0) b = &x; else f (i - 1); }
 
604
        int main () { volatile int y = 7; a = &y; f (100); return b > a ? 0 : 1; }
 
605
        ],
 
606
        glib_cv_stack_grows=yes
 
607
        ,
 
608
        glib_cv_stack_grows=no
 
609
        ,)
 
610
])
 
611
 
 
612
dnl AC_C_INLINE is useless to us since it bails out too early, we need to
 
613
dnl truely know which ones of `inline', `__inline' and `__inline__' are
 
614
dnl actually supported.
 
615
AC_CACHE_CHECK([for __inline],glib_cv_has__inline,[
 
616
        AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
 
617
        __inline int foo () { return 0; }
 
618
        int main () { return foo (); }
 
619
        ]])],
 
620
        glib_cv_has__inline=yes
 
621
        ,
 
622
        glib_cv_has__inline=no
 
623
        ,)
 
624
])
 
625
case x$glib_cv_has__inline in
 
626
xyes) AC_DEFINE(G_HAVE___INLINE,1,[Have __inline keyword])
 
627
esac
 
628
AC_CACHE_CHECK([for __inline__],glib_cv_has__inline__,[
 
629
        AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
 
630
        __inline__ int foo () { return 0; }
 
631
        int main () { return foo (); }
 
632
        ]])],
 
633
        glib_cv_has__inline__=yes
 
634
        ,
 
635
        glib_cv_has__inline__=no
 
636
        ,)
 
637
])
 
638
case x$glib_cv_has__inline__ in
 
639
xyes) AC_DEFINE(G_HAVE___INLINE__,1,[Have __inline__ keyword])
 
640
esac
 
641
AC_CACHE_CHECK([for inline], glib_cv_hasinline,[
 
642
        AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
 
643
        #undef inline
 
644
        inline int foo () { return 0; }
 
645
        int main () { return foo (); }
 
646
        ]])],
 
647
        glib_cv_hasinline=yes
 
648
        ,
 
649
        glib_cv_hasinline=no
 
650
        ,)
 
651
])
 
652
case x$glib_cv_hasinline in
 
653
xyes) AC_DEFINE(G_HAVE_INLINE,1,[Have inline keyword])
 
654
esac
 
655
 
 
656
# if we can use inline functions in headers
 
657
AC_MSG_CHECKING(if inline functions in headers work)
 
658
AC_LINK_IFELSE([AC_LANG_SOURCE([[
 
659
#if defined (G_HAVE_INLINE) && defined (__GNUC__) && defined (__STRICT_ANSI__)
 
660
#  undef inline
 
661
#  define inline __inline__
 
662
#elif !defined (G_HAVE_INLINE)
 
663
#  undef inline
 
664
#  if defined (G_HAVE___INLINE__)
 
665
#    define inline __inline__
 
666
#  elif defined (G_HAVE___INLINE)
 
667
#    define inline __inline
 
668
#  endif
 
669
#endif
 
670
 
 
671
int glib_test_func2 (int);
 
672
 
 
673
static inline int
 
674
glib_test_func1 (void) {
 
675
  return glib_test_func2 (1);
 
676
}
 
677
 
 
678
int
 
679
main (void) {
 
680
  int i = 1;
 
681
}]])],[g_can_inline=yes],[g_can_inline=no])
 
682
AC_MSG_RESULT($g_can_inline)
 
683
 
 
684
# check for flavours of varargs macros
 
685
AC_MSG_CHECKING(for ISO C99 varargs macros in C)
 
686
AC_TRY_COMPILE([],[
 
687
int a(int p1, int p2, int p3);
 
688
#define call_a(...) a(1,__VA_ARGS__)
 
689
call_a(2,3);
 
690
],g_have_iso_c_varargs=yes,g_have_iso_c_varargs=no)
 
691
AC_MSG_RESULT($g_have_iso_c_varargs)
 
692
 
 
693
AC_MSG_CHECKING(for ISO C99 varargs macros in C++)
 
694
AS_IF([test "$CXX" = ""], [
 
695
dnl No C++ compiler
 
696
  g_have_iso_cxx_varargs=no
 
697
else
 
698
  AC_LANG_CPLUSPLUS
 
699
  AC_TRY_COMPILE([],[
 
700
int a(int p1, int p2, int p3);
 
701
#define call_a(...) a(1,__VA_ARGS__)
 
702
call_a(2,3);
 
703
],g_have_iso_cxx_varargs=yes,g_have_iso_cxx_varargs=no)
 
704
  AC_LANG_C
 
705
])
 
706
AC_MSG_RESULT($g_have_iso_cxx_varargs)
 
707
 
 
708
AC_MSG_CHECKING(for GNUC varargs macros)
 
709
AC_TRY_COMPILE([],[
 
710
int a(int p1, int p2, int p3);
 
711
#define call_a(params...) a(1,params)
 
712
call_a(2,3);
 
713
],g_have_gnuc_varargs=yes,g_have_gnuc_varargs=no)
 
714
AC_MSG_RESULT($g_have_gnuc_varargs)
 
715
 
 
716
# check for GNUC visibility support
 
717
AC_MSG_CHECKING(for GNUC visibility attribute)
 
718
GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
 
719
void
 
720
__attribute__ ((visibility ("hidden")))
 
721
     f_hidden (void)
 
722
{
 
723
}
 
724
void
 
725
__attribute__ ((visibility ("internal")))
 
726
     f_internal (void)
 
727
{
 
728
}
 
729
void
 
730
__attribute__ ((visibility ("protected")))
 
731
     f_protected (void)
 
732
{
 
733
}
 
734
void
 
735
__attribute__ ((visibility ("default")))
 
736
     f_default (void)
 
737
{
 
738
}
 
739
int main (void)
 
740
{
 
741
        f_hidden();
 
742
        f_internal();
 
743
        f_protected();
 
744
        f_default();
 
745
        return 0;
 
746
}
 
747
]])],g_have_gnuc_visibility=yes,g_have_gnuc_visibility=no)
 
748
AC_MSG_RESULT($g_have_gnuc_visibility)
 
749
AM_CONDITIONAL(HAVE_GNUC_VISIBILITY, [test x$g_have_gnuc_visibility = xyes])
 
750
 
 
751
AC_MSG_CHECKING([whether using Sun Studio C compiler])
 
752
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#if defined(__SUNPRO_C) || (__SUNPRO_C >= 0x550)
 
753
#else
 
754
# include "error: this is not Sun Studio."
 
755
#endif
 
756
]], [[]])], [ g_have_sunstudio_visibility=yes ], [ g_have_sunstudio_visibility=no ])
 
757
AC_MSG_RESULT($g_have_sunstudio_visibility)
 
758
AM_CONDITIONAL(HAVE_SUNSTUDIO_VISIBILITY, [test x$g_have_sunstudio_visibility = xyes])
 
759
 
 
760
# check for bytesex stuff
 
761
AC_C_BIGENDIAN
 
762
if test x$ac_cv_c_bigendian = xuniversal ; then
 
763
AC_TRY_COMPILE([#include <endian.h>], [#if __BYTE_ORDER == __BIG_ENDIAN
 
764
#else
 
765
#error Not a big endian. 
 
766
#endif],
 
767
    ac_cv_c_bigendian=yes
 
768
    ,AC_TRY_COMPILE([#include <endian.h>], [#if __BYTE_ORDER == __LITTLE_ENDIAN
 
769
#else
 
770
#error Not a little endian. 
 
771
#endif],
 
772
    ac_cv_c_bigendian=no
 
773
    ,AC_MSG_WARN([Could not determine endianness.])))
 
774
fi
 
775
 
 
776
 
 
777
# check for header files
 
778
AC_CHECK_HEADERS([sys/param.h sys/resource.h mach/mach_time.h])
 
779
AC_CHECK_HEADERS([sys/select.h stdint.h inttypes.h sched.h malloc.h])
 
780
AC_CHECK_HEADERS([sys/vfs.h sys/vmount.h sys/statfs.h sys/statvfs.h sys/filio.h])
 
781
AC_CHECK_HEADERS([mntent.h sys/mnttab.h sys/vfstab.h sys/mntctl.h fstab.h])
 
782
AC_CHECK_HEADERS([linux/magic.h sys/prctl.h])
 
783
 
 
784
# Some versions of MSC lack these
 
785
AC_CHECK_HEADERS([dirent.h sys/time.h])
 
786
 
 
787
# We don't care about this, but we need to keep including it in
 
788
# glibconfig.h for backward compatibility
 
789
AC_CHECK_HEADERS([values.h])
 
790
 
 
791
AC_CHECK_HEADERS([sys/mount.h sys/sysctl.h], [], [],
 
792
[#if HAVE_SYS_PARAM_H
 
793
 #include <sys/param.h>
 
794
 #endif
 
795
])
 
796
AC_CHECK_FUNCS(sysctlbyname)
 
797
 
 
798
AC_HEADER_MAJOR
 
799
AC_CHECK_HEADERS([xlocale.h])
 
800
 
 
801
# check for structure fields
 
802
AC_CHECK_MEMBERS([struct stat.st_mtimensec, struct stat.st_mtim.tv_nsec, struct stat.st_atimensec, struct stat.st_atim.tv_nsec, struct stat.st_ctimensec, struct stat.st_ctim.tv_nsec])
 
803
AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_blocks, struct statfs.f_fstypename, struct statfs.f_bavail],,, [#include <sys/types.h>
 
804
#include <sys/stat.h>
 
805
#ifdef G_OS_UNIX
 
806
#include <unistd.h>
 
807
#endif
 
808
#ifdef HAVE_SYS_STATFS_H
 
809
#include <sys/statfs.h>
 
810
#endif
 
811
#ifdef HAVE_SYS_PARAM_H
 
812
#include <sys/param.h>
 
813
#endif
 
814
#ifdef HAVE_SYS_MOUNT_H
 
815
#include <sys/mount.h>
 
816
#endif])
 
817
# struct statvfs.f_basetype is available on Solaris but not for Linux. 
 
818
AC_CHECK_MEMBERS([struct statvfs.f_basetype],,, [#include <sys/statvfs.h>])
 
819
AC_CHECK_MEMBERS([struct statvfs.f_fstypename],,, [#include <sys/statvfs.h>])
 
820
AC_CHECK_MEMBERS([struct tm.tm_gmtoff, struct tm.__tm_gmtoff],,,[#include <time.h>])
 
821
 
 
822
AC_STRUCT_DIRENT_D_TYPE
 
823
 
 
824
# Checks for libcharset
 
825
AM_LANGINFO_CODESET
 
826
gl_GLIBC21
 
827
 
 
828
# check additional type sizes
 
829
AC_CHECK_SIZEOF(size_t)
 
830
 
 
831
dnl Try to figure out whether gsize should be long or int
 
832
AC_MSG_CHECKING([for the appropriate definition for size_t])
 
833
 
 
834
case $ac_cv_sizeof_size_t in
 
835
  $ac_cv_sizeof_short) 
 
836
      glib_size_type=short
 
837
      ;;
 
838
  $ac_cv_sizeof_int) 
 
839
      glib_size_type=int
 
840
      ;;
 
841
  $ac_cv_sizeof_long) 
 
842
      glib_size_type=long
 
843
      ;;
 
844
  $ac_cv_sizeof_long_long)
 
845
      glib_size_type='long long'
 
846
      ;;
 
847
  $ac_cv_sizeof__int64)
 
848
      glib_size_type='__int64'
 
849
      ;;
 
850
  *)  AC_MSG_ERROR([No type matching size_t in size])
 
851
      ;;
 
852
esac
 
853
 
 
854
dnl If int/long are the same size, we see which one produces
 
855
dnl warnings when used in the location as size_t. (This matters
 
856
dnl on AIX with xlc)
 
857
dnl
 
858
AS_IF([test $ac_cv_sizeof_size_t = $ac_cv_sizeof_int &&
 
859
       test $ac_cv_sizeof_size_t = $ac_cv_sizeof_long], [
 
860
  GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
 
861
#if defined(_AIX) && !defined(__GNUC__)
 
862
#pragma options langlvl=stdc89
 
863
#endif
 
864
#include <stddef.h> 
 
865
int main ()
 
866
{
 
867
  size_t s = 1;
 
868
  unsigned int *size_int = &s;
 
869
  return (int)*size_int;
 
870
}
 
871
    ]])],glib_size_type=int,
 
872
      [GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
 
873
#if defined(_AIX) && !defined(__GNUC__)
 
874
#pragma options langlvl=stdc89
 
875
#endif
 
876
#include <stddef.h> 
 
877
int main ()
 
878
{
 
879
   size_t s = 1;
 
880
   unsigned long *size_long = &s;
 
881
   return (int)*size_long;
 
882
}
 
883
        ]])],glib_size_type=long)])
 
884
])
 
885
 
 
886
AC_MSG_RESULT(unsigned $glib_size_type)
 
887
 
 
888
AC_CHECK_SIZEOF(ssize_t)
 
889
 
 
890
dnl Try to figure out whether gssize should be long or int
 
891
AC_MSG_CHECKING([for the appropriate definition for ssize_t])
 
892
 
 
893
case $ac_cv_sizeof_ssize_t in
 
894
  $ac_cv_sizeof_short) 
 
895
      glib_ssize_type=short
 
896
      ;;
 
897
  $ac_cv_sizeof_int) 
 
898
      glib_ssize_type=int
 
899
      ;;
 
900
  $ac_cv_sizeof_long) 
 
901
      glib_ssize_type=long
 
902
      ;;
 
903
  $ac_cv_sizeof_long_long)
 
904
      glib_ssize_type='long long'
 
905
      ;;
 
906
  $ac_cv_sizeof__int64)
 
907
      glib_ssize_type='__int64'
 
908
      ;;
 
909
  *)  AC_MSG_ERROR([No type matching ssize_t in size])
 
910
      ;;
 
911
esac
 
912
 
 
913
dnl If int/long are the same size, we see which one produces
 
914
dnl warnings when used in the location as ssize_t. (This matters
 
915
dnl on Android where ssize_t is long and size_t is unsigned int)
 
916
dnl
 
917
AS_IF([test $ac_cv_sizeof_ssize_t = $ac_cv_sizeof_int &&
 
918
       test $ac_cv_sizeof_ssize_t = $ac_cv_sizeof_long], [
 
919
  GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
 
920
#if defined(_AIX) && !defined(__GNUC__)
 
921
#pragma options langlvl=stdc89
 
922
#endif
 
923
#include <stddef.h>
 
924
#ifdef HAVE_INTTYPES_H
 
925
# include <inttypes.h>
 
926
#endif
 
927
#ifdef HAVE_STDINT_H
 
928
# include <stdint.h>
 
929
#endif
 
930
#include <sys/types.h>
 
931
int main ()
 
932
{
 
933
  ssize_t s = 1;
 
934
  int *size_int = &s;
 
935
  return (int)*size_int;
 
936
}
 
937
    ]])],glib_ssize_type=int,
 
938
      [GLIB_CHECK_COMPILE_WARNINGS([AC_LANG_SOURCE([[
 
939
#if defined(_AIX) && !defined(__GNUC__)
 
940
#pragma options langlvl=stdc89
 
941
#endif
 
942
#include <stddef.h> 
 
943
#ifdef HAVE_INTTYPES_H
 
944
# include <inttypes.h>
 
945
#endif
 
946
#ifdef HAVE_STDINT_H
 
947
# include <stdint.h>
 
948
#endif
 
949
#include <sys/types.h>
 
950
int main ()
 
951
{
 
952
   ssize_t s = 1;
 
953
   long *size_long = &s;
 
954
   return (int)*size_long;
 
955
}
 
956
        ]])],glib_ssize_type=long)])
 
957
])
 
958
 
 
959
AC_MSG_RESULT($glib_ssize_type)
 
960
 
 
961
# Check for some functions
 
962
AC_CHECK_FUNCS(lstat strsignal vsnprintf stpcpy strcasecmp strncasecmp poll vasprintf setenv unsetenv getc_unlocked readlink symlink fdwalk memmem)
 
963
AC_CHECK_FUNCS(lchmod lchown fchmod fchown utimes getresuid)
 
964
AC_CHECK_FUNCS(getmntent_r setmntent endmntent hasmntopt getfsstat getvfsstat fallocate)
 
965
case $host_os in aix*) ac_cv_func_splice=no ;; esac # AIX splice() is something else
 
966
AC_CHECK_FUNCS(splice)
 
967
AC_CHECK_DECLS([prlimit], [], [], [[
 
968
#include <sys/time.h>
 
969
#include <sys/resource.h>]])
 
970
AC_CHECK_FUNCS(prlimit)
 
971
 
 
972
# To avoid finding a compatibility unusable statfs, which typically
 
973
# successfully compiles, but warns to use the newer statvfs interface:
 
974
AS_IF([test $ac_cv_header_sys_statvfs_h = yes], [AC_CHECK_FUNCS([statvfs])])
 
975
AS_IF([test $ac_cv_header_sys_statfs_h  = yes -o $ac_cv_header_sys_mount_h = yes], [AC_CHECK_FUNCS([statfs])])
 
976
 
 
977
AC_MSG_CHECKING([whether to use statfs or statvfs])
 
978
# Some systems have both statfs and statvfs, pick the most "native" for these
 
979
AS_IF([test x$ac_cv_func_statfs = xyes && test x$ac_cv_func_statvfs = xyes],
 
980
   [
 
981
   # on solaris and irix, statfs doesn't even have the f_bavail field
 
982
   AS_IF([test x$ac_cv_member_struct_statfs_f_bavail = xno],
 
983
      [ac_cv_func_statfs=no],
 
984
   # else, at least on linux, statfs is the actual syscall
 
985
      [ac_cv_func_statvfs=no])
 
986
   ])
 
987
 
 
988
AS_IF([test x$ac_cv_func_statfs = xyes],
 
989
      [
 
990
         AC_DEFINE([USE_STATFS], [1], [Define to use statfs()])
 
991
         AC_MSG_RESULT([statfs])
 
992
      ],
 
993
      [test x$ac_cv_func_statvfs = xyes],
 
994
      [
 
995
         AC_DEFINE([USE_STATVFS], [1], [Define to use statvfs()])
 
996
         AC_MSG_RESULT([statvfs])
 
997
      ],
 
998
      [  AC_MSG_RESULT([neither])])
 
999
 
 
1000
AC_CHECK_HEADERS(crt_externs.h)
 
1001
AC_CHECK_FUNCS(_NSGetEnviron)
 
1002
 
 
1003
AC_CHECK_FUNCS(newlocale uselocale strtod_l strtoll_l strtoull_l)
 
1004
 
 
1005
# Internet address families
 
1006
if test $glib_native_win32 = yes; then
 
1007
  glib_inet_includes=["
 
1008
#include <winsock2.h>
 
1009
  "]
 
1010
else
 
1011
  glib_inet_includes=["
 
1012
#include <sys/types.h>
 
1013
#include <sys/socket.h>
 
1014
  "]
 
1015
fi
 
1016
 
 
1017
glib_failed=false
 
1018
GLIB_CHECK_VALUE(AF_INET, $glib_inet_includes, glib_failed=true)
 
1019
GLIB_CHECK_VALUE(AF_INET6, $glib_inet_includes, glib_failed=true)
 
1020
# winsock defines this even though it doesn't support it
 
1021
GLIB_CHECK_VALUE(AF_UNIX, $glib_inet_includes, glib_failed=true)
 
1022
if $glib_failed ; then
 
1023
  AC_MSG_ERROR([Could not determine values for AF_INET* constants])
 
1024
fi
 
1025
 
 
1026
glib_failed=false
 
1027
GLIB_CHECK_VALUE(MSG_PEEK, $glib_inet_includes, glib_failed=true)
 
1028
GLIB_CHECK_VALUE(MSG_OOB, $glib_inet_includes, glib_failed=true)
 
1029
GLIB_CHECK_VALUE(MSG_DONTROUTE, $glib_inet_includes, glib_failed=true)
 
1030
if $glib_failed ; then
 
1031
  AC_MSG_ERROR([Could not determine values for MSG_* constants])
 
1032
fi
 
1033
 
 
1034
AC_CHECK_FUNCS(getprotobyname_r endservent if_nametoindex if_indextoname)
 
1035
 
 
1036
AS_IF([test $glib_native_win32 = yes], [
 
1037
  # <wspiapi.h> in the Windows SDK and in mingw-w64 has wrappers for
 
1038
  # inline workarounds for getaddrinfo, getnameinfo and freeaddrinfo if
 
1039
  # they aren't present at run-time (on Windows 2000).
 
1040
  AC_CHECK_HEADER([wspiapi.h], [WSPIAPI_INCLUDE="#include <wspiapi.h>"])
 
1041
  AC_SUBST(WSPIAPI_INCLUDE)
 
1042
], [
 
1043
  # Android does not have C_IN in public headers, we define it wherever necessary
 
1044
  AS_IF([test $glib_native_android != yes], [
 
1045
    AC_MSG_CHECKING([if arpa/nameser_compat.h is needed])
 
1046
    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
 
1047
                                        #include <arpa/nameser.h>],
 
1048
                                       [int qclass = C_IN;])],
 
1049
                      [AC_MSG_RESULT([no])],
 
1050
                      [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <sys/types.h>
 
1051
                                                           #include <arpa/nameser.h>
 
1052
                                                           #include <arpa/nameser_compat.h>],
 
1053
                                                          [int qclass = C_IN;])],
 
1054
                                         [AC_MSG_RESULT([yes])
 
1055
                                          NAMESER_COMPAT_INCLUDE="#include <arpa/nameser_compat.h>"],
 
1056
                                         [AC_MSG_ERROR([could not compile test program either way])])])])
 
1057
  AC_SUBST(NAMESER_COMPAT_INCLUDE)
 
1058
 
 
1059
  # We can't just use AC_CHECK_FUNC/AC_CHECK_LIB here. Bug 586150
 
1060
  NETWORK_LIBS=""
 
1061
  AC_MSG_CHECKING([for res_query])
 
1062
  AC_TRY_LINK([#include <sys/types.h>
 
1063
               #include <netinet/in.h>
 
1064
               #include <arpa/nameser.h>
 
1065
               #include <resolv.h>
 
1066
              ],[
 
1067
               res_query("test", 0, 0, (void *)0, 0);
 
1068
              ],[AC_MSG_RESULT([yes])],
 
1069
              [save_libs="$LIBS"
 
1070
               LIBS="-lresolv $LIBS"
 
1071
               AC_TRY_LINK([#include <sys/types.h>
 
1072
                            #include <netinet/in.h>
 
1073
                            #include <arpa/nameser.h>
 
1074
                            #include <resolv.h>
 
1075
                           ],[
 
1076
                            res_query("test", 0, 0, (void *)0, 0);
 
1077
                           ],[AC_MSG_RESULT([in -lresolv])
 
1078
                              NETWORK_LIBS="-lresolv $NETWORK_LIBS"],
 
1079
                           [LIBS="-lbind $save_libs"
 
1080
                            AC_TRY_LINK([#include <resolv.h>],
 
1081
                                        [res_query("test", 0, 0, (void *)0, 0);],
 
1082
                                        [AC_MSG_RESULT([in -lbind])
 
1083
                                         NETWORK_LIBS="-lbind $NETWORK_LIBS"],
 
1084
                                        [AC_MSG_ERROR(not found)])])
 
1085
               LIBS="$save_libs"])
 
1086
  AC_CHECK_FUNC(socket, :, AC_CHECK_LIB(socket, socket,
 
1087
                                        [NETWORK_LIBS="-lsocket $NETWORK_LIBS"],
 
1088
                                        [AC_MSG_ERROR(Could not find socket())]))
 
1089
  save_libs="$LIBS"
 
1090
  LIBS="$LIBS $NETWORK_LIBS"
 
1091
  AC_MSG_CHECKING([for res_init])
 
1092
  AC_TRY_LINK([#include <sys/types.h>
 
1093
               #include <netinet/in.h>
 
1094
               #include <arpa/nameser.h>
 
1095
               #include <resolv.h>
 
1096
              ],[
 
1097
               res_init();
 
1098
              ],[AC_MSG_RESULT([yes])
 
1099
                 AC_DEFINE(HAVE_RES_INIT, 1, [Define to 1 if you have the 'res_init' function.])
 
1100
              ],[AC_MSG_RESULT([no])])
 
1101
  LIBS="$save_libs"
 
1102
])
 
1103
AC_SUBST(NETWORK_LIBS)
 
1104
 
 
1105
AC_CHECK_HEADER([linux/netlink.h],
 
1106
                [AC_DEFINE(HAVE_NETLINK, 1, [We have AF_NETLINK sockets])],,
 
1107
                [#include <sys/socket.h>])
 
1108
AM_CONDITIONAL(HAVE_NETLINK, [test "$ac_cv_header_linux_netlink_h" = "yes"])
 
1109
 
 
1110
AC_CHECK_TYPE([struct ip_mreqn], [
 
1111
              AC_DEFINE(HAVE_IP_MREQN,, [Define if we have struct ip_mreqn])],,
 
1112
              [#include <netinet/in.h>])
 
1113
 
 
1114
case $host in
 
1115
  *-*-solaris* )
 
1116
     AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, Needed to get declarations for msg_control and msg_controllen on Solaris)
 
1117
     AC_DEFINE(_XOPEN_SOURCE,          2, Needed to get declarations for msg_control and msg_controllen on Solaris)
 
1118
     AC_DEFINE(__EXTENSIONS__,         1, Needed to get declarations for msg_control and msg_controllen on Solaris)
 
1119
     ;;
 
1120
esac
 
1121
 
 
1122
dnl
 
1123
dnl if statfs() takes 2 arguments (Posix) or 4 (Solaris)
 
1124
dnl
 
1125
AS_IF([test "$ac_cv_func_statfs" = yes], [
 
1126
  AC_MSG_CHECKING([number of arguments to statfs()])
 
1127
  AC_TRY_COMPILE([#include <unistd.h>
 
1128
  #ifdef HAVE_SYS_PARAM_H
 
1129
  #include <sys/param.h>
 
1130
  #endif
 
1131
  #ifdef HAVE_SYS_VFS_H
 
1132
  #include <sys/vfs.h>
 
1133
  #endif
 
1134
  #ifdef HAVE_SYS_MOUNT_H
 
1135
  #include <sys/mount.h>
 
1136
  #endif
 
1137
  #ifdef HAVE_SYS_STATFS_H
 
1138
  #include <sys/statfs.h>
 
1139
  #endif], [struct statfs st;
 
1140
  statfs(NULL, &st);],[
 
1141
    AC_MSG_RESULT([2])
 
1142
    AC_DEFINE(STATFS_ARGS, 2, [Number of arguments to statfs()])],[
 
1143
    AC_TRY_COMPILE([#include <unistd.h>
 
1144
  #ifdef HAVE_SYS_PARAM_H
 
1145
  #include <sys/param.h>
 
1146
  #endif
 
1147
  #ifdef HAVE_SYS_VFS_H
 
1148
  #include <sys/vfs.h>
 
1149
  #endif
 
1150
  #ifdef HAVE_SYS_MOUNT_H
 
1151
  #include <sys/mount.h>
 
1152
  #endif
 
1153
  #ifdef HAVE_SYS_STATFS_H
 
1154
  #include <sys/statfs.h>
 
1155
  #endif], [struct statfs st;
 
1156
  statfs(NULL, &st, sizeof (st), 0);],[
 
1157
      AC_MSG_RESULT([4])
 
1158
      AC_DEFINE(STATFS_ARGS, 4, [Number of arguments to statfs()])],[
 
1159
      AC_MSG_RESULT(unknown)
 
1160
      AC_MSG_ERROR([unable to determine number of arguments to statfs()])])])
 
1161
])
 
1162
 
 
1163
dnl
 
1164
dnl open takes O_DIRECTORY as an option
 
1165
dnl
 
1166
AC_MSG_CHECKING([open() option O_DIRECTORY])
 
1167
AC_TRY_COMPILE([#include <fcntl.h>
 
1168
#include <sys/types.h>
 
1169
#include <sys/stat.h>],
 
1170
[open(0, O_DIRECTORY, 0);],[
 
1171
        AC_MSG_RESULT([yes])
 
1172
        AC_DEFINE(HAVE_OPEN_O_DIRECTORY, 1, [open option O_DIRECTORY])],[
 
1173
        AC_MSG_RESULT([no])])
 
1174
 
 
1175
#
 
1176
# Check whether to use an included printf
 
1177
#
 
1178
AC_FUNC_VSNPRINTF_C99
 
1179
AC_FUNC_PRINTF_UNIX98
 
1180
 
 
1181
AC_ARG_ENABLE(included-printf,
 
1182
              [AS_HELP_STRING([--enable-included-printf],
 
1183
                              [use included printf [default=auto]])],
 
1184
              enable_included_printf="$enableval")
 
1185
 
 
1186
need_included_printf=no
 
1187
if test "x$enable_included_printf" = "xyes" ; then
 
1188
  need_included_printf=yes
 
1189
fi
 
1190
if test "$ac_cv_func_vsnprintf_c99" != "yes" ; then
 
1191
  need_included_printf=yes
 
1192
fi
 
1193
if test "$ac_cv_func_printf_unix98" != "yes" ; then
 
1194
  need_included_printf=yes
 
1195
fi
 
1196
if test "x$ac_cv_sizeof_long_long" = "x8" &&
 
1197
   test -z "$glib_cv_long_long_format" ; then
 
1198
  need_included_printf=yes
 
1199
fi
 
1200
 
 
1201
if test "x$enable_included_printf" = "xno" && 
 
1202
   test "x$need_included_printf" = "xyes" ; then
 
1203
  AC_MSG_ERROR([
 
1204
*** Your C library's printf doesn't appear to have the features that
 
1205
*** GLib needs, but you specified --enable-included-printf=no.])
 
1206
fi
 
1207
 
 
1208
enable_included_printf=$need_included_printf
 
1209
 
 
1210
AM_CONDITIONAL(HAVE_GOOD_PRINTF, test "$enable_included_printf" != "yes")
 
1211
AS_IF([test "$enable_included_printf" != "yes"], [
 
1212
  AC_DEFINE(HAVE_GOOD_PRINTF,1,[define to use system printf])
 
1213
], [
 
1214
  if test -z "$glib_cv_long_long_format" ; then
 
1215
    glib_cv_long_long_format="ll"
 
1216
  fi
 
1217
  AC_DEFINE(HAVE_VASPRINTF,1)
 
1218
])
 
1219
 
 
1220
# Checks needed for gnulib vasnprintf
 
1221
bh_C_SIGNED
 
1222
jm_AC_TYPE_LONG_LONG
 
1223
gt_TYPE_LONGDOUBLE
 
1224
gt_TYPE_WCHAR_T
 
1225
gt_TYPE_WINT_T
 
1226
AC_TYPE_SIZE_T
 
1227
AC_CHECK_TYPES(ptrdiff_t)
 
1228
jm_AC_TYPE_INTMAX_T
 
1229
AC_CHECK_FUNCS([snprintf wcslen])
 
1230
AC_FUNC_SNPRINTF_C99
 
1231
 
 
1232
# Check if <sys/select.h> needs to be included for fd_set
 
1233
AC_MSG_CHECKING([for fd_set])
 
1234
AC_TRY_COMPILE([#include <sys/types.h>],
 
1235
        [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
 
1236
AS_IF([test "$gtk_ok" = "yes"], [
 
1237
    AC_MSG_RESULT([yes, found in sys/types.h])
 
1238
], [
 
1239
    AC_EGREP_HEADER(fd_set, sys/select.h, gtk_ok=yes)
 
1240
    if test "$gtk_ok" = "yes"; then
 
1241
        # *** FIXME: give it a different name
 
1242
        AC_DEFINE(HAVE_SYS_SELECT_H,1,[found fd_set in sys/select.h])
 
1243
        AC_MSG_RESULT([yes, found in sys/select.h])
 
1244
    else
 
1245
        AC_DEFINE(NO_FD_SET,1,[didn't find fd_set])
 
1246
        AC_MSG_RESULT(no)
 
1247
    fi
 
1248
])
 
1249
 
 
1250
dnl Check for nl_langinfo and CODESET
 
1251
AC_LANG_SAVE
 
1252
AC_LANG_C
 
1253
AC_CACHE_CHECK([for nl_langinfo (CODESET)],glib_cv_langinfo_codeset,[
 
1254
        AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <langinfo.h>],
 
1255
                       [char *codeset = nl_langinfo (CODESET);])],
 
1256
                [glib_cv_langinfo_codeset=yes],
 
1257
                [glib_cv_langinfo_codeset=no])])
 
1258
if test x$glib_cv_langinfo_codeset = xyes; then
 
1259
  AC_DEFINE(HAVE_CODESET,1,[Have nl_langinfo (CODESET)])
 
1260
fi
 
1261
 
 
1262
dnl Check for nl_langinfo and LC_TIME parts that are needed in gdatetime.c
 
1263
AC_CACHE_CHECK([for nl_langinfo (PM_STR)],glib_cv_langinfo_time,[
 
1264
        AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <langinfo.h>],
 
1265
                 [char *str;
 
1266
                 str = nl_langinfo (PM_STR);
 
1267
                 str = nl_langinfo (D_T_FMT);
 
1268
                 str = nl_langinfo (D_FMT);
 
1269
                 str = nl_langinfo (T_FMT);
 
1270
                 str = nl_langinfo (T_FMT_AMPM);
 
1271
                 str = nl_langinfo (MON_1);
 
1272
                 str = nl_langinfo (ABMON_12);
 
1273
                 str = nl_langinfo (DAY_1);
 
1274
                 str = nl_langinfo (ABDAY_7);])],
 
1275
                [glib_cv_langinfo_time=yes],
 
1276
                [glib_cv_langinfo_time=no])])
 
1277
if test x$glib_cv_langinfo_time = xyes; then
 
1278
  AC_DEFINE(HAVE_LANGINFO_TIME,1,[Have nl_langinfo (PM_STR)])
 
1279
fi
 
1280
 
 
1281
dnl Check for nl_langinfo and _NL_CTYPE_OUTDIGITn_MB
 
1282
AC_CACHE_CHECK([for nl_langinfo (_NL_CTYPE_OUTDIGITn_MB)], glib_cv_langinfo_outdigit,[
 
1283
        AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <langinfo.h>],
 
1284
                [char *str;
 
1285
                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT0_MB);
 
1286
                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT1_MB);
 
1287
                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT2_MB);
 
1288
                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT3_MB);
 
1289
                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT4_MB);
 
1290
                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT5_MB);
 
1291
                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT6_MB);
 
1292
                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT7_MB);
 
1293
                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT8_MB);
 
1294
                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT9_MB);])],
 
1295
                [glib_cv_langinfo_outdigit=yes],
 
1296
                [glib_cv_langinfo_outdigit=no])])
 
1297
if test x$glib_cv_langinfo_outdigit = xyes; then
 
1298
  AC_DEFINE(HAVE_LANGINFO_OUTDIGIT,1,[Have nl_langinfo (_NL_CTYPE_OUTDIGITn_MB)])
 
1299
fi
 
1300
AC_LANG_RESTORE
 
1301
 
 
1302
dnl ****************************************
 
1303
dnl *** posix_memalign                   ***
 
1304
dnl ****************************************
 
1305
AC_MSG_CHECKING(for a compliant posix_memalign() implementation)
 
1306
AC_CACHE_VAL(glib_cv_compliant_posix_memalign,[
 
1307
    glib_cv_compliant_posix_memalign=0
 
1308
    if test "$ac_cv_func_posix_memalign" = "yes" ; then
 
1309
        AC_TRY_RUN([
 
1310
                #define _XOPEN_SOURCE 600
 
1311
                #include <stdlib.h> /* posix_memalign() should be defined here */
 
1312
                /* some systems break if #include <malloc.h> used */
 
1313
                static void test_memalign (size_t boundary, size_t size) {
 
1314
                    void *mem = 0;
 
1315
                    if (posix_memalign (&mem, boundary, size) != 0 || !mem)
 
1316
                        exit (1);
 
1317
                    else
 
1318
                      free (mem);
 
1319
                }
 
1320
                int main() {
 
1321
                    test_memalign (  128,   128 - 2 * sizeof (void*));
 
1322
                    test_memalign (  256,   256 - 2 * sizeof (void*));
 
1323
                    test_memalign (  512,   512 - 2 * sizeof (void*));
 
1324
                    test_memalign ( 1024,  1024 - 2 * sizeof (void*));
 
1325
                    test_memalign ( 2048,  2048 - 2 * sizeof (void*));
 
1326
                    test_memalign ( 4096,  4096 - 2 * sizeof (void*));
 
1327
                    test_memalign ( 8192,  8192 - 2 * sizeof (void*));
 
1328
                    test_memalign (16384, 16384 - 2 * sizeof (void*));
 
1329
                    test_memalign (32768, 32768 - 2 * sizeof (void*));
 
1330
                    exit (0); /* success */
 
1331
                }
 
1332
                ],
 
1333
            [glib_cv_compliant_posix_memalign=1], [], [:])
 
1334
      :
 
1335
    fi
 
1336
    ])
 
1337
AS_IF([test "$glib_cv_compliant_posix_memalign" = "1"], [
 
1338
    AC_MSG_RESULT(yes)
 
1339
    AC_DEFINE(POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS, 1, [define if posix_memalign() can allocate any size])
 
1340
], [
 
1341
    AC_MSG_RESULT(no)
 
1342
])
 
1343
 
 
1344
 
 
1345
dnl ****************************************
 
1346
dnl *** strlcpy/strlcat                  ***
 
1347
dnl ****************************************
 
1348
# Check for strlcpy
 
1349
AC_CACHE_CHECK([for OpenBSD strlcpy/strlcat],glib_cv_have_strlcpy,[
 
1350
AC_TRY_RUN([#include <stdlib.h>
 
1351
#include <string.h>
 
1352
int main() {
 
1353
  char p[10];
 
1354
  (void) strlcpy (p, "hi", 10);
 
1355
  if (strlcat (p, "bye", 0) != 3) 
 
1356
    return 1;
 
1357
  return 0;
 
1358
}], glib_cv_have_strlcpy=yes, 
 
1359
    glib_cv_have_strlcpy=no,
 
1360
    glib_cv_have_strlcpy=no)])
 
1361
if test "$glib_cv_have_strlcpy" = "yes"; then
 
1362
    AC_DEFINE(HAVE_STRLCPY,1,[Have functions strlcpy and strlcat])
 
1363
fi
 
1364
  
 
1365
 
 
1366
dnl **********************
 
1367
dnl *** va_copy checks ***
 
1368
dnl **********************
 
1369
dnl we currently check for all three va_copy possibilities, so we get
 
1370
dnl all results in config.log for bug reports.
 
1371
AC_CACHE_CHECK([for an implementation of va_copy()],glib_cv_va_copy,[
 
1372
        AC_LINK_IFELSE([AC_LANG_SOURCE([[#include <stdarg.h>
 
1373
#include <stdlib.h>
 
1374
        void f (int i, ...) {
 
1375
        va_list args1, args2;
 
1376
        va_start (args1, i);
 
1377
        va_copy (args2, args1);
 
1378
        if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
 
1379
          exit (1);
 
1380
        va_end (args1); va_end (args2);
 
1381
        }
 
1382
        int main() {
 
1383
          f (0, 42);
 
1384
          return 0;
 
1385
        }]])],
 
1386
        [glib_cv_va_copy=yes],
 
1387
        [glib_cv_va_copy=no])
 
1388
])
 
1389
AC_CACHE_CHECK([for an implementation of __va_copy()],glib_cv___va_copy,[
 
1390
        AC_LINK_IFELSE([AC_LANG_SOURCE([[#include <stdarg.h>
 
1391
#include <stdlib.h>
 
1392
        void f (int i, ...) {
 
1393
        va_list args1, args2;
 
1394
        va_start (args1, i);
 
1395
        __va_copy (args2, args1);
 
1396
        if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
 
1397
          exit (1);
 
1398
        va_end (args1); va_end (args2);
 
1399
        }
 
1400
        int main() {
 
1401
          f (0, 42);
 
1402
          return 0;
 
1403
        }]])],
 
1404
        [glib_cv___va_copy=yes],
 
1405
        [glib_cv___va_copy=no])
 
1406
])
 
1407
 
 
1408
if test "x$glib_cv_va_copy" = "xyes"; then
 
1409
  g_va_copy_func=va_copy
 
1410
else if test "x$glib_cv___va_copy" = "xyes"; then
 
1411
  g_va_copy_func=__va_copy
 
1412
fi
 
1413
fi
 
1414
 
 
1415
if test -n "$g_va_copy_func"; then
 
1416
  AC_DEFINE_UNQUOTED(G_VA_COPY,$g_va_copy_func,[A 'va_copy' style function])
 
1417
fi
 
1418
 
 
1419
AC_CACHE_CHECK([whether va_lists can be copied by value],glib_cv_va_val_copy,[
 
1420
        AC_TRY_RUN([#include <stdarg.h>
 
1421
#include <stdlib.h> 
 
1422
        void f (int i, ...) {
 
1423
        va_list args1, args2;
 
1424
        va_start (args1, i);
 
1425
        args2 = args1;
 
1426
        if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
 
1427
          exit (1);
 
1428
        va_end (args1); va_end (args2);
 
1429
        }
 
1430
        int main() {
 
1431
          f (0, 42);
 
1432
          return 0;
 
1433
        }],
 
1434
        [glib_cv_va_val_copy=yes],
 
1435
        [glib_cv_va_val_copy=no],
 
1436
        [glib_cv_va_val_copy=yes])
 
1437
])
 
1438
 
 
1439
AS_IF([ test "x$glib_cv_va_val_copy" = "xno"], [
 
1440
  AC_DEFINE(G_VA_COPY_AS_ARRAY,1, ['va_lists' cannot be copies as values])
 
1441
])
 
1442
 
 
1443
dnl ***********************
 
1444
dnl *** g_module checks ***
 
1445
dnl ***********************
 
1446
G_MODULE_LIBS=
 
1447
G_MODULE_LIBS_EXTRA=
 
1448
G_MODULE_PLUGIN_LIBS=
 
1449
if test x"$glib_native_win32" = xyes; then
 
1450
  dnl No use for this on Win32
 
1451
  G_MODULE_LDFLAGS=
 
1452
else
 
1453
  export SED
 
1454
  G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
 
1455
fi
 
1456
dnl G_MODULE_IMPL= don't reset, so cmd-line can override
 
1457
G_MODULE_NEED_USCORE=0
 
1458
G_MODULE_BROKEN_RTLD_GLOBAL=0
 
1459
G_MODULE_HAVE_DLERROR=0
 
1460
dnl *** force native WIN32 shared lib loader 
 
1461
if test -z "$G_MODULE_IMPL"; then
 
1462
  case "$host" in
 
1463
  *-*-mingw*|*-*-cygwin*) G_MODULE_IMPL=G_MODULE_IMPL_WIN32 ;;
 
1464
  esac
 
1465
fi
 
1466
dnl *** force native AIX library loader
 
1467
dnl *** dlopen() filepath must be of the form /path/libname.a(libname.so)
 
1468
if test -z "$G_MODULE_IMPL"; then
 
1469
  case "$host" in
 
1470
  *-*-aix*) G_MODULE_IMPL=G_MODULE_IMPL_AR ;;
 
1471
  esac
 
1472
fi
 
1473
dnl *** dlopen() and dlsym() in system libraries
 
1474
AS_IF([ test -z "$G_MODULE_IMPL"], [
 
1475
        AC_CHECK_FUNC(dlopen,
 
1476
                      [AC_CHECK_FUNC(dlsym,
 
1477
                                     [G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
 
1478
                      [])
 
1479
])
 
1480
dnl *** NSLinkModule (dyld) in system libraries (Darwin)
 
1481
AS_IF([ test -z "$G_MODULE_IMPL" ], [
 
1482
        AC_CHECK_FUNC(NSLinkModule,
 
1483
                      [G_MODULE_IMPL=G_MODULE_IMPL_DYLD
 
1484
                       G_MODULE_NEED_USCORE=1],
 
1485
                      [])
 
1486
])
 
1487
dnl *** dlopen() and dlsym() in libdl
 
1488
AS_IF([ test -z "$G_MODULE_IMPL"], [
 
1489
        AC_CHECK_LIB(dl, dlopen,
 
1490
                     [AC_CHECK_LIB(dl, dlsym,
 
1491
                                   [G_MODULE_LIBS=-ldl
 
1492
                                   G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
 
1493
                     [])
 
1494
])
 
1495
dnl *** additional checks for G_MODULE_IMPL_DL
 
1496
AS_IF([ test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL" ], [
 
1497
        LIBS_orig="$LIBS"
 
1498
        LDFLAGS_orig="$LDFLAGS"
 
1499
        LIBS="$G_MODULE_LIBS $LIBS"
 
1500
        LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS"
 
1501
dnl *** check for OSF1/5.0 RTLD_GLOBAL brokenness
 
1502
        echo "void glib_plugin_test(void) { }" > plugin.c
 
1503
        ${SHELL} ./libtool --mode=compile --tag=CC ${CC} ${CFLAGS} \
 
1504
                ${CPPFLAGS} -c -o plugin.lo plugin.c >/dev/null 2>&1
 
1505
        ${SHELL} ./libtool --mode=link --tag=CC ${CC} ${CFLAGS} \
 
1506
                ${LDFLAGS} -module -o plugin.la -export-dynamic \
 
1507
                -shrext ".o" -avoid-version plugin.lo \
 
1508
                -rpath /dont/care >/dev/null 2>&1
 
1509
        eval `./libtool --config | grep ^objdir`
 
1510
        AC_CACHE_CHECK([for RTLD_GLOBAL brokenness],
 
1511
                glib_cv_rtldglobal_broken,[
 
1512
                AC_TRY_RUN([
 
1513
#include <dlfcn.h>
 
1514
#ifndef RTLD_GLOBAL
 
1515
#  define RTLD_GLOBAL 0
 
1516
#endif
 
1517
#ifndef RTLD_LAZY
 
1518
#  define RTLD_LAZY 0
 
1519
#endif
 
1520
int glib_plugin_test;
 
1521
int main () {
 
1522
    void *handle, *global, *local;
 
1523
    global = &glib_plugin_test;
 
1524
    handle = dlopen ("./$objdir/plugin.o", RTLD_GLOBAL | RTLD_LAZY);
 
1525
    if (!handle) return 0;
 
1526
    local = dlsym (handle, "glib_plugin_test");
 
1527
    return global == local;
 
1528
}                       ],
 
1529
                        [glib_cv_rtldglobal_broken=no],
 
1530
                        [glib_cv_rtldglobal_broken=yes],
 
1531
                        [glib_cv_rtldglobal_broken=no])
 
1532
                rm -f plugin.c plugin.o plugin.lo plugin.la ${objdir}/plugin.*
 
1533
                rmdir ${objdir} 2>/dev/null
 
1534
        ])
 
1535
        if test "x$glib_cv_rtldglobal_broken" = "xyes"; then
 
1536
                G_MODULE_BROKEN_RTLD_GLOBAL=1
 
1537
        else
 
1538
                G_MODULE_BROKEN_RTLD_GLOBAL=0
 
1539
        fi
 
1540
dnl *** check whether we need preceeding underscores
 
1541
        AC_CACHE_CHECK([for preceeding underscore in symbols],
 
1542
                glib_cv_uscore,[
 
1543
                AC_TRY_RUN([#include <dlfcn.h>
 
1544
                int glib_underscore_test (void) { return 42; }
 
1545
                int main() {
 
1546
                  void *f1 = (void*)0, *f2 = (void*)0, *handle;
 
1547
                  handle = dlopen ((void*)0, 0);
 
1548
                  if (handle) {
 
1549
                    f1 = dlsym (handle, "glib_underscore_test");
 
1550
                    f2 = dlsym (handle, "_glib_underscore_test");
 
1551
                  } return (!f2 || f1);
 
1552
                }],
 
1553
                        [glib_cv_uscore=yes],
 
1554
                        [glib_cv_uscore=no],
 
1555
                        [])
 
1556
                rm -f plugin.c plugin.$ac_objext plugin.lo
 
1557
        ])
 
1558
        GLIB_ASSERT_SET(glib_cv_uscore)
 
1559
        if test "x$glib_cv_uscore" = "xyes"; then
 
1560
                G_MODULE_NEED_USCORE=1
 
1561
        else
 
1562
                G_MODULE_NEED_USCORE=0
 
1563
        fi
 
1564
 
 
1565
        LDFLAGS="$LDFLAGS_orig"
 
1566
dnl *** check for having dlerror()
 
1567
        AC_CHECK_FUNC(dlerror,
 
1568
                [G_MODULE_HAVE_DLERROR=1],
 
1569
                [G_MODULE_HAVE_DLERROR=0])
 
1570
        LIBS="$LIBS_orig"
 
1571
])
 
1572
dnl *** done, have we got an implementation?
 
1573
if test -z "$G_MODULE_IMPL"; then
 
1574
        G_MODULE_IMPL=0
 
1575
        G_MODULE_SUPPORTED=false
 
1576
else
 
1577
        G_MODULE_SUPPORTED=true
 
1578
fi
 
1579
 
 
1580
AC_MSG_CHECKING(for the suffix of module shared libraries)
 
1581
export SED
 
1582
shrext_cmds=`./libtool --config | grep '^shrext_cmds='`
 
1583
eval $shrext_cmds
 
1584
module=yes eval std_shrext=$shrext_cmds
 
1585
# chop the initial dot
 
1586
glib_gmodule_suffix=`echo $std_shrext | sed 's/^\.//'`
 
1587
AC_MSG_RESULT(.$glib_gmodule_suffix)
 
1588
# any reason it may fail?
 
1589
if test "x$glib_gmodule_suffix" = x; then
 
1590
        AC_MSG_ERROR(Cannot determine shared library suffix from libtool)
 
1591
fi
 
1592
 
 
1593
AC_SUBST(G_MODULE_SUPPORTED)
 
1594
AC_SUBST(G_MODULE_IMPL)
 
1595
AC_SUBST(G_MODULE_LIBS)
 
1596
AC_SUBST(G_MODULE_LIBS_EXTRA)
 
1597
AC_SUBST(G_MODULE_PLUGIN_LIBS)
 
1598
AC_SUBST(G_MODULE_LDFLAGS)
 
1599
AC_SUBST(G_MODULE_HAVE_DLERROR)
 
1600
AC_SUBST(G_MODULE_BROKEN_RTLD_GLOBAL)
 
1601
AC_SUBST(G_MODULE_NEED_USCORE)
 
1602
AC_SUBST(GLIB_DEBUG_FLAGS)
 
1603
 
 
1604
dnl **********************
 
1605
dnl *** g_spawn checks ***
 
1606
dnl **********************
 
1607
 
 
1608
AC_MSG_CHECKING(for gspawn implementation)
 
1609
case "$host" in
 
1610
  *-*-mingw*)
 
1611
    GSPAWN=gspawn-win32.lo
 
1612
    ;;
 
1613
  *)
 
1614
    GSPAWN=gspawn.lo
 
1615
    ;;    
 
1616
esac
 
1617
AC_MSG_RESULT($GSPAWN)
 
1618
AC_SUBST(GSPAWN)
 
1619
 
 
1620
dnl *************************
 
1621
dnl *** GIOChannel checks ***
 
1622
dnl *************************
 
1623
 
 
1624
AC_MSG_CHECKING(for GIOChannel implementation)
 
1625
case "$host" in
 
1626
  *-*-mingw*)
 
1627
    GIO=giowin32.lo
 
1628
    ;;
 
1629
  *)
 
1630
    GIO=giounix.lo
 
1631
    ;;    
 
1632
esac
 
1633
AC_MSG_RESULT($GIO)
 
1634
AC_SUBST(GIO)
 
1635
 
 
1636
dnl *********************************
 
1637
dnl *** Directory for GIO modules ***
 
1638
dnl *********************************
 
1639
 
 
1640
AC_ARG_WITH(gio-module-dir,
 
1641
           [AS_HELP_STRING([--with-gio-module-dir=DIR],
 
1642
                           [load gio modules from this directory [LIBDIR/gio/modules]])],
 
1643
           [],
 
1644
           [with_gio_module_dir='${libdir}/gio/modules'])
 
1645
GIO_MODULE_DIR=$with_gio_module_dir
 
1646
AC_SUBST(GIO_MODULE_DIR)
 
1647
 
 
1648
dnl **********************************
 
1649
dnl *** Check for libselinux (GIO) ***
 
1650
dnl **********************************
 
1651
AC_ARG_ENABLE(selinux,
 
1652
              AS_HELP_STRING([--disable-selinux],
 
1653
                             [build without selinux support]))
 
1654
msg_selinux=no
 
1655
SELINUX_LIBS=
 
1656
AS_IF([ test "x$enable_selinux" != "xno"], [
 
1657
 
 
1658
 AC_CHECK_LIB(selinux, is_selinux_enabled,
 
1659
   [AC_CHECK_HEADERS(selinux/selinux.h,
 
1660
     [AC_CHECK_LIB(selinux, lgetfilecon_raw, 
 
1661
       [AC_DEFINE(HAVE_SELINUX, 1, [Define to 1 if libselinux is available])
 
1662
        SELINUX_LIBS="-lselinux"
 
1663
        msg_selinux=yes])
 
1664
     ])
 
1665
   ])
 
1666
])
 
1667
AC_SUBST(SELINUX_LIBS)
 
1668
 
 
1669
dnl *****************************
 
1670
dnl ** Check for inotify (GIO) **
 
1671
dnl *****************************
 
1672
inotify_support=no
 
1673
AC_CHECK_HEADERS([sys/inotify.h],
 
1674
[
 
1675
  AC_CHECK_FUNCS(inotify_init1, [inotify_support=yes], [inotify_support=no])
 
1676
])
 
1677
 
 
1678
AM_CONDITIONAL(HAVE_INOTIFY, [test "$inotify_support" = "yes"])
 
1679
 
 
1680
dnl ****************************
 
1681
dnl ** Check for kqueue (GIO) **
 
1682
dnl ****************************
 
1683
kqueue_support=no
 
1684
AC_CHECK_HEADERS([sys/event.h],
 
1685
[
 
1686
        AC_CHECK_FUNCS(kqueue kevent, [kqueue_support=yes])
 
1687
])
 
1688
 
 
1689
AM_CONDITIONAL(HAVE_KQUEUE, [test "$kqueue_support" = "yes"])
 
1690
 
 
1691
dnl *********************************
 
1692
dnl ** Check for Solaris FEN (GIO) **
 
1693
dnl *********************************
 
1694
fen_support=no
 
1695
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
 
1696
#include <port.h> 
 
1697
#ifndef PORT_SOURCE_FILE 
 
1698
#error "Please upgrade to Nevada 72 or above to suppoert FEN" 
 
1699
#endif 
 
1700
int main() { return 0; } ]])],
 
1701
[
 
1702
        fen_support=yes
 
1703
],)
 
1704
 
 
1705
AM_CONDITIONAL(HAVE_FEN, [test "$fen_support" = "yes"])
 
1706
 
 
1707
dnl ****************************
 
1708
dnl *** Checks for FAM (GIO) ***
 
1709
dnl ****************************
 
1710
 
 
1711
should_disable_fam=no
 
1712
 
 
1713
AC_ARG_ENABLE(fam,
 
1714
              AS_HELP_STRING([--disable-fam],
 
1715
                             [don't use fam for file system monitoring]),
 
1716
                         [
 
1717
                                if test "x$enable_fam" = "xno"; then
 
1718
                                        should_disable_fam=yes
 
1719
                                fi
 
1720
                         ]
 
1721
                         )
 
1722
fam_support=no
 
1723
FAM_LIBS=
 
1724
if test "x$should_disable_fam" = "xno"; then
 
1725
AC_CHECK_LIB(fam, FAMOpen,
 
1726
  [AC_CHECK_HEADERS(fam.h,
 
1727
    [AC_DEFINE(HAVE_FAM, [], [Define if we have FAM])
 
1728
     AC_CHECK_LIB(fam, FAMNoExists,
 
1729
                  AC_DEFINE(HAVE_FAM_NO_EXISTS, [], [Define if we have FAMNoExists in fam]))
 
1730
     FAM_LIBS="-lfam"]
 
1731
     fam_support=yes,
 
1732
    AC_MSG_WARN(*** FAM support will not be built (header files not found) ***))],
 
1733
  AC_MSG_WARN(*** FAM support will not be built (FAM library not found) ***))
 
1734
AC_SUBST(FAM_LIBS)
 
1735
fi
 
1736
AM_CONDITIONAL(HAVE_FAM, [test "$fam_support" = "yes"])
 
1737
 
 
1738
 
 
1739
dnl *****************************
 
1740
dnl *** Check for xattr (GIO) ***
 
1741
dnl *****************************
 
1742
AC_ARG_ENABLE(xattr,
 
1743
              AS_HELP_STRING([--disable-xattr], [build without xattr support]))
 
1744
msg_xattr=no
 
1745
XATTR_LIBS=
 
1746
AS_IF([ test "x$enable_xattr" != "xno"], [
 
1747
 
 
1748
dnl either glibc or libattr can provide xattr support
 
1749
 
 
1750
dnl for both of them, we check for getxattr being in
 
1751
dnl the library and a valid xattr header.
 
1752
 
 
1753
dnl try glibc
 
1754
 AC_CHECK_LIB(c, getxattr,
 
1755
   [AC_CHECK_HEADERS(sys/xattr.h,
 
1756
     [AC_DEFINE(HAVE_XATTR, 1, [Define to 1 if xattr is available])
 
1757
      msg_xattr=yes])
 
1758
   ])
 
1759
 
 
1760
  AS_IF([ test "x$msg_xattr" != "xyes"], [
 
1761
dnl   failure. try libattr
 
1762
   AC_CHECK_LIB(attr, getxattr,
 
1763
      [AC_CHECK_HEADERS(attr/xattr.h,
 
1764
       [AC_DEFINE(HAVE_XATTR, 1, [Define to 1 if xattr is available])
 
1765
        XATTR_LIBS="-lattr"
 
1766
        msg_xattr=yes])
 
1767
      ])
 
1768
  ])
 
1769
 
 
1770
  AS_IF([ test "x$msg_xattr" = "xyes"], [
 
1771
    AC_MSG_CHECKING([for XATTR_NOFOLLOW])
 
1772
    AC_TRY_COMPILE([
 
1773
      #include <stdio.h>
 
1774
      #ifdef HAVE_SYS_TYPES_H
 
1775
      #include <sys/types.h>
 
1776
      #endif
 
1777
      #ifdef HAVE_SYS_XATTR_H
 
1778
      #include <sys/xattr.h>
 
1779
      #elif HAVE_ATTR_XATTR_H
 
1780
      #include <attr/xattr.h>
 
1781
      #endif
 
1782
    ],
 
1783
    [ssize_t len = getxattr("", "", NULL, 0, 0, XATTR_NOFOLLOW);],
 
1784
    [
 
1785
      AC_DEFINE([HAVE_XATTR_NOFOLLOW], [1], [Define to 1 if xattr API uses XATTR_NOFOLLOW])
 
1786
      AC_MSG_RESULT([yes])
 
1787
    ],
 
1788
    [AC_MSG_RESULT([no])]
 
1789
    )
 
1790
  ])
 
1791
])
 
1792
AC_SUBST(XATTR_LIBS)
 
1793
 
 
1794
dnl ************************
 
1795
dnl *** check for libelf ***
 
1796
dnl ************************
 
1797
AC_ARG_ENABLE(libelf,
 
1798
              AS_HELP_STRING([--disable-libelf], [build without libelf support]))
 
1799
AS_IF([ test "x$enable_libelf" != "xno"],[
 
1800
PKG_CHECK_MODULES([LIBELF], [libelf >= 0.8.12], [have_libelf=yes], [have_libelf=maybe])
 
1801
AS_IF([ test $have_libelf = maybe ], [
 
1802
  glib_save_LIBS=$LIBS
 
1803
  AC_CHECK_LIB([elf], [elf_begin], [:], [have_libelf=no])
 
1804
  AC_CHECK_LIB([elf], [elf_getshdrstrndx], [:], [have_libelf=no])
 
1805
  AC_CHECK_LIB([elf], [elf_getshdrnum], [:], [have_libelf=no])
 
1806
  AC_CHECK_HEADER([libelf.h], [:], [have_libelf=no])
 
1807
  LIBS=$glib_save_LIBS
 
1808
 
 
1809
  if test $have_libelf != no; then
 
1810
    LIBELF_LIBS=-lelf
 
1811
    have_libelf=yes
 
1812
  fi
 
1813
])
 
1814
])
 
1815
 
 
1816
if test x$have_libelf = xyes; then
 
1817
  AC_DEFINE(HAVE_LIBELF, 1, [Define if libelf is available])
 
1818
fi
 
1819
 
 
1820
dnl ****************************************
 
1821
dnl *** platform dependent source checks ***
 
1822
dnl ****************************************
 
1823
 
 
1824
AC_MSG_CHECKING(for platform-dependent source)
 
1825
case "$host" in
 
1826
  *-*-cygwin*|*-*-mingw*)
 
1827
    PLATFORMDEP=gwin32.lo
 
1828
    ;;
 
1829
  *)
 
1830
    PLATFORMDEP=
 
1831
    ;;    
 
1832
esac
 
1833
AC_MSG_RESULT($PLATFORMDEP)
 
1834
AC_SUBST(PLATFORMDEP)
 
1835
 
 
1836
AC_MSG_CHECKING([whether to compile timeloop])
 
1837
case "$host" in
 
1838
  *-*-cygwin*|*-*-mingw*|*-*-minix)
 
1839
    enable_timeloop=no
 
1840
    ;;
 
1841
  *)
 
1842
    enable_timeloop=yes
 
1843
    ;;    
 
1844
esac
 
1845
AC_MSG_RESULT($enable_timeloop)
 
1846
AM_CONDITIONAL(ENABLE_TIMELOOP, test x$enable_timeloop = xyes)
 
1847
 
 
1848
AC_MSG_CHECKING([if building for some Win32 platform])
 
1849
case "$host" in
 
1850
  *-*-mingw*|*-*-cygwin*)
 
1851
    platform_win32=yes
 
1852
    ;;
 
1853
  *)
 
1854
    platform_win32=no
 
1855
    ;;
 
1856
esac
 
1857
AC_MSG_RESULT($platform_win32)
 
1858
AM_CONDITIONAL(PLATFORM_WIN32, test x$platform_win32 = xyes)
 
1859
 
 
1860
dnl ***********************
 
1861
dnl *** g_thread checks ***
 
1862
dnl ***********************
 
1863
 
 
1864
AC_ARG_WITH(threads,
 
1865
           [AS_HELP_STRING([--with-threads=@<:@posix/win32@:>@],
 
1866
                           [specify a thread implementation to use])],
 
1867
           [],
 
1868
           [with_threads=yes])
 
1869
 
 
1870
dnl error and warning message
 
1871
dnl *************************
 
1872
 
 
1873
THREAD_NO_IMPLEMENTATION="No thread implementation found."
 
1874
 
 
1875
FLAG_DOES_NOT_WORK="I can't find the MACRO to enable thread safety on your
 
1876
                platform (normally it's "_REENTRANT"). I'll not use any flag on
 
1877
                compilation now, but then your programs might not work.
 
1878
                Please provide information on how it is done on your system."
 
1879
 
 
1880
LIBS_NOT_FOUND_1="I can't find the libraries for the thread implementation
 
1881
                 "
 
1882
 
 
1883
LIBS_NOT_FOUND_2=". Please choose another thread implementation or
 
1884
                  provide information on your thread implementation."
 
1885
 
 
1886
FUNC_NO_GETPWUID_R="the 'g_get_(user_name|real_name|home_dir|tmp_dir)'
 
1887
                functions will not be MT-safe during their first call because
 
1888
                there is no working 'getpwuid_r' on your system."
 
1889
 
 
1890
FUNC_NO_LOCALTIME_R="the 'g_date_set_time' function will not be MT-safe
 
1891
                because there is no 'localtime_r' on your system."
 
1892
 
 
1893
AIX_COMPILE_INFO="AIX's C compiler needs to be called by a different name, when
 
1894
                linking threaded applications. As GLib cannot do that 
 
1895
                automatically, you will get an linkg error everytime you are 
 
1896
                not using the right compiler. In that case you have to relink 
 
1897
                with the right compiler. Ususally just '_r' is appended 
 
1898
                to the compiler name."
 
1899
 
 
1900
dnl determination of thread implementation
 
1901
dnl ***************************************
 
1902
 
 
1903
AC_MSG_CHECKING(for thread implementation)
 
1904
 
 
1905
have_threads=no
 
1906
AS_IF([ test "x$with_threads" = xyes || test "x$with_threads" = xposix], [
 
1907
        AS_IF([ test "x$have_threads" = xno], [
 
1908
                AC_TRY_COMPILE([#include <pthread.h>],
 
1909
                        [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
 
1910
                        have_threads=posix)
 
1911
        ])
 
1912
        # Tru64Unix requires -pthread to find pthread.h. See #103020
 
1913
        if test "x$have_threads" = xno; then
 
1914
                glib_save_CPPFLAGS="$CPPFLAGS"
 
1915
                CPPFLAGS="$CPPFLAGS -pthread"
 
1916
                AC_TRY_COMPILE([#include <pthread.h>],
 
1917
                       [pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;],
 
1918
                       have_threads=posix)
 
1919
                CPPFLAGS="$glib_save_CPPFLAGS"
 
1920
        fi
 
1921
])
 
1922
if test "x$with_threads" = xyes || test "x$with_threads" = xwin32; then
 
1923
        case $host in
 
1924
                *-*-mingw*)
 
1925
                have_threads=win32
 
1926
                ;;
 
1927
        esac
 
1928
fi
 
1929
 
 
1930
if test "x$have_threads" = xno; then
 
1931
        AC_MSG_RESULT(none available)
 
1932
        AC_MSG_ERROR($THREAD_NO_IMPLEMENTATION)
 
1933
else
 
1934
        AC_MSG_RESULT($have_threads)
 
1935
fi
 
1936
 
 
1937
 
 
1938
dnl determination of G_THREAD_CFLAGS
 
1939
dnl ********************************
 
1940
 
 
1941
G_THREAD_LIBS=
 
1942
G_THREAD_LIBS_EXTRA=
 
1943
G_THREAD_CFLAGS=
 
1944
 
 
1945
dnl
 
1946
dnl Test program for basic POSIX threads functionality
 
1947
dnl
 
1948
m4_define([glib_thread_test],[
 
1949
#include <pthread.h> 
 
1950
int check_me = 0;
 
1951
void* func(void* data) {check_me = 42; return &check_me;}
 
1952
int main()
 
1953
 { pthread_t t; 
 
1954
   void *ret;
 
1955
   pthread_create (&t, $1, func, 0);
 
1956
   pthread_join (t, &ret);
 
1957
   return (check_me != 42 || ret != &check_me);
 
1958
}])
 
1959
 
 
1960
AS_IF([ test x"$have_threads" = xposix], [
 
1961
  # First we test for posix, whether -pthread or -pthreads do the trick as 
 
1962
  # both CPPFLAG and LIBS. 
 
1963
  # One of them does for most gcc versions and some other platforms/compilers
 
1964
  # too and could be considered as the canonical way to go. 
 
1965
  case $host in
 
1966
    *-*-cygwin*|*-*-darwin*)
 
1967
       # skip cygwin and darwin -pthread or -pthreads test
 
1968
       ;;
 
1969
    *-solaris*)
 
1970
      # These compiler/linker flags work with both Sun Studio and gcc
 
1971
      # Sun Studio expands -mt to -D_REENTRANT and -lthread
 
1972
      # gcc expands -pthreads to -D_REENTRANT -D_PTHREADS -lpthread
 
1973
      G_THREAD_CFLAGS="-D_REENTRANT -D_PTHREADS"
 
1974
      G_THREAD_LIBS="-lpthread -lthread"
 
1975
      ;;
 
1976
    *)
 
1977
      for flag in pthread pthreads mt; do
 
1978
        glib_save_CFLAGS="$CFLAGS"
 
1979
        CFLAGS="$CFLAGS -$flag"
 
1980
        AC_TRY_RUN(glib_thread_test(0),
 
1981
                   glib_flag_works=yes,
 
1982
                   glib_flag_works=no,
 
1983
                   [AC_LINK_IFELSE([AC_LANG_SOURCE(glib_thread_test(0))],
 
1984
                                   glib_flag_works=yes,
 
1985
                                   glib_flag_works=no)])
 
1986
        CFLAGS="$glib_save_CFLAGS"
 
1987
        if test $glib_flag_works = yes ; then
 
1988
           G_THREAD_CFLAGS=-$flag
 
1989
        G_THREAD_LIBS=-$flag
 
1990
        break;
 
1991
        fi
 
1992
      done
 
1993
       ;;
 
1994
  esac
 
1995
])
 
1996
 
 
1997
AS_IF([ test x"$G_THREAD_CFLAGS" = x], [
 
1998
 
 
1999
  # The canonical -pthread[s] does not work. Try something different.
 
2000
 
 
2001
  case $host in
 
2002
        *-aix*)
 
2003
                if test x"$GCC" = xyes; then
 
2004
                        # GCC 3.0 and above needs -pthread. 
 
2005
                        # Should be coverd by the case above.
 
2006
                        # GCC 2.x and below needs -mthreads
 
2007
                        G_THREAD_CFLAGS="-mthreads"             
 
2008
                        G_THREAD_LIBS=$G_THREAD_CFLAGS
 
2009
                else 
 
2010
                        # We are probably using the aix compiler. Normaly a 
 
2011
                        # program would have to be compiled with the _r variant
 
2012
                        # of the corresponding compiler, but we as GLib cannot 
 
2013
                        # do that: but the good news is that for compiling the
 
2014
                        # only difference is the added -D_THREAD_SAFE compile 
 
2015
                        # option. This is according to the "C for AIX User's 
 
2016
                        # Guide".
 
2017
                        G_THREAD_CFLAGS="-D_THREAD_SAFE"
 
2018
                fi
 
2019
                ;;
 
2020
        *-sysv5uw7*) # UnixWare 7 
 
2021
                # We are not using gcc with -pthread. Catched above.
 
2022
                G_THREAD_CFLAGS="-Kthread"
 
2023
                G_THREAD_LIBS=$G_THREAD_CFLAGS
 
2024
                ;;
 
2025
        *-mingw*)
 
2026
                # No flag needed when using MSVCRT.DLL
 
2027
                G_THREAD_CFLAGS=""
 
2028
                ;;
 
2029
        *)
 
2030
                G_THREAD_CFLAGS="-D_REENTRANT" # good default guess otherwise
 
2031
                ;;
 
2032
  esac
 
2033
])
 
2034
 
 
2035
# if we are not finding the localtime_r function, then we probably are
 
2036
# not using the proper multithread flag
 
2037
 
 
2038
glib_save_CPPFLAGS="$CPPFLAGS"
 
2039
CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
 
2040
 
 
2041
# First we test, whether localtime_r is declared in time.h
 
2042
# directly. Then we test whether a macro localtime_r exists, in
 
2043
# which case localtime_r in the test program is replaced and thus
 
2044
# if we still find localtime_r in the output, it is not defined as 
 
2045
# a macro.
 
2046
 
 
2047
AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h>], ,
 
2048
  [AC_EGREP_CPP([[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]], [#include <time.h> 
 
2049
                                                           localtime_r(a,b)],
 
2050
                   AC_MSG_WARN($FLAG_DOES_NOT_WORK))])
 
2051
 
 
2052
CPPFLAGS="$glib_save_CPPFLAGS"
 
2053
 
 
2054
AC_MSG_CHECKING(thread related cflags)
 
2055
AC_MSG_RESULT($G_THREAD_CFLAGS)
 
2056
CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
 
2057
 
 
2058
dnl determination of G_THREAD_LIBS
 
2059
dnl ******************************
 
2060
 
 
2061
AS_IF([test x$have_threads = xposix], [
 
2062
          glib_save_CPPFLAGS="$CPPFLAGS"
 
2063
          CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
 
2064
          AS_IF([ test x"$G_THREAD_LIBS" = x ], [
 
2065
            case $host in
 
2066
              *-aix*)
 
2067
                # We are not using gcc (would have set G_THREAD_LIBS) and thus 
 
2068
                # probably using the aix compiler.
 
2069
                AC_MSG_WARN($AIX_COMPILE_INFO)
 
2070
                ;;
 
2071
              *)
 
2072
                G_THREAD_LIBS=error
 
2073
                glib_save_LIBS="$LIBS"
 
2074
                for thread_lib in "" pthread pthread32 pthreads thread; do
 
2075
                        if test x"$thread_lib" = x; then
 
2076
                                add_thread_lib=""
 
2077
                                IN=""
 
2078
                        else
 
2079
                                add_thread_lib="-l$thread_lib"
 
2080
                                IN=" in -l$thread_lib"
 
2081
                        fi
 
2082
                        if test x"$have_threads" = xposix; then
 
2083
                                defattr=0
 
2084
                        else
 
2085
                                defattr=pthread_attr_default
 
2086
                        fi
 
2087
                        
 
2088
                        LIBS="$add_thread_lib $glib_save_LIBS"
 
2089
                        
 
2090
                        AC_MSG_CHECKING(for pthread_create/pthread_join$IN)
 
2091
                        AC_TRY_RUN(glib_thread_test($defattr),
 
2092
                                   glib_result=yes,
 
2093
                                   glib_result=no,
 
2094
                                   [AC_LINK_IFELSE([AC_LANG_SOURCE(glib_thread_test($defattr))],
 
2095
                                                   glib_result=yes,
 
2096
                                                   glib_result=no)])
 
2097
                        AC_MSG_RESULT($glib_result)
 
2098
                        
 
2099
                        if test "$glib_result" = "yes" ; then
 
2100
                          G_THREAD_LIBS="$add_thread_lib"
 
2101
                          break
 
2102
                        fi
 
2103
                done
 
2104
                if test "x$G_THREAD_LIBS" = xerror; then
 
2105
                  AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
 
2106
                fi 
 
2107
                LIBS="$glib_save_LIBS"
 
2108
                ;;
 
2109
            esac
 
2110
          ])
 
2111
 
 
2112
          g_threads_impl="POSIX"
 
2113
          AC_DEFINE([THREADS_POSIX], [1], [Use pthreads])
 
2114
          AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
 
2115
          CPPFLAGS="$glib_save_CPPFLAGS"
 
2116
], [test x$have_threads = xwin32], [
 
2117
           AC_DEFINE([THREADS_WIN32], [1], [Use w32 threads])
 
2118
           g_threads_impl="WIN32"
 
2119
], [
 
2120
           AC_DEFINE([THREADS_NONE], [1], [Use no threads])
 
2121
           g_threads_impl="NONE"
 
2122
           G_THREAD_LIBS=error
 
2123
])
 
2124
AM_CONDITIONAL(THREADS_POSIX, [test "$g_threads_impl" = "POSIX"])
 
2125
AM_CONDITIONAL(THREADS_WIN32, [test "$g_threads_impl" = "WIN32"])
 
2126
AM_CONDITIONAL(THREADS_NONE, [test "$g_threads_impl" = "NONE"])
 
2127
 
 
2128
if test "x$G_THREAD_LIBS" = xerror; then
 
2129
        AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
 
2130
fi
 
2131
 
 
2132
AC_MSG_CHECKING(thread related libraries)
 
2133
AC_MSG_RESULT($G_THREAD_LIBS)
 
2134
 
 
2135
dnl check for mt safe function variants and some posix functions
 
2136
dnl ************************************************************
 
2137
 
 
2138
glib_save_LIBS="$LIBS"
 
2139
# we are not doing the following for now, as this might require glib 
 
2140
# to always be linked with the thread libs on some platforms. 
 
2141
# LIBS="$LIBS $G_THREAD_LIBS"
 
2142
AC_CHECK_FUNCS(localtime_r gmtime_r)
 
2143
AS_IF([ test "$glib_native_win32" != "yes"], [
 
2144
        AC_CACHE_CHECK([for posix getpwuid_r],
 
2145
                ac_cv_func_posix_getpwuid_r,
 
2146
                [AC_TRY_RUN([
 
2147
#include <errno.h>
 
2148
#include <pwd.h>
 
2149
int main () { 
 
2150
    char buffer[10000];
 
2151
    struct passwd pwd, *pwptr = &pwd;
 
2152
    int error;
 
2153
    errno = 0;
 
2154
    error = getpwuid_r (0, &pwd, buffer, 
 
2155
                        sizeof (buffer), &pwptr);
 
2156
   return (error < 0 && errno == ENOSYS) 
 
2157
           || error == ENOSYS; 
 
2158
}                               ],
 
2159
                        [ac_cv_func_posix_getpwuid_r=yes],
 
2160
                        [ac_cv_func_posix_getpwuid_r=no])])
 
2161
        GLIB_ASSERT_SET(ac_cv_func_posix_getpwuid_r)
 
2162
        if test "$ac_cv_func_posix_getpwuid_r" = yes; then
 
2163
                AC_DEFINE(HAVE_POSIX_GETPWUID_R,1,
 
2164
                        [Have POSIX function getpwuid_r])
 
2165
        else
 
2166
                AC_CACHE_CHECK([for nonposix getpwuid_r],
 
2167
                        ac_cv_func_nonposix_getpwuid_r,
 
2168
                        [AC_TRY_LINK([#include <pwd.h>],
 
2169
                                [char buffer[10000];
 
2170
                                struct passwd pwd;
 
2171
                                getpwuid_r (0, &pwd, buffer, 
 
2172
                                                sizeof (buffer));],
 
2173
                                [ac_cv_func_nonposix_getpwuid_r=yes],
 
2174
                                [ac_cv_func_nonposix_getpwuid_r=no])])
 
2175
                GLIB_ASSERT_SET(ac_cv_func_nonposix_getpwuid_r)
 
2176
                if test "$ac_cv_func_nonposix_getpwuid_r" = yes; then
 
2177
                        AC_DEFINE(HAVE_NONPOSIX_GETPWUID_R,1,
 
2178
                                [Have non-POSIX function getpwuid_r])
 
2179
                fi
 
2180
        fi
 
2181
])
 
2182
AS_IF([ test "$glib_native_win32" != "yes"], [
 
2183
        AC_CACHE_CHECK([for posix getgrgid_r],
 
2184
                ac_cv_func_posix_getgrgid_r,
 
2185
                [AC_TRY_RUN([
 
2186
#include <errno.h>
 
2187
#include <grp.h>
 
2188
int main () { 
 
2189
    char buffer[10000];
 
2190
    struct group grp, *grpptr = &grp;
 
2191
    int error;
 
2192
    errno = 0;
 
2193
    error = getgrgid_r (0, &grp, buffer, 
 
2194
                        sizeof (buffer), &grpptr);
 
2195
   return (error < 0 && errno == ENOSYS) 
 
2196
           || error == ENOSYS; 
 
2197
}                              ],
 
2198
                       [ac_cv_func_posix_getgrgid_r=yes],
 
2199
                       [ac_cv_func_posix_getgrgid_r=no])])
 
2200
        GLIB_ASSERT_SET(ac_cv_func_posix_getgrgid_r)
 
2201
        AS_IF([ test "$ac_cv_func_posix_getgrgid_r" = yes ], [
 
2202
                AC_DEFINE(HAVE_POSIX_GETGRGID_R,1,
 
2203
                        [Have POSIX function getgrgid_r])
 
2204
        ], [
 
2205
                AC_CACHE_CHECK([for nonposix getgrgid_r],
 
2206
                        ac_cv_func_nonposix_getgrgid_r,
 
2207
                        [AC_TRY_LINK([#include <grp.h>],
 
2208
                                [char buffer[10000];
 
2209
                                struct group grp;       
 
2210
                                getgrgid_r (0, &grp, buffer, 
 
2211
                                sizeof (buffer));],
 
2212
                        [ac_cv_func_nonposix_getgrgid_r=yes],
 
2213
                        [ac_cv_func_nonposix_getgrgid_r=no])])
 
2214
                GLIB_ASSERT_SET(ac_cv_func_nonposix_getgrgid_r)
 
2215
                if test "$ac_cv_func_nonposix_getgrgid_r" = yes; then
 
2216
                        AC_DEFINE(HAVE_NONPOSIX_GETGRGID_R,1,
 
2217
                                [Have non-POSIX function getgrgid_r])
 
2218
                fi
 
2219
        ])
 
2220
])
 
2221
LIBS="$G_THREAD_LIBS $LIBS"
 
2222
AS_IF([ test x"$have_threads" = xposix], [
 
2223
        glib_save_CPPFLAGS="$CPPFLAGS"
 
2224
        CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
 
2225
        # This is not AC_CHECK_FUNC to also work with function
 
2226
        # name mangling in header files.
 
2227
        AC_MSG_CHECKING(for pthread_attr_setstacksize)
 
2228
        AC_LINK_IFELSE(
 
2229
            [AC_LANG_PROGRAM(
 
2230
                [#include <pthread.h>],
 
2231
                [pthread_attr_t t; pthread_attr_setstacksize(&t,0)])],
 
2232
            [AC_MSG_RESULT(yes)
 
2233
             AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACKSIZE,1,
 
2234
                [Have function pthread_attr_setstacksize])],
 
2235
            [AC_MSG_RESULT(no)])
 
2236
        AC_MSG_CHECKING(for pthread_condattr_setclock)
 
2237
        AC_LINK_IFELSE(
 
2238
            [AC_LANG_PROGRAM(
 
2239
                [#include <pthread.h>],
 
2240
                [pthread_condattr_t a; pthread_condattr_setclock(&a,0)])],
 
2241
            [AC_MSG_RESULT(yes)
 
2242
             AC_DEFINE(HAVE_PTHREAD_CONDATTR_SETCLOCK,1,
 
2243
                [Have function pthread_condattr_setclock])],
 
2244
            [AC_MSG_RESULT(no)])
 
2245
        AC_MSG_CHECKING(for pthread_cond_timedwait_relative_np)
 
2246
        AC_LINK_IFELSE(
 
2247
            [AC_LANG_PROGRAM(
 
2248
                [#include <pthread.h>],
 
2249
                [pthread_cond_timedwait_relative_np(NULL, NULL, NULL)])],
 
2250
            [AC_MSG_RESULT(yes)
 
2251
             AC_DEFINE(HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP,1,
 
2252
                [Have function pthread_cond_timedwait_relative_np])],
 
2253
            [AC_MSG_RESULT(no)])
 
2254
        CPPFLAGS="$glib_save_CPPFLAGS"
 
2255
])
 
2256
 
 
2257
LIBS="$glib_save_LIBS"
 
2258
 
 
2259
# now spit out all the warnings.
 
2260
if test "$ac_cv_func_posix_getpwuid_r" != "yes" && 
 
2261
   test "$ac_cv_func_nonposix_getpwuid_r" != "yes"; then
 
2262
        AC_MSG_WARN($FUNC_NO_GETPWUID_R)
 
2263
fi
 
2264
if test "$ac_cv_func_localtime_r" != "yes"; then
 
2265
        AC_MSG_WARN($FUNC_NO_LOCALTIME_R)
 
2266
fi
 
2267
 
 
2268
#
 
2269
# Hack to deal with:
 
2270
 
2271
#  a) GCC < 3.3 for Linux doesn't include -lpthread when
 
2272
#     building shared libraries with linux.
 
2273
#  b) FreeBSD doesn't do this either.
 
2274
#
 
2275
case $host in
 
2276
  *android*)
 
2277
    G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS"
 
2278
    ;;
 
2279
  *-*-freebsd*|*-*-linux*)
 
2280
    G_THREAD_LIBS_FOR_GTHREAD="`echo $G_THREAD_LIBS | sed s/-pthread/-lpthread/`"
 
2281
    ;;
 
2282
  *)
 
2283
    G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS"
 
2284
    ;;
 
2285
esac
 
2286
 
 
2287
AC_SUBST(G_THREAD_CFLAGS)
 
2288
AC_SUBST(G_THREAD_LIBS)
 
2289
AC_SUBST(G_THREAD_LIBS_FOR_GTHREAD)
 
2290
AC_SUBST(G_THREAD_LIBS_EXTRA)
 
2291
 
 
2292
AC_CHECK_FUNCS(clock_gettime, [], [
 
2293
  AC_CHECK_LIB(rt, clock_gettime, [
 
2294
    G_THREAD_LIBS="$G_THREAD_LIBS -lrt"
 
2295
    G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS_FOR_GTHREAD -lrt"
 
2296
  ])
 
2297
])
 
2298
 
 
2299
 
 
2300
dnl ************************
 
2301
dnl *** g_atomic_* tests ***
 
2302
dnl ************************
 
2303
 
 
2304
dnl We need to decide at configure time if GLib will use real atomic
 
2305
dnl operations ("lock free") or emulated ones with a mutex.  This is
 
2306
dnl because we must put this information in glibconfig.h so we know if
 
2307
dnl it is safe or not to inline using compiler intrinsics directly from
 
2308
dnl the header.
 
2309
dnl
 
2310
dnl We also publish the information via G_ATOMIC_LOCK_FREE in case the
 
2311
dnl user is interested in knowing if they can use the atomic ops across
 
2312
dnl processes.
 
2313
dnl
 
2314
dnl We can currently support the atomic ops natively when building GLib
 
2315
dnl with recent versions of GCC or MSVC.  MSVC doesn't run ./configure,
 
2316
dnl so we skip that case here and define G_ATOMIC_LOCK_FREE exactly when
 
2317
dnl we are using GCC (and not mingw*).
 
2318
dnl
 
2319
dnl Note that the atomic ops are only available with GCC on x86 when
 
2320
dnl using -march=i486 or higher.  If we detect that the atomic ops are
 
2321
dnl not available but would be available given the right flags, we want
 
2322
dnl to abort and advise the user to fix their CFLAGS.  It's better to do
 
2323
dnl that then to silently fall back on emulated atomic ops just because
 
2324
dnl the user had the wrong build environment.
 
2325
 
 
2326
dnl We may add other compilers here in the future...
 
2327
 
 
2328
AC_CACHE_CHECK([for lock-free atomic intrinsics], glib_cv_g_atomic_lock_free, [
 
2329
  case $host in
 
2330
    *-*-mingw*)
 
2331
      glib_cv_g_atomic_lock_free=yes
 
2332
      ;;
 
2333
    *)
 
2334
      AC_TRY_LINK([],
 
2335
                     [volatile int atomic = 2;\
 
2336
                      __sync_bool_compare_and_swap (&atomic, 2, 3);],
 
2337
                     [glib_cv_g_atomic_lock_free=yes],
 
2338
                     [glib_cv_g_atomic_lock_free=no])
 
2339
      if test "$glib_cv_g_atomic_lock_free" = "no"; then
 
2340
        SAVE_CFLAGS="${CFLAGS}"
 
2341
        CFLAGS="-march=i486"
 
2342
        AC_TRY_LINK([],
 
2343
                       [volatile int atomic = 2;\
 
2344
                        __sync_bool_compare_and_swap (&atomic, 2, 3);],
 
2345
                       [AC_MSG_ERROR([GLib must be build with -march=i486 or later.])],
 
2346
                       [])
 
2347
        CFLAGS="${SAVE_CFLAGS}"
 
2348
      fi
 
2349
      ;;
 
2350
  esac])
 
2351
 
 
2352
 
 
2353
case $host in
 
2354
  *-*-mingw*)
 
2355
    ;;
 
2356
  *)
 
2357
    # Some compilers support atomic operations but do not define
 
2358
    # __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, like clang
 
2359
    if test x"$glib_cv_g_atomic_lock_free" = xyes; then
 
2360
      AC_TRY_LINK([],
 
2361
                     [__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;],
 
2362
                     [],
 
2363
                     [AC_DEFINE(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, 1, [ compiler supports atomic operations])])
 
2364
    fi
 
2365
    ;;
 
2366
 esac
 
2367
 
 
2368
dnl We need a more robust approach here...
 
2369
case $host_cpu in
 
2370
  i?86|x86_64|s390|s390x|arm*|crisv32*|etrax*)
 
2371
    glib_memory_barrier_needed=no
 
2372
    ;;
 
2373
  sparc*|alpha*|powerpc*|ia64)
 
2374
    glib_memory_barrier_needed=yes
 
2375
    ;;
 
2376
  *)
 
2377
    glib_memory_barrier_needed=yes
 
2378
    ;;
 
2379
esac
 
2380
 
 
2381
dnl ************************
 
2382
dnl ** Check for futex(2) **
 
2383
dnl ************************
 
2384
AC_CACHE_CHECK(for futex(2) system call,
 
2385
    glib_cv_futex,AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
 
2386
#include <linux/futex.h>
 
2387
#include <sys/syscall.h>
 
2388
#include <unistd.h>
 
2389
],[
 
2390
int
 
2391
main (void)
 
2392
{
 
2393
  /* it is not like this actually runs or anything... */
 
2394
  syscall (__NR_futex, NULL, FUTEX_WAKE, FUTEX_WAIT);
 
2395
  return 0;
 
2396
}
 
2397
])],glib_cv_futex=yes,glib_cv_futex=no))
 
2398
if test x"$glib_cv_futex" = xyes; then
 
2399
  AC_DEFINE(HAVE_FUTEX, 1, [we have the futex(2) system call])
 
2400
fi
 
2401
 
 
2402
AC_CACHE_CHECK(for eventfd(2) system call,
 
2403
    glib_cv_eventfd,AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
 
2404
#include <sys/eventfd.h>
 
2405
#include <unistd.h>
 
2406
],[
 
2407
int
 
2408
main (void)
 
2409
{
 
2410
  eventfd (0, EFD_CLOEXEC);
 
2411
  return 0;
 
2412
}
 
2413
])],glib_cv_eventfd=yes,glib_cv_eventfd=no))
 
2414
if test x"$glib_cv_eventfd" = x"yes"; then
 
2415
  AC_DEFINE(HAVE_EVENTFD, 1, [we have the eventfd(2) system call])
 
2416
fi
 
2417
AM_CONDITIONAL(HAVE_EVENTFD, [test "$glib_cv_eventfd" = "yes"])
 
2418
 
 
2419
dnl ****************************************
 
2420
dnl *** GLib POLL* compatibility defines ***
 
2421
dnl ****************************************
 
2422
 
 
2423
glib_poll_includes=["
 
2424
#include <sys/types.h>
 
2425
#include <poll.h>
 
2426
"]
 
2427
 
 
2428
AS_IF([ test $ac_cv_header_sys_types_h = yes &&
 
2429
   test $ac_cv_func_poll = yes ], [
 
2430
  glib_failed=false
 
2431
  GLIB_CHECK_VALUE(POLLIN, $glib_poll_includes, glib_failed=true)
 
2432
  GLIB_CHECK_VALUE(POLLOUT, $glib_poll_includes, glib_failed=true)
 
2433
  GLIB_CHECK_VALUE(POLLPRI, $glib_poll_includes, glib_failed=true)
 
2434
  GLIB_CHECK_VALUE(POLLERR, $glib_poll_includes, glib_failed=true)
 
2435
  GLIB_CHECK_VALUE(POLLHUP, $glib_poll_includes, glib_failed=true)
 
2436
  GLIB_CHECK_VALUE(POLLNVAL, $glib_poll_includes, glib_failed=true)
 
2437
  if $glib_failed ; then
 
2438
    AC_MSG_ERROR([Could not determine values for POLL* constants])
 
2439
  fi
 
2440
], [
 
2441
  glib_cv_value_POLLIN=1
 
2442
  glib_cv_value_POLLOUT=4
 
2443
  glib_cv_value_POLLPRI=2
 
2444
  glib_cv_value_POLLERR=8
 
2445
  glib_cv_value_POLLHUP=16
 
2446
  glib_cv_value_POLLNVAL=32
 
2447
])
 
2448
 
 
2449
AC_MSG_CHECKING([for broken poll])
 
2450
AC_RUN_IFELSE([AC_LANG_SOURCE([[
 
2451
        #include <stdlib.h>
 
2452
        #include <fcntl.h>
 
2453
        #include <poll.h>
 
2454
        int main(void) {
 
2455
          struct pollfd fds[1];
 
2456
          int fd;
 
2457
          fd = open("/dev/null", 1);
 
2458
          fds[0].fd = fd;
 
2459
          fds[0].events = POLLIN;
 
2460
          fds[0].revents = 0;
 
2461
          if (poll(fds, 1, 0) < 0 || (fds[0].revents & POLLNVAL) != 0) {
 
2462
                exit(1);  /* Does not work for devices -- fail */
 
2463
          }
 
2464
          exit(0);
 
2465
        }]])],
 
2466
  [broken_poll=no],
 
2467
  [broken_poll=yes
 
2468
   AC_DEFINE(BROKEN_POLL,1,[poll doesn't work on devices])],
 
2469
  [broken_poll="no (cross compiling)"])
 
2470
AC_MSG_RESULT($broken_poll)
 
2471
 
 
2472
dnl *********************
 
2473
dnl *** GRegex checks ***
 
2474
dnl *********************
 
2475
 
 
2476
PCRE_REQUIRED_VERSION=8.13
 
2477
 
 
2478
# Check if we should use the internal or the system-supplied pcre
 
2479
AC_ARG_WITH(pcre,
 
2480
            [AS_HELP_STRING([--with-pcre=@<:@internal/system@:>@],
 
2481
                            [whether to use system PCRE [default=internal]])])
 
2482
 
 
2483
AM_CONDITIONAL(USE_SYSTEM_PCRE, [test "x$with_pcre" = xsystem])
 
2484
 
 
2485
AS_IF([ test "x$with_pcre" = xsystem], [
 
2486
  PKG_CHECK_MODULES(PCRE,
 
2487
                    libpcre >= $PCRE_REQUIRED_VERSION)
 
2488
  AC_CACHE_CHECK([for Unicode support in PCRE],glib_cv_pcre_has_unicode,[
 
2489
                  glib_save_CFLAGS="$CFLAGS"
 
2490
                  glib_save_LIBS="$LIBS"
 
2491
                  CFLAGS="$CFLAGS $PCRE_CFLAGS" LIBS="$PCRE_LIBS"
 
2492
                  AC_TRY_RUN([#include <pcre.h>
 
2493
                              int main () {
 
2494
                                int support;
 
2495
                                pcre_config (PCRE_CONFIG_UTF8, &support);
 
2496
                                if (!support)
 
2497
                                  return 1;
 
2498
                                pcre_config (PCRE_CONFIG_UNICODE_PROPERTIES, &support);
 
2499
                                if (!support)
 
2500
                                  return 1;
 
2501
                                return 0;
 
2502
                              }],
 
2503
                  glib_cv_pcre_has_unicode=yes,
 
2504
                  glib_cv_pcre_has_unicode=no,
 
2505
                  glib_cv_pcre_has_unicode=yes)
 
2506
                  CFLAGS="$glib_save_CFLAGS"
 
2507
                  LIBS="$glib_save_LIBS"
 
2508
      ])
 
2509
  if test "$glib_cv_pcre_has_unicode" = "no"; then
 
2510
    AC_MSG_ERROR([*** The system-supplied PCRE does not support Unicode properties or UTF-8.])
 
2511
  fi
 
2512
  AC_SUBST(PCRE_CFLAGS)
 
2513
  AC_SUBST(PCRE_LIBS)
 
2514
  AC_DEFINE(USE_SYSTEM_PCRE, [], [using the system-supplied PCRE library])
 
2515
  PCRE_REQUIRES=libpcre
 
2516
  AC_SUBST(PCRE_REQUIRES)
 
2517
], [
 
2518
  # If using gcc 4 pass -Wno-pointer-sign when compiling the internal PCRE
 
2519
  AS_IF([ test x"$GCC" = xyes], [
 
2520
    AC_MSG_CHECKING([whether compiler understands -Wno-pointer-sign])
 
2521
    save_CFLAGS="$CFLAGS"
 
2522
    CFLAGS="$CFLAGS -Wno-pointer-sign"
 
2523
    AC_TRY_COMPILE([],[],[PCRE_WARN_CFLAGS="$PCRE_WARN_CFLAGS -Wno-pointer-sign"
 
2524
                          AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
 
2525
    CFLAGS="$save_CFLAGS"
 
2526
  ])
 
2527
])
 
2528
AC_SUBST(PCRE_WARN_CFLAGS)
 
2529
 
 
2530
dnl **********************
 
2531
dnl *** Win32 API libs ***
 
2532
dnl **********************
 
2533
 
 
2534
case $host in
 
2535
  *-*-cygwin*)
 
2536
        G_LIBS_EXTRA="-luser32 -lkernel32"
 
2537
    ;;
 
2538
  *-*-mingw*)
 
2539
        G_LIBS_EXTRA="-lws2_32 -lole32 -lwinmm -lshlwapi"
 
2540
    ;;
 
2541
  *)
 
2542
        G_LIBS_EXTRA=""
 
2543
    ;;
 
2544
esac
 
2545
AC_SUBST(G_LIBS_EXTRA)
 
2546
 
 
2547
dnl If the system doesn't define EILSEQ, we should define EILSEQ ourselves
 
2548
dnl since we need it for g_iconv()
 
2549
 
 
2550
AC_MSG_CHECKING([for EILSEQ])
 
2551
AC_TRY_COMPILE([
 
2552
#include <errno.h>
 
2553
],
 
2554
[
 
2555
int error = EILSEQ;
 
2556
], have_eilseq=yes, have_eilseq=no);
 
2557
AC_MSG_RESULT($have_eilseq)
 
2558
 
 
2559
dnl ******************************************************************
 
2560
dnl *** If we are cross-compiling, look for glib-genmarshal and    ***
 
2561
dnl *** glib-compile-schemas in PATH                               ***
 
2562
dnl ******************************************************************
 
2563
 
 
2564
AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
 
2565
 
 
2566
AS_IF([ test $cross_compiling = yes ], [
 
2567
  AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal, no)
 
2568
  if test x$GLIB_GENMARSHAL = xno; then
 
2569
    AC_MSG_ERROR(Could not find a glib-genmarshal in your PATH)
 
2570
  fi
 
2571
 
 
2572
  AC_PATH_PROG(GLIB_COMPILE_SCHEMAS, glib-compile-schemas, no)
 
2573
  if test x$GLIB_COMPILE_SCHEMAS = xno; then
 
2574
    AC_MSG_ERROR(Could not find a glib-compile-schemas in your PATH)
 
2575
  fi
 
2576
 
 
2577
  AC_PATH_PROG(GLIB_COMPILE_RESOURCES, glib-compile-resources, no)
 
2578
  if test x$GLIB_COMPILE_RESOURCES = xno; then
 
2579
    AC_MSG_ERROR(Could not find a glib-compile-resources in your PATH)
 
2580
  fi
 
2581
])
 
2582
 
 
2583
dnl **************************
 
2584
dnl *** Checks for gtk-doc ***
 
2585
dnl **************************
 
2586
# gtkdocize greps for ^GTK_DOC_CHECK and parses it, so you need to have
 
2587
# it on it's own line.
 
2588
m4_ifdef([GTK_DOC_CHECK], [
 
2589
GTK_DOC_CHECK([1.20], [--flavour no-tmpl])
 
2590
],[
 
2591
AM_CONDITIONAL([ENABLE_GTK_DOC],[false])
 
2592
])
 
2593
 
 
2594
AC_ARG_ENABLE(man,
 
2595
              [AS_HELP_STRING([--enable-man],
 
2596
                              [generate man pages [default=auto]])],,
 
2597
              enable_man=maybe)
 
2598
 
 
2599
AS_IF([test "$enable_man" != no], [
 
2600
  AC_PATH_PROG([XSLTPROC], [xsltproc])
 
2601
  AS_IF([test -z "$XSLTPROC"], [
 
2602
    AS_IF([test "$enable_man" = yes], [
 
2603
      AC_MSG_ERROR([xsltproc is required for --enable-man])
 
2604
    ])
 
2605
    enable_man=no
 
2606
  ])
 
2607
])
 
2608
 
 
2609
AS_IF([ test "$enable_man" != no ], [
 
2610
  dnl check for DocBook DTD in the local catalog
 
2611
  JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.1.2//EN],
 
2612
     [DocBook XML DTD V4.1.2], [have_docbook_dtd=yes], [have_docbook_dtd=no])
 
2613
  AS_IF([test "$have_docbook_dtd" != yes], [
 
2614
    AS_IF([test "$enable_man" = yes ], [
 
2615
      AC_MSG_ERROR([DocBook DTD is required for --enable-man])
 
2616
    ])
 
2617
    enable_man=no
 
2618
  ])
 
2619
])
 
2620
 
 
2621
AS_IF([test "$enable_man" != no], [
 
2622
  dnl check for DocBook XSL stylesheets in the local catalog
 
2623
  JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
 
2624
     [DocBook XSL Stylesheets], [have_docbook_style=yes],[have_docbook_style=no])
 
2625
  AS_IF([ test "$have_docbook_dtd" != yes ], [
 
2626
    AS_IF([ test "$enable_man" = yes ], [
 
2627
      AC_MSG_ERROR([DocBook XSL Stylesheets are required for --enable-man])
 
2628
    ])
 
2629
    enable_man=no
 
2630
  ])
 
2631
])
 
2632
 
 
2633
AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
 
2634
 
 
2635
AC_MSG_CHECKING([whether to generate man pages])
 
2636
AS_IF([ test "$enable_man" != no ], [
 
2637
  AC_MSG_RESULT([yes])
 
2638
], [
 
2639
  AC_MSG_RESULT([no])
 
2640
])
 
2641
 
 
2642
dnl
 
2643
dnl Tracing
 
2644
dnl
 
2645
 
 
2646
AC_ARG_ENABLE([dtrace],
 
2647
             [AS_HELP_STRING([--enable-dtrace],
 
2648
                              [include tracing support for dtrace])])
 
2649
have_dtrace=no
 
2650
AC_MSG_CHECKING([whether to include dtrace tracing support])
 
2651
AS_IF([ test "x$enable_dtrace" != xno], [
 
2652
  if test x$glib_have_carbon = xyes; then
 
2653
    AC_MSG_RESULT([no (not yet compatible with MacOS dtrace)])
 
2654
  else 
 
2655
    AC_MSG_RESULT([yes])
 
2656
    AC_CHECK_PROGS(DTRACE, dtrace)
 
2657
    if test -z "$DTRACE"; then
 
2658
      if test "x$enable_dtrace" = xyes; then
 
2659
        AC_MSG_ERROR([dtrace not found])
 
2660
      fi
 
2661
    else
 
2662
      AC_CHECK_HEADER([sys/sdt.h],have_dtrace=yes,
 
2663
                      [if test "x$enable_dtrace" = xyes; then
 
2664
                        AC_MSG_ERROR([dtrace support needs sys/sdt.h header])
 
2665
                       fi])
 
2666
    fi
 
2667
  fi
 
2668
], [
 
2669
  AC_MSG_RESULT([no])
 
2670
])
 
2671
if test "x$have_dtrace" = xyes; then
 
2672
  AC_DEFINE([HAVE_DTRACE], [1], [Define to 1 if using dtrace probes.])
 
2673
fi
 
2674
AM_CONDITIONAL([ENABLE_DTRACE], [test x$have_dtrace = xyes ])
 
2675
 
 
2676
AC_MSG_CHECKING([whether to include systemtap tracing support])
 
2677
AC_ARG_ENABLE([systemtap],
 
2678
             [AS_HELP_STRING([--enable-systemtap],
 
2679
                              [include tracing support for systemtap])])
 
2680
have_systemtap=no
 
2681
if test "x$enable_systemtap" != xno -a "x$have_dtrace" = xyes; then
 
2682
  have_systemtap=yes
 
2683
fi
 
2684
AC_MSG_RESULT(${have_systemtap})
 
2685
 
 
2686
AM_CONDITIONAL([ENABLE_SYSTEMTAP], [test x$have_systemtap = xyes])
 
2687
 
 
2688
AC_ARG_WITH([tapset-install-dir],
 
2689
            AS_HELP_STRING([--with-tapset-install-dir=DIR],
 
2690
                            [path where systemtap tapsets are installed [DATADIR/systemtap/tapset]]),
 
2691
            [if test "x${withval}" = x; then
 
2692
               ABS_TAPSET_DIR="\$(datadir)/systemtap/tapset"
 
2693
             else
 
2694
               ABS_TAPSET_DIR="${withval}"
 
2695
              fi],
 
2696
            [ABS_TAPSET_DIR="\$(datadir)/systemtap/tapset"])
 
2697
AC_SUBST(ABS_TAPSET_DIR)
 
2698
 
 
2699
dnl ************************************
 
2700
dnl *** Enable lcov coverage reports ***
 
2701
dnl ************************************
 
2702
 
 
2703
AC_ARG_ENABLE(coverage,
 
2704
  AS_HELP_STRING([--enable-coverage],
 
2705
                 [enable coverage testing with gcov]),
 
2706
  [use_gcov=$enableval], [use_gcov=no])
 
2707
 
 
2708
AS_IF([ test "x$use_gcov" = "xyes"], [
 
2709
  dnl we need gcc:
 
2710
  if test "$GCC" != "yes"; then
 
2711
    AC_MSG_ERROR([GCC is required for --enable-coverage])
 
2712
  fi
 
2713
 
 
2714
  dnl Check if ccache is being used
 
2715
  AC_CHECK_PROG(SHTOOL, shtool, shtool)
 
2716
  case `$SHTOOL path $CC` in
 
2717
    *ccache*[)] gcc_ccache=yes;;
 
2718
    *[)] gcc_ccache=no;;
 
2719
  esac
 
2720
 
 
2721
  if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then
 
2722
    AC_MSG_ERROR([ccache must be disabled when --enable-coverage option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1.])
 
2723
  fi
 
2724
 
 
2725
  ltp_version_list="1.6 1.7 1.8 1.9 1.10"
 
2726
  AC_CHECK_PROG(LTP, lcov, lcov)
 
2727
  AC_CHECK_PROG(LTP_GENHTML, genhtml, genhtml)
 
2728
 
 
2729
  AS_IF([ test "$LTP" ], [
 
2730
    AC_CACHE_CHECK([for ltp version], glib_cv_ltp_version, [
 
2731
      glib_cv_ltp_version=invalid
 
2732
      ltp_version=`$LTP -v 2>/dev/null | $SED -e 's/^.* //'`
 
2733
      for ltp_check_version in $ltp_version_list; do
 
2734
        if test "$ltp_version" = "$ltp_check_version"; then
 
2735
          glib_cv_ltp_version="$ltp_check_version (ok)"
 
2736
        fi
 
2737
      done
 
2738
    ])
 
2739
  ], [
 
2740
    ltp_msg="To enable code coverage reporting you must have one of the following LTP versions installed: $ltp_version_list"
 
2741
    AC_MSG_ERROR([$ltp_msg])
 
2742
  ])
 
2743
 
 
2744
  case $glib_cv_ltp_version in
 
2745
    ""|invalid[)]
 
2746
      ltp_msg="You must have one of the following versions of LTP: $ltp_version_list (found: $ltp_version)."
 
2747
      AC_MSG_ERROR([$ltp_msg])
 
2748
      LTP="exit 0;"
 
2749
      ;;
 
2750
  esac
 
2751
 
 
2752
  if test -z "$LTP_GENHTML"; then
 
2753
    AC_MSG_ERROR([Could not find genhtml from the LTP package])
 
2754
  fi
 
2755
 
 
2756
  dnl Remove all optimization flags from CFLAGS
 
2757
  changequote({,})
 
2758
  CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9]*//g'`
 
2759
  changequote([,])
 
2760
 
 
2761
  dnl Add the special gcc flags
 
2762
  CFLAGS="$CFLAGS -O0 -fprofile-arcs -ftest-coverage"
 
2763
  LDFLAGS="$LDFLAGS -lgcov"
 
2764
])
 
2765
 
 
2766
dnl ******************************
 
2767
dnl *** output the whole stuff ***
 
2768
dnl ******************************
 
2769
 
 
2770
dnl this section will only be run if config.status is invoked with no
 
2771
dnl arguments, or with "glib/glibconfig.h" as an argument.
 
2772
AC_CONFIG_COMMANDS([glib/glibconfig.h],
 
2773
[
 
2774
        outfile=glib/glibconfig.h-tmp
 
2775
        cat > $outfile <<\_______EOF
 
2776
/* glibconfig.h
 
2777
 *
 
2778
 * This is a generated file.  Please modify 'configure.ac'
 
2779
 */
 
2780
 
 
2781
#ifndef __GLIBCONFIG_H__
 
2782
#define __GLIBCONFIG_H__
 
2783
 
 
2784
#include <glib/gmacros.h>
 
2785
 
 
2786
_______EOF
 
2787
 
 
2788
        echo '#include <limits.h>' >> $outfile
 
2789
        echo '#include <float.h>' >> $outfile
 
2790
        if test x$glib_values_h = xyes; then
 
2791
          echo '#include <values.h>' >> $outfile
 
2792
        fi
 
2793
        if test "$glib_header_alloca_h" = "yes"; then
 
2794
          echo '#define GLIB_HAVE_ALLOCA_H' >> $outfile
 
2795
        fi
 
2796
        if test x$glib_included_printf != xyes; then
 
2797
          echo "
 
2798
/* Specifies that GLib's g_print*() functions wrap the
 
2799
 * system printf functions.  This is useful to know, for example,
 
2800
 * when using glibc's register_printf_function().
 
2801
 */" >> $outfile
 
2802
          echo '#define GLIB_USING_SYSTEM_PRINTF' >> $outfile
 
2803
        fi
 
2804
 
 
2805
        cat >> $outfile <<_______EOF
 
2806
 
 
2807
G_BEGIN_DECLS
 
2808
 
 
2809
#define G_MINFLOAT      FLT_MIN
 
2810
#define G_MAXFLOAT      FLT_MAX
 
2811
#define G_MINDOUBLE     DBL_MIN
 
2812
#define G_MAXDOUBLE     DBL_MAX
 
2813
#define G_MINSHORT      SHRT_MIN
 
2814
#define G_MAXSHORT      SHRT_MAX
 
2815
#define G_MAXUSHORT     USHRT_MAX
 
2816
#define G_MININT        INT_MIN
 
2817
#define G_MAXINT        INT_MAX
 
2818
#define G_MAXUINT       UINT_MAX
 
2819
#define G_MINLONG       LONG_MIN
 
2820
#define G_MAXLONG       LONG_MAX
 
2821
#define G_MAXULONG      ULONG_MAX
 
2822
 
 
2823
_______EOF
 
2824
 
 
2825
 
 
2826
        ### this should always be true in a modern C/C++ compiler
 
2827
        cat >>$outfile <<_______EOF
 
2828
typedef signed char gint8;
 
2829
typedef unsigned char guint8;
 
2830
_______EOF
 
2831
 
 
2832
 
 
2833
        if test -n "$gint16"; then
 
2834
          cat >>$outfile <<_______EOF
 
2835
typedef signed $gint16 gint16;
 
2836
typedef unsigned $gint16 guint16;
 
2837
#define G_GINT16_MODIFIER $gint16_modifier
 
2838
#define G_GINT16_FORMAT $gint16_format
 
2839
#define G_GUINT16_FORMAT $guint16_format
 
2840
_______EOF
 
2841
        fi
 
2842
 
 
2843
 
 
2844
        if test -n "$gint32"; then
 
2845
          cat >>$outfile <<_______EOF
 
2846
typedef signed $gint32 gint32;
 
2847
typedef unsigned $gint32 guint32;
 
2848
#define G_GINT32_MODIFIER $gint32_modifier
 
2849
#define G_GINT32_FORMAT $gint32_format
 
2850
#define G_GUINT32_FORMAT $guint32_format
 
2851
_______EOF
 
2852
        fi
 
2853
 
 
2854
        cat >>$outfile <<_______EOF
 
2855
#define G_HAVE_GINT64 1          /* deprecated, always true */
 
2856
 
 
2857
${glib_extension}typedef signed $gint64 gint64;
 
2858
${glib_extension}typedef unsigned $gint64 guint64;
 
2859
 
 
2860
#define G_GINT64_CONSTANT(val)  $gint64_constant
 
2861
#define G_GUINT64_CONSTANT(val) $guint64_constant
 
2862
_______EOF
 
2863
 
 
2864
        if test x$gint64_format != x ; then
 
2865
          cat >>$outfile <<_______EOF
 
2866
#define G_GINT64_MODIFIER $gint64_modifier
 
2867
#define G_GINT64_FORMAT $gint64_format
 
2868
#define G_GUINT64_FORMAT $guint64_format
 
2869
_______EOF
 
2870
        else
 
2871
          cat >>$outfile <<_______EOF
 
2872
#undef G_GINT64_MODIFIER
 
2873
#undef G_GINT64_FORMAT
 
2874
#undef G_GUINT64_FORMAT
 
2875
_______EOF
 
2876
        fi           
 
2877
 
 
2878
        cat >>$outfile <<_______EOF
 
2879
 
 
2880
#define GLIB_SIZEOF_VOID_P $glib_void_p
 
2881
#define GLIB_SIZEOF_LONG   $glib_long
 
2882
#define GLIB_SIZEOF_SIZE_T $glib_size_t
 
2883
#define GLIB_SIZEOF_SSIZE_T $glib_ssize_t
 
2884
 
 
2885
_______EOF
 
2886
 
 
2887
        cat >>$outfile <<_______EOF
 
2888
typedef signed $glib_ssize_type_define gssize;
 
2889
typedef unsigned $glib_size_type_define gsize;
 
2890
#define G_GSIZE_MODIFIER $gsize_modifier
 
2891
#define G_GSSIZE_MODIFIER $gssize_modifier
 
2892
#define G_GSIZE_FORMAT $gsize_format
 
2893
#define G_GSSIZE_FORMAT $gssize_format
 
2894
 
 
2895
#define G_MAXSIZE       G_MAXU$glib_msize_type
 
2896
#define G_MINSSIZE      G_MIN$glib_mssize_type
 
2897
#define G_MAXSSIZE      G_MAX$glib_mssize_type
 
2898
 
 
2899
typedef gint64 goffset;
 
2900
#define G_MINOFFSET     G_MININT64
 
2901
#define G_MAXOFFSET     G_MAXINT64
 
2902
 
 
2903
#define G_GOFFSET_MODIFIER      G_GINT64_MODIFIER
 
2904
#define G_GOFFSET_FORMAT        G_GINT64_FORMAT
 
2905
#define G_GOFFSET_CONSTANT(val) G_GINT64_CONSTANT(val)
 
2906
 
 
2907
_______EOF
 
2908
 
 
2909
        if test -z "$glib_unknown_void_p"; then
 
2910
          cat >>$outfile <<_______EOF
 
2911
 
 
2912
#define GPOINTER_TO_INT(p)      ((gint)  ${glib_gpi_cast} (p))
 
2913
#define GPOINTER_TO_UINT(p)     ((guint) ${glib_gpui_cast} (p))
 
2914
 
 
2915
#define GINT_TO_POINTER(i)      ((gpointer) ${glib_gpi_cast} (i))
 
2916
#define GUINT_TO_POINTER(u)     ((gpointer) ${glib_gpui_cast} (u))
 
2917
 
 
2918
typedef signed $glib_intptr_type_define gintptr;
 
2919
typedef unsigned $glib_intptr_type_define guintptr;
 
2920
 
 
2921
#define G_GINTPTR_MODIFIER      $gintptr_modifier
 
2922
#define G_GINTPTR_FORMAT        $gintptr_format
 
2923
#define G_GUINTPTR_FORMAT       $guintptr_format
 
2924
_______EOF
 
2925
        else
 
2926
          echo '#error SIZEOF_VOID_P unknown - This should never happen' >>$outfile
 
2927
        fi
 
2928
 
 
2929
 
 
2930
 
 
2931
        cat >>$outfile <<_______EOF
 
2932
#ifndef G_DISABLE_DEPRECATED
 
2933
#define g_ATEXIT(proc)  (atexit (proc))
 
2934
#define g_memmove(dest,src,len) G_STMT_START { memmove ((dest), (src), (len)); } G_STMT_END
 
2935
#endif
 
2936
$glib_defines
 
2937
$glib_os
 
2938
$glib_static_compilation
 
2939
 
 
2940
$glib_vacopy
 
2941
 
 
2942
#ifdef  __cplusplus
 
2943
#define G_HAVE_INLINE   1
 
2944
#else   /* !__cplusplus */
 
2945
$glib_inline
 
2946
#endif  /* !__cplusplus */
 
2947
 
 
2948
#ifdef  __cplusplus
 
2949
#define G_CAN_INLINE    1
 
2950
_______EOF
 
2951
 
 
2952
        if test x$g_can_inline = xyes ; then
 
2953
                cat >>$outfile <<_______EOF
 
2954
#else   /* !__cplusplus */
 
2955
#define G_CAN_INLINE    1
 
2956
_______EOF
 
2957
        fi
 
2958
 
 
2959
        cat >>$outfile <<_______EOF
 
2960
#endif
 
2961
 
 
2962
_______EOF
 
2963
 
 
2964
        if test x$g_have_iso_c_varargs = xyes ; then
 
2965
                cat >>$outfile <<_______EOF
 
2966
#ifndef __cplusplus
 
2967
# define G_HAVE_ISO_VARARGS 1
 
2968
#endif
 
2969
_______EOF
 
2970
        fi
 
2971
        if test x$g_have_iso_cxx_varargs = xyes ; then
 
2972
                cat >>$outfile <<_______EOF
 
2973
#ifdef __cplusplus
 
2974
# define G_HAVE_ISO_VARARGS 1
 
2975
#endif
 
2976
_______EOF
 
2977
        fi
 
2978
        if test x$g_have_gnuc_varargs = xyes ; then
 
2979
                cat >>$outfile <<_______EOF
 
2980
 
 
2981
/* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi
 
2982
 * is passed ISO vararg support is turned off, and there is no work
 
2983
 * around to turn it on, so we unconditionally turn it off.
 
2984
 */
 
2985
#if __GNUC__ == 2 && __GNUC_MINOR__ == 95
 
2986
#  undef G_HAVE_ISO_VARARGS
 
2987
#endif
 
2988
 
 
2989
#define G_HAVE_GNUC_VARARGS 1
 
2990
_______EOF
 
2991
        fi
 
2992
 
 
2993
        case x$g_stack_grows in
 
2994
        xyes) echo "#define G_HAVE_GROWING_STACK 1" >>$outfile ;;
 
2995
        *)    echo "#define G_HAVE_GROWING_STACK 0" >>$outfile ;;
 
2996
        esac
 
2997
 
 
2998
 
 
2999
        echo >>$outfile
 
3000
        if test x$g_have_eilseq = xno; then
 
3001
                cat >>$outfile <<_______EOF
 
3002
#ifndef EILSEQ
 
3003
/* On some pre-C99 systems, EILSEQ is not defined.
 
3004
 * The correspondence between this and the corresponding definition
 
3005
 * in libiconv is essential.
 
3006
 */
 
3007
#  define EILSEQ ENOENT
 
3008
#endif
 
3009
_______EOF
 
3010
 
 
3011
        fi
 
3012
 
 
3013
        if test x$g_have_gnuc_visibility = xyes; then
 
3014
                cat >>$outfile <<_______EOF
 
3015
#define G_HAVE_GNUC_VISIBILITY 1
 
3016
_______EOF
 
3017
        fi
 
3018
                cat >>$outfile <<_______EOF
 
3019
#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
 
3020
#define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
 
3021
#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
 
3022
#define G_GNUC_INTERNAL __hidden
 
3023
#elif defined (__GNUC__) && defined (G_HAVE_GNUC_VISIBILITY)
 
3024
#define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
 
3025
#else
 
3026
#define G_GNUC_INTERNAL
 
3027
#endif 
 
3028
_______EOF
 
3029
 
 
3030
        echo >>$outfile
 
3031
        cat >>$outfile <<_______EOF
 
3032
#define G_THREADS_ENABLED
 
3033
#define G_THREADS_IMPL_$g_threads_impl_def
 
3034
_______EOF
 
3035
 
 
3036
        if test x"$g_memory_barrier_needed" != xno; then
 
3037
          echo >>$outfile
 
3038
          echo "#define G_ATOMIC_OP_MEMORY_BARRIER_NEEDED 1" >>$outfile
 
3039
        fi
 
3040
        if test x"$g_atomic_lock_free" = xyes; then
 
3041
          echo >>$outfile
 
3042
          echo "#define G_ATOMIC_LOCK_FREE" >>$outfile
 
3043
        fi
 
3044
        echo >>$outfile
 
3045
        g_bit_sizes="16 32 64"
 
3046
        for bits in $g_bit_sizes; do
 
3047
          cat >>$outfile <<_______EOF
 
3048
#define GINT${bits}_TO_${g_bs_native}(val)      ((gint${bits}) (val))
 
3049
#define GUINT${bits}_TO_${g_bs_native}(val)     ((guint${bits}) (val))
 
3050
#define GINT${bits}_TO_${g_bs_alien}(val)       ((gint${bits}) GUINT${bits}_SWAP_LE_BE (val))
 
3051
#define GUINT${bits}_TO_${g_bs_alien}(val)      (GUINT${bits}_SWAP_LE_BE (val))
 
3052
_______EOF
 
3053
        done
 
3054
 
 
3055
        cat >>$outfile <<_______EOF
 
3056
#define GLONG_TO_LE(val)        ((glong) GINT${glongbits}_TO_LE (val))
 
3057
#define GULONG_TO_LE(val)       ((gulong) GUINT${glongbits}_TO_LE (val))
 
3058
#define GLONG_TO_BE(val)        ((glong) GINT${glongbits}_TO_BE (val))
 
3059
#define GULONG_TO_BE(val)       ((gulong) GUINT${glongbits}_TO_BE (val))
 
3060
#define GINT_TO_LE(val)         ((gint) GINT${gintbits}_TO_LE (val))
 
3061
#define GUINT_TO_LE(val)        ((guint) GUINT${gintbits}_TO_LE (val))
 
3062
#define GINT_TO_BE(val)         ((gint) GINT${gintbits}_TO_BE (val))
 
3063
#define GUINT_TO_BE(val)        ((guint) GUINT${gintbits}_TO_BE (val))
 
3064
#define GSIZE_TO_LE(val)        ((gsize) GUINT${gsizebits}_TO_LE (val))
 
3065
#define GSSIZE_TO_LE(val)       ((gssize) GINT${gssizebits}_TO_LE (val))
 
3066
#define GSIZE_TO_BE(val)        ((gsize) GUINT${gsizebits}_TO_BE (val))
 
3067
#define GSSIZE_TO_BE(val)       ((gssize) GINT${gssizebits}_TO_BE (val))
 
3068
#define G_BYTE_ORDER $g_byte_order
 
3069
 
 
3070
#define GLIB_SYSDEF_POLLIN =$g_pollin
 
3071
#define GLIB_SYSDEF_POLLOUT =$g_pollout
 
3072
#define GLIB_SYSDEF_POLLPRI =$g_pollpri
 
3073
#define GLIB_SYSDEF_POLLHUP =$g_pollhup
 
3074
#define GLIB_SYSDEF_POLLERR =$g_pollerr
 
3075
#define GLIB_SYSDEF_POLLNVAL =$g_pollnval
 
3076
 
 
3077
#define G_MODULE_SUFFIX "$g_module_suffix"
 
3078
 
 
3079
typedef $g_pid_type GPid;
 
3080
 
 
3081
#define GLIB_SYSDEF_AF_UNIX $g_af_unix
 
3082
#define GLIB_SYSDEF_AF_INET $g_af_inet
 
3083
#define GLIB_SYSDEF_AF_INET6 $g_af_inet6
 
3084
 
 
3085
#define GLIB_SYSDEF_MSG_OOB $g_msg_oob
 
3086
#define GLIB_SYSDEF_MSG_PEEK $g_msg_peek
 
3087
#define GLIB_SYSDEF_MSG_DONTROUTE $g_msg_dontroute
 
3088
 
 
3089
G_END_DECLS
 
3090
 
 
3091
#endif /* __GLIBCONFIG_H__ */
 
3092
_______EOF
 
3093
 
 
3094
 
 
3095
        if cmp -s $outfile glib/glibconfig.h; then
 
3096
          AC_MSG_NOTICE([glib/glibconfig.h is unchanged])
 
3097
          rm -f $outfile
 
3098
        else
 
3099
          mv $outfile glib/glibconfig.h
 
3100
        fi
 
3101
],[
 
3102
 
 
3103
# Note that if two cases are the same, case goes with the first one.
 
3104
# Note also that this is inside an AC_OUTPUT_COMMAND.  We do not depend
 
3105
# on variable expansion in case labels.  Look at the generated config.status
 
3106
# for a hint.
 
3107
 
 
3108
if test "x${ac_cv_working_alloca_h+set}" = xset ; then
 
3109
  glib_header_alloca_h="$ac_cv_working_alloca_h"
 
3110
else
 
3111
  glib_header_alloca_h="$ac_cv_header_alloca_h"
 
3112
fi
 
3113
 
 
3114
if test x$enable_included_printf = xyes ; then
 
3115
  glib_included_printf=yes
 
3116
fi
 
3117
 
 
3118
case 2 in
 
3119
$ac_cv_sizeof_short)            
 
3120
  gint16=short
 
3121
  gint16_modifier='"h"'
 
3122
  gint16_format='"hi"'
 
3123
  guint16_format='"hu"'
 
3124
  ;;
 
3125
$ac_cv_sizeof_int)              
 
3126
  gint16=int
 
3127
  gint16_modifier='""'
 
3128
  gint16_format='"i"'
 
3129
  guint16_format='"u"'
 
3130
  ;;
 
3131
esac
 
3132
case 4 in
 
3133
$ac_cv_sizeof_short)            
 
3134
  gint32=short
 
3135
  gint32_modifier='"h"'
 
3136
  gint32_format='"hi"'
 
3137
  guint32_format='"hu"'
 
3138
  ;;
 
3139
$ac_cv_sizeof_int)              
 
3140
  gint32=int
 
3141
  gint32_modifier='""'
 
3142
  gint32_format='"i"'
 
3143
  guint32_format='"u"'
 
3144
  ;;
 
3145
$ac_cv_sizeof_long)             
 
3146
  gint32=long
 
3147
  gint32_modifier='"l"'
 
3148
  gint32_format='"li"'
 
3149
  guint32_format='"lu"'
 
3150
  ;;
 
3151
esac
 
3152
case 8 in
 
3153
$ac_cv_sizeof_int)
 
3154
  gint64=int
 
3155
  gint64_modifier='""'
 
3156
  gint64_format='"i"'
 
3157
  guint64_format='"u"'
 
3158
  glib_extension=
 
3159
  gint64_constant='(val)'
 
3160
  guint64_constant='(val)'
 
3161
  ;;
 
3162
$ac_cv_sizeof_long)
 
3163
  gint64=long
 
3164
  gint64_modifier='"l"'
 
3165
  gint64_format='"li"'
 
3166
  guint64_format='"lu"'
 
3167
  glib_extension=
 
3168
  gint64_constant='(val##L)'
 
3169
  guint64_constant='(val##UL)'
 
3170
  ;;
 
3171
$ac_cv_sizeof_long_long)
 
3172
  gint64='long long'
 
3173
  if test -n "$glib_cv_long_long_format"; then
 
3174
    gint64_modifier='"'$glib_cv_long_long_format'"'
 
3175
    gint64_format='"'$glib_cv_long_long_format'i"'
 
3176
    guint64_format='"'$glib_cv_long_long_format'u"'
 
3177
  fi
 
3178
  glib_extension='G_GNUC_EXTENSION '
 
3179
  gint64_constant='(G_GNUC_EXTENSION (val##LL))'
 
3180
  guint64_constant='(G_GNUC_EXTENSION (val##ULL))'
 
3181
  ;;
 
3182
$ac_cv_sizeof___int64)
 
3183
  gint64='__int64'
 
3184
  if test -n "$glib_cv_long_long_format"; then
 
3185
    gint64_modifier='"'$glib_cv_long_long_format'"'
 
3186
    gint64_format='"'$glib_cv_long_long_format'i"'
 
3187
    guint64_format='"'$glib_cv_long_long_format'u"'
 
3188
  fi
 
3189
  glib_extension=
 
3190
  gint64_constant='(val##i64)'
 
3191
  guint64_constant='(val##ui64)'
 
3192
  ;;
 
3193
esac
 
3194
glib_size_t=$ac_cv_sizeof_size_t
 
3195
glib_ssize_t=$ac_cv_sizeof_ssize_t
 
3196
glib_size_type_define="$glib_size_type"
 
3197
glib_ssize_type_define="$glib_ssize_type"
 
3198
glib_void_p=$ac_cv_sizeof_void_p
 
3199
glib_long=$ac_cv_sizeof_long
 
3200
 
 
3201
case "$glib_size_type" in
 
3202
short)
 
3203
  gsize_modifier='"h"'
 
3204
  gsize_format='"hu"'
 
3205
  glib_msize_type='SHRT'
 
3206
  ;;
 
3207
int)
 
3208
  gsize_modifier='""'
 
3209
  gsize_format='"u"'
 
3210
  glib_msize_type='INT'
 
3211
  ;;
 
3212
long)
 
3213
  gsize_modifier='"l"'
 
3214
  gsize_format='"lu"'
 
3215
  glib_msize_type='LONG'
 
3216
  ;;
 
3217
"long long"|__int64)
 
3218
  gsize_modifier='"I64"'
 
3219
  gsize_format='"I64u"'
 
3220
  glib_msize_type='INT64'
 
3221
  ;;
 
3222
esac
 
3223
 
 
3224
case "$glib_ssize_type" in
 
3225
short)
 
3226
  gssize_modifier='"h"'
 
3227
  gssize_format='"hi"'
 
3228
  glib_mssize_type='SHRT'
 
3229
  ;;
 
3230
int)
 
3231
  gssize_modifier='""'
 
3232
  gssize_format='"i"'
 
3233
  glib_mssize_type='INT'
 
3234
  ;;
 
3235
long)
 
3236
  gssize_modifier='"l"'
 
3237
  gssize_format='"li"'
 
3238
  glib_mssize_type='LONG'
 
3239
  ;;
 
3240
"long long"|__int64)
 
3241
  gssize_modifier='"I64"'
 
3242
  gssize_format='"I64i"'
 
3243
  glib_mssize_type='INT64'
 
3244
  ;;
 
3245
esac
 
3246
 
 
3247
gintbits=`expr $ac_cv_sizeof_int \* 8`
 
3248
glongbits=`expr $ac_cv_sizeof_long \* 8`
 
3249
gsizebits=`expr $ac_cv_sizeof_size_t \* 8`
 
3250
gssizebits=`expr $ac_cv_sizeof_ssize_t \* 8`
 
3251
 
 
3252
case $ac_cv_sizeof_void_p in
 
3253
$ac_cv_sizeof_int)
 
3254
  glib_intptr_type_define=int
 
3255
  gintptr_modifier='""'
 
3256
  gintptr_format='"i"'
 
3257
  guintptr_format='"u"'
 
3258
  glib_gpi_cast='(gint)'
 
3259
  glib_gpui_cast='(guint)'
 
3260
  ;;
 
3261
$ac_cv_sizeof_long)
 
3262
  glib_intptr_type_define=long
 
3263
  gintptr_modifier='"l"'
 
3264
  gintptr_format='"li"'
 
3265
  guintptr_format='"lu"'
 
3266
  glib_gpi_cast='(glong)'
 
3267
  glib_gpui_cast='(gulong)'
 
3268
  ;;
 
3269
$ac_cv_sizeof_long_long)
 
3270
  glib_intptr_type_define='long long'
 
3271
  gintptr_modifier='"I64"'
 
3272
  gintptr_format='"I64i"'
 
3273
  guintptr_format='"I64u"'
 
3274
  glib_gpi_cast='(gint64)'
 
3275
  glib_gpui_cast='(guint64)'
 
3276
  ;;
 
3277
$ac_cv_sizeof___int64)
 
3278
  glib_intptr_type_define=__int64
 
3279
  gintptr_modifier='"I64"'
 
3280
  gintptr_format='"I64i"'
 
3281
  guintptr_format='"I64u"'
 
3282
  glib_gpi_cast='(gint64)'
 
3283
  glib_gpui_cast='(guint64)'
 
3284
  ;;
 
3285
*)
 
3286
  glib_unknown_void_p=yes
 
3287
  ;;
 
3288
esac
 
3289
 
 
3290
 
 
3291
glib_defines="
 
3292
#define GLIB_MAJOR_VERSION $GLIB_MAJOR_VERSION
 
3293
#define GLIB_MINOR_VERSION $GLIB_MINOR_VERSION
 
3294
#define GLIB_MICRO_VERSION $GLIB_MICRO_VERSION
 
3295
"
 
3296
 
 
3297
case xyes in
 
3298
x$glib_cv_va_copy)      glib_vacopy='#define G_VA_COPY  va_copy' ;;
 
3299
x$glib_cv___va_copy)    glib_vacopy='#define G_VA_COPY  __va_copy' ;;
 
3300
*)                      glib_vacopy=''
 
3301
esac
 
3302
 
 
3303
if test x$glib_cv_va_val_copy = xno; then
 
3304
  glib_vacopy="\$glib_vacopy
 
3305
#define G_VA_COPY_AS_ARRAY 1"
 
3306
fi
 
3307
 
 
3308
if test x$glib_cv_hasinline = xyes; then
 
3309
    glib_inline='#define G_HAVE_INLINE 1'
 
3310
fi
 
3311
if test x$glib_cv_has__inline = xyes; then
 
3312
    glib_inline="\$glib_inline
 
3313
#define G_HAVE___INLINE 1"
 
3314
fi
 
3315
if test x$glib_cv_has__inline__ = xyes; then
 
3316
    glib_inline="\$glib_inline
 
3317
#define G_HAVE___INLINE__ 1"
 
3318
fi
 
3319
 
 
3320
g_have_gnuc_varargs=$g_have_gnuc_varargs
 
3321
g_have_iso_c_varargs=$g_have_iso_c_varargs
 
3322
g_have_iso_cxx_varargs=$g_have_iso_cxx_varargs
 
3323
 
 
3324
g_can_inline=$g_can_inline
 
3325
g_have_gnuc_visibility=$g_have_gnuc_visibility
 
3326
g_have_sunstudio_visibility=$g_have_sunstudio_visibility
 
3327
 
 
3328
if test x$ac_cv_c_bigendian = xyes; then
 
3329
  g_byte_order=G_BIG_ENDIAN
 
3330
  g_bs_native=BE
 
3331
  g_bs_alien=LE
 
3332
else
 
3333
  g_byte_order=G_LITTLE_ENDIAN
 
3334
  g_bs_native=LE
 
3335
  g_bs_alien=BE
 
3336
fi
 
3337
 
 
3338
g_pollin=$glib_cv_value_POLLIN
 
3339
g_pollout=$glib_cv_value_POLLOUT
 
3340
g_pollpri=$glib_cv_value_POLLPRI
 
3341
g_pollhup=$glib_cv_value_POLLHUP
 
3342
g_pollerr=$glib_cv_value_POLLERR
 
3343
g_pollnval=$glib_cv_value_POLLNVAL
 
3344
 
 
3345
# If a family is not found on the system, define that family to
 
3346
# a negative value, picking a different one for each undefined
 
3347
# family (-1 for AF_UNIX, -2 for the next one, -3 ...)
 
3348
# This is needed because glib-mkenums doesn't handle optional
 
3349
# values in enums, and thus we have to have all existing values
 
3350
# defined in the enum.
 
3351
if test "x$glib_cv_value_AF_UNIX" != "x"; then
 
3352
  g_af_unix=$glib_cv_value_AF_UNIX
 
3353
else
 
3354
  g_af_unix=-1
 
3355
fi
 
3356
g_af_inet=$glib_cv_value_AF_INET
 
3357
g_af_inet6=$glib_cv_value_AF_INET6
 
3358
 
 
3359
g_msg_peek=$glib_cv_value_MSG_PEEK
 
3360
g_msg_oob=$glib_cv_value_MSG_OOB
 
3361
g_msg_dontroute=$glib_cv_value_MSG_DONTROUTE
 
3362
 
 
3363
g_stack_grows=$glib_cv_stack_grows
 
3364
 
 
3365
g_have_eilseq=$have_eilseq
 
3366
 
 
3367
g_threads_impl_def=$g_threads_impl
 
3368
 
 
3369
g_atomic_lock_free="$glib_cv_g_atomic_lock_free"
 
3370
g_memory_barrier_needed="$glib_memory_barrier_needed"
 
3371
g_gcc_atomic_ops="$glib_cv_gcc_has_builtin_atomic_operations"
 
3372
 
 
3373
g_module_suffix="$glib_gmodule_suffix"
 
3374
 
 
3375
g_pid_type="$glib_pid_type"
 
3376
case $host in
 
3377
  *-*-cygwin*)
 
3378
    glib_os="#define G_OS_UNIX
 
3379
#define G_PLATFORM_WIN32
 
3380
#define G_WITH_CYGWIN"
 
3381
    ;;
 
3382
  *-*-mingw*)
 
3383
    glib_os="#define G_OS_WIN32
 
3384
#define G_PLATFORM_WIN32"
 
3385
    ;;
 
3386
  *)
 
3387
    glib_os="#define G_OS_UNIX"
 
3388
    ;;
 
3389
esac
 
3390
glib_static_compilation=""
 
3391
if test x$glib_win32_static_compilation = xyes; then
 
3392
  glib_static_compilation="#define GLIB_STATIC_COMPILATION 1
 
3393
#define GOBJECT_STATIC_COMPILATION 1"
 
3394
fi
 
3395
])
 
3396
 
 
3397
# Redo enough to get guint32 and guint64 for the alignment checks below
 
3398
case 4 in
 
3399
$ac_cv_sizeof_short)
 
3400
  gint32=short
 
3401
  ;;
 
3402
$ac_cv_sizeof_int)
 
3403
  gint32=int
 
3404
  ;;
 
3405
$ac_cv_sizeof_long)
 
3406
  gint32=long
 
3407
  ;;
 
3408
esac
 
3409
case 8 in
 
3410
$ac_cv_sizeof_int)
 
3411
  gint64=int
 
3412
  ;;
 
3413
$ac_cv_sizeof_long)
 
3414
  gint64=long
 
3415
  ;;
 
3416
$ac_cv_sizeof_long_long)
 
3417
  gint64='long long'
 
3418
  ;;
 
3419
$ac_cv_sizeof___int64)
 
3420
  gint64='__int64'
 
3421
  ;;
 
3422
esac
 
3423
 
 
3424
AC_CHECK_TYPE([guint32],,,[typedef unsigned $gint32 guint32;])
 
3425
AC_CHECK_ALIGNOF([guint32], [AC_INCLUDES_DEFAULT
 
3426
typedef unsigned $gint32 guint32;])
 
3427
AC_CHECK_TYPE([guint64],,,[typedef unsigned $gint64 guint64;])
 
3428
AC_CHECK_ALIGNOF([guint64], [AC_INCLUDES_DEFAULT
 
3429
typedef unsigned $gint64 guint64;])
 
3430
AC_CHECK_TYPE([unsigned long])
 
3431
AC_CHECK_ALIGNOF([unsigned long])
 
3432
 
 
3433
# Check for libdbus1 - Optional - is only used in the GDBus test cases
 
3434
#
 
3435
# 1.2.14 required for dbus_message_set_serial
 
3436
PKG_CHECK_MODULES(DBUS1,
 
3437
     dbus-1 >= 1.2.14,
 
3438
     [AC_DEFINE(HAVE_DBUS1, 1, [Define if dbus-1 is available]) have_dbus1=yes],
 
3439
     have_dbus1=no)
 
3440
AC_SUBST(DBUS1_CFLAGS)
 
3441
AC_SUBST(DBUS1_LIBS)
 
3442
AM_CONDITIONAL(HAVE_DBUS1, [test "x$have_dbus1" = "xyes"])
 
3443
 
 
3444
AC_CHECK_PROGS([DBUS_DAEMON], [dbus-daemon])
 
3445
AM_CONDITIONAL([HAVE_DBUS_DAEMON], [test x$DBUS_DAEMON = xdbus-daemon ])
 
3446
 
 
3447
dnl
 
3448
dnl Check for -Bsymbolic-functions linker flag used to avoid
 
3449
dnl intra-library PLT jumps, if available.
 
3450
dnl
 
3451
 
 
3452
AC_ARG_ENABLE(Bsymbolic,
 
3453
              [AS_HELP_STRING([--disable-Bsymbolic],
 
3454
                              [avoid linking with -Bsymbolic])],,
 
3455
              [SAVED_LDFLAGS="${LDFLAGS}" SAVED_LIBS="${LIBS}"
 
3456
               AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
 
3457
               LDFLAGS=-Wl,-Bsymbolic-functions
 
3458
               LIBS=
 
3459
               AC_TRY_LINK([], [int main (void) { return 0; }],
 
3460
                           AC_MSG_RESULT(yes)
 
3461
                           enable_Bsymbolic=yes,
 
3462
                           AC_MSG_RESULT(no)
 
3463
                           enable_Bsymbolic=no)
 
3464
               LDFLAGS="${SAVED_LDFLAGS}" LIBS="${SAVED_LIBS}"])
 
3465
 
 
3466
if test "x${enable_Bsymbolic}" = "xyes"; then
 
3467
  GLIB_LINK_FLAGS=-Wl,-Bsymbolic-functions
 
3468
fi
 
3469
 
 
3470
AC_SUBST(GLIB_LINK_FLAGS)
 
3471
 
 
3472
dnl
 
3473
dnl Check for -z,nodelete linker flag: the type system assumes that
 
3474
dnl libgobject stays loaded for the lifetime of the process.
 
3475
dnl Since ld.bfd does not treat wrong -z options as fatal by default,
 
3476
dnl we also try to check for the --fatal-warnings linker flag if
 
3477
dnl auto-detecting.
 
3478
dnl
 
3479
 
 
3480
AC_ARG_ENABLE([znodelete],
 
3481
              [AS_HELP_STRING([--disable-znodelete],
 
3482
                              [avoid linking with -z,nodelete])],,
 
3483
              [SAVED_LDFLAGS="${LDFLAGS}" SAVED_LIBS="${LIBS}"
 
3484
               AC_MSG_CHECKING([for --fatal-warnings linker flag])
 
3485
               LDFLAGS=-Wl,--fatal-warnings
 
3486
               LIBS=
 
3487
               AC_TRY_LINK([], [int main (void) { return 0; }],
 
3488
                           AC_MSG_RESULT(yes)
 
3489
                           [ldflags_fatal=-Wl,--fatal-warnings],
 
3490
                           AC_MSG_RESULT(no)
 
3491
                           ldflags_fatal=)
 
3492
               AC_MSG_CHECKING([for -z,nodelete linker flag])
 
3493
               LDFLAGS="$ldflags_fatal -Wl,-z,nodelete"
 
3494
               AC_TRY_LINK([], [int main (void) { return 0; }],
 
3495
                           AC_MSG_RESULT(yes)
 
3496
                           enable_znodelete=yes,
 
3497
                           AC_MSG_RESULT(no)
 
3498
                           enable_znodelete=no)
 
3499
               LDFLAGS="${SAVED_LDFLAGS}" LIBS="${SAVED_LIBS}"])
 
3500
 
 
3501
if test "x${enable_znodelete}" = "xyes"; then
 
3502
  GOBJECT_LINK_FLAGS=-Wl,-z,nodelete
 
3503
fi
 
3504
 
 
3505
AC_SUBST(GOBJECT_LINK_FLAGS)
 
3506
 
 
3507
dnl
 
3508
dnl Check for -fvisibility=hidden to determine if we can do GNU-style
 
3509
dnl visibility attributes for symbol export control
 
3510
dnl
 
3511
GLIB_HIDDEN_VISIBILITY_CFLAGS=""
 
3512
case "$host" in
 
3513
  *-*-mingw*)
 
3514
    dnl on mingw32 we do -fvisibility=hidden and __declspec(dllexport)
 
3515
    AC_DEFINE([_GLIB_EXTERN], [__attribute__((visibility("default"))) __declspec(dllexport) extern],
 
3516
              [defines how to decorate public symbols while building])
 
3517
    CFLAGS="${CFLAGS} -fvisibility=hidden"
 
3518
    ;;
 
3519
  *)
 
3520
    dnl on other compilers, check if we can do -fvisibility=hidden
 
3521
    SAVED_CFLAGS="${CFLAGS}"
 
3522
    CFLAGS="-fvisibility=hidden"
 
3523
    AC_MSG_CHECKING([for -fvisibility=hidden compiler flag])
 
3524
    AC_TRY_COMPILE([], [int main (void) { return 0; }],
 
3525
                   AC_MSG_RESULT(yes)
 
3526
                   enable_fvisibility_hidden=yes,
 
3527
                   AC_MSG_RESULT(no)
 
3528
                   enable_fvisibility_hidden=no)
 
3529
    CFLAGS="${SAVED_CFLAGS}"
 
3530
 
 
3531
    AS_IF([test "${enable_fvisibility_hidden}" = "yes"], [
 
3532
      AC_DEFINE([_GLIB_EXTERN], [__attribute__((visibility("default"))) extern],
 
3533
                [defines how to decorate public symbols while building])
 
3534
      GLIB_HIDDEN_VISIBILITY_CFLAGS="-fvisibility=hidden"
 
3535
    ])
 
3536
    ;;
 
3537
esac
 
3538
AC_SUBST(GLIB_HIDDEN_VISIBILITY_CFLAGS)
 
3539
 
 
3540
dnl Compiler flags; macro originates from systemd
 
3541
dnl See https://bugzilla.gnome.org/show_bug.cgi?id=608953
 
3542
AC_ARG_ENABLE(compile-warnings,
 
3543
              [AS_HELP_STRING([--disable-compile-warnings],
 
3544
                              [Don't use builtin compiler warnings])],,
 
3545
                              enable_compile_warnings=yes)
 
3546
AS_IF([test "x$enable_compile_warnings" = xyes], [
 
3547
  CC_CHECK_FLAGS_APPEND([GLIB_WARN_CFLAGS], [CFLAGS], [\
 
3548
   -Wall -Wstrict-prototypes -Werror=declaration-after-statement \
 
3549
   -Werror=missing-prototypes -Werror=implicit-function-declaration \
 
3550
   -Werror=pointer-arith -Werror=init-self -Werror=format-security \
 
3551
   -Werror=format=2 -Werror=missing-include-dirs])
 
3552
])
 
3553
AC_SUBST(GLIB_WARN_CFLAGS)
 
3554
 
 
3555
#
 
3556
# Define variables corresponding to the correct include paths to use for
 
3557
# in-tree building.
 
3558
#
 
3559
 
 
3560
# for config.h:
 
3561
config_h_INCLUDES='-I$(top_builddir)'
 
3562
AC_SUBST(config_h_INCLUDES)
 
3563
 
 
3564
# glib:
 
3565
#   config.h
 
3566
#   $(top_builddir)/glib: for glibconfig.h
 
3567
#   $(top_srcdir)/glib:   for glib.h
 
3568
#   $(top_srcdir):        for everything
 
3569
glib_INCLUDES='$(config_h_INCLUDES) -I$(top_builddir)/glib -I$(top_srcdir)/glib -I$(top_srcdir)'
 
3570
AC_SUBST(glib_INCLUDES)
 
3571
 
 
3572
# gobject:
 
3573
#   same as glib
 
3574
gobject_INCLUDES='$(glib_INCLUDES)'
 
3575
AC_SUBST(gobject_INCLUDES)
 
3576
 
 
3577
# gmodule:
 
3578
#   glib includes
 
3579
#   $(top_srcdir)/gmodule: for gmodule.h
 
3580
gmodule_INCLUDES='$(glib_INCLUDES) -I$(top_srcdir)/gmodule'
 
3581
AC_SUBST(gmodule_INCLUDES)
 
3582
 
 
3583
# gio:
 
3584
#   same as gmodule
 
3585
gio_INCLUDES='$(gmodule_INCLUDES)'
 
3586
AC_SUBST(gio_INCLUDES)
 
3587
 
 
3588
 
 
3589
AC_CONFIG_FILES([
 
3590
glib-2.0.pc
 
3591
gmodule-2.0.pc
 
3592
gmodule-export-2.0.pc
 
3593
gmodule-no-export-2.0.pc
 
3594
gthread-2.0.pc
 
3595
gobject-2.0.pc
 
3596
gio-2.0.pc
 
3597
gio-unix-2.0.pc
 
3598
gio-windows-2.0.pc
 
3599
glib-zip
 
3600
glib-gettextize
 
3601
Makefile
 
3602
build/Makefile
 
3603
build/win32/Makefile
 
3604
build/win32/dirent/Makefile
 
3605
build/win32/vs9/Makefile
 
3606
build/win32/vs10/Makefile
 
3607
build/win32/vs11/Makefile
 
3608
glib/Makefile
 
3609
glib/glib.stp
 
3610
glib/libcharset/Makefile
 
3611
glib/gnulib/Makefile
 
3612
glib/pcre/Makefile
 
3613
glib/update-pcre/Makefile
 
3614
glib/tests/Makefile
 
3615
gmodule/Makefile
 
3616
gmodule/gmoduleconf.h
 
3617
gobject/Makefile
 
3618
gobject/gobject.stp
 
3619
gobject/glib-mkenums
 
3620
gobject/tests/Makefile
 
3621
gthread/Makefile
 
3622
gio/Makefile
 
3623
gio/gdbus-2.0/codegen/Makefile
 
3624
gio/gdbus-2.0/codegen/config.py
 
3625
gio/gnetworking.h
 
3626
gio/xdgmime/Makefile
 
3627
gio/inotify/Makefile
 
3628
gio/kqueue/Makefile
 
3629
gio/fen/Makefile
 
3630
gio/fam/Makefile
 
3631
gio/win32/Makefile
 
3632
gio/tests/Makefile
 
3633
gio/tests/gdbus-object-manager-example/Makefile
 
3634
gio/tests/services/Makefile
 
3635
gio/tests/services/org.gtk.GDBus.Examples.ObjectManager.service
 
3636
gio/tests/modules/Makefile
 
3637
po/Makefile.in
 
3638
docs/Makefile
 
3639
docs/reference/Makefile
 
3640
docs/reference/glib/Makefile
 
3641
docs/reference/glib/version.xml
 
3642
docs/reference/gobject/Makefile
 
3643
docs/reference/gobject/version.xml
 
3644
docs/reference/gio/Makefile
 
3645
docs/reference/gio/gdbus-object-manager-example/Makefile
 
3646
docs/reference/gio/version.xml
 
3647
tests/Makefile
 
3648
tests/gobject/Makefile
 
3649
tests/refcount/Makefile
 
3650
m4macros/Makefile
 
3651
])
 
3652
 
 
3653
AC_CONFIG_COMMANDS([chmod-scripts],
 
3654
[chmod 0755 glib-zip
 
3655
chmod 0755 glib-gettextize
 
3656
chmod 0755 gobject/glib-mkenums])
 
3657
 
 
3658
# we want to invoke this macro solely so that the config.status script
 
3659
# and automake generated makefiles know about these generated files.
 
3660
# They are only needed to distcheck the package
 
3661
if false; then
 
3662
  AC_CONFIG_FILES([
 
3663
    INSTALL
 
3664
    README
 
3665
    config.h.win32
 
3666
    glib/glibconfig.h.win32
 
3667
    glib/makefile.msc
 
3668
    glib/glib.rc
 
3669
    gmodule/makefile.msc
 
3670
    gmodule/gmodule.rc
 
3671
    gobject/makefile.msc
 
3672
    gobject/gobject.rc
 
3673
    gthread/makefile.msc
 
3674
    gthread/gthread.rc
 
3675
    gio/gio.rc
 
3676
    tests/makefile.msc
 
3677
  ])
 
3678
fi
 
3679
 
 
3680
AC_OUTPUT