[PATCH] Avoid -lm and -lpthread in libjava on darwin
Jack Howarth
howarth@bromo.med.uc.edu
Thu Aug 12 11:44:00 GMT 2010
Currently libjava built on darwin inappropriately passes -lm
and -lpthread to the linkage flags. These prevent libSystem from
properly linking last and thus interferes with the logic behind
libgcc_ext. The attached patch eliminates these undesired linkages
by not setting THREADLIBS or THREADSPEC on darwin and by replacing
the hardcoded assignment of '-lm' to libgcj_tools_la_LIBADD with
a new LIBJAVA_LDFLAGS_LIBMATH define (which is assigned with '-lm'
only when USING_DARWIN_CRT is undefined). Bootstrapped and regression
tested on x86_64-apple-darwin10. Okay for gcc trunk and gcc 4.5.2?
Jack
2010-08-12 Jack Howarth <howarth@bromo.med.uc.edu>
* libjava/configure.ac (THREADLIBS): Don't set on Darwin.
(THREADSPEC): Likwise.
* libjava/configure: Regenerate.
* libjava/Makefile.am: Define LIBJAVA_LDFLAGS_LIBMATH as
-lm only if USING_DARWIN_CRT undefined.
(libgcj_tools_la_LIBADD): Replace '-lm' with $(LIBJAVA_LDFLAGS_LIBMATH).
* libjava/Makefile.in: Regenerate.
Index: libjava/configure.ac
===================================================================
--- libjava/configure.ac (revision 163182)
+++ libjava/configure.ac (working copy)
@@ -1077,6 +1077,10 @@
THREADLIBS='-lpthread -lthread'
THREADSPEC='-lpthread -lthread'
;;
+ *-*-darwin*)
+ # Don't set THREADLIBS or THREADSPEC as Darwin already
+ # provides pthread via libSystem.
+ ;;
*)
THREADLIBS=-lpthread
THREADSPEC=-lpthread
Index: libjava/Makefile.am
===================================================================
--- libjava/Makefile.am (revision 163182)
+++ libjava/Makefile.am (working copy)
@@ -465,6 +465,9 @@
if USING_DARWIN_CRT
libgcj_la_SOURCES += darwin.cc
+LIBJAVA_LDFLAGS_LIBMATH =
+else
+LIBJAVA_LDFLAGS_LIBMATH = -lm
endif
if USING_POSIX_THREADS
@@ -544,7 +547,9 @@
-fsource-filename=$(here)/classpath/tools/all-classes.lst
libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
-version-info `grep -v '^\#' $(srcdir)/libtool-version` \
- $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBJAVA_LDFLAGS_NOUNDEF) -lm
+ $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBJAVA_LDFLAGS_NOUNDEF) \
+ $(LIBJAVA_LDFLAGS_LIBMATH)
+
libgcj_tools_la_LIBADD = libgcj.la
libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec \
$(libgcj_tools_la_version_dep)
More information about the Gcc-patches
mailing list