Commit f0fb79d5 authored by João Valverde's avatar João Valverde Committed by João Valverde

autotools: Use pkg-config autoconf macros for GLib/GTK

Remove mostly obsolete aclocal macros. Make GTK build flags a strict superset
of GLib flags. Use GTK build variables for GTK GUI and GLib elsewhere. Add
dependency flags explicitly instead of using WS_CPPFLAGS.

Some minor improvements and fixes for missing/unnecessary variables (no impact
on our test builds).

Change-Id: I3e1f067a875f79d6516c1fa7af986f17a7a6b671
Reviewed-on: https://code.wireshark.org/review/14005Reviewed-by: default avatarJoão Valverde <j@v6e.pt>
parent 8b46cbbc
......@@ -27,8 +27,9 @@ AM_DISTCHECK_CONFIGURE_FLAGS=@GUI_CONFIGURE_FLAGS@
ACLOCAL_AMFLAGS = `./aclocal-flags`
# Common headers
AM_CPPFLAGS += $(LIBGNUTLS_CFLAGS) $(LIBGCRYPT_CFLAGS) $(LIBSMI_CFLAGS) \
$(LUA_CFLAGS) $(KRB5_CFLAGS)
COMMONCPPFLAGS =
AM_CPPFLAGS = $(INCLUDEDIRS) $(WS_CPPFLAGS) $(COMMONCPPFLAGS)
bin_PROGRAMS = \
@wireshark_bin@ \
......@@ -362,19 +363,9 @@ endif # HAVE_PLUGINS
include Makefile.common
if ENABLE_STATIC
if HAVE_GTK
wireshark_gtk_LDFLAGS = -Wl,-static -all-static
endif
if HAVE_Qt
wireshark_LDFLAGS = -Wl,-static -all-static
endif
EXTRALINKFLAGS = -Wl,-static -all-static
else
if HAVE_GTK
wireshark_gtk_LDFLAGS = -export-dynamic
endif
if HAVE_Qt
wireshark_LDFLAGS = -export-dynamic @Qt_LDFLAGS@
endif
EXTRALINKFLAGS = -export-dynamic
endif
# Libraries and plugin flags with which to link wireshark.
......@@ -385,19 +376,8 @@ endif
# needed for X applications, and GTK+ applications are X applications
# if the version of GTK+ they're built with runs atop X11).
#
# However, it *does* have to be linked with @GLIB_LIBS@; not all of
# the necessary GLib libraries are included in @GTK_LIBS@. To quote
# Gentoo bug 423743 at
#
# https://bugs.gentoo.org/show_bug.cgi?id=423743
#
# "The Makefile.am claims including GLIB_LIBS when linking wireshark is
# unnecessary, because wireshark links to GTK_LIBS which is a superset.
# It is not actually a superset: gmodule is included in GLIB_LIBS but
# not in GTK_LIBS (unless accidentally on older glibs/gtks)."
#
# although it's also possible that -lgmodule is in GTK_LIBS but not
# GLIB_LIBS (that's the case on my machine right now, for example).
# GTK_CFLAGS/GTK_LIBS is a strict superset of GLIB_CFLAGS/GLIB_LIBS
# (see configure.ac for pkg-config modules used).
#
wireshark_common_ldadd = \
capchild/libcapchild.a \
......@@ -419,34 +399,39 @@ wireshark_common_ldadd = \
@COREFOUNDATION_FRAMEWORKS@ \
@LIBGCRYPT_LIBS@ \
@LIBGNUTLS_LIBS@ \
@LIBSMI_LDFLAGS@ \
@GLIB_LIBS@
@LIBSMI_LDFLAGS@
if HAVE_Qt
wireshark_SOURCES = $(WIRESHARK_COMMON_SRC) wireshark-qt.cpp
wireshark_INCLUDES = $(WIRESHARK_COMMON_INCLUDES)
wireshark_CPPFLAGS = $(AM_CPPFLAGS) $(GLIB_CFLAGS) $(Qt_CFLAGS)
wireshark_LDFLAGS = $(AM_LDFLAGS) $(EXTRALINKFLAGS) $(Qt_LDFLAGS)
wireshark_LDADD = \
ui/qt/libqtui.a \
$(wireshark_common_ldadd) \
@Qt_LIBS@
wireshark_CPPFLAGS = $(AM_CPPFLAGS) $(Qt_CFLAGS)
ui/qt/libqtui.a \
$(wireshark_common_ldadd) \
$(GLIB_LIBS) \
$(Qt_LIBS)
endif
if HAVE_GTK
wireshark_gtk_SOURCES = $(WIRESHARK_COMMON_SRC)
wireshark_gtk_INCLUDES = $(WIRESHARK_COMMON_INCLUDES)
wireshark_gtk_CPPFLAGS = $(AM_CPPFLAGS) $(GTK_CFLAGS)
wireshark_gtk_LDFLAGS = $(AM_LDFLAGS) $(EXTRALINKFLAGS)
wireshark_gtk_LDADD = \
ui/gtk/libgtkui.a \
$(wireshark_common_ldadd) \
@PORTAUDIO_LIBS@ \
@GTK_LIBS@
ui/gtk/libgtkui.a \
$(wireshark_common_ldadd) \
$(GTK_LIBS) \
@PORTAUDIO_LIBS@
endif
if ENABLE_STATIC
tshark_LDFLAGS = -Wl,-static -all-static
else
tshark_LDFLAGS = -export-dynamic
endif
tshark_CPPFLAGS = $(AM_CPPFLAGS) $(GLIB_CFLAGS)
tshark_LDFLAGS = $(AM_LDFLAGS) $(EXTRALINKFLAGS)
# Libraries and plugin flags with which to link tshark.
tshark_LDADD = \
......@@ -472,11 +457,9 @@ tshark_LDADD = \
@LIBGNUTLS_LIBS@ \
@LIBSMI_LDFLAGS@
if ENABLE_STATIC
tfshark_LDFLAGS = -Wl,-static -all-static
else
tfshark_LDFLAGS = -export-dynamic
endif
tfshark_CPPFLAGS = $(AM_CPPFLAGS) $(GLIB_CFLAGS)
tfshark_LDFLAGS = $(AM_LDFLAGS) $(EXTRALINKFLAGS)
# Libraries and plugin flags with which to link tfshark.
tfshark_LDADD = \
......@@ -497,11 +480,9 @@ tfshark_LDADD = \
@LIBGNUTLS_LIBS@ \
@LIBSMI_LDFLAGS@
if ENABLE_STATIC
rawshark_LDFLAGS = -Wl,-static -all-static
else
rawshark_LDFLAGS = -export-dynamic
endif
rawshark_CPPFLAGS = $(AM_CPPFLAGS) $(GLIB_CFLAGS)
rawshark_LDFLAGS = $(AM_LDFLAGS) $(EXTRALINKFLAGS)
# Libraries and plugin flags with which to link rawshark.
rawshark_LDADD = \
......@@ -525,10 +506,7 @@ rawshark_LDADD = \
@LIBGNUTLS_LIBS@ \
@LIBSMI_LDFLAGS@
# Libraries with which to link text2pcap.
text2pcap_LDADD = \
wsutil/libwsutil.la \
@GLIB_LIBS@
text2pcap_CPPFLAGS = $(AM_CPPFLAGS) $(GLIB_CFLAGS)
# Don't turn on -Werror for text2pcap: its source includes text2pcap-scanner.c
# which is generated (and therefore not always clean).
......@@ -536,12 +514,21 @@ text2pcap_LDADD = \
# doesn't seem worth the effort.
text2pcap_CFLAGS = $(GENERATED_CFLAGS)
# Libraries with which to link text2pcap.
text2pcap_LDADD = \
wsutil/libwsutil.la \
@GLIB_LIBS@
mergecap_CPPFLAGS = $(AM_CPPFLAGS) $(GLIB_CFLAGS)
# Libraries with which to link mergecap.
mergecap_LDADD = \
wiretap/libwiretap.la \
wsutil/libwsutil.la \
@GLIB_LIBS@
capinfos_CPPFLAGS = $(AM_CPPFLAGS) $(GLIB_CFLAGS)
# Libraries with which to link capinfos.
capinfos_LDADD = \
wiretap/libwiretap.la \
......@@ -549,24 +536,32 @@ capinfos_LDADD = \
@GLIB_LIBS@ \
@LIBGCRYPT_LIBS@
captype_CPPFLAGS = $(AM_CPPFLAGS) $(GLIB_CFLAGS)
# Libraries with which to link captype.
captype_LDADD = \
wiretap/libwiretap.la \
wsutil/libwsutil.la \
@GLIB_LIBS@
editcap_CPPFLAGS = $(AM_CPPFLAGS) $(GLIB_CFLAGS)
# Libraries with which to link editcap.
editcap_LDADD = \
wiretap/libwiretap.la \
wsutil/libwsutil.la \
@GLIB_LIBS@
reordercap_CPPFLAGS = $(AM_CPPFLAGS) $(GLIB_CFLAGS)
# Libraries with which to link reordercap.
reordercap_LDADD = \
wiretap/libwiretap.la \
wsutil/libwsutil.la \
@GLIB_LIBS@
randpkt_CPPFLAGS = $(AM_CPPFLAGS) $(GLIB_CFLAGS)
# Libraries with which to link randpkt.
randpkt_LDADD = \
randpkt_core/librandpkt_core.a \
......@@ -579,6 +574,8 @@ randpkt_LDADD = \
@C_ARES_LIBS@ \
@ADNS_LIBS@
dftest_CPPFLAGS = $(AM_CPPFLAGS) $(GLIB_CFLAGS)
# Libraries and plugin flags with which to link dftest.
dftest_LDADD = \
ui/libui.a \
......@@ -598,6 +595,8 @@ dftest_LDADD = \
@LIBGNUTLS_LIBS@ \
@LIBSMI_LDFLAGS@
echld_CPPFLAGS = $(AM_CPPFLAGS) $(GLIB_CFLAGS)
echld_test_LDADD = \
epan/libwireshark.la \
echld/libechld.la \
......@@ -613,6 +612,12 @@ echld_test_DEPENDENCIES = \
echld/libechld.la \
epan/libwireshark.la
dumpcap_CPPFLAGS = $(AM_CPPFLAGS) $(GLIB_CFLAGS)
dumpcap_CFLAGS = $(AM_CFLAGS) $(PIE_CFLAGS)
dumpcap_LDFLAGS = $(AM_LDFLAGS) $(PIE_LDFLAGS)
# Libraries with which to link dumpcap.
dumpcap_LDADD = \
caputils/libcaputils.a \
......@@ -624,8 +629,6 @@ dumpcap_LDADD = \
@SYSTEMCONFIGURATION_FRAMEWORKS@ \
@COREFOUNDATION_FRAMEWORKS@ \
@LIBCAP_LIBS@
dumpcap_CFLAGS = $(AM_CFLAGS) $(PIE_CFLAGS)
dumpcap_LDFLAGS = $(PIE_LDFLAGS)
#
# Build the version string
......@@ -699,16 +702,13 @@ EXTRA_DIST = \
README.vmware \
README.windows \
abi-descriptor.template \
aclocal-fallback/libsmi.m4 \
aclocal-fallback/libgcrypt.m4 \
aclocal-fallback/glib-2.0.m4 \
aclocal-fallback/gtk-2.0.m4 \
aclocal-fallback/gtk-3.0.m4 \
aclocal-fallback/ax_append_flag.m4 \
aclocal-fallback/ax_append_flag.m4 \
aclocal-fallback/ax_check_compile_flag.m4 \
aclocal-fallback/ax_gcc_x86_cpuid.m4 \
aclocal-fallback/ax_ext.m4 \
aclocal-fallback/ax_gcc_x86_cpuid.m4 \
aclocal-fallback/ax_ext.m4 \
aclocal-fallback/ax_gcc_x86_avx_xgetbv.m4 \
aclocal-fallback/libsmi.m4 \
aclocal-fallback/libgcrypt.m4 \
aclocal-flags \
adns_dll.dep \
adns_dll.rc \
......
......@@ -27,21 +27,23 @@ LEMON = $(top_builddir)/tools/lemon/lemon$(EXEEXT)
RUNLEX = $(top_srcdir)/tools/runlex.sh
AM_CPPFLAGS = $(WS_CPPFLAGS) -I$(top_srcdir)
AM_CFLAGS = $(WS_CFLAGS)
if HAVE_WARNINGS_AS_ERRORS
AM_CFLAGS += -Werror
WERROR = -Werror
else
WERROR =
endif
INCLUDEDIRS = -I$(top_srcdir)
#AM_CPPFLAGS = $(INCLUDEDIRS) $(WS_CPPFLAGS)
AM_CFLAGS = $(WERROR) $(WS_CFLAGS)
GENERATED_CFLAGS = $(WS_CFLAGS)
AM_CXXFLAGS = $(WS_CXXFLAGS)
AM_CXXFLAGS = $(WERROR) $(WS_CXXFLAGS)
if HAVE_WARNINGS_AS_ERRORS
AM_CXXFLAGS += -Werror
endif
GENERATED_CXXFLAGS = $(WS_CXXFLAGS)
AM_LDFLAGS = $(WS_LDFLAGS)
......@@ -83,9 +85,9 @@ am__v_YACC_0 = @echo " YACC " $@;
# abi-compliance-checker descriptor
abi_incdirs = $(subst -I,NEWLINE,$(filter -I%,$(WS_CFLAGS) -I$(abs_top_srcdir) -I$(abs_srcdir)))
abi_sysdirs = $(subst -isystem,NEWLINE,$(filter -isystem%,$(WS_CFLAGS)))
INCLUDE_DIRS = $(abi_incdirs) $(abi_sysdirs)
abi_includes = $(abi_incdirs) $(abi_sysdirs)
abi-descriptor.xml: ../abi-descriptor.template
$(AM_V_SED)$(SED) \
-e 's|@INCLUDE_DIRS@|$(INCLUDE_DIRS)|g' \
-e 's|@INCLUDE_DIRS@|$(abi_includes)|g' \
-e 's/ *NEWLINE/\n /g' \
-e 's|@LIBRARY_OUTPUT_PATH@|{RELPATH}/.libs|' $< > $@
# Configure paths for GLIB
# Owen Taylor 1997-2001
dnl AM_PATH_GLIB_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
dnl Test for GLIB, and define GLIB_CFLAGS and GLIB_LIBS, if gmodule, gobject,
dnl gthread, or gio is specified in MODULES, pass to pkg-config
dnl
AC_DEFUN([AM_PATH_GLIB_2_0],
[dnl
dnl Get the cflags and libraries from pkg-config
dnl
AC_ARG_ENABLE(glibtest, [ --disable-glibtest do not try to compile and run a test GLIB program],
, enable_glibtest=yes)
pkg_config_args=glib-2.0
for module in . $4
do
case "$module" in
gmodule)
pkg_config_args="$pkg_config_args gmodule-2.0"
;;
gmodule-no-export)
pkg_config_args="$pkg_config_args gmodule-no-export-2.0"
;;
gobject)
pkg_config_args="$pkg_config_args gobject-2.0"
;;
gthread)
pkg_config_args="$pkg_config_args gthread-2.0"
;;
gio*)
pkg_config_args="$pkg_config_args $module-2.0"
;;
esac
done
PKG_PROG_PKG_CONFIG([0.16])
no_glib=""
if test "x$PKG_CONFIG" = x ; then
no_glib=yes
PKG_CONFIG=no
fi
min_glib_version=ifelse([$1], ,2.0.0,$1)
AC_MSG_CHECKING(for GLIB - version >= $min_glib_version)
if test x$PKG_CONFIG != xno ; then
## don't try to run the test against uninstalled libtool libs
if $PKG_CONFIG --uninstalled $pkg_config_args; then
echo "Will use uninstalled version of GLib found in PKG_CONFIG_PATH"
enable_glibtest=no
fi
if $PKG_CONFIG --atleast-version $min_glib_version $pkg_config_args; then
:
else
no_glib=yes
fi
fi
if test x"$no_glib" = x ; then
GLIB_GENMARSHAL=`$PKG_CONFIG --variable=glib_genmarshal glib-2.0`
GOBJECT_QUERY=`$PKG_CONFIG --variable=gobject_query glib-2.0`
GLIB_MKENUMS=`$PKG_CONFIG --variable=glib_mkenums glib-2.0`
GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable=glib_compile_resources gio-2.0`
GLIB_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
AC_WIRESHARK_GCC_SYSTEM_INCLUDE(GLIB_CFLAGS)
GLIB_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
glib_config_major_version=`$PKG_CONFIG --modversion glib-2.0 | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
glib_config_minor_version=`$PKG_CONFIG --modversion glib-2.0 | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
glib_config_micro_version=`$PKG_CONFIG --modversion glib-2.0 | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
if test "x$enable_glibtest" = "xyes" ; then
ac_save_CFLAGS="$CFLAGS"
ac_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $GLIB_CFLAGS"
LIBS="$GLIB_LIBS $LIBS"
dnl
dnl Now check if the installed GLIB is sufficiently new. (Also sanity
dnl checks the results of pkg-config to some extent)
dnl
rm -f conf.glibtest
AC_TRY_RUN([
#include <glib.h>
#include <stdio.h>
#include <stdlib.h>
int
main ()
{
unsigned int major, minor, micro;
fclose (fopen ("conf.glibtest", "w"));
if (sscanf("$min_glib_version", "%u.%u.%u", &major, &minor, &micro) != 3) {
printf("%s, bad version string\n", "$min_glib_version");
exit(1);
}
if ((glib_major_version != $glib_config_major_version) ||
(glib_minor_version != $glib_config_minor_version) ||
(glib_micro_version != $glib_config_micro_version))
{
printf("\n*** 'pkg-config --modversion glib-2.0' returned %d.%d.%d, but GLIB (%d.%d.%d)\n",
$glib_config_major_version, $glib_config_minor_version, $glib_config_micro_version,
glib_major_version, glib_minor_version, glib_micro_version);
printf ("*** was found! If pkg-config was correct, then it is best\n");
printf ("*** to remove the old version of GLib. You may also be able to fix the error\n");
printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
printf("*** required on your system.\n");
printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
printf("*** to point to the correct configuration files\n");
}
else if ((glib_major_version != GLIB_MAJOR_VERSION) ||
(glib_minor_version != GLIB_MINOR_VERSION) ||
(glib_micro_version != GLIB_MICRO_VERSION))
{
printf("*** GLIB header files (version %d.%d.%d) do not match\n",
GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION);
printf("*** library (version %d.%d.%d)\n",
glib_major_version, glib_minor_version, glib_micro_version);
}
else
{
if ((glib_major_version > major) ||
((glib_major_version == major) && (glib_minor_version > minor)) ||
((glib_major_version == major) && (glib_minor_version == minor) && (glib_micro_version >= micro)))
{
return 0;
}
else
{
printf("\n*** An old version of GLIB (%u.%u.%u) was found.\n",
glib_major_version, glib_minor_version, glib_micro_version);
printf("*** You need a version of GLIB newer than %u.%u.%u. The latest version of\n",
major, minor, micro);
printf("*** GLIB is always available from ftp://ftp.gtk.org.\n");
printf("***\n");
printf("*** If you have already installed a sufficiently new version, this error\n");
printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
printf("*** being found. The easiest way to fix this is to remove the old version\n");
printf("*** of GLIB, but you can also set the PKG_CONFIG environment to point to the\n");
printf("*** correct copy of pkg-config. (In this case, you will have to\n");
printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
printf("*** so that the correct libraries are found at run-time))\n");
}
}
return 1;
}
],, no_glib=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
CFLAGS="$ac_save_CFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
if test "x$no_glib" = x ; then
AC_MSG_RESULT(yes (version $glib_config_major_version.$glib_config_minor_version.$glib_config_micro_version))
ifelse([$2], , :, [$2])
else
AC_MSG_RESULT(no)
if test "$PKG_CONFIG" = "no" ; then
echo "*** A new enough version of pkg-config was not found."
echo "*** See http://www.freedesktop.org/software/pkgconfig/"
else
if test -f conf.glibtest ; then
:
else
echo "*** Could not run GLIB test program, checking why..."
ac_save_CFLAGS="$CFLAGS"
ac_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $GLIB_CFLAGS"
LIBS="$LIBS $GLIB_LIBS"
AC_TRY_LINK([
#include <glib.h>
#include <stdio.h>
], [ return ((glib_major_version) || (glib_minor_version) || (glib_micro_version)); ],
[ echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding GLIB or finding the wrong"
echo "*** version of GLIB. If it is not finding GLIB, you'll need to set your"
echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
echo "*** to the installed location Also, make sure you have run ldconfig if that"
echo "*** is required on your system"
echo "***"
echo "*** If you have an old version installed, it is best to remove it, although"
echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
[ echo "*** The test program failed to compile or link. See the file config.log for the"
echo "*** exact error that occured. This usually means GLIB is incorrectly installed."])
CFLAGS="$ac_save_CFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
GLIB_CFLAGS=""
GLIB_LIBS=""
GLIB_GENMARSHAL=""
GOBJECT_QUERY=""
GLIB_MKENUMS=""
GLIB_COMPILE_RESOURCES=""
ifelse([$3], , :, [$3])
fi
AC_SUBST(GLIB_CFLAGS)
AC_SUBST(GLIB_LIBS)
AC_SUBST(GLIB_GENMARSHAL)
AC_SUBST(GOBJECT_QUERY)
AC_SUBST(GLIB_MKENUMS)
AC_SUBST(GLIB_COMPILE_RESOURCES)
rm -f conf.glibtest
])
# Configure paths for GTK+
# Owen Taylor 1997-2001
dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES,
dnl pass to pkg-config
dnl
AC_DEFUN([AM_PATH_GTK_2_0],
[dnl
dnl Get the cflags and libraries from pkg-config
dnl
AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program],
, enable_gtktest=yes)
pkg_config_module=gtk+-2.0
for module in . $4
do
# No modules to check for now
:
done
no_gtk=""
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
if test x$PKG_CONFIG != xno ; then
if pkg-config --atleast-pkgconfig-version 0.7 ; then
:
else
echo *** pkg-config too old; version 0.7 or better required.
no_gtk=yes
PKG_CONFIG=no
fi
else
no_gtk=yes
fi
min_gtk_version=ifelse([$1], ,2.0.0,$1)
AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version and < 3.0)
if test x$PKG_CONFIG != xno ; then
## don't try to run the test against uninstalled libtool libs
if $PKG_CONFIG --uninstalled $pkg_config_module; then
echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
enable_gtktest=no
fi
if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_module; then
:
else
no_gtk=yes
fi
fi
if test x"$no_gtk" = x ; then
GTK_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_module`
AC_WIRESHARK_GCC_SYSTEM_INCLUDE(GTK_CFLAGS)
GTK_LIBS=`$PKG_CONFIG --libs $pkg_config_module`
gtk_config_major_version=`$PKG_CONFIG --modversion $pkg_config_module | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
gtk_config_minor_version=`$PKG_CONFIG --modversion $pkg_config_module | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
gtk_config_micro_version=`$PKG_CONFIG --modversion $pkg_config_module | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
if test "x$enable_gtktest" = "xyes" ; then
ac_save_CFLAGS="$CFLAGS"
ac_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $GTK_CFLAGS"
LIBS="$GTK_LIBS $LIBS"
dnl
dnl Now check if the installed GTK+ is sufficiently new. (Also sanity
dnl checks the results of pkg-config to some extent)
dnl
rm -f conf.gtktest
AC_TRY_RUN([
#include <gtk/gtk.h>
#include <stdio.h>
#include <stdlib.h>
int
main ()
{
int major, minor, micro;
system ("touch conf.gtktest");
if (sscanf("$min_gtk_version", "%d.%d.%d", &major, &minor, &micro) != 3) {
printf("%s, bad version string\n", "$min_gtk_version");
exit(1);
}
if ((gtk_major_version != $gtk_config_major_version) ||
(gtk_minor_version != $gtk_config_minor_version) ||
(gtk_micro_version != $gtk_config_micro_version))
{
printf("\n*** 'pkg-config --modversion $pkg_config_module' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
$gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
gtk_major_version, gtk_minor_version, gtk_micro_version);
printf ("*** was found! If pkg-config was correct, then it is best\n");
printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
printf("*** required on your system.\n");
printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
printf("*** to point to the correct configuration files\n");
}
else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
(gtk_minor_version != GTK_MINOR_VERSION) ||
(gtk_micro_version != GTK_MICRO_VERSION))
{
printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
printf("*** library (version %d.%d.%d)\n",
gtk_major_version, gtk_minor_version, gtk_micro_version);
}
else
{
if ((gtk_major_version > major) ||
((gtk_major_version == major) && (gtk_minor_version > minor)) ||
((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
{
return 0;
}
else
{
printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
gtk_major_version, gtk_minor_version, gtk_micro_version);
printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
major, minor, micro);
printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
printf("***\n");
printf("*** If you have already installed a sufficiently new version, this error\n");
printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
printf("*** being found. The easiest way to fix this is to remove the old version\n");
printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
printf("*** correct copy of pkg-config. (In this case, you will have to\n");
printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
printf("*** so that the correct libraries are found at run-time))\n");
}
}
return 1;
}
],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
CFLAGS="$ac_save_CFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
if test "x$no_gtk" = x ; then
AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
ifelse([$2], , :, [$2])
else
AC_MSG_RESULT(no)
if test "$PKG_CONFIG" = "no" ; then
echo "*** A new enough version of pkg-config was not found."
echo "*** See http://pkgconfig.sourceforge.net"
else
if test -f conf.gtktest ; then
:
else
echo "*** Could not run GTK+ test program, checking why..."
ac_save_CFLAGS="$CFLAGS"
ac_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $GTK_CFLAGS"
LIBS="$LIBS $GTK_LIBS"
AC_TRY_LINK([
#include <gtk/gtk.h>
#include <stdio.h>
], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
[ echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
echo "*** to the installed location Also, make sure you have run ldconfig if that"
echo "*** is required on your system"
echo "***"
echo "*** If you have an old version installed, it is best to remove it, although"
echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
[ echo "*** The test program failed to compile or link. See the file config.log for the"
echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."])
CFLAGS="$ac_save_CFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
GTK_CFLAGS=""
GTK_LIBS=""
ifelse([$3], , :, [$3])
fi
AC_SUBST(GTK_CFLAGS)
AC_SUBST(GTK_LIBS)
rm -f conf.gtktest
])
# Configure paths for GTK+
# Owen Taylor 1997-2001
dnl AM_PATH_GTK_3_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES,
dnl pass to pkg-config
dnl
AC_DEFUN([AM_PATH_GTK_3_0],
[m4_warn([obsolete], [AM_PATH_GTK_3_0 is deprecated, use PKG_CHECK_MODULES([GTK], [gtk+-3.0]) instead])
dnl Get the cflags and libraries from pkg-config
dnl
AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program],
, enable_gtktest=yes)
min_gtk_version=ifelse([$1], [], [3.0.0], [$1])
pkg_config_args="gtk+-3.0 >= $min_gtk_version"
for module in . $4
do
case "$module" in
gthread)
pkg_config_args="$pkg_config_args gthread-2.0"
;;
esac
done
no_gtk=""
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
if test x$PKG_CONFIG != xno ; then
if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then
:
else
echo "*** pkg-config too old; version 0.7 or better required."
no_gtk=yes
PKG_CONFIG=no
fi
else
no_gtk=yes
fi
AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version)
if test x$PKG_CONFIG != xno ; then
## don't try to run the test against uninstalled libtool libs
if $PKG_CONFIG --uninstalled $pkg_config_args; then
echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
enable_gtktest=no
fi
if $PKG_CONFIG $pkg_config_args; then