From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com [IPv6:2a00:1450:4864:20::532]) by sourceware.org (Postfix) with ESMTPS id 4CD5A3858D39 for ; Thu, 23 Sep 2021 08:53:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 4CD5A3858D39 Received: by mail-ed1-x532.google.com with SMTP id u27so20677506edi.9 for ; Thu, 23 Sep 2021 01:53:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=GXjdm2alAcK9Nml88er4L8mY8QCwmjFR/5TD9ZcL/v0=; b=ArWg0Rr9Z0DzUgVK3vtXSXPncOHycHTq9ThHg6z0cEbJ7C94rRO+iibHsFxoJ5kwiJ FJFx3mdphm4zK7/3X1Ua5jf35bqzxDdFQSCrm2ZEzq7lR+HWKPOdZMnJrUT3NZF2eSkr UcBcMRlTHqL/yRfSpMm2sCS3Ml0oQJaR5UcO2dXmo1e4de9kw7hRZShoK4D0Ncm3Zi// /tqnaPG1FJjKaUhEiFjvyA+EfEqQwpmc/+o1wr0szv1Vgt0BeFLiFy2F7lM21vO4PYFY Du2aY6s9UAbTUlXiW6Jir7eUObfFZnRuW0qcqqZ6MxKIbYevlKicTQNDrCzzaAD11hUv uYeg== X-Gm-Message-State: AOAM531iwCqlWUvBCAJPQmjhLDXFSSs9V4XcAgcoWT9iC0dPgVRFZ2xP Dxdffum7V2x9o/GdfqdeaRJYD6zczYM0lAWLNzE= X-Google-Smtp-Source: ABdhPJyplNBfRwWhJYeir4DezPRxJtL3UO4zrtuWqV2ySyXtYto8HnsZme5GgDijQPDsvQY1APJ6TzxMqjR+3Oj8Lx8= X-Received: by 2002:a17:906:b104:: with SMTP id u4mr3830429ejy.201.1632387207117; Thu, 23 Sep 2021 01:53:27 -0700 (PDT) MIME-Version: 1.0 References: <20210922153042.3491108-1-andrew.burgess@embecosm.com> In-Reply-To: <20210922153042.3491108-1-andrew.burgess@embecosm.com> From: Richard Biener Date: Thu, 23 Sep 2021 10:53:16 +0200 Message-ID: Subject: Re: [PATCH] top-level configure: setup target_configdirs based on repository To: Andrew Burgess Cc: GCC Patches Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-8.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Sep 2021 08:53:32 -0000 On Wed, Sep 22, 2021 at 5:47 PM Andrew Burgess wrote: > > The top-level configure script is shared between the gcc repository > and the binutils-gdb repository. > > The target_configdirs variable in the configure.ac script, defines > sub-directories that contain components that should be built for the > target using the target tools. > > Some components, e.g. zlib, are built as both host and target > libraries. > > This causes problems for binutils-gdb. If we run 'make all' in the > binutils-gdb repository we end up trying to build a target version of > the zlib library, which requires the target compiler be available. > Often the target compiler isn't immediately available, and so the > build fails. > > The problem with zlib impacted a previous attempt to synchronise the > top-level configure scripts from gcc to binutils-gdb, see this thread: > > https://sourceware.org/pipermail/binutils/2019-May/107094.html > > And I'm in the process of importing libbacktrace in to binutils-gdb, > which is also a host and target library, and triggers the same issues. > > I believe that for binutils-gdb, at least at the moment, there are no > target libraries that we need to build. > > My proposal then is to make the value of target_libraries change based > on which repository we are building in. Specifically, if the source > tree has a gcc/ directory then we should set the target_libraries > variable, otherwise this variable is left entry. > > I think that if someone tries to create a single unified tree (gcc + > binutils-gdb in a single source tree) and then build, this change will > not have a negative impact, the tree still has gcc/ so we'd expect the > target compiler to be built, which means building the target_libraries > should work just fine. > > However, if the source tree lacks gcc/ then we assume the target > compiler isn't built/available, and so target_libraries shouldn't be > built. > > There is already precedent within configure.ac for check on the > existence of gcc/ in the source tree, see the handling of > -enable-werror around line 3658. > > I've tested a build of gcc on x86-64, and the same set of target > libraries still seem to get built. On binutils-gdb this change > resolves the issues with 'make all'. > > Any thoughts? Hmm, why not use make all-binutils instead? Otherwise this does look like a reasonable thing to do. Richard. > ChangeLog: > > * configure: Regenerate. > * configure.ac (target_configdirs): Only set this when building > within the gcc repository. > --- > ChangeLog | 6 ++++++ > configure | 12 ++++++++++-- > configure.ac | 12 ++++++++++-- > 3 files changed, 26 insertions(+), 4 deletions(-) > > diff --git a/configure b/configure > index 85ab9915402..3ef5c2b553f 100755 > --- a/configure > +++ b/configure > @@ -2849,9 +2849,17 @@ target_tools="target-rda" > ## We assign ${configdirs} this way to remove all embedded newlines. This > ## is important because configure will choke if they ever get through. > ## ${configdirs} is directories we build using the host tools. > -## ${target_configdirs} is directories we build using the target tools. > +## > +## ${target_configdirs} is directories we build using the target > +## tools, these are only needed when working in the gcc tree. This > +## file is also reused in the binutils-gdb tree, where building any > +## target stuff doesn't make sense. > configdirs=`echo ${host_libs} ${host_tools}` > -target_configdirs=`echo ${target_libraries} ${target_tools}` > +if test -d ${srcdir}/gcc; then > + target_configdirs=`echo ${target_libraries} ${target_tools}` > +else > + target_configdirs="" > +fi > build_configdirs=`echo ${build_libs} ${build_tools}` > > > diff --git a/configure.ac b/configure.ac > index 1df038b04f3..d1217e3f886 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -180,9 +180,17 @@ target_tools="target-rda" > ## We assign ${configdirs} this way to remove all embedded newlines. This > ## is important because configure will choke if they ever get through. > ## ${configdirs} is directories we build using the host tools. > -## ${target_configdirs} is directories we build using the target tools. > +## > +## ${target_configdirs} is directories we build using the target > +## tools, these are only needed when working in the gcc tree. This > +## file is also reused in the binutils-gdb tree, where building any > +## target stuff doesn't make sense. > configdirs=`echo ${host_libs} ${host_tools}` > -target_configdirs=`echo ${target_libraries} ${target_tools}` > +if test -d ${srcdir}/gcc; then > + target_configdirs=`echo ${target_libraries} ${target_tools}` > +else > + target_configdirs="" > +fi > build_configdirs=`echo ${build_libs} ${build_tools}` > > m4_divert_text([PARSE_ARGS], > -- > 2.25.4 >