configure.ac: Support multiple GDK backends in one build

This commit is contained in:
Kristian Høgsberg 2011-01-03 10:45:37 -05:00
parent ae7e5fc2d1
commit cacee7e7a3
11 changed files with 107 additions and 72 deletions

View File

@ -71,8 +71,8 @@ gtk+-*-3.0-uninstalled.pc: gtk+-3.0-uninstalled.pc
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = gdk-3.0.pc gtk+-3.0.pc gail-3.0.pc
pkgconfig_DATA += $(patsubst %,gtk+-%-3.0.pc,@gdktarget@)
pkgconfig_DATA += $(patsubst %,gdk-%-3.0.pc,@gdktarget@)
pkgconfig_DATA += ${GDK_BACKENDS:%=gtk+-%-3.0.pc}
pkgconfig_DATA += ${GDK_BACKENDS:%=gdk-%-3.0.pc}
if OS_UNIX
pkgconfig_DATA += gtk+-unix-print-3.0.pc

View File

@ -17,9 +17,15 @@ XIDS = 101 102 103 104 105 106 107 197 199 211 223 227 293 307 308 309 310 311 \
1008 1009 4703 4721 4723 4729 4733 4751 9973 9974 9975 9976 9977 9978 9979 \
9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9992 9993 9994 \
9995 9996 9997 9998 9999
if USE_X11
SKIP_GDKTARGET = \
test "$(gdktarget)" != "x11" \
&& echo "Gtk+Tests:INFO: Skipping GUI tests for non-X11 target."
false
else
SKIP_GDKTARGET = \
echo "Gtk+Tests:INFO: Skipping GUI tests for non-X11 target."
endif
XVFB_START = \
${XVFB} -help 2>/dev/null 1>&2 \
&& XID=`for id in $(XIDS) ; do test -e /tmp/.X$$id-lock || { echo $$id; exit 0; }; done; exit 1` \

View File

@ -85,7 +85,7 @@ LDFLAGS="-L/devel/dist/${ARCH}/${LIBPNG}/lib \
LIBS=-lintl \
CFLAGS=-O2 \
./configure \
--with-gdktarget=win32 \
--enable-win32-backend \
--disable-gdiplus \
--with-included-immodules \
--without-libjasper \

View File

@ -255,22 +255,57 @@ AC_ARG_ENABLE(xinput,
[support XInput extension if available [default=yes]])],,
[enable_xinput="yes"])
if test "$platform_win32" = yes; then
gdktarget=win32
else
gdktarget=x11
AC_ARG_ENABLE(x11-backend,
[AC_HELP_STRING([--enable-x11-backend],
[enable the X11 gdk backend])],
[backend_set=yes])
AC_ARG_ENABLE(win32-backend,
[AC_HELP_STRING([--enable-win32-backend],
[enable the Win32 gdk backend])],
[backend_set=yes])
AC_ARG_ENABLE(quartz-backend,
[AC_HELP_STRING([--enable-quartz-backend],
[enable the quartz gdk backend])],
[backend_set=yes])
if test -z "$backend_set"; then
if test "$platform_win32" = yes; then
enable_win32_backend=yes
else
enable_x11_backend=yes
fi
fi
AC_ARG_WITH(gdktarget,
AC_HELP_STRING([--with-gdktarget=@<:@x11/win32/quartz@:>@],
[select non-default GDK target]),
gdktarget=$with_gdktarget)
cairo_backends=
GDK_BACKENDS=
AC_SUBST(gdktarget)
case $gdktarget in
x11|win32|quartz) ;;
*) AC_MSG_ERROR([Invalid target for GDK: use x11, quartz or win32.]);;
esac
if test "x$enable_x11_backend" == xyes; then
# GDK calls the xlib backend "x11," cairo calls it "xlib." Other
# backend names are identical.
cairo_backends="$cairo_backends cairo-xlib"
GDK_BACKENDS="$GDK_BACKENDS x11"
# Pull in gio-unix for GDesktopAppInfo usage, see at least
# gdkapplaunchcontext-x11.c
GIO_PACKAGE=gio-unix-2.0
fi
if test "x$enable_win32_backend" == xyes; then
cairo_backends="$cairo_backends cairo-win32"
GDK_BACKENDS="$GDK_BACKENDS win32"
GIO_PACKAGE=gio-2.0
fi
if test "x$enable_quartz_backend" == xyes; then
cairo_backends="$cairo_backends cairo-quartz"
GDK_BACKENDS="$GDK_BACKENDS quartz"
GIO_PACKAGE=gio-2.0
fi
AC_SUBST(GDK_BACKENDS)
if test -z "$GDK_BACKENDS"; then
AC_MSG_ERROR([No GDK backends selected.])
fi
if test "x$enable_debug" = "xyes"; then
test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
@ -363,18 +398,7 @@ PKG_CHECK_MODULES(BASE_DEPENDENCIES,
cairo-gobject >= cairo_required_version dnl
gdk-pixbuf-2.0 >= gdk_pixbuf_required_version])
## In addition to checking that cairo is present, we also need to
## check that the correct cairo backend is there. E.g. if the GDK
## target is win32 we need the cairo-win32 backend and so on.
cairo_backend=$gdktarget
# GDK calls the xlib backend "x11," cairo calls it "xlib." Other
# backend names are identical.
if test "x$cairo_backend" = "xx11"; then
cairo_backend=xlib
fi
PKG_CHECK_MODULES(CAIRO_BACKEND,
[cairo-$cairo_backend >= cairo_required_version])
PKG_CHECK_MODULES(CAIRO_BACKEND, [$cairo_backends])
if test "$os_win32" != yes; then
# libtool option to control which symbols are exported
@ -744,11 +768,11 @@ else
fi
all_immodules="am-et,cedilla,cyrillic-translit"
if test "$gdktarget" = "win32"; then
if test "x$enable_win32_backend" == xyes; then
all_immodules="${all_immodules},ime"
fi
all_immodules="${all_immodules},inuktitut,ipa,multipress,thai,ti-er,ti-et,viqr"
if test "$gdktarget" = "x11"; then
if test "x$enable_x11_backend" == xyes; then
all_immodules="${all_immodules},xim"
fi
@ -842,7 +866,7 @@ GDK_EXTRA_CFLAGS=
GTK_DEP_PACKAGES_FOR_X=
GTK_DEP_LIBS_FOR_X=
if test "x$gdktarget" = "xx11"; then
if test "x$enable_x11_backend" == xyes; then
X_PACKAGES=fontconfig
#
@ -1101,14 +1125,15 @@ else
AM_CONDITIONAL(HAVE_X11R6, false)
fi
if test "x$gdktarget" = "xwin32"; then
if test "x$enable_win32_backend" == xyes; then
GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid"
AM_CONDITIONAL(USE_WIN32, true)
else
AM_CONDITIONAL(USE_WIN32, false)
fi
if test "x$gdktarget" = "xquartz"; then
if test "x$enable_quartz_backend" == xyes; then
GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -framework Cocoa"
AM_CONDITIONAL(USE_QUARTZ, true)
else
@ -1117,7 +1142,7 @@ fi
# Check for Pango flags
if test "x$gdktarget" = "xwin32"; then
if test "x$enable_win32_backend" == xyes; then
PANGO_PACKAGES="pangowin32 pangocairo"
else
PANGO_PACKAGES="pango pangocairo"
@ -1152,12 +1177,7 @@ fi
CFLAGS="$saved_cflags"
LDFLAGS="$saved_ldflags"
# Pull in gio-unix for GDesktopAppInfo usage, see at least gdkapplaunchcontext-x11.c
if test "x$gdktarget" = "xx11"; then
GDK_PACKAGES="$PANGO_PACKAGES gio-unix-2.0 $X_PACKAGES gdk-pixbuf-2.0 cairo-$cairo_backend cairo-gobject"
else
GDK_PACKAGES="$PANGO_PACKAGES gio-2.0 gdk-pixbuf-2.0 cairo-$cairo_backend cairo-gobject"
fi
GDK_PACKAGES="$PANGO_PACKAGES $GIO_PACKAGE $X_PACKAGES gdk-pixbuf-2.0 $cairo_backends cairo-gobject"
GDK_DEP_LIBS="$GDK_EXTRA_LIBS `$PKG_CONFIG --libs $GDK_PACKAGES`"
GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PACKAGES` $GDK_EXTRA_CFLAGS"
@ -1207,7 +1227,7 @@ else
fi
GTK_PACKAGES="atk cairo cairo-gobject gdk-pixbuf-2.0 gio-2.0"
if test "x$gdktarget" = "xx11"; then
if test "x$enable_x11_backend" == xyes; then
GTK_PACKAGES="$GTK_PACKAGES pangoft2"
fi
GTK_EXTRA_LIBS=
@ -1524,18 +1544,18 @@ _______EOF
fi
],[
gdk_windowing=''
if expr "$gdktarget" : ".*x11.*" > /dev/null ; then
gdk_windowing='$gdk_windowing
#define GDK_WINDOWING_X11'
if test "x$enable_x11_backend" == xyes; then
gdk_windowing="\$gdk_windowing
#define GDK_WINDOWING_X11"
fi
if expr "$gdktarget" : ".*win32.*" > /dev/null ; then
gdk_windowing='$gdk_windowing
if test "x$enable_win32_backend" == xyes; then
gdk_windowing="\$gdk_windowing
#define GDK_NATIVE_WINDOW_POINTER
#define GDK_WINDOWING_WIN32'
#define GDK_WINDOWING_WIN32"
fi
if expr "$gdktarget" : ".*quartz.*" > /dev/null ; then
gdk_windowing='$gdk_windowing
#define GDK_WINDOWING_QUARTZ'
if test "x$enable_quartz_backend" == xyes; then
gdk_windowing="\$gdk_windowing
#define GDK_WINDOWING_QUARTZ"
fi
])
@ -1626,4 +1646,4 @@ perf/Makefile
AC_OUTPUT
echo "configuration:
target: $gdktarget"
backends: $GDK_BACKENDS"

View File

@ -360,9 +360,14 @@ How to compile GTK+ itself
<group>
<arg>--enable-packagekit</arg>
<arg>--disable-packagekit</arg>
</group>
<group>
<arg>--with-gdktarget=[x11/win32/quartz]</arg>
</group>
<group>
<arg>--enable-x11-backend</arg>
<arg>--disable-x11-backend</arg>
<arg>--enable-win32-backend</arg>
<arg>--disable-win32-backend</arg>
<arg>--enable-quartz-backend</arg>
<arg>--disable-quartz-backend</arg>
</group>
<group>
<arg>--enable-introspection=[no/auto/yes]</arg>
@ -545,13 +550,20 @@ How to compile GTK+ itself
</formalpara>
<formalpara>
<title><systemitem>--with-gdktarget</systemitem></title>
<title><systemitem>--enable-x11-backend</systemitem>,
<systemitem>--disable-x11-backend</systemitem>,
<systemitem>--enable-win32-backend</systemitem>,
<systemitem>--disable-win32-backend</systemitem>,
<systemitem>--enable-quartz-backend</systemitem>,
and <systemitem>--disable-quartz-backend</systemitem></title>
<para>
Toggles between the supported backends for GDK.
The default is x11, unless the platform is Windows, in which
case the default is win32. Other supported backends are
the quartz backend for OS X.
Enables specific backends for GDK. If none of these options
are given, the x11 backend will be enabled by default,
unless the platform is Windows, in which case the default is
win32. If any backend is explicitly enabled or disabled, no
other platform will be enabled automatically. Other
supported backends are the quartz backend for OS X.
</para>
</formalpara>
<formalpara>

View File

@ -2,7 +2,7 @@ prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
target=@gdktarget@
targets=@GDK_BACKENDS@
Name: GDK
Description: GTK+ Drawing Kit

View File

@ -8,7 +8,8 @@ INTROSPECTION_COMPILER_ARGS = \
--includedir=$(srcdir) \
--includedir=.
SUBDIRS = $(gdktarget) . tests
SUBDIRS = $(GDK_BACKENDS) . tests
DIST_SUBDIRS = win32 x11 quartz tests
CLEANFILES =
@ -38,8 +39,6 @@ INCLUDES = \
$(GTK_DEBUG_FLAGS) \
$(GDK_DEP_CFLAGS)
gtarget=$(gdktarget)
if PLATFORM_WIN32
no_undefined = -no-undefined
endif

View File

@ -1,10 +1,10 @@
target=@gdktarget@
targets=@GDK_BACKENDS@
gtk_binary_version=@GTK_BINARY_VERSION@
Name: GTK+ Uninstalled
Description: GTK+ Graphical UI Library (${target} target), Not Installed
Version: @VERSION@
Requires: gdk-${target}-@GTK_API_VERSION@-uninstalled @GTK_PACKAGES@
Libs: ${pc_top_builddir}/${pcfiledir}/gtk/libgtk-${target}-@GTK_API_VERSION@.la @GTK_EXTRA_LIBS@
Requires: gdk-@GTK_API_VERSION@-uninstalled @GTK_PACKAGES@
Libs: ${pc_top_builddir}/${pcfiledir}/gtk/libgtk-@GTK_API_VERSION@.la @GTK_EXTRA_LIBS@
Cflags: -I${pc_top_builddir}/${pcfiledir}/@srcdir@ -I${pc_top_builddir}/${pcfiledir} @GTK_EXTRA_CFLAGS@

View File

@ -2,7 +2,7 @@ prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
target=@gdktarget@
targets=@GDK_BACKENDS@
gtk_binary_version=@GTK_BINARY_VERSION@
gtk_host=@host@

View File

@ -2,7 +2,7 @@ prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
target=@gdktarget@
targets=@GDK_BACKENDS@
gtk_binary_version=@GTK_BINARY_VERSION@
gtk_host=@host@

View File

@ -57,8 +57,6 @@ INCLUDES = \
$(gtk_clipboard_dnd_c_sources_CFLAGS) \
$(INCLUDED_IMMODULE_DEFINE)
gtarget=$(gdktarget)
if PLATFORM_WIN32
no_undefined = -no-undefined
endif