From patchwork Tue Dec 11 22:00:18 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 205312 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 040B82C0087 for ; Wed, 12 Dec 2012 09:01:18 +1100 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1355868079; h=Comment: DomainKey-Signature:Received:Received:Received:Received: MIME-Version:Received:Received:Date:Message-ID:Subject:From:To: Cc:Content-Type:Mailing-List:Precedence:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:Sender:Delivered-To; bh=KAB8NgE iAe8KxFu49uEIWPlXjZw=; b=QIGRwGhDeodCUdLvExvJ0mybIXNFcJKRNqimUdp 74554s6sSb56WGdU8WTTQ7NMi2gEb4DDiJj03+4ckuZS05jIsBx8mzW1Pa/FMdTy sL6J7dHQxfDf71LUVn1fTOXyOMvImd/5lzz0y+v/ypyFnBJMikWgvRtG4MmCrzW5 1V/I= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:MIME-Version:Received:Received:Date:Message-ID:Subject:From:To:Cc:Content-Type:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=V6vK0qwIp85Cv09mr3XY2sdiPqBT71JChS1SOy19pc6daPMNPioGcgEK+7zMri Z+Xl9cHABkeqmyNhMtWhKLx/Zlg2Da0IYOVgPQbAPTpBRvFckO8hup+s7s4BXA25 lZeS/Nh7C+d1ka8sUSjJDD8ucwT6tOUz1T44BM649rVBk=; Received: (qmail 20293 invoked by alias); 11 Dec 2012 22:00:26 -0000 Received: (qmail 20271 invoked by uid 22791); 11 Dec 2012 22:00:25 -0000 X-SWARE-Spam-Status: No, hits=-3.0 required=5.0 tests=AWL, BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, KHOP_RCVD_TRUST, RCVD_IN_DNSWL_LOW, RCVD_IN_HOSTKARMA_YE, TW_GC, TW_IB X-Spam-Check-By: sourceware.org Received: from mail-qc0-f175.google.com (HELO mail-qc0-f175.google.com) (209.85.216.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 11 Dec 2012 22:00:19 +0000 Received: by mail-qc0-f175.google.com with SMTP id j3so2510302qcs.20 for ; Tue, 11 Dec 2012 14:00:18 -0800 (PST) MIME-Version: 1.0 Received: by 10.224.191.137 with SMTP id dm9mr36396278qab.40.1355263218490; Tue, 11 Dec 2012 14:00:18 -0800 (PST) Received: by 10.49.12.210 with HTTP; Tue, 11 Dec 2012 14:00:18 -0800 (PST) Date: Tue, 11 Dec 2012 14:00:18 -0800 Message-ID: Subject: Use libstdc++-raw-cxx.m4 in libjava From: "H.J. Lu" To: Paolo Bonzini Cc: DJ Delorie , neroden@gcc.gnu.org, Alexandre Oliva , Ralf Wildenhues , gcc-patches@gcc.gnu.org X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org On Tue, Dec 11, 2012 at 6:36 AM, Paolo Bonzini wrote: >>>> AM_CXXFLAGS = -Wall -W -Wno-unused-parameter -Wwrite-strings -pedantic -Wno-long-long -fPIC -fno-builtin -fno-exceptions -fomit-frame-pointer -funwind-tables -fvisibility=hidden -Wno-variadic-macros -Wno-c99-extensions >>>> +## We require libstdc++-v3 to be in the same build tree. >>>> +AM_CXXFLAGS += -I../../libstdc++-v3/include \ >>>> + -I../../libstdc++-v3/include/$(target_noncanonical) \ >>>> + -I$(srcdir)/../../libstdc++-v3/libsupc++ > > As a followup, please bring back the possibility to build libsanitizer > standalone, also wrapping the chooice of flags to link to libstdc++-v3 > in a new config/libstdc++-raw-cxx.m4 file. > > Bonus points for using this macro elsewhere in the tree. > This patch adds LIBSTDCXX_RAW_CXX_LDFLAGS and use it in libjava and libsanitizer which set raw_cxx=true. I am testing it on Linux/x86-64. OK to install if it works? Thanks. H.J. --- cat /tmp/gcc-raw-cxx.patch config/ 2012-12-11 H.J. Lu * libstdc++-raw-cxx.m4 (GCC_LIBSTDCXX_RAW_CXX_FLAGS): Also AC_SUBST LIBSTDCXX_RAW_CXX_LDFLAGS. libjava/ 2012-12-11 H.J. Lu * Makefile.am (lib_gnu_awt_xlib_la_CPPFLAGS): Use $(LIBSTDCXX_RAW_CXX_CXXLAGS). (lib_gnu_awt_xlib_la_LDFLAGS): Use $(LIBSTDCXX_RAW_CXX_LDLAGS). * configure.ac (GCC_LIBSTDCXX_RAW_CXX_FLAGS): New. * aclocal.m4: Regenerated. * Makefile.in:Likewise. * configure: Likewise. libsanitizer/ 2012-12-11 H.J. Lu * asan/Makefile.am (libasan_la_LIBADD): Use $(LIBSTDCXX_RAW_CXX_LDLAGS). * tsan/Makefile.am (libtsan_la_LIBADD): Likewise. * Makefile.in: Regenerated. * configure: Likewise. * asan/Makefile.in: Likewise. * interception/Makefile.in: Likewise. * sanitizer_common/Makefile.in: Likewise. * tsan/Makefile.in: Likewise. $(top_builddir)/sanitizer_common/libsanitizer_common.la $(top_builddir)/interception/libinterception.la $(LIBSTDCXX_RAW_CXX_LDLAGS) libtsan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -lpthread -ldl MAKEOVERRIDES= diff --git a/config/libstdc++-raw-cxx.m4 b/config/libstdc++-raw-cxx.m4 index 20124e3..8052c2f 100644 --- a/config/libstdc++-raw-cxx.m4 +++ b/config/libstdc++-raw-cxx.m4 @@ -14,13 +14,17 @@ # along with GCC; see the file COPYING3. If not see # . -# Define compiler flags, LIBSTDCXX_RAW_CXX_CXXFLAGS, for libstdc++-v3 -# header files to compile libraries in C++ with raw_cxx=true. +# Define flags, LIBSTDCXX_RAW_CXX_CXXFLAGS and # LIBSTDCXX_RAW_CXX_LDFLAGS, +# for libstdc++-v3 header files to compile and link libraries in C++ with +# raw_cxx=true. AC_DEFUN([GCC_LIBSTDCXX_RAW_CXX_FLAGS], [ AC_REQUIRE([ACX_NONCANONICAL_TARGET]) LIBSTDCXX_RAW_CXX_CXXFLAGS="\ -I\$(top_builddir)/../libstdc++-v3/include \ -I\$(top_builddir)/../libstdc++-v3/include/\$(target_noncanonical) \ -I\$(top_srcdir)/../libstdc++-v3/libsupc++" + LIBSTDCXX_RAW_CXX_LDFLAGS="\ + -I\$(top_builddir)/../libstdc++-v3/src/libstdc++.la" AC_SUBST(LIBSTDCXX_RAW_CXX_CXXFLAGS) + AC_SUBST(LIBSTDCXX_RAW_CXX_LDFLAGS) ]) diff --git a/libjava/Makefile.am b/libjava/Makefile.am index 1b71962..c6c84e4 100644 --- a/libjava/Makefile.am +++ b/libjava/Makefile.am @@ -590,14 +590,11 @@ lib_gnu_awt_xlib_la_DEPENDENCIES = libgcj-$(gcc_version).jar \ if BUILD_SUBLIBS lib_gnu_awt_xlib_la_DEPENDENCIES += libgcj-noncore.la endif -## We require libstdc++-v3 to be in the same build tree. lib_gnu_awt_xlib_la_CPPFLAGS = \ $(AM_CPPFLAGS) \ - -I../libstdc++-v3/include \ - -I../libstdc++-v3/include/$(target_noncanonical) \ - -I$(srcdir)/../libstdc++-v3/libsupc++ + $(LIBSTDCXX_RAW_CXX_CXXFLAGS) ## The mysterious backslash in the grep pattern is consumed by make. -lib_gnu_awt_xlib_la_LDFLAGS = ../libstdc++-v3/src/libstdc++.la \ +lib_gnu_awt_xlib_la_LDFLAGS = $(LIBSTDCXX_RAW_CXX_LDLAGS) \ @X_PRE_LIBS@ @X_LIBS@ -lX11 @X_EXTRA_LIBS@ \ -rpath $(toolexeclibdir) $(LIBJAVA_LDFLAGS_NOUNDEF) \ -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LIBGCJ_LD_SYMBOLIC) diff --git a/libjava/configure.ac b/libjava/configure.ac index 5fa75c6..ba6b363 100644 --- a/libjava/configure.ac +++ b/libjava/configure.ac @@ -24,6 +24,8 @@ _GCC_TOPLEV_NONCANONICAL_TARGET AC_SUBST(target_noncanonical) +GCC_LIBSTDCXX_RAW_CXX_FLAGS + # This works around the fact that libtool configuration may change LD # for this particular configuration, but some shells, instead of # keeping the changes in LD private, export them just because LD is diff --git a/libsanitizer/asan/Makefile.am b/libsanitizer/asan/Makefile.am index 5852c35..95fd75e 100644 --- a/libsanitizer/asan/Makefile.am +++ b/libsanitizer/asan/Makefile.am @@ -36,10 +36,11 @@ asan_files = \ libasan_la_SOURCES = $(asan_files) if USING_MAC_INTERPOSE libasan_la_SOURCES += dynamic/asan_interceptors_dynamic.cc -libasan_la_LIBADD = $(top_builddir)/sanitizer_common/libsanitizer_common.la $(top_builddir)/../libstdc++-v3/src/libstdc++.la +libasan_la_LIBADD = $(top_builddir)/sanitizer_common/libsanitizer_common.la else -libasan_la_LIBADD = $(top_builddir)/sanitizer_common/libsanitizer_common.la $(top_builddir)/interception/libinterception.la $(top_builddir)/../libstdc++-v3/src/libstdc++.la +libasan_la_LIBADD = $(top_builddir)/sanitizer_common/libsanitizer_common.la $(top_builddir)/interception/libinterception.la endif +libasan_la_LIBADD += $(LIBSTDCXX_RAW_CXX_LDLAGS) libasan_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -lpthread -ldl diff --git a/libsanitizer/tsan/Makefile.am b/libsanitizer/tsan/Makefile.am index a4e3e51..a92ab34 100644 --- a/libsanitizer/tsan/Makefile.am +++ b/libsanitizer/tsan/Makefile.am @@ -34,7 +34,7 @@ tsan_files = \ tsan_symbolize_addr2line_linux.cc libtsan_la_SOURCES = $(tsan_files) -libtsan_la_LIBADD = $(top_builddir)/sanitizer_common/libsanitizer_common.la $(top_builddir)/interception/libinterception.la $(top_builddir)/../libstdc++-v3/src/libstdc++.la +libtsan_la_LIBADD =