summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOxore <oxore@protonmail.com>2022-06-18 20:34:10 +0300
committerOxore <oxore@protonmail.com>2022-06-18 20:34:10 +0300
commit18b217ea11efa74e3fcf04abaaae1ebd32210440 (patch)
tree7a7b9d44181480ce241ef225ff28f04ab63b4e84
parent5cddfc7214117a2a8e5c4a11429a33dde50edd19 (diff)
Compile with soft floating point support
-rw-r--r--3-build-binutils.sh52
-rw-r--r--4-build-gcc-stage-1.sh81
-rw-r--r--5-build-newlib.sh52
-rw-r--r--Readme.md4
4 files changed, 132 insertions, 57 deletions
diff --git a/3-build-binutils.sh b/3-build-binutils.sh
index f3f6610..4d7eeeb 100644
--- a/3-build-binutils.sh
+++ b/3-build-binutils.sh
@@ -1,18 +1,44 @@
#!/bin/sh
source ./common
+options_do_configure=1
+options_do_build=1
+options_do_install=1
+
+if [ "$0" == "-i" ]; then
+ options_do_configure=
+ options_do_build=
+ options_do_install=1
+fi
+
mkdir -p build/binutils-$binutils_ver
cd build/binutils-$binutils_ver
-echo "Configuring binutils-${binutils_ver}"
-../../unpacked/binutils-$binutils_ver/configure --prefix=$prefix_dir --target=$target --disable-multilib >configure.log 2>&1
-ret=$?
-if [ $ret -ne 0 ]; then less configure.log; exit 1; fi
-echo "Building binutils-$binutils_ver"
-make -j$jobs >build.log 2>&1
-ret=$?
-if [ $ret -ne 0 ]; then less build.log; exit 1; fi
-echo "Installing binutils-$binutils_ver"
-make install >install.log 2>&1
-ret=$?
-if [ $ret -ne 0 ]; then less install.log; exit 1; fi
-echo Done with binutils-$binutils_ver
+if [ -n "$options_do_configure" ]; then
+ echo "Configuring binutils-${binutils_ver}"
+ ../../unpacked/binutils-$binutils_ver/configure \
+ --prefix=$prefix_dir \
+ --target=$target \
+ --disable-multilib \
+ --with-float=soft \
+ --enable-soft-float \
+ >configure.log 2>&1
+ ret=$?
+ if [ $ret -ne 0 ]; then less configure.log; exit 1; fi
+fi
+if [ -n "$options_do_build" ]; then
+ echo "Building binutils-$binutils_ver"
+ make -j$jobs >build.log 2>&1
+ ret=$?
+ if [ $ret -ne 0 ]; then less build.log; exit 1; fi
+fi
+if [ -n "$options_do_install" ]; then
+ echo "Installing binutils-$binutils_ver"
+ make install >install.log 2>&1
+ ret=$?
+ if [ $ret -ne 0 ]; then less install.log; exit 1; fi
+fi
+if [ -z "$options_do_configure$options_do_build$options_do_install" ]; then
+ echo "Nothing to be done for binutils-$binutils_ver"
+else
+ echo "Done with binutils-$binutils_ver"
+fi
diff --git a/4-build-gcc-stage-1.sh b/4-build-gcc-stage-1.sh
index cdcfe95..ab35497 100644
--- a/4-build-gcc-stage-1.sh
+++ b/4-build-gcc-stage-1.sh
@@ -1,39 +1,58 @@
#!/bin/sh
source ./common
+options_do_configure=1
+options_do_build=1
+options_do_install=1
+
+if [ "$0" == "-i" ]; then
+ options_do_configure=
+ options_do_build=
+ options_do_install=1
+fi
+
ln -Tsfrv unpacked/mpc-$mpc_ver unpacked/gcc-$gcc_ver/mpc
ln -Tsfrv unpacked/mpfr-$mpfr_ver unpacked/gcc-$gcc_ver/mpfr
ln -Tsfrv unpacked/isl-$isl_ver unpacked/gcc-$gcc_ver/isl
mkdir -p build/gcc-$gcc_ver
cd build/gcc-$gcc_ver
-echo "Configuring gcc-${gcc_ver} (stage 1)"
-# See https://gist.githubusercontent.com/lirenlin/a40d4b510799fa31acba/raw/0b6d0bc74b21661f6cbbcfbda86b3fea25b5ce77/build-gcc.md
-../../unpacked/gcc-$gcc_ver/configure \
- --prefix=$prefix_dir \
- --target=$target \
- --with-newlib \
- --with-gnu-as \
- --with-gnu-ld \
- --enable-lto \
- --enable-linker-build-id \
- --disable-libmudflap \
- --disable-libgomp \
- --disable-libssp \
- --disable-libstdcxx-pch \
- --enable-multiarch \
- --disable-multilib \
- --enable-languages=c,c++ \
- --with-headers=../../unpacked/newlib-$newlib_ver/newlib/libc/include \
- --disable-shared \
- >configure-stage-1.log 2>&1
-ret=$?
-if [ $ret -ne 0 ]; then less configure-stage-1.log; exit 1; fi
-echo "Building gcc-$gcc_ver (stage 1)"
-make -j$jobs all >build-stage-1.log 2>&1
-ret=$?
-if [ $ret -ne 0 ]; then less build-stage-1.log; exit 1; fi
-echo "Installing gcc-$gcc_ver (stage 1)"
-make install >install-stage-1.log 2>&1
-ret=$?
-if [ $ret -ne 0 ]; then less install-stage-1.log; exit 1; fi
-echo "Done with gcc-$gcc_ver (stage 1)"
+if [ -n "$options_do_configure" ]; then
+ echo "Configuring gcc-${gcc_ver} (stage 1)"
+ ../../unpacked/gcc-$gcc_ver/configure \
+ --prefix=$prefix_dir \
+ --target=$target \
+ --with-newlib \
+ --with-gnu-as \
+ --with-gnu-ld \
+ --enable-lto \
+ --enable-linker-build-id \
+ --disable-libmudflap \
+ --disable-libgomp \
+ --disable-libssp \
+ --disable-libstdcxx-pch \
+ --enable-multiarch \
+ --enable-soft-float \
+ --enable-languages=c,c++ \
+ --with-headers=../../unpacked/newlib-$newlib_ver/newlib/libc/include \
+ --disable-shared \
+ >configure-stage-1.log 2>&1
+ ret=$?
+ if [ $ret -ne 0 ]; then less configure-stage-1.log; exit 1; fi
+fi
+if [ -n "$options_do_build" ]; then
+ echo "Building gcc-$gcc_ver (stage 1)"
+ make -j$jobs all >build-stage-1.log 2>&1
+ ret=$?
+ if [ $ret -ne 0 ]; then less build-stage-1.log; exit 1; fi
+fi
+if [ -n "$options_do_install" ]; then
+ echo "Installing gcc-$gcc_ver (stage 1)"
+ make install >install-stage-1.log 2>&1
+ ret=$?
+ if [ $ret -ne 0 ]; then less install-stage-1.log; exit 1; fi
+fi
+if [ -z "$options_do_configure$options_do_build$options_do_install" ]; then
+ echo "Nothing to be done for gcc-$gcc_ver (stage 1)"
+else
+ echo "Done with gcc-$gcc_ver (stage 1)"
+fi
diff --git a/5-build-newlib.sh b/5-build-newlib.sh
index ddbc704..87cdc6f 100644
--- a/5-build-newlib.sh
+++ b/5-build-newlib.sh
@@ -2,18 +2,44 @@
source ./common
export PATH="$prefix_dir/bin:${PATH:+:${PATH}}"
+options_do_configure=1
+options_do_build=1
+options_do_install=1
+
+if [ "$0" == "-i" ]; then
+ options_do_configure=
+ options_do_build=
+ options_do_install=1
+fi
+
mkdir -p build/newlib-$newlib_ver
cd build/newlib-$newlib_ver
-echo "Configuring newlib-${newlib_ver}"
-../../unpacked/newlib-$newlib_ver/configure --prefix=$prefix_dir --target=$target >configure.log 2>&1
-ret=$?
-if [ $ret -ne 0 ]; then less configure.log; exit 1; fi
-echo "Building newlib-$newlib_ver"
-make -j$jobs >build.log 2>&1
-ret=$?
-if [ $ret -ne 0 ]; then less build.log; exit 1; fi
-echo "Installing newlib-$newlib_ver"
-make install >install.log 2>&1
-ret=$?
-if [ $ret -ne 0 ]; then less install.log; exit 1; fi
-echo "Done with newlib-$newlib_ver"
+if [ -n "$options_do_configure" ]; then
+ echo "Configuring newlib-${newlib_ver}"
+ CFLAGS_FOR_TARGET="-g -O2 -msoft-float -march=m4k" \
+ ../../unpacked/newlib-$newlib_ver/configure \
+ --prefix=$prefix_dir \
+ --target=$target \
+ --with-float=soft \
+ --enable-soft-float \
+ >configure.log 2>&1
+ ret=$?
+ if [ $ret -ne 0 ]; then less configure.log; exit 1; fi
+fi
+if [ -n "$options_do_build" ]; then
+ echo "Building newlib-$newlib_ver"
+ make -j$jobs >build.log 2>&1
+ ret=$?
+ if [ $ret -ne 0 ]; then less build.log; exit 1; fi
+fi
+if [ -n "$options_do_install" ]; then
+ echo "Installing newlib-$newlib_ver"
+ make install >install.log 2>&1
+ ret=$?
+ if [ $ret -ne 0 ]; then less install.log; exit 1; fi
+fi
+if [ -z "$options_do_configure$options_do_build$options_do_install" ]; then
+ echo "Nothing to be done for newlib-$newlib_ver"
+else
+ echo "Done with newlib-$newlib_ver"
+fi
diff --git a/Readme.md b/Readme.md
new file mode 100644
index 0000000..a5ed297
--- /dev/null
+++ b/Readme.md
@@ -0,0 +1,4 @@
+# Useful resources
+
+- https://gist.github.com/lirenlin/a40d4b510799fa31acba
+- https://sourceware.org/legacy-ml/newlib/2011/msg00349.html