From: Owen Taylor Date: Sat, 2 Mar 2002 23:29:02 +0000 (+0000) Subject: Add a --enable-explicit-deps option to control whether dependency X-Git-Url: http://pileus.org/git/?p=~andy%2Fgtk;a=commitdiff_plain;h=15f8a55fbac4ca6c79654fbd85e934cae90cba48 Add a --enable-explicit-deps option to control whether dependency Fri Mar 1 00:46:49 2002 Owen Taylor * configure.in: Add a --enable-explicit-deps option to control whether dependency libraries are written into .la files and .pc files. Default is auto: if static libraries are off and shlib dependencies are found, don't write deps. * gdk/Makefile.am gtk/Makefile.am sanitize-la.sh: Shell script used to strip dependencies out of .la files. * Makefile.am: Add a slightly modified distcheck rule that passes --enable-gtk-doc to the configure inside. (So that 'make dist' succeeds inside.) * configure.in: If pango was compiled with --disable-explicit-deps, then repeat the checks for X and freetype ourselves so we don't depend on linking to libraries that pango doesn't reveal in the link line. Add some more paranoia for whether what we detect ourselves matches what Pango backends we found. --- diff --git a/ChangeLog b/ChangeLog index 50b1dfdec..255978ee4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,24 @@ +Fri Mar 1 00:46:49 2002 Owen Taylor + + * configure.in: Add a --enable-explicit-deps option to control + whether dependency libraries are written into .la files and .pc + files. Default is auto: if static libraries are off and shlib + dependencies are found, don't write deps. + + * gdk/Makefile.am gtk/Makefile.am sanitize-la.sh: Shell script + used to strip dependencies out of .la files. + + * Makefile.am: Add a slightly modified distcheck rule that passes + --enable-gtk-doc to the configure inside. + (So that 'make dist' succeeds inside.) + + * configure.in: If pango was compiled with + --disable-explicit-deps, then repeat the checks for X and + freetype ourselves so we don't depend on linking to libraries + that pango doesn't reveal in the link line. Add some more paranoia + for whether what we detect ourselves matches what Pango backends + we found. + 2002-03-03 Tor Lillqvist * configure.in: Output gdk-pixbuf/gdk_pixbuf.rc. diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 50b1dfdec..255978ee4 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,24 @@ +Fri Mar 1 00:46:49 2002 Owen Taylor + + * configure.in: Add a --enable-explicit-deps option to control + whether dependency libraries are written into .la files and .pc + files. Default is auto: if static libraries are off and shlib + dependencies are found, don't write deps. + + * gdk/Makefile.am gtk/Makefile.am sanitize-la.sh: Shell script + used to strip dependencies out of .la files. + + * Makefile.am: Add a slightly modified distcheck rule that passes + --enable-gtk-doc to the configure inside. + (So that 'make dist' succeeds inside.) + + * configure.in: If pango was compiled with + --disable-explicit-deps, then repeat the checks for X and + freetype ourselves so we don't depend on linking to libraries + that pango doesn't reveal in the link line. Add some more paranoia + for whether what we detect ourselves matches what Pango backends + we found. + 2002-03-03 Tor Lillqvist * configure.in: Output gdk-pixbuf/gdk_pixbuf.rc. diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 50b1dfdec..255978ee4 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,24 @@ +Fri Mar 1 00:46:49 2002 Owen Taylor + + * configure.in: Add a --enable-explicit-deps option to control + whether dependency libraries are written into .la files and .pc + files. Default is auto: if static libraries are off and shlib + dependencies are found, don't write deps. + + * gdk/Makefile.am gtk/Makefile.am sanitize-la.sh: Shell script + used to strip dependencies out of .la files. + + * Makefile.am: Add a slightly modified distcheck rule that passes + --enable-gtk-doc to the configure inside. + (So that 'make dist' succeeds inside.) + + * configure.in: If pango was compiled with + --disable-explicit-deps, then repeat the checks for X and + freetype ourselves so we don't depend on linking to libraries + that pango doesn't reveal in the link line. Add some more paranoia + for whether what we detect ourselves matches what Pango backends + we found. + 2002-03-03 Tor Lillqvist * configure.in: Output gdk-pixbuf/gdk_pixbuf.rc. diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 50b1dfdec..255978ee4 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,24 @@ +Fri Mar 1 00:46:49 2002 Owen Taylor + + * configure.in: Add a --enable-explicit-deps option to control + whether dependency libraries are written into .la files and .pc + files. Default is auto: if static libraries are off and shlib + dependencies are found, don't write deps. + + * gdk/Makefile.am gtk/Makefile.am sanitize-la.sh: Shell script + used to strip dependencies out of .la files. + + * Makefile.am: Add a slightly modified distcheck rule that passes + --enable-gtk-doc to the configure inside. + (So that 'make dist' succeeds inside.) + + * configure.in: If pango was compiled with + --disable-explicit-deps, then repeat the checks for X and + freetype ourselves so we don't depend on linking to libraries + that pango doesn't reveal in the link line. Add some more paranoia + for whether what we detect ourselves matches what Pango backends + we found. + 2002-03-03 Tor Lillqvist * configure.in: Output gdk-pixbuf/gdk_pixbuf.rc. diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 50b1dfdec..255978ee4 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,24 @@ +Fri Mar 1 00:46:49 2002 Owen Taylor + + * configure.in: Add a --enable-explicit-deps option to control + whether dependency libraries are written into .la files and .pc + files. Default is auto: if static libraries are off and shlib + dependencies are found, don't write deps. + + * gdk/Makefile.am gtk/Makefile.am sanitize-la.sh: Shell script + used to strip dependencies out of .la files. + + * Makefile.am: Add a slightly modified distcheck rule that passes + --enable-gtk-doc to the configure inside. + (So that 'make dist' succeeds inside.) + + * configure.in: If pango was compiled with + --disable-explicit-deps, then repeat the checks for X and + freetype ourselves so we don't depend on linking to libraries + that pango doesn't reveal in the link line. Add some more paranoia + for whether what we detect ourselves matches what Pango backends + we found. + 2002-03-03 Tor Lillqvist * configure.in: Output gdk-pixbuf/gdk_pixbuf.rc. diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 50b1dfdec..255978ee4 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,24 @@ +Fri Mar 1 00:46:49 2002 Owen Taylor + + * configure.in: Add a --enable-explicit-deps option to control + whether dependency libraries are written into .la files and .pc + files. Default is auto: if static libraries are off and shlib + dependencies are found, don't write deps. + + * gdk/Makefile.am gtk/Makefile.am sanitize-la.sh: Shell script + used to strip dependencies out of .la files. + + * Makefile.am: Add a slightly modified distcheck rule that passes + --enable-gtk-doc to the configure inside. + (So that 'make dist' succeeds inside.) + + * configure.in: If pango was compiled with + --disable-explicit-deps, then repeat the checks for X and + freetype ourselves so we don't depend on linking to libraries + that pango doesn't reveal in the link line. Add some more paranoia + for whether what we detect ourselves matches what Pango backends + we found. + 2002-03-03 Tor Lillqvist * configure.in: Output gdk-pixbuf/gdk_pixbuf.rc. diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 50b1dfdec..255978ee4 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,24 @@ +Fri Mar 1 00:46:49 2002 Owen Taylor + + * configure.in: Add a --enable-explicit-deps option to control + whether dependency libraries are written into .la files and .pc + files. Default is auto: if static libraries are off and shlib + dependencies are found, don't write deps. + + * gdk/Makefile.am gtk/Makefile.am sanitize-la.sh: Shell script + used to strip dependencies out of .la files. + + * Makefile.am: Add a slightly modified distcheck rule that passes + --enable-gtk-doc to the configure inside. + (So that 'make dist' succeeds inside.) + + * configure.in: If pango was compiled with + --disable-explicit-deps, then repeat the checks for X and + freetype ourselves so we don't depend on linking to libraries + that pango doesn't reveal in the link line. Add some more paranoia + for whether what we detect ourselves matches what Pango backends + we found. + 2002-03-03 Tor Lillqvist * configure.in: Output gdk-pixbuf/gdk_pixbuf.rc. diff --git a/configure.in b/configure.in index df49f5ad3..c960c9c4f 100644 --- a/configure.in +++ b/configure.in @@ -275,6 +275,34 @@ else fi AC_SUBST(LIBTOOL_EXPORT_OPTIONS) +dnl ****************************************************** +dnl * See whether to include shared library dependencies * +dnl ****************************************************** + +AC_ARG_ENABLE(explicit-deps, + [ --enable-explicit-deps=[yes/no/auto] use explicit dependencies in .pc files [default=auto]], + enable_explicit_deps="$enableval", + enable_explicit_deps=auto) + +AC_MSG_CHECKING([Whether to write dependencies into .pc files]) +case $enable_explicit_deps in + auto) + deplib_check_method=`(./libtool --config; echo eval echo \\$deplib_check_method) | sh` + if test "X$deplib_check_method" == Xnone || test "x$enable_static" = xyes ; then + enable_explicit_deps=yes + else + enable_explicit_deps=no + fi + ;; + yes|no) + ;; + *) AC_MSG_ERROR([Value given to --enable-explicit-deps must be one of yes, no or auto]) + ;; +esac +AC_MSG_RESULT($enable_explicit_deps) + +AM_CONDITIONAL(DISABLE_EXPLICIT_DEPS, test $enable_explicit_deps = no) + # define a MAINT-like variable REBUILD which is set if Perl # and awk are found, so autogenerated sources can be rebuilt @@ -823,14 +851,59 @@ AC_SUBST(GDK_PIXBUF_DEP_CFLAGS) GDK_EXTRA_LIBS=$GDK_WLIBS GDK_EXTRA_CFLAGS= +FREETYPE_LIBS= +FREETYPE_CFLAGS= +if test "x$gdktarget" = "xlinux-fb" || test "x$gdktarget" = "x11" ; then + # + # Checks for FreeType + # + have_freetype=false + AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no) + if test "x$FREETYPE_CONFIG" != "xno" ; then + FREETYPE_CFLAGS=`$FREETYPE_CONFIG --cflags` + FREETYPE_LIBS=`$FREETYPE_CONFIG --libs` + + AC_CHECK_LIB(freetype, FT_New_Face, have_freetype=true + ,:,$FREETYPE_LIBS) + + if $have_freetype ; then + gtk_save_cppflags="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $FREETYPE_CFLAGS" + + AC_MSG_CHECKING([For sufficiently new FreeType (at least 2.0.1)]) + AC_TRY_COMPILE([ +#include +#include FT_ERRORS_H + ], + [(void)1;],:,have_freetype=yes) + if test x$have_freetype = xyes ; then + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + fi + + CPPFLAGS="$gtk_save_cppflags" + fi + fi + AC_SUBST(FREETYPE_LIBS) + AC_SUBST(FREETYPE_CFLAGS) +fi + if test "x$gdktarget" = "xx11"; then # We start off with the libraries from Pango + if $PKG_CONFIG --exists pangoxft ; then : ; else + AC_MSG_ERROR([pangox Pango backend is required for x11 target]) + fi + ## be sure we also have Pango built with xft support if $PKG_CONFIG --exists pangoxft ; then PANGO_PACKAGES="pangox pangoxft" have_xft=true AC_DEFINE(HAVE_XFT) + if x$have_freetype != xyes ; then + AC_MSG_ERROR([pangoxft Pango backend found but did not find freetype libraries]) + fi else PANGO_PACKAGES="pangox" have_xft=false @@ -838,10 +911,57 @@ if test "x$gdktarget" = "xx11"; then AM_CONDITIONAL(HAVE_XFT, $have_xft) + # + # If Pango included the shared library dependencies from X11 in + # the pkg-config output, then we use that (to avoid duplicates). + # but if they were omitted to avoid binary compatibility problems + # then we need to repeat the checks. + # x_libs="`$PKG_CONFIG --libs $PANGO_PACKAGES`" + case x_libs in + *-lX11*) pango_omitted_x_deps=no ;; + *) pango_omitted_x_deps=yes ;; + esac + x_cflags="`$PKG_CONFIG --cflags $PANGO_PACKAGES`" x_extra_libs= + if test $pango_omitted_x_deps = yes ; then + AC_PATH_XTRA + + if test x$no_x = xyes ; then + AC_MSG_ERROR([X development libraries not found]) + fi + + x_libs="$X_LIBS -lX11 $X_EXTRA_LIBS" + + # + # Checks for Xft/XRender + # + XFT_LIBS="" + XFT_CFLAGS="" + if test $have_xft = true ; then + gtk_save_cppflags="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $x_cflags" + have_xft=false + + AC_CHECK_LIB(Xrender, XRenderFindFormat, + [AC_CHECK_LIB(Xft, XftFontOpen, + [AC_CHECK_HEADER(X11/Xft/XftFreetype.h, + have_xft=true,:)], + :,-lXrender -lXext $x_libs $FREETYPE_LIBS)] + ,:,-lXext $x_libs) + + CPPFLAGS="$gtk_save_cppflags" + + if $have_xft ; then + x_libs="-lXft -lXrender -lXext $X_LIBS $FREETYPE_LIBS $X_EXTRA_LIBS" + else + AC_MSG_ERROR([pangoxft Pango backend found, but Xft not found]) + fi + fi + fi + ## Strip the .la files x_libs_for_checks="" @@ -987,7 +1107,11 @@ if test "x$gdktarget" = "xx11"; then fi GDK_EXTRA_CFLAGS= - GDK_EXTRA_LIBS="$x_extra_libs" + if test $pango_omitted_x_deps = yes ; then + GDK_EXTRA_LIBS="$x_extra_libs $x_libs $GDK_EXTRA_LIBS" + else + GDK_EXTRA_LIBS="$x_extra_libs $GDK_EXTRA_LIBS" + fi AM_CONDITIONAL(USE_X11, true) else @@ -1024,13 +1148,16 @@ AC_SUBST(GDK_PIXBUF_XLIB_DEP_LIBS) AC_SUBST(GDK_PIXBUF_XLIB_DEP_CFLAGS) if test "x$gdktarget" = "xlinux-fb"; then - AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no) - if test x$FREETYPE_CONFIG = xno ; then - AC_MSG_ERROR([*** freetype-config not found]) + if test x$have_freetype != xyes ; then + AC_MSG_ERROR([Using linux-fb backend but freetype was not found]) fi - FREETYPE_CFLAGS="`$FREETYPE_CONFIG --cflags`" - FREETYPE_LIBS="`$FREETYPE_CONFIG --libs`" + ft2_libs="`$PKG_CONFIG --libs pangoft2`" + case ft2_libs in + *-lfreetype*) pango_omitted_ft2_deps=no ;; + *) pango_omitted_ft2_deps=yes ;; + esac + CFLAGS="$CFLAGS $FREETYPE_CFLAGS" if test x$enable_shadowfb = xyes ; then @@ -1044,8 +1171,10 @@ if test "x$gdktarget" = "xlinux-fb"; then AM_CONDITIONAL(ENABLE_FB_MANAGER, false) fi - GDK_EXTRA_CFLAGS="$FREETYPE_CFLAGS" - GDK_EXTRA_LIBS="$FREETYPE_LIBS $GDK_EXTRA_LIBS" + GDK_EXTRA_CFLAGS="" + if test $pango_omitted_ft2_deps = yes ; then + GDK_EXTRA_LIBS="$FREETYPE_LIBS $GDK_EXTRA_LIBS" + fi AM_CONDITIONAL(USE_LINUX_FB, true) else @@ -1105,6 +1234,14 @@ GDK_PACKAGES=$PANGO_PACKAGES GDK_DEP_LIBS="$GDK_EXTRA_LIBS `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GDK_PACKAGES` $GDK_PIXBUF_EXTRA_LIBS" GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags $GDK_PIXBUF_PACKAGES $GDK_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS $GDK_EXTRA_CFLAGS" +# +# If we aren't writing explicit dependencies, then don't put the extra libraries we need +# into the pkg-config files +# +if test $enable_explicit_deps != yes ; then + GDK_EXTRA_LIBS= +fi + AC_SUBST(GDK_PACKAGES) AC_SUBST(GDK_EXTRA_LIBS) AC_SUBST(GDK_EXTRA_CFLAGS) diff --git a/gdk/Makefile.am b/gdk/Makefile.am index 3cdb3d8ed..3accc9fd4 100644 --- a/gdk/Makefile.am +++ b/gdk/Makefile.am @@ -172,7 +172,16 @@ EXTRA_HEADERS = # configexecincludedir = $(libdir)/gtk-2.0/include #configexecinclude_DATA = gdkconfig.h -install-exec-local: gdkconfig.h + +if DISABLE_EXPLICIT_DEPS +sanitize-la: + $(SHELL) $(top_srcdir)/sanitize-la.sh $(DESTDIR)$(libdir)/$(gdktargetlib) +else +sanitize-la: + @true +endif + +install-exec-local: gdkconfig.h sanitize-la $(mkinstalldirs) $(DESTDIR)$(configexecincludedir) file=$(DESTDIR)$(configexecincludedir)/gdkconfig.h; \ if test -r $$file && cmp -s gdkconfig.h $$file; then :; \ diff --git a/gtk/Makefile.am b/gtk/Makefile.am index 8c52c0f85..13666a29c 100644 --- a/gtk/Makefile.am +++ b/gtk/Makefile.am @@ -569,6 +569,11 @@ libgtk_target_ldflags = $(gtk_win32_symbols) -lwsock32 endif EXTRA_LTLIBRARIES = libgtk-x11-1.3.la libgtk-linux-fb-1.3.la libgtk-win32-1.3.la +if DISABLE_EXPLICIT_DEPS +install-exec-local: + $(SHELL) $(top_srcdir)/sanitize-la.sh $(DESTDIR)$(libdir)/$(gtktargetlib) +endif + # Install a RC file for the default GTK+ theme, and key themes install-data-local: install-ms-lib install-libtool-import-lib $(mkinstalldirs) $(DESTDIR)$(datadir)/themes/Default/gtk-2.0