blob: 7ee5029e04b64820a54d3395177de2fec78ffae7 [file] [log] [blame]
# libglib.m4 serial 6
dnl Copyright (C) 2006-2007, 2019-2020 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
dnl gl_LIBGLIB
dnl gives the user the option to decide whether to use the included or
dnl an external libglib.
dnl gl_LIBGLIB(FORCE-INCLUDED)
dnl forces the use of the included or an external libglib.
AC_DEFUN([gl_LIBGLIB],
[
ifelse([$1], , [
AC_MSG_CHECKING([whether included glib is requested])
AC_ARG_WITH([included-glib],
[ --with-included-glib use the glib2 included here],
[gl_cv_libglib_force_included=$withval],
[gl_cv_libglib_force_included=no])
AC_MSG_RESULT([$gl_cv_libglib_force_included])
], [gl_cv_libglib_force_included=$1])
gl_cv_libglib_use_included="$gl_cv_libglib_force_included"
LIBGLIB=
LTLIBGLIB=
INCGLIB=
ifelse([$1], [yes], , [
if test "$gl_cv_libglib_use_included" != yes; then
dnl Figure out whether we can use a preinstalled libglib-2.0, or have to use
dnl the included one.
AC_CACHE_VAL([gl_cv_libglib], [
gl_cv_libglib=no
gl_cv_LIBGLIB=
gl_cv_LTLIBGLIB=
gl_cv_INCGLIB=
gl_save_LIBS="$LIBS"
dnl Search for libglib2 and define LIBGLIB_2_0, LTLIBGLIB_2_0 and
dnl INCGLIB_2_0 accordingly.
dnl Don't use glib-config nor pkg-config, since it doesn't work when
dnl cross-compiling or when the C compiler in use is different from the
dnl one that built the library.
AC_LIB_LINKFLAGS_BODY([glib-2.0])
LIBS="$gl_save_LIBS $LIBGLIB_2_0"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[#include <glib.h>
#ifndef G_BEGIN_DECLS
error this glib.h includes a glibconfig.h from a glib version 1.x
#endif
]],
[[g_string_new ("foo");]])],
[gl_cv_libglib=yes
gl_cv_LIBGLIB="$LIBGLIB_2_0"
gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
])
if test "$gl_cv_libglib" != yes; then
gl_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $INCGLIB_2_0"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[#include <glib.h>
#ifndef G_BEGIN_DECLS
error this glib.h includes a glibconfig.h from a glib version 1.x
#endif
]],
[[g_string_new ("foo");]])],
[gl_cv_libglib=yes
gl_cv_LIBGLIB="$LIBGLIB_2_0"
gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
gl_cv_INCGLIB="$INCGLIB_2_0"
])
if test "$gl_cv_libglib" != yes; then
dnl Often the include files are installed in /usr/include/glib-2.0
dnl and /usr/lib/glib-2.0/include.
if test -n "$LIBGLIB_2_0_PREFIX"; then
CPPFLAGS="$gl_save_CPPFLAGS -I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[#include <glib.h>
#ifndef G_BEGIN_DECLS
error this glib.h includes a glibconfig.h from a glib version 1.x
#endif
]],
[[g_string_new ("foo");]])],
[gl_cv_libglib=yes
gl_cv_LIBGLIB="$LIBGLIB_2_0"
gl_cv_LTLIBGLIB="$LTLIBGLIB_2_0"
gl_cv_INCGLIB="-I$LIBGLIB_2_0_PREFIX/include/glib-2.0 -I$LIBGLIB_2_0_PREFIX/$acl_libdirstem/glib-2.0/include"
])
fi
fi
CPPFLAGS="$gl_save_CPPFLAGS"
fi
LIBS="$gl_save_LIBS"
])
AC_MSG_CHECKING([for glib])
AC_MSG_RESULT([$gl_cv_libglib])
if test $gl_cv_libglib = yes; then
LIBGLIB="$gl_cv_LIBGLIB"
LTLIBGLIB="$gl_cv_LTLIBGLIB"
INCGLIB="$gl_cv_INCGLIB"
else
gl_cv_libglib_use_included=yes
fi
fi
])
AC_SUBST([LIBGLIB])
AC_SUBST([LTLIBGLIB])
AC_SUBST([INCGLIB])
AC_MSG_CHECKING([whether to use the included glib])
AC_MSG_RESULT([$gl_cv_libglib_use_included])
if test "$gl_cv_libglib_use_included" = yes; then
LIBGLIB_H=
LIBGLIB_H="$LIBGLIB_H glib.h"
LIBGLIB_H="$LIBGLIB_H glibconfig.h"
LIBGLIB_H="$LIBGLIB_H glib/ghash.h"
LIBGLIB_H="$LIBGLIB_H glib/glist.h"
LIBGLIB_H="$LIBGLIB_H glib/gmacros.h"
LIBGLIB_H="$LIBGLIB_H glib/gprimes.h"
LIBGLIB_H="$LIBGLIB_H glib/gprintfint.h"
LIBGLIB_H="$LIBGLIB_H glib/gstrfuncs.h"
LIBGLIB_H="$LIBGLIB_H glib/gstring.h"
LIBGLIB_H="$LIBGLIB_H glib/gtypes.h"
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
AC_CHECK_HEADERS([unistd.h])
dnl Don't bother checking for pthread.h and other multithread facilities.
else
LIBGLIB_H=
fi
AC_SUBST([LIBGLIB_H])
AM_CONDITIONAL([INCLUDED_LIBGLIB],
[test "$gl_cv_libglib_use_included" = yes])
])