This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[patch] [libobjc] fix build with --disable-shared and .la files
- From: Matthias Klose <doko at ubuntu dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>, Rainer Orth <ro at CeBiTec dot Uni-Bielefeld dot DE>, Andrew Pinski <pinskia at gmail dot com>
- Date: Sat, 31 Dec 2016 06:01:17 +0100
- Subject: [patch] [libobjc] fix build with --disable-shared and .la files
- Authentication-results: sourceware.org; auth=none
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.
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