gcc-8.3.0: build bootloader libraries (#6385)

needed for arm
This commit is contained in:
davidkaroly
2021-11-10 18:27:24 +01:00
committed by GitHub
parent 862593c122
commit 3519a0f327

View File

@@ -5,7 +5,7 @@ HOMEPAGE="https://gcc.gnu.org/"
COPYRIGHT="1988-2019 Free Software Foundation, Inc."
LICENSE="GNU GPL v3
GNU LGPL v3"
REVISION="13"
REVISION="14"
gccVersion="${portVersion%%_*}"
SOURCE_URI="https://ftpmirror.gnu.org/gcc/gcc-$gccVersion/gcc-$gccVersion.tar.xz
https://ftp.gnu.org/gnu/gcc/gcc-$gccVersion/gcc-$gccVersion.tar.xz"
@@ -104,7 +104,9 @@ PROVIDES_syslibs_devel="
gcc${secondaryArchSuffix}_syslibs_devel = $portVersion compat >= 7
devel:libatomic$secondaryArchSuffix = $libatomicLibVersion compat >= $libatomicSoVersion
devel:libgcc$secondaryArchSuffix = $libgccLibVersion compat >= $libgccSoVersion
devel:libgcc_boot$secondaryArchSuffix = $libgccLibVersion compat >= $libgccSoVersion
devel:libgcc_eh$secondaryArchSuffix = $libgccLibVersion compat >= $libgccSoVersion
devel:libgcc_eh_boot$secondaryArchSuffix = $libgccLibVersion compat >= $libgccSoVersion
devel:libgcc_eh_kernel$secondaryArchSuffix = $libgccLibVersion compat >= $libgccSoVersion
devel:libgcc_kernel$secondaryArchSuffix = $libgccLibVersion compat >= $libgccSoVersion
devel:libgcc_s$secondaryArchSuffix = $libgccLibVersion compat >= $libgccSoVersion
@@ -116,6 +118,7 @@ PROVIDES_syslibs_devel="
devel:libstdc++$secondaryArchSuffix = $libstdcxxLibVersion compat >= $libstdcxxSoVersion
devel:libstdc++fs$secondaryArchSuffix = $portVersion compat >= 7
devel:libsupc++$secondaryArchSuffix = $portVersion compat >= 7
devel:libsupc++_boot$secondaryArchSuffix = $portVersion compat >= 7
devel:libsupc++_kernel$secondaryArchSuffix = $portVersion compat >= 7
"
REQUIRES_syslibs_devel=""
@@ -219,9 +222,9 @@ BUILD()
make $jobArgs
echo "######################## building special libraries ################"
echo "#################### building special libraries ####################"
echo "### libgcc"
echo "### libgcc-kernel ###"
# build kernel versions of libgcc.a and libgcc_eh.a (no threads or TLS)
cd $objectsDir/$effectiveTargetMachineTriple/libgcc
@@ -229,13 +232,15 @@ BUILD()
mv libgcc.a libgcc_eh.a libgcc_s* libgcov* saved/
make clean
ln -sfn "$sourceDir/libgcc/gthr-single.h" gthr-default.h
make CFLAGS="-O2 $kernelCcFlags" CXXFLAGS="-O2 $kernelCcFlags"
make $jobArgs CFLAGS="-O2 $kernelCcFlags" CXXFLAGS="-O2 $kernelCcFlags"
mv libgcc.a libgcc-kernel.a
mv libgcc_eh.a libgcc_eh-kernel.a
ln -sfn "$sourceDir/libgcc/gthr-posix.h" gthr-default.h
mv saved/* .
rmdir saved
echo "### libsupc++-kernel ###"
# build kernel version of libsupc++.a (without threads or TLS)
cd $objectsDir/$effectiveTargetMachineTriple/libstdc++-v3/libsupc++
mkdir -p saved
@@ -251,13 +256,57 @@ BUILD()
"../config.h"
sed -i -e 's,#define _GLIBCXX_HAVE_TLS 1,/* #undef _GLIBCXX_HAVE_TLS */,' \
"../include/$effectiveTargetMachineTriple/bits/c++config.h"
make CFLAGS="-O2 $kernelCcFlags" CXXFLAGS="-O2 $kernelCcFlags"
make $jobArgs CFLAGS="-O2 $kernelCcFlags" CXXFLAGS="-O2 $kernelCcFlags"
mv .libs/libsupc++.a .libs/libsupc++-kernel.a
mv saved/libsupc++* .libs/
mv saved/gthr-default.h "../include/$effectiveTargetMachineTriple/bits/"
mv saved/config.h ..
mv saved/c++config.h "../include/$effectiveTargetMachineTriple/bits/"
rmdir saved
local bootCcFlags
if [ $effectiveTargetArchitecture == arm ]; then
# EFI arm (32-bit) requires software fp
bootCcFlags+="-mfloat-abi=soft -nostartfiles -fshort-wchar";
fi
echo "### libgcc-boot ###"
# build bootloader version of libgcc and libgcc_eh.a (no threads, TLS)
cd $objectsDir/$effectiveTargetMachineTriple/libgcc
mkdir -p saved
mv libgcc.a libgcc_eh.a libgcc_s* libgcov* libgcc-kernel.a libgcc_eh-kernel.a saved/
make clean
ln -sfn "$sourceDir/libgcc/gthr-single.h" gthr-default.h
make $jobArgs CFLAGS="-O2 $bootCcFlags" CXXFLAGS="-O2 $bootCcFlags"
mv libgcc.a libgcc-boot.a
mv libgcc_eh.a libgcc_eh-boot.a
ln -sfn "$sourceDir/libgcc/gthr-posix.h" gthr-default.h
mv saved/* .
rmdir saved
echo "### libsupc++-boot ###"
# build bootloader version of libsupc++.a (without threads or TLS)
cd $objectsDir/$effectiveTargetMachineTriple/libstdc++-v3/libsupc++
mkdir -p saved
mv .libs/libsupc++* saved/
cp "../include/$effectiveTargetMachineTriple/bits/gthr-default.h" \
"../config.h" \
"../include/$effectiveTargetMachineTriple/bits/c++config.h" \
saved/
make clean
# deactivate threads and tls support
cp "../include/$effectiveTargetMachineTriple/bits/gthr-single.h" \
"../include/$effectiveTargetMachineTriple/bits/gthr-default.h"
sed -i -e 's,#define _GLIBCXX_HAS_GTHREADS 1,/* #undef _GLIBCXX_HAS_GTHREADS */,' \
"../config.h"
sed -i -e 's,#define _GLIBCXX_HAVE_TLS 1,/* #undef _GLIBCXX_HAVE_TLS */,' \
"../include/$effectiveTargetMachineTriple/bits/c++config.h"
make $jobArgs CFLAGS="-O2 $bootCcFlags" CXXFLAGS="-O2 $bootCcFlags"
mv .libs/libsupc++.a .libs/libsupc++-boot.a
mv saved/* .libs/
rmdir saved
}
INSTALL()
@@ -336,6 +385,8 @@ INSTALL()
libstdcxxDir=$objectsDir/$effectiveTargetMachineTriple/libstdc++-v3
cp $libstdcxxDir/libsupc++/.libs/libsupc++-kernel.a \
$gccLibDir/
cp $libstdcxxDir/libsupc++/.libs/libsupc++-boot.a \
$gccLibDir/
ln -s libstdc++.so $libDir/libsupc++.so
cp $gccLibDir/libsupc++*.a $developLibDir/
@@ -343,6 +394,9 @@ INSTALL()
cp $objectsDir/$effectiveTargetMachineTriple/libgcc/libgcc-kernel.a \
$objectsDir/$effectiveTargetMachineTriple/libgcc/libgcc_eh-kernel.a \
$gccLibDir/
cp $objectsDir/$effectiveTargetMachineTriple/libgcc/libgcc-boot.a \
$objectsDir/$effectiveTargetMachineTriple/libgcc/libgcc_eh-boot.a \
$gccLibDir/
cp -d $gccLibDir/libgcc_s.so \
$gccLibDir/libgcc_s.so.$libgccSoVersion \
$libDir/
@@ -457,12 +511,15 @@ INSTALL()
packageEntries "syslibs_devel" \
$developLibDir/*.so* \
$developLibDir/libgcc.a \
$developLibDir/libgcc-kernel.a \
$developLibDir/libgcc-boot.a \
$developLibDir/libgcc_eh.a \
$developLibDir/libgcc_eh-kernel.a \
$developLibDir/libgcc_eh-boot.a \
$developLibDir/libgcc-kernel.a \
$developLibDir/libssp_nonshared.a \
$developLibDir/libstdc++fs.a \
$developLibDir/libsupc++.a \
$developLibDir/libsupc++-boot.a \
$developLibDir/libsupc++-kernel.a \
$relativeIncludeDir