From patchwork Fri Oct 27 20:32:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Thomas Schwinge X-Patchwork-Id: 159150 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:d641:0:b0:403:3b70:6f57 with SMTP id cy1csp867967vqb; Fri, 27 Oct 2023 13:33:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHADztUxchkJ04MdbUyduaaWGEq7bFDyCgtIrRgtzOsnCnbXpOSxVjMBhLt9tRo2xhHsg8U X-Received: by 2002:ad4:5aaf:0:b0:66d:8752:b6cf with SMTP id u15-20020ad45aaf000000b0066d8752b6cfmr2061433qvg.26.1698438788346; Fri, 27 Oct 2023 13:33:08 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1698438788; cv=pass; d=google.com; s=arc-20160816; b=pdKc604qcKo9YOjvjUNo33sODvRihDcaSIscJ11yTpBgdtYhWyN1ldTGzX3drTcf8D 8Uqvb3pWggIWzeGsuSsqAuXwu7MaaZ+KLbCcRJmHL5wwZrNEHyGKTe9WoAJjQ6kmB4n6 zhdO/Wm63GjYt7QGTxMlHbgFsupm4/HPVL68gFXb90IEU/7MkwF1bVeAp5bSGw9pSZV/ FTmi16/5vIHy+D+T9Ebwrn+JUFMMiXxqTR9btWoaguG9qAovN64bJCNjPy/cziKZ12mS FqTnkRiEe16byMvDplAIZKea+kj5wdlyu/X//fAa/NbuRXfh36lPCOPJWPtqHmF0yebR 3tmw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mime-version:message-id:date :user-agent:references:in-reply-to:subject:cc:to:from:ironport-sdr :arc-filter:dmarc-filter:delivered-to; bh=wg6jDJRtYo+Aox/YWk9pZ/qr4G85/x70ib3NUySoW8s=; fh=PIc8+pd/PONssqqIEWeD4AtXadbkXQYz0jxXnraOBpE=; b=bm9QJJy70YSH9luaibhXICWYXTAZilP9G2D9FCXzmsnVHEcsCWB54IkNF+Cq1904W1 KCu+UO7oyd3XB8v4fOpTXsF7UC/e1FNQptLcdjkFWG4gXtSqwNaTlOVYHZGeS2brfrXf wat7BKsOUkhE06+h3kyZAl6kR1TDLYqPTEenoFjDDm+rHC/VN+xZI9nNopSBaMyY2ct5 ok9nj6Yu1ldi2BjCxBgdqkf8nwPgXnx9wx0FChr7RSl3Ty+/Ba9x24X9s8paXqp1xT5P C6a+BL8BoS2TLUP/+h072RHBr2t/Vc4g8S6bwT7EO1lXbjRHKaZgfYNnE4vCcvqnLzAx nNBw== ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id k5-20020a0cebc5000000b0066d17b7ad9fsi1152229qvq.174.2023.10.27.13.33.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Oct 2023 13:33:08 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 1448938618E9 for ; Fri, 27 Oct 2023 20:33:08 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from esa2.mentor.iphmx.com (esa2.mentor.iphmx.com [68.232.141.98]) by sourceware.org (Postfix) with ESMTPS id 0DF6738618DD; Fri, 27 Oct 2023 20:32:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0DF6738618DD Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0DF6738618DD Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=68.232.141.98 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698438764; cv=none; b=hgxGeoMcoVIxS3lzVGTrPakE75SmRecSV4Jb3fh3KKyY6Anx+9Z0uNOn0L2Yr4mJ7K52zCiGKLJoUHPcTN6l7J6mNE7E9aTVCooCsKSFMInMtyDcA+EMAC86hJBj1/bK0PaZUoMXIY/mSQxOZl+EFsC1+DeW1HRkt7iWdUhuEMw= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698438764; c=relaxed/simple; bh=rFGoqwrmvKaFx8JgzvTr8y8CAWkwcugIExqx/IlLpo0=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=vked4InTcb0FLUsUqoAnn+s+uA9RcJXb3dyLEHBELEBmO2GQ12yXqEOZjc34znpUOsOu8qIkZD4wQnfGQTSInx3UqQ2k0mgxikA39/D+LDdLUeit/eckeD2Aw7aDodEsE8u9jE2Qh3rybzEaq0E4UO4geIO9VyTq2TvRIpiO2vo= ARC-Authentication-Results: i=1; server2.sourceware.org X-CSE-ConnectionGUID: MjWCiuTWR368na43rFcy6Q== X-CSE-MsgGUID: zFG+T7a9Q2mKLl0VoU34kQ== X-IronPort-AV: E=Sophos;i="6.03,257,1694764800"; d="scan'208,223";a="23578635" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa2.mentor.iphmx.com with ESMTP; 27 Oct 2023 12:32:38 -0800 IronPort-SDR: RM8hDP7hi1Fag7Xru5oJcw7rMMwO1BLd9+FGHp2Baf0fxW+HPy+g1YHV/eTmVfBTpzjCNg2a1g emhZHNUuVuLNX+fiW+Yg9siqiATzczAXekWO3CqTtcrFFqdSlqbzX8u6GoXZHlVqwFn0D1o8QH dGWcf6PLxtyO0wCUiVwptyQ9NW1bxZ7+zJIselazVh9VV45jbo10hgR7Gqs9wuezIIJZXBnHWc +pH6ulv0tCIUrOQRo9KnJ8waX5WOLvFTyzyVZhrQfF0MvhIh6nQGt8i4OVQTkT4Bp34eQxoyA9 lNU= From: Thomas Schwinge To: Arthur Cohen , Pierre-Emmanuel Patry , , CC: Iain Sandoe Subject: Disable target libgrust if we're not building target libstdc++ (was: [PATCH v2 2/4] libgrust: Add libproc_macro and build system) In-Reply-To: <875y2s170t.fsf@euler.schwinge.homeip.net> References: <20231025110658.1232737-1-arthur.cohen@embecosm.com> <20231025110658.1232737-3-arthur.cohen@embecosm.com> <87edhhu741.fsf@euler.schwinge.homeip.net> <0B027199-B2BD-4CC0-9654-695A0316783A@sandoe.co.uk> <875y2s170t.fsf@euler.schwinge.homeip.net> User-Agent: Notmuch/0.29.3+94~g74c3f1b (https://notmuchmail.org) Emacs/28.2 (x86_64-pc-linux-gnu) Date: Fri, 27 Oct 2023 22:32:30 +0200 Message-ID: <8734xv24dd.fsf@euler.schwinge.homeip.net> MIME-Version: 1.0 X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) To svr-ies-mbx-10.mgc.mentorg.com (139.181.222.10) X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, KAM_SHORT, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780942150787853144 X-GMAIL-MSGID: 1780942150787853144 Hi! Short Friday evening status update: On 2023-10-27T16:20:34+0200, I wrote: > Short Friday afternoon status update: > > On 2023-10-27T08:51:12+0100, Iain Sandoe wrote: >>> On 26 Oct 2023, at 09:21, Thomas Schwinge wrote: >>> First, I've pushed into GCC upstream Git branch devel/rust/libgrust-v2 >>> the "v2" libgrust changes as posted by Arthur, so that people can easily >>> test this before it getting into Git master branch. >>> >>> I'll myself later try this for GCN and nvptx targets -- in their current >>> form where they don't support C++ (standard library) > > Indeed, this currently fails to build: > > [...] > make[3]: Entering directory `[...]/build-gcc/amdgcn-amdhsa/libgrust/libproc_macro' > [...] > libtool: compile: [...]/build-gcc/./gcc/xg++ -B[...]/build-gcc/./gcc/ -nostdinc++ -funconfigured-libstdc++-v3 [...] -c [...]/source-gcc/libgrust/libproc_macro/proc_macro.cc > xg++: error: unrecognized command-line option ‘-funconfigured-libstdc++-v3’ > make[3]: *** [proc_macro.lo] Error 1 > make[3]: Leaving directory `[...]/build-gcc/amdgcn-amdhsa/libgrust/libproc_macro' > make[2]: *** [all-recursive] Error 1 > make[2]: Leaving directory `[...]/build-gcc/amdgcn-amdhsa/libgrust' > make[1]: *** [all-target-libgrust] Error 2 > make[1]: Leaving directory `[...]/build-gcc' > make: *** [all] Error 2 > > ("error: unrecognized command-line option ‘-funconfigured-libstdc++-v3’" > indeed is the expected outcome if libstdc++ is not available, as I > understand.) > > Same for nvptx-none target. > > We need two things: (a) make sure that target libgrust build depends on > target libstdc++, and (b) disable target libgrust if target libstdc++ is > not available (and, later, gracefully handle that situation in the Rust > front end). > > As far as I remember, patches exist for (a), and Arthur is going to > integrate/re-submit those. In fact, for (a), it seem that we just this one GCC/Rust commit 6a8b207b9ef7f9038e0cae7766117428783825d8 "libgrust: Add dependency to libstdc++"; see "Add libstdc++ dependency to libgrust". > Arthur, before re-submission, feel free to > first cherr-pick and push'these into the GCC upstream Git branch > devel/rust/libgrust-v2, so that I can re-test. > I'm not sure about (b), > whether that fell out of the (a) changes, too? I can otherwise look into > that later. ..., which I've now done. Indeed that is still broken. We need, if I understand this correctly, the attached "Disable target libgrust if we're not building target libstdc++" to address that issue. Pierre-Emmanuel: In this case (that is we cannot build target libgrust because we're not building target libstdc++), do we also disable host libgrust, or do we still build that one? (This can be settled later.) >>> and in my hacky WIP >>> trees where C++ (standard library) is supported to some extent. > > This does built ..., but only if target libstdc++ already happens to have been built. If not, you'll run into funny libtool errors like: [...] libtool: compile: unrecognized option `-B[...]/build-gcc/amdgcn-amdhsa/libstdc++-v3/src/.libs' libtool: compile: Try `libtool --help' for more information. make[3]: *** [proc_macro.lo] Error 1 make[3]: Leaving directory `[...]/build-gcc/amdgcn-amdhsa/libgrust/libproc_macro' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `[...]/build-gcc/amdgcn-amdhsa/libgrust' make[1]: *** [all-target-libgrust] Error 2 [...] (This translates into: target libstdc++ has not (yet) been built; '[...]/build-gcc/amdgcn-amdhsa/libstdc++-v3/src/.libs' is not (yet) available.) Need "libgrust: Add dependency to libstdc++" (see above) to make this work reliably. Grüße Thomas > -- but the default multilib only, as Iain already > reported: > >>> (This >>> should, roughly, match C++ functionality (not) provided by a number of >>> other GCC "embedded" targets.) >> >> on Darwin, it works for later systems without multilibs, but fails to build multilibs. > > I see that, too. > >> —— so…. >> >> With the patch below bootstrap suceeded on x86_64-darwin17 and produced a correct >> architecture multilib. > > Confirmed, thanks! > >> Of course, there is no way to test this at the moment - I’d suggest >> that the next step might be something small in functionality that can allow at least one >> test to be wired up. > > ACK. > >> ^^^ this is “lightly tested” of course, as I cycle through other versions of the OS will see >> how it pans out. >> >> Do you want me to make a PR with this change against upstream? > > Yes, please. (But no hurry.) > > > Grüße > Thomas > > >> From 027bc2c5255a6f1b75592e896dd99fac55bfb9b8 Mon Sep 17 00:00:00 2001 >> From: Iain Sandoe >> Date: Thu, 26 Oct 2023 23:19:36 +0100 >> Subject: [PATCH] libgrust: enable multilib >> >> Most of this change is the regenerated files, the multilib config macro >> was already present, but commented out. >> >> libgrust/ChangeLog: >> >> * Makefile.in: >> * aclocal.m4: Regenerate. >> * configure: Regenerate. >> * configure.ac: Uncomment AM_ENABLE_MULTILIB. >> * libproc_macro/Makefile.in: >> >> Signed-off-by: Iain Sandoe >> --- >> libgrust/Makefile.in | 2 + >> libgrust/aclocal.m4 | 1 + >> libgrust/configure | 68 ++++++++++++++++++++++++++++-- >> libgrust/configure.ac | 2 +- >> libgrust/libproc_macro/Makefile.in | 2 + >> 5 files changed, 71 insertions(+), 4 deletions(-) >> >> diff --git a/libgrust/Makefile.in b/libgrust/Makefile.in >> index bc9b6cc227a..2dc39adff24 100644 >> --- a/libgrust/Makefile.in >> +++ b/libgrust/Makefile.in >> @@ -93,6 +93,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 >> am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ >> $(top_srcdir)/../config/depstand.m4 \ >> $(top_srcdir)/../config/lead-dot.m4 \ >> + $(top_srcdir)/../config/multi.m4 \ >> $(top_srcdir)/../config/no-executables.m4 \ >> $(top_srcdir)/../config/override.m4 \ >> $(top_srcdir)/../config/toolexeclibdir.m4 \ >> @@ -275,6 +276,7 @@ localedir = @localedir@ >> localstatedir = @localstatedir@ >> mandir = @mandir@ >> mkdir_p = @mkdir_p@ >> +multi_basedir = @multi_basedir@ >> oldincludedir = @oldincludedir@ >> pdfdir = @pdfdir@ >> prefix = @prefix@ >> diff --git a/libgrust/aclocal.m4 b/libgrust/aclocal.m4 >> index 1bd42c34d74..5d808f05afa 100644 >> --- a/libgrust/aclocal.m4 >> +++ b/libgrust/aclocal.m4 >> @@ -1250,6 +1250,7 @@ AC_SUBST([am__untar]) >> m4_include([../config/acx.m4]) >> m4_include([../config/depstand.m4]) >> m4_include([../config/lead-dot.m4]) >> +m4_include([../config/multi.m4]) >> m4_include([../config/no-executables.m4]) >> m4_include([../config/override.m4]) >> m4_include([../config/toolexeclibdir.m4]) >> diff --git a/libgrust/configure b/libgrust/configure >> index 2756bddd10b..282027873bd 100755 >> --- a/libgrust/configure >> +++ b/libgrust/configure >> @@ -732,6 +732,7 @@ build_os >> build_vendor >> build_cpu >> build >> +multi_basedir >> target_alias >> host_alias >> build_alias >> @@ -773,6 +774,7 @@ SHELL' >> ac_subst_files='' >> ac_user_opts=' >> enable_option_checking >> +enable_multilib >> enable_maintainer_mode >> enable_silent_rules >> with_toolexeclibdir >> @@ -1421,6 +1423,7 @@ Optional Features: >> --disable-option-checking ignore unrecognized --enable/--with options >> --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) >> --enable-FEATURE[=ARG] include FEATURE [ARG=yes] >> + --enable-multilib build many library versions (default) >> --enable-maintainer-mode >> enable make rules and dependencies not useful (and >> sometimes confusing) to the casual installer >> @@ -2376,7 +2379,43 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu >> ac_config_files="$ac_config_files Makefile" >> >> >> -# AM_ENABLE_MULTILIB(, ..) >> +# Default to --enable-multilib >> +# Check whether --enable-multilib was given. >> +if test "${enable_multilib+set}" = set; then : >> + enableval=$enable_multilib; case "$enableval" in >> + yes) multilib=yes ;; >> + no) multilib=no ;; >> + *) as_fn_error $? "bad value $enableval for multilib option" "$LINENO" 5 ;; >> + esac >> +else >> + multilib=yes >> +fi >> + >> + >> +# We may get other options which we leave undocumented: >> +# --with-target-subdir, --with-multisrctop, --with-multisubdir >> +# See config-ml.in if you want the gory details. >> + >> +if test "$srcdir" = "."; then >> + if test "$with_target_subdir" != "."; then >> + multi_basedir="$srcdir/$with_multisrctop../.." >> + else >> + multi_basedir="$srcdir/$with_multisrctop.." >> + fi >> +else >> + multi_basedir="$srcdir/.." >> +fi >> + >> + >> +# Even if the default multilib is not a cross compilation, >> +# it may be that some of the other multilibs are. >> +if test $cross_compiling = no && test $multilib = yes \ >> + && test "x${with_multisubdir}" != x ; then >> + cross_compiling=maybe >> +fi >> + >> +ac_config_commands="$ac_config_commands default-1" >> + >> >> # Do not delete or change the following two lines. For why, see >> # http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html >> @@ -12512,7 +12551,7 @@ else >> lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 >> lt_status=$lt_dlunknown >> cat > conftest.$ac_ext <<_LT_EOF >> -#line 12515 "configure" >> +#line 12554 "configure" >> #include "confdefs.h" >> >> #if HAVE_DLFCN_H >> @@ -12618,7 +12657,7 @@ else >> lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 >> lt_status=$lt_dlunknown >> cat > conftest.$ac_ext <<_LT_EOF >> -#line 12621 "configure" >> +#line 12660 "configure" >> #include "confdefs.h" >> >> #if HAVE_DLFCN_H >> @@ -16804,6 +16843,20 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 >> # >> # INIT-COMMANDS >> # >> + >> +srcdir="$srcdir" >> +host="$host" >> +target="$target" >> +with_multisubdir="$with_multisubdir" >> +with_multisrctop="$with_multisrctop" >> +with_target_subdir="$with_target_subdir" >> +ac_configure_args="${multilib_arg} ${ac_configure_args}" >> +multi_basedir="$multi_basedir" >> +CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} >> +CC="$CC" >> +CXX="$CXX" >> +GFORTRAN="$GFORTRAN" >> +GDC="$GDC" >> AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" >> >> >> @@ -17175,6 +17228,7 @@ for ac_config_target in $ac_config_targets >> do >> case $ac_config_target in >> "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; >> + "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; >> "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; >> "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; >> "libproc_macro/Makefile") CONFIG_FILES="$CONFIG_FILES libproc_macro/Makefile" ;; >> @@ -17607,6 +17661,14 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} >> >> >> case $ac_file$ac_mode in >> + "default-1":C) >> +# Only add multilib support code if we just rebuilt the top-level >> +# Makefile. >> +case " $CONFIG_FILES " in >> + *" Makefile "*) >> + ac_file=Makefile . ${multi_basedir}/config-ml.in >> + ;; >> +esac ;; >> "depfiles":C) test x"$AMDEP_TRUE" != x"" || { >> # Older Autoconf quotes --file arguments for eval, but not when files >> # are listed without --file. Let's play safe and only enable the eval >> diff --git a/libgrust/configure.ac b/libgrust/configure.ac >> index 7aed489a643..d75aa632462 100644 >> --- a/libgrust/configure.ac >> +++ b/libgrust/configure.ac >> @@ -2,7 +2,7 @@ AC_INIT([libgrust], version-unused,,librust) >> AC_CONFIG_SRCDIR(Makefile.am) >> AC_CONFIG_FILES([Makefile]) >> >> -# AM_ENABLE_MULTILIB(, ..) >> +AM_ENABLE_MULTILIB(, ..) >> >> # Do not delete or change the following two lines. For why, see >> # http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html >> diff --git a/libgrust/libproc_macro/Makefile.in b/libgrust/libproc_macro/Makefile.in >> index d3a39736679..46eb6484094 100644 >> --- a/libgrust/libproc_macro/Makefile.in >> +++ b/libgrust/libproc_macro/Makefile.in >> @@ -95,6 +95,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 >> am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ >> $(top_srcdir)/../config/depstand.m4 \ >> $(top_srcdir)/../config/lead-dot.m4 \ >> + $(top_srcdir)/../config/multi.m4 \ >> $(top_srcdir)/../config/no-executables.m4 \ >> $(top_srcdir)/../config/override.m4 \ >> $(top_srcdir)/../config/toolexeclibdir.m4 \ >> @@ -316,6 +317,7 @@ localedir = @localedir@ >> localstatedir = @localstatedir@ >> mandir = @mandir@ >> mkdir_p = @mkdir_p@ >> +multi_basedir = @multi_basedir@ >> oldincludedir = @oldincludedir@ >> pdfdir = @pdfdir@ >> prefix = @prefix@ >> -- >> 2.39.2 (Apple Git-143) >> >> >>> >>> >>> Then: >>> >>> On 2023-10-25T13:06:46+0200, Arthur Cohen wrote: >>>> From: Pierre-Emmanuel Patry >>>> >>>> Add some dummy files in libproc_macro along with its build system. >>> >>> I've not reviewed the build system in detail, just had a very quick look. >>> >>> Three instances of 'librust'; should be 'libgrust': >>> >>> configure.ac:AC_INIT([libgrust], version-unused,,librust) >>> >>> configure.ac:AC_MSG_NOTICE([librust has been configured.]) >>> >>> Makefile.am: "TARGET_LIB_PATH_librust=$(TARGET_LIB_PATH_librust)" \ >>> >>> Compared to libgomp (which I'm reasonably familiar with), I found missing >>> in 'libgrust' at 'configure'-level: >>> >>> --enable-multilib build many library versions (default) >>> >>> --disable-werror disable building with -Werror >>> >>> --enable-symvers=STYLE enables symbol versioning of the shared library >>> [default=yes] >>> >>> --enable-cet enable Intel CET in target libraries [default=auto] >>> >>> --with-gcc-major-version-only >>> use only GCC major number in filesystem paths >>> >>> I can't tell off-hand whether all these are important, however. >>> >>> Additionally, the new one that's being discussed in >>> >>> 'Update libgrust for upstream GCC commit 6a6d3817afa02bbcd2388c8e005da6faf88932f1 "Config,Darwin: Allow for configuring Darwin to use embedded runpath"'. >>> >>> >>> Grüße >>> Thomas >>> >>> >>>> libgrust/Changelog: >>>> >>>> * Makefile.am: New file. >>>> * configure.ac: New file. >>>> * libproc_macro/Makefile.am: New file. >>>> * libproc_macro/proc_macro.cc: New file. >>>> * libproc_macro/proc_macro.h: New file. >>>> >>>> Signed-off-by: Pierre-Emmanuel Patry >>>> --- >>>> libgrust/Makefile.am | 68 ++++++++++++++++ >>>> libgrust/configure.ac | 113 +++++++++++++++++++++++++++ >>>> libgrust/libproc_macro/Makefile.am | 58 ++++++++++++++ >>>> libgrust/libproc_macro/proc_macro.cc | 7 ++ >>>> libgrust/libproc_macro/proc_macro.h | 7 ++ >>>> 5 files changed, 253 insertions(+) >>>> create mode 100644 libgrust/Makefile.am >>>> create mode 100644 libgrust/configure.ac >>>> create mode 100644 libgrust/libproc_macro/Makefile.am >>>> create mode 100644 libgrust/libproc_macro/proc_macro.cc >>>> create mode 100644 libgrust/libproc_macro/proc_macro.h >>>> >>>> diff --git a/libgrust/Makefile.am b/libgrust/Makefile.am >>>> new file mode 100644 >>>> index 00000000000..8e5274922c5 >>>> --- /dev/null >>>> +++ b/libgrust/Makefile.am >>>> @@ -0,0 +1,68 @@ >>>> +AUTOMAKE_OPTIONS = 1.8 foreign >>>> + >>>> +SUFFIXES = .c .rs .def .o .lo .a >>>> + >>>> +ACLOCAL_AMFLAGS = -I . -I .. -I ../config >>>> + >>>> +AM_CFLAGS = -I $(srcdir)/../libgcc -I $(MULTIBUILDTOP)../../gcc/include >>>> + >>>> +TOP_GCCDIR := $(shell cd $(top_srcdir) && cd .. && pwd) >>>> + >>>> +GCC_DIR = $(TOP_GCCDIR)/gcc >>>> +RUST_SRC = $(GCC_DIR)/rust >>>> + >>>> +toolexeclibdir=@toolexeclibdir@ >>>> +toolexecdir=@toolexecdir@ >>>> + >>>> +SUBDIRS = libproc_macro >>>> + >>>> +RUST_BUILDDIR := $(shell pwd) >>>> + >>>> +# Work around what appears to be a GNU make bug handling MAKEFLAGS >>>> +# values defined in terms of make variables, as is the case for CC and >>>> +# friends when we are called from the top level Makefile. >>>> +AM_MAKEFLAGS = \ >>>> + "GCC_DIR=$(GCC_DIR)" \ >>>> + "RUST_SRC=$(RUST_SRC)" \ >>>> + "AR_FLAGS=$(AR_FLAGS)" \ >>>> + "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ >>>> + "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ >>>> + "RUST_FOR_TARGET=$(RUST_FOR_TARGET)" \ >>>> + "CFLAGS=$(CFLAGS)" \ >>>> + "CXXFLAGS=$(CXXFLAGS)" \ >>>> + "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ >>>> + "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ >>>> + "INSTALL=$(INSTALL)" \ >>>> + "INSTALL_DATA=$(INSTALL_DATA)" \ >>>> + "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ >>>> + "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ >>>> + "LDFLAGS=$(LDFLAGS)" \ >>>> + "LIBCFLAGS=$(LIBCFLAGS)" \ >>>> + "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ >>>> + "MAKE=$(MAKE)" \ >>>> + "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ >>>> + "PICFLAG=$(PICFLAG)" \ >>>> + "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ >>>> + "SHELL=$(SHELL)" \ >>>> + "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ >>>> + "exec_prefix=$(exec_prefix)" \ >>>> + "infodir=$(infodir)" \ >>>> + "libdir=$(libdir)" \ >>>> + "includedir=$(includedir)" \ >>>> + "prefix=$(prefix)" \ >>>> + "tooldir=$(tooldir)" \ >>>> + "gxx_include_dir=$(gxx_include_dir)" \ >>>> + "AR=$(AR)" \ >>>> + "AS=$(AS)" \ >>>> + "LD=$(LD)" \ >>>> + "RANLIB=$(RANLIB)" \ >>>> + "NM=$(NM)" \ >>>> + "NM_FOR_BUILD=$(NM_FOR_BUILD)" \ >>>> + "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ >>>> + "DESTDIR=$(DESTDIR)" \ >>>> + "WERROR=$(WERROR)" \ >>>> + "TARGET_LIB_PATH=$(TARGET_LIB_PATH)" \ >>>> + "TARGET_LIB_PATH_librust=$(TARGET_LIB_PATH_librust)" \ >>>> + "LIBTOOL=$(RUST_BUILDDIR)/libtool" >>>> + >>>> +include $(top_srcdir)/../multilib.am >>>> diff --git a/libgrust/configure.ac b/libgrust/configure.ac >>>> new file mode 100644 >>>> index 00000000000..7aed489a643 >>>> --- /dev/null >>>> +++ b/libgrust/configure.ac >>>> @@ -0,0 +1,113 @@ >>>> +AC_INIT([libgrust], version-unused,,librust) >>>> +AC_CONFIG_SRCDIR(Makefile.am) >>>> +AC_CONFIG_FILES([Makefile]) >>>> + >>>> +# AM_ENABLE_MULTILIB(, ..) >>>> + >>>> +# Do not delete or change the following two lines. For why, see >>>> +# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html >>>> +AC_CANONICAL_SYSTEM >>>> +target_alias=${target_alias-$host_alias} >>>> +AC_SUBST(target_alias) >>>> + >>>> +# Automake should never attempt to rebuild configure >>>> +AM_MAINTAINER_MODE >>>> + >>>> +AM_INIT_AUTOMAKE([1.15.1 foreign no-dist -Wall]) >>>> + >>>> +# Make sure we don't test executables when making cross-tools. >>>> +GCC_NO_EXECUTABLES >>>> + >>>> + >>>> +# Add the ability to change LIBTOOL directory >>>> +GCC_WITH_TOOLEXECLIBDIR >>>> + >>>> +# Use system specific extensions >>>> +AC_USE_SYSTEM_EXTENSIONS >>>> + >>>> + >>>> +# Checks for header files. >>>> +AC_HEADER_STDC >>>> +AC_HEADER_SYS_WAIT >>>> +AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h \ >>>> + time.h sys/stat.h wchar.h) >>>> + >>>> +# Check for tools >>>> +AM_PROG_AR >>>> +AC_PROG_CC >>>> +AC_PROG_CXX >>>> +AM_PROG_AS >>>> +AC_PROG_MAKE_SET >>>> +AC_PROG_INSTALL >>>> + >>>> +# Enable libtool >>>> +LT_INIT >>>> + >>>> +# target_noncanonical variables... >>>> +AC_CANONICAL_HOST >>>> +ACX_NONCANONICAL_HOST >>>> +ACX_NONCANONICAL_TARGET >>>> +GCC_TOPLEV_SUBDIRS >>>> + >>>> +AC_MSG_CHECKING([for --enable-version-specific-runtime-libs]) >>>> +AC_ARG_ENABLE(version-specific-runtime-libs, >>>> +[ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ], >>>> +[case "$enableval" in >>>> + yes) version_specific_libs=yes ;; >>>> + no) version_specific_libs=no ;; >>>> + *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);; >>>> + esac], >>>> +[version_specific_libs=no]) >>>> +AC_MSG_RESULT($version_specific_libs) >>>> + >>>> +toolexecdir=no >>>> +toolexeclibdir=no >>>> + >>>> +# Calculate toolexeclibdir >>>> +# Also toolexecdir, though it's only used in toolexeclibdir >>>> +case ${version_specific_libs} in >>>> + yes) >>>> + # Need the gcc compiler version to know where to install libraries >>>> + # and header files if --enable-version-specific-runtime-libs option >>>> + # is selected. >>>> + toolexecdir='$(libdir)/gcc/$(target_noncanonical)' >>>> + toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' >>>> + ;; >>>> + no) >>>> + if test -n "$with_cross_host" && >>>> + test x"$with_cross_host" != x"no"; then >>>> + # Install a library built with a cross compiler in tooldir, not libdir. >>>> + toolexecdir='$(exec_prefix)/$(target_noncanonical)' >>>> + toolexeclibdir='$(toolexecdir)/lib' >>>> + else >>>> + toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)' >>>> + toolexeclibdir='$(libdir)' >>>> + fi >>>> + multi_os_directory=`$CC -print-multi-os-directory` >>>> + case $multi_os_directory in >>>> + .) ;; # Avoid trailing /. >>>> + *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; >>>> + esac >>>> + ;; >>>> +esac >>>> + >>>> +AC_SUBST(toolexecdir) >>>> +AC_SUBST(toolexeclibdir) >>>> + >>>> + >>>> +AC_CONFIG_FILES(AC_FOREACH([DIR], [libproc_macro], [DIR/Makefile ]), >>>> + [ cat > vpsed$$ << \_EOF >>>> +s!`test -f '$<' || echo '$(srcdir)/'`!! >>>> +_EOF >>>> + sed -f vpsed$$ $ac_file > tmp$$ >>>> + mv tmp$$ $ac_file >>>> + rm vpsed$$ >>>> + echo 'MULTISUBDIR =' >> $ac_file >>>> + ml_norecursion=yes >>>> + AS_UNSET([ml_norecursion]) >>>> +]) >>>> + >>>> + >>>> +AC_MSG_NOTICE([librust has been configured.]) >>>> + >>>> +AC_OUTPUT >>>> diff --git a/libgrust/libproc_macro/Makefile.am b/libgrust/libproc_macro/Makefile.am >>>> new file mode 100644 >>>> index 00000000000..1e61d12e506 >>>> --- /dev/null >>>> +++ b/libgrust/libproc_macro/Makefile.am >>>> @@ -0,0 +1,58 @@ >>>> +SUFFIXES = .cc .o .a .lo .la >>>> + >>>> +ACLOCAL_AMFLAGS = -I .. -I ../../config >>>> + >>>> +toolexeclibdir=@toolexeclibdir@ >>>> +toolexecdir=@toolexecdir@ >>>> + >>>> +# Work around what appears to be a GNU make bug handling MAKEFLAGS >>>> +# values defined in terms of make variables, as is the case for CC and >>>> +# friends when we are called from the top level Makefile. >>>> +AM_MAKEFLAGS = \ >>>> + "AR_FLAGS=$(AR_FLAGS)" \ >>>> + "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ >>>> + "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ >>>> + "CFLAGS=$(CFLAGS)" \ >>>> + "CXXFLAGS=$(CXXFLAGS)" \ >>>> + "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ >>>> + "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ >>>> + "INSTALL=$(INSTALL)" \ >>>> + "INSTALL_DATA=$(INSTALL_DATA)" \ >>>> + "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ >>>> + "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ >>>> + "LDFLAGS=$(LDFLAGS)" \ >>>> + "LIBCFLAGS=$(LIBCFLAGS)" \ >>>> + "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ >>>> + "MAKE=$(MAKE)" \ >>>> + "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ >>>> + "PICFLAG=$(PICFLAG)" \ >>>> + "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ >>>> + "SHELL=$(SHELL)" \ >>>> + "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ >>>> + "exec_prefix=$(exec_prefix)" \ >>>> + "infodir=$(infodir)" \ >>>> + "libdir=$(libdir)" \ >>>> + "includedir=$(includedir)" \ >>>> + "prefix=$(prefix)" \ >>>> + "tooldir=$(tooldir)" \ >>>> + "gxx_include_dir=$(gxx_include_dir)" \ >>>> + "AR=$(AR)" \ >>>> + "AS=$(AS)" \ >>>> + "LD=$(LD)" \ >>>> + "RANLIB=$(RANLIB)" \ >>>> + "NM=$(NM)" \ >>>> + "NM_FOR_BUILD=$(NM_FOR_BUILD)" \ >>>> + "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ >>>> + "DESTDIR=$(DESTDIR)" \ >>>> + "WERROR=$(WERROR)" \ >>>> + "TARGET_LIB_PATH=$(TARGET_LIB_PATH)" \ >>>> + "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" >>>> + >>>> +toolexeclib_LTLIBRARIES = libproc_macro.la >>>> + >>>> +libproc_macro_la_SOURCES = \ >>>> + proc_macro.cc >>>> + >>>> +include_HEADERS = \ >>>> + proc_macro.h >>>> + >>>> diff --git a/libgrust/libproc_macro/proc_macro.cc b/libgrust/libproc_macro/proc_macro.cc >>>> new file mode 100644 >>>> index 00000000000..d13276294aa >>>> --- /dev/null >>>> +++ b/libgrust/libproc_macro/proc_macro.cc >>>> @@ -0,0 +1,7 @@ >>>> +#include "proc_macro.h" >>>> + >>>> +int >>>> +test () >>>> +{ >>>> + return 0; >>>> +} >>>> diff --git a/libgrust/libproc_macro/proc_macro.h b/libgrust/libproc_macro/proc_macro.h >>>> new file mode 100644 >>>> index 00000000000..2c96b3de685 >>>> --- /dev/null >>>> +++ b/libgrust/libproc_macro/proc_macro.h >>>> @@ -0,0 +1,7 @@ >>>> +#ifndef PROC_MACRO_H >>>> +#define PROC_MACRO_H >>>> + >>>> +int >>>> +test (); >>>> + >>>> +#endif /* ! PROC_MACRO_H */ >>>> -- >>>> 2.42.0 >>> ----------------- >>> Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955 > ----------------- > Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955 ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955 From 9efa75c6fa0a24c42d7be1e40ac6cd5f26cab045 Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Fri, 27 Oct 2023 21:53:03 +0200 Subject: [PATCH] Disable target libgrust if we're not building target libstdc++ This complements "libgrust: Add dependency to libstdc++". --- configure | 11 +++++++++++ configure.ac | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/configure b/configure index 2b35e4b300b6..a4cf47df42e5 100755 --- a/configure +++ b/configure @@ -9259,6 +9259,17 @@ case ,${enable_languages}, in ;; esac +case ,${enable_languages}, in + *,rust,*) + case " ${noconfigdirs} " in + *\ target-libstdc++-v3\ *) + # Disable target libgrust if we're not building target libstdc++. + noconfigdirs="$noconfigdirs target-libgrust" + ;; + esac + ;; +esac + # If gcc/ is not in the source tree then we'll not be building a # target compiler, assume in that case we don't want to build any # target libraries or tools. diff --git a/configure.ac b/configure.ac index d65848b9fe09..2dffdbf49ce2 100644 --- a/configure.ac +++ b/configure.ac @@ -2455,6 +2455,17 @@ case ,${enable_languages}, in ;; esac +case ,${enable_languages}, in + *,rust,*) + case " ${noconfigdirs} " in + *\ target-libstdc++-v3\ *) + # Disable target libgrust if we're not building target libstdc++. + noconfigdirs="$noconfigdirs target-libgrust" + ;; + esac + ;; +esac + # If gcc/ is not in the source tree then we'll not be building a # target compiler, assume in that case we don't want to build any # target libraries or tools. -- 2.40.1