From patchwork Thu Aug 12 11:19:36 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Avoid -lm and -lpthread in libjava on darwin Date: Thu, 12 Aug 2010 01:19:36 -0000 From: Jack Howarth X-Patchwork-Id: 61564 Message-Id: <20100812111936.GA23630@bromo.med.uc.edu> To: gcc-patches@gcc.gnu.org Cc: iains@gcc.gnu.org, mikestump@comcast.net 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 * 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)