diff mbox

[libobjc] fix build with --disable-shared and .la files

Message ID 00959276-77a7-79c6-bbd9-b57037c31940@ubuntu.com
State New
Headers show

Commit Message

Matthias Klose Dec. 31, 2016, 5:01 a.m. UTC
This addresses PR libobjc/78698, fixing the build with --disable-shared and .la
files available.  As mentioned in the bug report I'm not aware of a configure
check to write a check using LIBTOOL_LINK and LIBTOOL_COMPILE, because these
commands (using libtool) are only created by running the configure file,
therefore checking for the presence of a .la file.

Tested with a libgc installation in /opt/gcc/include, /opt/gcc/lib32,
/opt/gcc/lib64 and configured with

--prefix=/opt/gcc7 --enable-languages=c,c++,objc --disable-shared
--enable-objc-gc=yes --with-multilib-list=m32,m64 --enable-checking=release
--disable-bootstrap --with-target-bdw-gc-include=/opt/gcc/include
--with-target-bdw-gc-lib=/opt/gcc/lib64,32=/opt/gcc/lib32

Ok for the trunk?

Matthias

libobjc/

2016-12-24  Matthias Klose  <doko@ubuntu.com>

        PR libobjc/78698
        * configure.ac: Use the libgc.la file when available.
        * configure: Regenerate.

gcc/

2016-12-31  Matthias Klose  <doko@ubuntu.com>

        * doc/install.texi: Allow default for --with-target-bdw-gc-include.

Comments

Andreas Schwab Dec. 31, 2016, 8:03 a.m. UTC | #1
On Dez 31 2016, Matthias Klose <doko@ubuntu.com> wrote:

> Index: gcc/doc/install.texi
> ===================================================================
> --- gcc/doc/install.texi	(revision 243987)
> +++ gcc/doc/install.texi	(working copy)
> @@ -2203,8 +2203,12 @@
>  The options @option{--with-target-bdw-gc-include} and
>  @option{--with-target-bdw-gc-lib} must always be specified together
>  for each multilib variant and they take precedence over
> -@option{--with-target-bdw-gc}.  If none of these options are
> -specified, the library is assumed in default locations.
> +@option{--with-target-bdw-gc}.  If @option{--with-target-bdw-gc-include}
> +is missing values for a multilib, then the value for the default
> +multilib is used. (e.g. @samp{--with-target-bdw-gc-include=/opt/bdw-gc/include}

The period before the paren should be removed.

Andreas.
diff mbox

Patch

libobjc/

2016-12-24  Matthias Klose  <doko@ubuntu.com>

        PR libobjc/78698
	* configure.ac: Use the libgc.la file when available.
	* configure: Regenerate.

gcc/

2016-12-31  Matthias Klose  <doko@ubuntu.com>

	* doc/install.texi: Allow default for --with-target-bdw-gc-include.

Index: gcc/doc/install.texi
===================================================================
--- gcc/doc/install.texi	(revision 243987)
+++ gcc/doc/install.texi	(working copy)
@@ -2203,8 +2203,12 @@ 
 The options @option{--with-target-bdw-gc-include} and
 @option{--with-target-bdw-gc-lib} must always be specified together
 for each multilib variant and they take precedence over
-@option{--with-target-bdw-gc}.  If none of these options are
-specified, the library is assumed in default locations.
+@option{--with-target-bdw-gc}.  If @option{--with-target-bdw-gc-include}
+is missing values for a multilib, then the value for the default
+multilib is used. (e.g. @samp{--with-target-bdw-gc-include=/opt/bdw-gc/include}
+@samp{--with-target-bdw-gc-lib=/opt/bdw-gc/lib64,32=/opt-bdw-gc/lib32}).
+If none of these options are specified, the library is assumed in
+default locations.
 @end table
 
 @html
Index: libobjc/configure.ac
===================================================================
--- libobjc/configure.ac	(revision 243987)
+++ libobjc/configure.ac	(working copy)
@@ -290,45 +293,55 @@ 
       AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-lib])
     fi
     BDW_GC_CFLAGS="-I$bdw_inc_dir"
-    BDW_GC_LIBS="-L$bdw_lib_dir -lgc"
+    if test -f $bdw_lib_dir/libgc.la; then
+      BDW_GC_LIBS="$bdw_lib_dir/libgc.la"
+    else
+      BDW_GC_LIBS="-L$bdw_lib_dir -lgc"
+    fi
     AC_MSG_RESULT([found])
   fi
 
-  AC_MSG_CHECKING([for system boehm-gc])
-  save_CFLAGS=$CFLAGS
-  save_LIBS=$LIBS
-  CFLAGS="$CFLAGS $BDW_GC_CFLAGS"
-  LIBS="$LIBS $BDW_GC_LIBS"
-  dnl the link test is not good enough for ARM32 multilib detection,
-  dnl first check to link, then to run
-  AC_LINK_IFELSE(
-    [AC_LANG_PROGRAM([#include <gc/gc.h>],[GC_init()])],
-    [
-      AC_RUN_IFELSE([AC_LANG_SOURCE([[
-        #include <gc/gc.h>
-        int main() {
-          GC_init();
-          return 0;
-        }
-        ]])],
-        [system_bdw_gc_found=yes],
-        [system_bdw_gc_found=no],
-        dnl assume no system boehm-gc for cross builds ...
-        [system_bdw_gc_found=no]
-      )
-    ],
-    [system_bdw_gc_found=no])
-  CFLAGS=$save_CFLAGS
-  LIBS=$save_LIBS
-  if test x$enable_objc_gc = xauto && test x$system_bdw_gc_found = xno; then
-    AC_MSG_WARN([system bdw-gc not found, not building libobjc_gc])
-    use_bdw_gc=no
-  elif test x$enable_objc_gc = xyes && test x$system_bdw_gc_found = xno; then
-    AC_MSG_ERROR([system bdw-gc required but not found])
-  else
+  case "$BDW_GC_LIBS" in
+  *libgc.la)
     use_bdw_gc=yes
-    AC_MSG_RESULT([found])
-  fi
+    ;;
+  *)
+    AC_MSG_CHECKING([for system boehm-gc])
+    save_CFLAGS=$CFLAGS
+    save_LIBS=$LIBS
+    CFLAGS="$CFLAGS $BDW_GC_CFLAGS"
+    LIBS="$LIBS $BDW_GC_LIBS"
+    dnl the link test is not good enough for ARM32 multilib detection,
+    dnl first check to link, then to run
+    AC_LINK_IFELSE(
+      [AC_LANG_PROGRAM([#include <gc/gc.h>],[GC_init()])],
+      [
+        AC_RUN_IFELSE([AC_LANG_SOURCE([[
+          #include <gc/gc.h>
+          int main() {
+            GC_init();
+            return 0;
+          }
+          ]])],
+          [system_bdw_gc_found=yes],
+          [system_bdw_gc_found=no],
+          dnl assume no system boehm-gc for cross builds ...
+          [system_bdw_gc_found=no]
+        )
+      ],
+      [system_bdw_gc_found=no])
+    CFLAGS=$save_CFLAGS
+    LIBS=$save_LIBS
+    if test x$enable_objc_gc = xauto && test x$system_bdw_gc_found = xno; then
+      AC_MSG_WARN([system bdw-gc not found, not building libobjc_gc])
+      use_bdw_gc=no
+    elif test x$enable_objc_gc = xyes && test x$system_bdw_gc_found = xno; then
+      AC_MSG_ERROR([system bdw-gc required but not found])
+    else
+      use_bdw_gc=yes
+      AC_MSG_RESULT([found])
+    fi
+  esac
 esac
 
 if test "$use_bdw_gc" = no; then