[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