commit:     c682495fd80c201f1323907aecfbe642debb005d
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Mon Feb  5 18:39:42 2024 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Mon Feb  5 18:40:32 2024 +0000
URL:        https://gitweb.gentoo.org/repo/proj/prefix.git/commit/?id=c682495f

scripts/bootstrap-prefix: bootstrap GCC-5 on Darwin 9

This is sufficient to compile Python, and should be sufficient to
compile GCC-13.

Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>

 scripts/bootstrap-prefix.sh | 64 +++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 62 insertions(+), 2 deletions(-)

diff --git a/scripts/bootstrap-prefix.sh b/scripts/bootstrap-prefix.sh
index 1bbcd7cdb9..5f6d8b7db4 100755
--- a/scripts/bootstrap-prefix.sh
+++ b/scripts/bootstrap-prefix.sh
@@ -189,7 +189,7 @@ configure_toolchain() {
                                *"(GCC) "[1-9]*|"gcc ("*") "[1-9]*)
                                        local cvers="${ccvers#*)}"; 
cvers="${cvers%%.*}"
                                        # GCC-5 has C11 see above
-                                       if [[ ${ccvers} -ge 5 ]] ; then
+                                       if [[ ${cvers} -ge 5 ]] ; then
                                                : # ok!
                                        else
                                                # FIXME: should probably stage1 
bootstrap GCC-5
@@ -866,6 +866,27 @@ bootstrap_gnu() {
                myconf="${myconf} --disable-perl-regexp"
        fi
 
+       if [[ ${PN} == "mpfr" || ${PN} == "mpc" || ${PN} == "gcc" ]] ; then
+               [[ -e "${ROOT}"/tmp/usr/include/gmp.h ]] \
+                       && myconf="${myconf} --with-gmp=${ROOT}/tmp/usr"
+       fi
+       if [[ ${PN} == "mpc" || ${PN} == "gcc" ]] ; then
+               [[ -e "${ROOT}"/tmp/usr/include/mpfr.h ]] \
+                       && myconf="${myconf} --with-mpfr=${ROOT}/tmp/usr"
+       fi
+       if [[ ${PN} == "gcc" ]] ; then
+               [[ -e "${ROOT}"/tmp/usr/include/mpc.h ]] \
+                       && myconf="${myconf} --with-mpc=${ROOT}/tmp/usr"
+
+               myconf="${myconf} --enable-languages=c,c++"
+               myconf="${myconf} --disable-bootstrap"
+               myconf="${myconf} --disable-multilib"
+               myconf="${myconf} --disable-nls"
+
+               export CFLAGS="-O1 -pipe"
+               export CXXFLAGS="-O1 -pipe"
+       fi
+
        # pod2man may be too old (not understanding --utf8) but we don't
        # care about manpages at this stage
        export ac_cv_path_POD2MAN=no
@@ -1244,6 +1265,23 @@ bootstrap_libffi() {
        bootstrap_gnu libffi 3.0.8
 }
 
+bootstrap_gmp() {
+       bootstrap_gnu gmp 6.2.1
+}
+
+bootstrap_mpfr() {
+       bootstrap_gnu mpfr 4.1.0
+}
+
+bootstrap_mpc() {
+       bootstrap_gnu mpc 1.2.1
+}
+
+bootstrap_gcc5() {
+       # bootstraps with gcc-4.0.1 (Darwin 8), provides C11
+       bootstrap_gnu gcc 5.5.0
+}
+
 bootstrap_sed() {
        bootstrap_gnu sed 4.5 || \
        bootstrap_gnu sed 4.2.2 || bootstrap_gnu sed 4.2.1
@@ -1399,6 +1437,27 @@ bootstrap_stage1() {
                [[ -e ${ROOT}/tmp/${x} ]] || ( cd "${ROOT}"/tmp && ln -s 
usr/${x} )
        done
 
+       # we could check compiler version here, but we just know
+       # it's Darwin 8 and 9 being affected here, so handle them to
+       # get a GCC-5 which is sufficient to compile the current tree
+       # packages
+       # see also configure_toolchain
+       if [[ ${CHOST} == *-darwin[89] ]] ; then
+               # benefit from 4.2 if it's present
+               if [[ -e /usr/bin/gcc-4.2 ]] ; then
+                       export CC=gcc-4.2
+                       export CXX=g++-4.2
+               fi
+               [[ -e ${ROOT}/tmp/usr/include/gmp.h ]] \
+                       || (bootstrap_gmp) || return 1
+               [[ -e ${ROOT}/tmp/usr/include/mpfr.h ]] \
+                       || (bootstrap_mpfr) || return 1
+               [[ -e ${ROOT}/tmp/usr/include/mpc.h ]] \
+                       || (bootstrap_mpc) || return 1
+               [[ -x ${ROOT}/tmp/usr/bin/gcc ]] \
+                       || (bootstrap_gcc5) || return 1
+       fi
+
        configure_toolchain
        export CC CXX
 
@@ -1456,7 +1515,7 @@ bootstrap_stage1() {
                || (bootstrap_grep) || return 1
        [[ -x ${ROOT}/tmp/usr/bin/gawk ]] \
                || [[ $(awk --version < /dev/null 2>&1) == *GNU" Awk "[456789]* 
]] \
-               || bootstrap_gawk || return 1
+               || (bootstrap_gawk) || return 1
        # always build our own bash, for we don't know what devilish thing
        # we're working with now, bug #650284
        [[ -x ${ROOT}/tmp/usr/bin/bash ]] \
@@ -1514,6 +1573,7 @@ bootstrap_stage1() {
                        fi
                        ;;
        esac
+
        # Host compiler can output a variety of libdirs.  At stage1,
        # they should be the same as lib.  Otherwise libffi may not be
        # found by python.

Reply via email to