From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from depni-mx.sinp.msu.ru (depni-mx.sinp.msu.ru [213.131.7.21]) by sourceware.org (Postfix) with ESMTP id C261C3858414 for ; Mon, 6 Sep 2021 13:13:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C261C3858414 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=depni.sinp.msu.ru Authentication-Results: sourceware.org; spf=none smtp.mailfrom=depni.sinp.msu.ru Received: from spider (unknown [176.195.59.180]) by depni-mx.sinp.msu.ru (Postfix) with ESMTPSA id C4CF81BF4E5; Mon, 6 Sep 2021 16:13:49 +0300 (MSK) From: Serge Belyshev To: gcc-patches@gcc.gnu.org Subject: Ping: [PATCH] Add --enable-first-stage-cross configure option References: <87czrj1ysc.fsf@depni.sinp.msu.ru> Date: Mon, 06 Sep 2021 16:13:35 +0300 In-Reply-To: <87czrj1ysc.fsf@depni.sinp.msu.ru> (Serge Belyshev's message of "Thu, 15 Jul 2021 16:39:47 +0300") Message-ID: <87mtophmo0.fsf@depni.sinp.msu.ru> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, KAM_SHORT, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, 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: Mon, 06 Sep 2021 13:13:46 -0000 Ping? [PATCH] Add --enable-first-stage-cross configure option https://gcc.gnu.org/pipermail/gcc-patches/2021-July/575318.html > Add --enable-first-stage-cross configure option > > Build static-only, C-only compiler that is sufficient to cross compile > glibc. This option disables various runtime libraries that require > libc to compile, turns on --with-newlib, --without-headers, > --disable-decimal-float, --disable-shared, --disable-threads, and sets > --enable-languages=c. > > Rationale: current way of building first stage compiler of a cross > toolchain requires specifying a list of target libraries that are not > going to be compiled due to their dependency on target libc. This > list is not documented in gccinstall.texi and sometimes changes. To > simplify the procedure, it is better to maintain that list in the GCC > itself. > > Usage example as a patch to glibc's scripts/build-many-libcs.py: > > diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py > index 580d25e8ee..3a6a7be76b 100755 > --- a/scripts/build-many-glibcs.py > +++ b/scripts/build-many-glibcs.py > @@ -1446,17 +1446,7 @@ class Config(object): > # required to define inhibit_libc (to stop some parts of > # libgcc including libc headers); --without-headers is not > # sufficient. > - cfg_opts += ['--enable-languages=c', '--disable-shared', > - '--disable-threads', > - '--disable-libatomic', > - '--disable-decimal-float', > - '--disable-libffi', > - '--disable-libgomp', > - '--disable-libitm', > - '--disable-libmpx', > - '--disable-libquadmath', > - '--disable-libsanitizer', > - '--without-headers', '--with-newlib', > + cfg_opts += ['--enable-first-stage-cross', > '--with-glibc-version=%s' % self.ctx.glibc_version > ] > cfg_opts += self.first_gcc_cfg > > > Bootstrapped/regtested on x86_64-pc-linux-gnu, and > tested with build-many-glibcs.py with the above patch. > > OK for mainline? > > > ChangeLog: > > * configure.ac: Add --enable-first-stage-cross. > * configure: Regenerate. > > gcc/ChangeLog: > > * doc/install.texi: Document --enable-first-stage-cross. > --- > configure | 20 ++++++++++++++++++++ > configure.ac | 15 +++++++++++++++ > gcc/doc/install.texi | 7 +++++++ > 3 files changed, 42 insertions(+) > > diff --git a/configure b/configure > index 85ab9915402..df59036e258 100755 > --- a/configure > +++ b/configure > @@ -787,6 +787,7 @@ ac_user_opts=' > enable_option_checking > with_build_libsubdir > with_system_zlib > +enable_first_stage_cross > enable_as_accelerator_for > enable_offload_targets > enable_offload_defaulted > @@ -1514,6 +1515,9 @@ 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-first-stage-cross > + Build a static-only compiler that is sufficient to > + build glibc. > --enable-as-accelerator-for=ARG > build as offload target compiler. Specify offload > host triple by ARG > @@ -2961,6 +2965,22 @@ case $is_cross_compiler in > no) skipdirs="${skipdirs} ${cross_only}" ;; > esac > > +# Check whether --enable-first-stage-cross was given. > +if test "${enable_first_stage_cross+set}" = set; then : > + enableval=$enable_first_stage_cross; ENABLE_FIRST_STAGE_CROSS=$enableval > +else > + ENABLE_FIRST_STAGE_CROSS=no > +fi > + > +case "${ENABLE_FIRST_STAGE_CROSS}" in > + yes) > + noconfigdirs="$noconfigdirs target-libatomic target-libquadmath target-libgomp target-libssp" > + host_configargs="$host_configargs --disable-shared --disable-threads --disable-decimal-float --without-headers --with-newlib" > + target_configargs="$target_configargs --disable-shared" > + enable_languages=c > + ;; > +esac > + > # If both --with-headers and --with-libs are specified, default to > # --without-newlib. > if test x"${with_headers}" != x && test x"${with_headers}" != xno \ > diff --git a/configure.ac b/configure.ac > index 1df038b04f3..53f920c1a2c 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -268,6 +268,21 @@ case $is_cross_compiler in > no) skipdirs="${skipdirs} ${cross_only}" ;; > esac > > +AC_ARG_ENABLE(first-stage-cross, > +[AS_HELP_STRING([--enable-first-stage-cross], > + [Build a static-only compiler that is > + sufficient to build glibc.])], > +ENABLE_FIRST_STAGE_CROSS=$enableval, > +ENABLE_FIRST_STAGE_CROSS=no) > +case "${ENABLE_FIRST_STAGE_CROSS}" in > + yes) > + noconfigdirs="$noconfigdirs target-libatomic target-libquadmath target-libgomp target-libssp" > + host_configargs="$host_configargs --disable-shared --disable-threads --disable-decimal-float --without-headers --with-newlib" > + target_configargs="$target_configargs --disable-shared" > + enable_languages=c > + ;; > +esac > + > # If both --with-headers and --with-libs are specified, default to > # --without-newlib. > if test x"${with_headers}" != x && test x"${with_headers}" != xno \ > diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi > index 6eee1bb43d4..b19923769e0 100644 > --- a/gcc/doc/install.texi > +++ b/gcc/doc/install.texi > @@ -2501,6 +2501,13 @@ When you use this option, you should ensure that @var{dir} includes > @command{ranlib} and @command{strip} if necessary, and possibly > @command{objdump}. Otherwise, GCC may use an inconsistent set of > tools. > + > +@item --enable-first-stage-cross > +Build static-only, C-only compiler that is sufficient to cross compile glibc. > +This option disables various runtime libraries that require libc to compile, > +turns on @option{--with-newlib}, @option{--without-headers}, > +@option{--disable-decimal-float}, @option{--disable-shared}, > +@option{--disable-threads} and sets @option{--enable-languages=c}. > @end table > > @subsubheading Overriding @command{configure} test results