]> Pileus Git - ~andy/gtk/commitdiff
Add a --enable-explicit-deps option to control whether dependency
authorOwen Taylor <otaylor@redhat.com>
Sat, 2 Mar 2002 23:29:02 +0000 (23:29 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Sat, 2 Mar 2002 23:29:02 +0000 (23:29 +0000)
Fri Mar  1 00:46:49 2002  Owen Taylor  <otaylor@redhat.com>

        * 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.

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
configure.in
gdk/Makefile.am
gtk/Makefile.am

index 50b1dfdeccb33250d8e63d39e766021cc34d911b..255978ee44a441d321a585e16b9e14e3c004e869 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+Fri Mar  1 00:46:49 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * 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  <tml@iki.fi>
 
        * configure.in: Output gdk-pixbuf/gdk_pixbuf.rc.
index 50b1dfdeccb33250d8e63d39e766021cc34d911b..255978ee44a441d321a585e16b9e14e3c004e869 100644 (file)
@@ -1,3 +1,24 @@
+Fri Mar  1 00:46:49 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * 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  <tml@iki.fi>
 
        * configure.in: Output gdk-pixbuf/gdk_pixbuf.rc.
index 50b1dfdeccb33250d8e63d39e766021cc34d911b..255978ee44a441d321a585e16b9e14e3c004e869 100644 (file)
@@ -1,3 +1,24 @@
+Fri Mar  1 00:46:49 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * 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  <tml@iki.fi>
 
        * configure.in: Output gdk-pixbuf/gdk_pixbuf.rc.
index 50b1dfdeccb33250d8e63d39e766021cc34d911b..255978ee44a441d321a585e16b9e14e3c004e869 100644 (file)
@@ -1,3 +1,24 @@
+Fri Mar  1 00:46:49 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * 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  <tml@iki.fi>
 
        * configure.in: Output gdk-pixbuf/gdk_pixbuf.rc.
index 50b1dfdeccb33250d8e63d39e766021cc34d911b..255978ee44a441d321a585e16b9e14e3c004e869 100644 (file)
@@ -1,3 +1,24 @@
+Fri Mar  1 00:46:49 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * 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  <tml@iki.fi>
 
        * configure.in: Output gdk-pixbuf/gdk_pixbuf.rc.
index 50b1dfdeccb33250d8e63d39e766021cc34d911b..255978ee44a441d321a585e16b9e14e3c004e869 100644 (file)
@@ -1,3 +1,24 @@
+Fri Mar  1 00:46:49 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * 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  <tml@iki.fi>
 
        * configure.in: Output gdk-pixbuf/gdk_pixbuf.rc.
index 50b1dfdeccb33250d8e63d39e766021cc34d911b..255978ee44a441d321a585e16b9e14e3c004e869 100644 (file)
@@ -1,3 +1,24 @@
+Fri Mar  1 00:46:49 2002  Owen Taylor  <otaylor@redhat.com>
+
+       * 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  <tml@iki.fi>
 
        * configure.in: Output gdk-pixbuf/gdk_pixbuf.rc.
index df49f5ad38efb58976a74cd216027660e6f665af..c960c9c4ff58e2a5e850c0ecae5a284493ecb8b0 100644 (file)
@@ -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 <freetype/freetype.h>
+#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)
index 3cdb3d8ed9f70db5157d3088f732db0901854b10..3accc9fd47de390857baf8b6c5f013d651770438 100644 (file)
@@ -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 :; \
index 8c52c0f85873e88ed3602a086b359d8da6b78fc5..13666a29cd941abfb11ac7d51113c2a74afc3617 100644 (file)
@@ -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