public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r12-3915] top-level configure: setup target_configdirs based on repository
@ 2021-09-28  8:44 Andrew Burgess
  0 siblings, 0 replies; only message in thread
From: Andrew Burgess @ 2021-09-28  8:44 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:dc614a838ecc33578e0903fec599fee6844680a7

commit r12-3915-gdc614a838ecc33578e0903fec599fee6844680a7
Author: Andrew Burgess <andrew.burgess@embecosm.com>
Date:   Wed Sep 22 15:15:41 2021 +0100

    top-level configure: setup target_configdirs based on repository
    
    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.
    
    In the configure script we build three lists of things we want to
    build, $configdirs, $build_configdirs, and $target_configdirs, we also
    build two lists of things we don't want to build, $skipdirs and
    $noconfigdirs.  We then remove anything that is in the lists of things
    not to build, from the list of things that should be built.
    
    My proposal is to add everything in target_configdirs into skipdirs,
    if the source tree doesn't contain a gcc/ sub-directory.  The result
    is that for binutils-gdb no target tools or libraries will be built,
    while for the gcc repository, nothing should change.
    
    If a user builds a unified source tree, then the target tools and
    libraries should still be built as the gcc/ directory will be present.
    
    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'.
    
    ChangeLog:
    
            * configure: Regenerate.
            * configure.ac (skipdirs): Add the contents of target_configdirs if
            we are not building gcc.

Diff:
---
 configure    | 10 ++++++++++
 configure.ac | 10 ++++++++++
 2 files changed, 20 insertions(+)

diff --git a/configure b/configure
index 85ab9915402..785498efff5 100755
--- a/configure
+++ b/configure
@@ -8874,6 +8874,16 @@ case ,${enable_languages}, in
     ;;
 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.
+#
+# This was added primarily for the benefit for binutils-gdb who reuse
+# this configure script, but don't always have target tools available.
+if test ! -d ${srcdir}/gcc; then
+   skipdirs="${skipdirs} ${target_configdirs}"
+fi
+
 # Remove the entries in $skipdirs and $noconfigdirs from $configdirs,
 # $build_configdirs and $target_configdirs.
 # If we have the source for $noconfigdirs entries, add them to $notsupp.
diff --git a/configure.ac b/configure.ac
index 1df038b04f3..c523083c346 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2272,6 +2272,16 @@ case ,${enable_languages}, in
     ;;
 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.
+#
+# This was added primarily for the benefit for binutils-gdb who reuse
+# this configure script, but don't always have target tools available.
+if test ! -d ${srcdir}/gcc; then
+   skipdirs="${skipdirs} ${target_configdirs}"
+fi
+
 # Remove the entries in $skipdirs and $noconfigdirs from $configdirs,
 # $build_configdirs and $target_configdirs.
 # If we have the source for $noconfigdirs entries, add them to $notsupp.


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-09-28  8:44 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-28  8:44 [gcc r12-3915] top-level configure: setup target_configdirs based on repository Andrew Burgess

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).