Split glib.h into many header files mostly according to the resp.
[platform/upstream/glib.git] / configure.in
index 29d8d5b..79608a2 100644 (file)
@@ -15,9 +15,7 @@ cflags_set=${CFLAGS+set}
 # we rewrite this file
 rm -f glibconfig-sysdefs.h
 
-dnl we need to AC_DIVERT_PUSH/AC_DIVERT_POP these variable definitions so they
-dnl are available for $ac_help expansion (don't we all *love* autoconf?)
-AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
+GLIB_DIVERT_BEFORE_HELP([
 #
 # The following version number definitions apply to GLib, GModule, GObject and GThread
 # as a whole, so if changes occoured in any of them, they are all
@@ -37,8 +35,7 @@ GLIB_MICRO_VERSION=1
 GLIB_INTERFACE_AGE=0
 GLIB_BINARY_AGE=0
 GLIB_VERSION=$GLIB_MAJOR_VERSION.$GLIB_MINOR_VERSION.$GLIB_MICRO_VERSION
-dnl
-AC_DIVERT_POP()dnl
+])dnl
 
 AC_SUBST(GLIB_MAJOR_VERSION)
 AC_SUBST(GLIB_MINOR_VERSION)
@@ -90,15 +87,16 @@ case $host in
 esac
 AC_MSG_RESULT([$glib_native_beos])
 
-dnl figure debugging default, prior to $ac_help setup
 dnl
-AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
+
+GLIB_DIVERT_BEFORE_HELP([
+# figure debugging default, prior to $ac_help setup
 if test `expr $GLIB_MINOR_VERSION \% 2` = 1 ; then
-       debug_default=yes
+  debug_default=yes
 else
-       debug_default=minimum
-fi
-AC_DIVERT_POP()dnl
+  debug_default=minimum
+fi[]dnl
+])
 
 dnl declare --enable-* args and collect ac_help strings
 AC_ARG_ENABLE(debug, [  --enable-debug=[no/minimum/yes] turn on debugging [default=$debug_default]],,enable_debug=$debug_default)
@@ -236,19 +234,25 @@ if test x$ac_cv_sizeof_long_long = x8; then
        # long long is a 64 bit integer.
        AC_MSG_CHECKING(for format to printf and scanf a gint64)
        AC_CACHE_VAL(glib_cv_long_long_format,[
-               AC_TRY_RUN([#include <stdio.h>  
+               for format in ll q; do
+                 AC_TRY_RUN([#include <stdio.h>  
                        int main()
                        {
                          long long b, a = -0x3AFAFAFAFAFAFAFALL;
                          char buffer[1000];
-                         sprintf (buffer, "%llu", a);
-                         sscanf (buffer, "%llu", &b);
+                         sprintf (buffer, "%${format}u", a);
+                         sscanf (buffer, "%${format}u", &b);
                          exit (b!=a);
                        }
                        ],
-                       glib_cv_long_long_format=ll,
-                       glib_cv_long_long_format=q)])
-       AC_MSG_RESULT(%${glib_cv_long_long_format}i)
+                       glib_cv_long_long_format=${format}
+                       break)
+               done])
+       if test -n "$glib_cv_long_long_format"; then
+         AC_MSG_RESULT(%${glib_cv_long_long_format}i)
+        else
+         AC_MSG_RESULT(none)
+        fi
 fi
 
 dnl long doubles were not used, and a portability problem
@@ -308,17 +312,8 @@ esac
 AC_C_BIGENDIAN
 
 # check for header files
-AC_CHECK_HEADERS(float.h, AC_DEFINE(HAVE_FLOAT_H))
-AC_CHECK_HEADERS(limits.h, AC_DEFINE(HAVE_LIMITS_H))
-AC_CHECK_HEADERS(pwd.h, AC_DEFINE(HAVE_PWD_H))
-AC_CHECK_HEADERS(sys/param.h, AC_DEFINE(HAVE_SYS_PARAM_H))
-AC_CHECK_HEADERS(sys/poll.h, AC_DEFINE(HAVE_SYS_POLL_H))
-AC_CHECK_HEADERS(sys/select.h, AC_DEFINE(HAVE_SYS_SELECT_H))
-AC_CHECK_HEADERS(sys/time.h, AC_DEFINE(HAVE_SYS_TIME_H))
-AC_CHECK_HEADERS(sys/times.h, AC_DEFINE(HAVE_SYS_TIMES_H))
-AC_CHECK_HEADERS(unistd.h, AC_DEFINE(HAVE_UNISTD_H))
-AC_CHECK_HEADERS(values.h, AC_DEFINE(HAVE_VALUES_H))
-AC_CHECK_HEADERS(stdint.h, AC_DEFINE(HAVE_VALUES_H))
+AC_CHECK_HEADERS([float.h limits.h pwd.h sys/param.h sys/poll.h sys/select.h])
+AC_CHECK_HEADERS([sys/time.h sys/times.h unistd.h values.h stdint.h])
 
 AC_MSG_CHECKING(whether make is GNU Make)
 STRIP_BEGIN=
@@ -443,11 +438,13 @@ AC_CACHE_VAL(glib_cv_sane_realloc,[
           return realloc (0, sizeof (int)) == 0;
         }],
         glib_cv_sane_realloc=yes
-        AC_DEFINE(REALLOC_0_WORKS)
         ,
         glib_cv_sane_realloc=no
         ,)
 ])
+if test x$glib_cv_sane_realloc = xyes; then
+  AC_DEFINE(REALLOC_0_WORKS)
+fi
 AC_MSG_RESULT($glib_cv_sane_realloc)
 
 dnl Check for nl_langinfo and CODESET
@@ -573,10 +570,9 @@ G_MODULE_HAVE_DLERROR=0
 dnl *** dlopen() and dlsym() in system libraries
 if test -z "$G_MODULE_IMPL"; then
        AC_CHECK_FUNC(dlopen,
-               AC_CHECK_FUNC(dlsym,
-                       G_MODULE_IMPL=G_MODULE_IMPL_DL
-               ,)
-       ,)
+                     [AC_CHECK_FUNC(dlsym,
+                                    [G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
+                     [])
 fi
 dnl *** load_image (BeOS)
 if test -z "$G_MODULE_IMPL" -a "x$glib_native_beos" = "xyes"; then
@@ -587,14 +583,13 @@ if test -z "$G_MODULE_IMPL" -a "x$glib_native_beos" = "xyes"; then
       G_MODULE_IMPL=G_MODULE_IMPL_BEOS 
 ,)
 fi   
-dnl *** dlopen() and dlsym() in libdl
+# *** dlopen() and dlsym() in libdl
 if test -z "$G_MODULE_IMPL"; then
        AC_CHECK_LIB(dl, dlopen,
-               AC_CHECK_LIB(dl, dlsym,
-                       G_MODULE_LIBS=-ldl
-                       G_MODULE_IMPL=G_MODULE_IMPL_DL
-               ,)
-       ,)
+                    [AC_CHECK_LIB(dl, dlsym,
+                                  [G_MODULE_LIBS=-ldl
+                                  G_MODULE_IMPL=G_MODULE_IMPL_DL],[])],
+                    [])
 fi
 dnl *** shl_load() in libdld (HP-UX)
 if test -z "$G_MODULE_IMPL"; then
@@ -773,18 +768,73 @@ else
 fi
 
 
-dnl determination of G_THREAD_LIBS
-dnl ******************************
+dnl determination of G_THREAD_CFLAGS
+dnl ********************************
 
 G_THREAD_LIBS=
 G_THREAD_LIBS_EXTRA=
 G_THREAD_CFLAGS=
 
+if test x"$have_threads" != xnone; then
+
+    G_THREAD_CFLAGS="-D_REENTRANT" # good default guess
+
+    case $host in
+       *-aix*)
+               G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_THREAD_SAFE"
+               if test x"$GCC" = xyes; then
+                       G_THREAD_CFLAGS="$G_THREAD_CFLAGS -mthreads"
+               fi
+               ;;
+       *-freebsd2.2*)
+               G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_THREAD_SAFE"
+
+               # FreeBSD 2.2.x shiped with gcc 2.7.2.x, which doesn't support
+               # -mthreads flag.
+               ;;      
+       *-sysv5uw7*)  # UnixWare 7 
+               if test "$GCC" != "yes"; then
+                               G_THREAD_CFLAGS="$G_THREAD_CFLAGS -Kthread"
+               else    
+                       G_THREAD_CFLAGS="$G_THREAD_CFLAGS -pthread"
+               fi      
+               ;;
+    esac
+
+    # if we are not finding the ctime_r function, then we probably are
+    # not using the proper multithread flag
+
+    glib_save_CPPFLAGS="$CPPFLAGS"
+    CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
+
+    # Note: Digital UNIX 4.0d #defines ctime_r to _Pctime_r for gcc.
+    AC_EGREP_HEADER([[^a-zA-Z_](_P)?ctime_r[^a-zA-Z_]], time.h, ,
+       AC_MSG_WARN($FLAG_DOES_NOT_WORK))
+
+    CPPFLAGS="$glib_save_CPPFLAGS"
+
+    AC_MSG_CHECKING(thread related cflags)
+    AC_MSG_RESULT($G_THREAD_CFLAGS)
+    CFLAGS="$CFLAGS $G_THREAD_CFLAGS"
+fi
+
+dnl determination of G_THREAD_LIBS
+dnl ******************************
+
 mutex_has_default=no
 case $have_threads in
         posix|dce)
-               G_THREAD_LIBS=error
-               glib_save_LIBS="$LIBS"
+          G_THREAD_LIBS=error
+          glib_save_LIBS="$LIBS"
+          case $host in
+            *-sysv5uw7*) # UnixWare 7 
+               if test "$GCC" != "yes"; then
+                               G_THREAD_LIBS="-Kthread"
+               else    
+                       G_THREAD_LIBS="-pthread"
+               fi      
+               ;;
+             *)
                for thread_lib in "" pthread pthreads c_r thread dce; do
                        if test x"$thread_lib" = x; then
                                add_thread_lib=""
@@ -817,6 +867,9 @@ case $have_threads in
                                break],
                                [AC_MSG_RESULT(no)])
                done
+               if test "x$G_THREAD_LIBS" = xerror; then
+                 AC_MSG_ERROR($LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2)
+               fi
                for thread_lib in "" rt; do
                        if test x"$thread_lib" = x; then
                                add_thread_lib=""
@@ -843,34 +896,36 @@ case $have_threads in
                                [AC_MSG_RESULT(no)])
                done
                LIBS="$glib_save_LIBS"
-                mutex_has_default=yes
-                mutex_default_type='pthread_mutex_t'
-                mutex_default_init='PTHREAD_MUTEX_INITIALIZER'
-                mutex_header_file='pthread.h'
-               if test "x$have_threads" = "xposix"; then
-                       g_threads_impl="POSIX"
-               else
-                       g_threads_impl="DCE"
-                       have_threads="posix"
-               fi
-               AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
-                ;;
+               ;;
+           esac 
+           mutex_has_default=yes
+           mutex_default_type='pthread_mutex_t'
+           mutex_default_init='PTHREAD_MUTEX_INITIALIZER'
+           mutex_header_file='pthread.h'
+          if test "x$have_threads" = "xposix"; then
+            g_threads_impl="POSIX"
+          else
+            g_threads_impl="DCE"
+            have_threads="posix"
+          fi
+          AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
+           ;;
         solaris)
-               G_THREAD_LIBS=error
-                AC_CHECK_LIB(thread, cond_init, G_THREAD_LIBS="-lthread")
-                mutex_has_default=yes
-                mutex_default_type='mutex_t'
-               mutex_default_init="DEFAULTMUTEX"
-                mutex_header_file='thread.h'
-               g_threads_impl="SOLARIS"
-                ;;
+          G_THREAD_LIBS=error
+           AC_CHECK_LIB(thread, cond_init, G_THREAD_LIBS="-lthread")
+           mutex_has_default=yes
+           mutex_default_type='mutex_t'
+          mutex_default_init="DEFAULTMUTEX"
+           mutex_header_file='thread.h'
+          g_threads_impl="SOLARIS"
+           ;;
         none)
-               g_threads_impl="NONE"
-                ;;
+          g_threads_impl="NONE"
+           ;;
         *)
-               g_threads_impl="NONE"
-               G_THREAD_LIBS=error
-                ;;
+          g_threads_impl="NONE"
+           G_THREAD_LIBS=error
+           ;;
 esac
 
 if test "x$G_THREAD_LIBS" = xerror; then
@@ -889,55 +944,14 @@ esac
 AC_MSG_CHECKING(thread related libraries)
 AC_MSG_RESULT($G_THREAD_LIBS)
 
-dnl determination of G_THREAD_CFLAGS
-dnl ********************************
-
-if test x"$enable_threads" = xyes; then
-
-    G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_REENTRANT" # good default guess
-
-    case $host in
-       *-aix*)
-               G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_THREAD_SAFE"
-               if test x"$GCC" = xyes; then
-                       G_THREAD_CFLAGS="$G_THREAD_CFLAGS -mthreads"
-               fi
-               ;;
-       *-freebsd2.2*)
-               G_THREAD_CFLAGS="$G_THREAD_CFLAGS -D_THREAD_SAFE"
-
-               # FreeBSD 2.2.x shiped with gcc 2.7.2.x, which doesn't support
-               # -mthreads flag.
-               ;;
-    esac
-
-    # if we are not finding the ctime_r function, then we probably are
-    # not using the proper multithread flag
-    old_CPPFLAGS=$CPPFLAGS
-    CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
-    # Note: Digital UNIX 4.0d #defines ctime_r to _Pctime_r for gcc.
-    AC_EGREP_HEADER([[^a-zA-Z_](_P)?ctime_r[^a-zA-Z_]], time.h, ,
-    G_THREAD_CFLAGS=
-    AC_MSG_WARN($FLAG_DOES_NOT_WORK))
-    CPPFLAGS=$old_CPPFLAGS
-
-    AC_MSG_CHECKING(thread related cflags)
-
-    AC_MSG_RESULT($G_THREAD_CFLAGS)
-else
-    G_THREAD_CFLAGS=
-fi
-
 dnl check for mt safe function variants and some posix functions
 dnl ************************************************************
 
-if test x"$enable_threads" = xyes; then
+if test x"$have_threads" != xnone; then
        glib_save_LIBS="$LIBS"
-       glib_save_CFLAGS="$CFLAGS"
        # we are not doing the following for now, as this might require glib 
        # to always be linked with the thread libs on some platforms. 
        # LIBS="$LIBS $G_THREAD_LIBS"
-       CFLAGS="$CFLAGS $G_THREAD_CFLAGS"
        AC_CHECK_FUNCS(localtime_r)
        if test "$ac_cv_header_pwd_h" = "yes"; then
                AC_MSG_CHECKING([for getpwuid_r])
@@ -946,10 +960,11 @@ if test x"$enable_threads" = xyes; then
                                int main () { char buffer[10000], *pointer; 
                                char getpwuid_r (long, void*, void*,
                                        int, void*);
+                               int error;
                                errno = 0;
-                               getpwuid_r (0, &buffer, &buffer, 
+                               error = getpwuid_r (0, &buffer, &buffer, 
                                        sizeof (buffer), &pointer);
-                               return errno == ENOSYS;}],
+                               return errno == ENOSYS || error == ENOSYS;}],
                                [ac_cv_func_getpwuid_r=yes],
                                [ac_cv_func_getpwuid_r=no])])
                if test "$ac_cv_func_getpwuid_r" = yes; then
@@ -1035,7 +1050,6 @@ if test x"$enable_threads" = xyes; then
        fi
 
        LIBS="$glib_save_LIBS"
-       CFLAGS="$glib_save_CFLAGS"
 
        # now spit out all the warnings.
        if test "$ac_cv_func_getpwuid_r" != "yes"; then
@@ -1055,8 +1069,6 @@ AC_SUBST(G_THREAD_CFLAGS)
 AC_SUBST(G_THREAD_LIBS)
 AC_SUBST(G_THREAD_LIBS_EXTRA)
 
-CFLAGS="$CFLAGS $G_THREAD_CFLAGS"
-
 dnl **********************************************
 dnl *** GDefaultMutex setup and initialization ***
 dnl **********************************************
@@ -1160,11 +1172,13 @@ case "$CONFIG_OTHER" in
        cat > $outfile <<\_______EOF
 /* glibconfig.h
  *
- * This is a generated file.  Please modify `configure.in'
+ * This is a generated file.  Please modify 'configure.in'
  */
 
-#ifndef GLIBCONFIG_H
-#define GLIBCONFIG_H
+#ifndef __G_LIBCONFIG_H__
+#define __G_LIBCONFIG_H__
+
+#include <gmacros.h>
 
 _______EOF
 
@@ -1177,11 +1191,8 @@ _______EOF
        if test x$glib_values_h = xyes; then
          echo '#include <values.h>' >> $outfile
        fi
-       if test x$g_mutex_header_file != x; then
-         echo '#include <'"$g_mutex_header_file"'>' >> $outfile
-       fi
        if test "$glib_header_alloca_h" = "yes"; then
-         echo  '#include <alloca.h>' >> $outfile
+         echo '#define GLIB_HAVE_ALLOCA_H' >> $outfile
        fi
        if test x$glib_sys_poll_h = xyes; then
          echo '#define GLIB_HAVE_SYS_POLL_H' >> $outfile
@@ -1189,9 +1200,7 @@ _______EOF
 
        cat >> $outfile <<_______EOF
 
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+G_BEGIN_DECLS
 
 #define G_MINFLOAT     $glib_mf
 #define G_MAXFLOAT     $glib_Mf
@@ -1244,11 +1253,14 @@ _______EOF
 ${glib_extension}typedef signed $gint64 gint64;
 ${glib_extension}typedef unsigned $gint64 guint64;
 
+#define G_GINT64_CONSTANT(val) $gint64_constant
+_______EOF
+               if test -n "$gint64_format"; then
+         cat >>$outfile <<_______EOF
 #define G_GINT64_FORMAT $gint64_format
 #define G_GUINT64_FORMAT $guint64_format
-#define G_GINT64_CONSTANT(val) $gint64_constant
-
 _______EOF
+               fi
        fi
 
        case x$glib_size_t in
@@ -1304,16 +1316,19 @@ typedef struct _GStaticMutex GStaticMutex;
 struct _GStaticMutex
 {
   struct _GMutex *runtime_mutex;
-  union {
-    char   pad[$g_mutex_sizeof];
-    double dummy_double;
-    void  *dummy_pointer;
-    long   dummy_long;
-  } aligned_pad_u;
+  struct {
+    union {
+      char   pad[$g_mutex_sizeof];
+      double dummy_double;
+      void  *dummy_pointer;
+      long   dummy_long;
+    } mutex;
+    void *debug_info;
+  } static_mutex;
 };
-#define        G_STATIC_MUTEX_INIT     { NULL, { { $g_mutex_contents} } }
+#define        G_STATIC_MUTEX_INIT     { NULL, { { { $g_mutex_contents} }, NULL } }
 #define        g_static_mutex_get_mutex(mutex) \
-  (g_thread_use_default_impl ? ((GMutex*) &((mutex)->aligned_pad_u)) : \
+  (g_thread_use_default_impl ? ((GMutex*) &((mutex)->static_mutex)) : \
    g_static_mutex_get_mutex_impl (&((mutex)->runtime_mutex)))
 _______EOF
        else
@@ -1374,9 +1389,7 @@ _______EOF
 
        cat >>$outfile <<_______EOF
 
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+G_END_DECLS
 
 #endif /* GLIBCONFIG_H */
 _______EOF
@@ -1476,8 +1489,10 @@ $ac_cv_sizeof_long)
   ;;
 $ac_cv_sizeof_long_long)
   gint64='long long'
-  gint64_format='"'$glib_cv_long_long_format'i"'
-  guint64_format='"'$glib_cv_long_long_format'u"'
+  if test -n "$glib_cv_long_long_format"; then
+    gint64_format='"'$glib_cv_long_long_format'i"'
+    guint64_format='"'$glib_cv_long_long_format'u"'
+  fi
   glib_extension='G_GNUC_EXTENSION '
   gint64_constant='(G_GNUC_EXTENSION (val##LL))'
   ;;
@@ -1570,9 +1585,9 @@ x$ac_cv_c_bigendian)
   ;;
 esac
 
-case x$enable_threads in
-xyes)  g_enable_threads_def="#define";;
-*)     g_enable_threads_def="#undef ";;
+case x$have_threads in
+xnone) g_enable_threads_def="#undef";;
+*)     g_enable_threads_def="#define";;
 esac
 
 g_threads_impl_def=$g_threads_impl