aboutsummaryrefslogtreecommitdiffstats
path: root/arm-stmos/create-toolchain.sh
diff options
context:
space:
mode:
Diffstat (limited to 'arm-stmos/create-toolchain.sh')
-rwxr-xr-xarm-stmos/create-toolchain.sh104
1 files changed, 70 insertions, 34 deletions
diff --git a/arm-stmos/create-toolchain.sh b/arm-stmos/create-toolchain.sh
index 1df12ee..c197b2a 100755
--- a/arm-stmos/create-toolchain.sh
+++ b/arm-stmos/create-toolchain.sh
@@ -13,47 +13,83 @@
# libmpfr-dev
# Get sources
-wget https://ftp.gnu.org/gnu/binutils/binutils-2.31.1.tar.xz
-wget https://ftp.gnu.org/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.xz
-tar xfv ./binutils-2.31.1.tar.xz
-tar xfv ./gcc-8.2.0.tar.xz
+if [ ! -d ./binutils-2.31.1 ]; then
+ wget https://ftp.gnu.org/gnu/binutils/binutils-2.31.1.tar.xz
+ tar xf ./binutils-2.31.1.tar.xz
+ rm ./binutils-2.31.1.tar.xz
+
+ # Apply binutils changes
+ for file in $(find ./binutils-files -name '*.*'); do
+ cp -v $file $(echo $file | sed s/binutils-files/binutils-2.31.1/)
+ done
+fi
+if [ ! -d ./gcc-8.2.0 ]; then
+ wget https://ftp.gnu.org/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.xz
+ tar xf ./gcc-8.2.0.tar.xz
+ rm ./gcc-8.2.0.tar.xz
+
+ # Apply gcc changes
+ for file in $(find ./gcc-files -name '*.*'); do
+ cp -v $file $(echo $file | sed s/gcc-files/gcc-8.2.0/)
+ done
+fi
-# Apply binutils changes
-for file in $(find ./binutils-files -name '*.*'); do
- cp -v $file $(echo $file | sed s/binutils-files/binutils-2.31.1/)
-done
-# Apply gcc changes
-for file in $(find ./gcc-files -name '*.*'); do
- cp -v $file $(echo $file | sed s/gcc-files/gcc-8.2.0/)
-done
# Prepare
export TARGET=arm-stmos
-mkdir -p $HOME/$TARGET
-export PATH="$HOME/$TARGET/bin:$PATH"
+export PREFIX=$HOME/$TARGET
+mkdir -p $PREFIX
+export PATH="$PREFIX/bin:$PATH"
# Build binutils
-cd ./binutils-2.31.1/ld
-automake
-
-mkdir ../build
-cd ../build
-echo "Configure binutils... (../configure)"
-bash
-echo "Building binutils..."
-make -j8
-make install
+if ! [ -x "$(command -v $TARGET-as)" ]; then
+ echo "Starting binutils..."
+ cd ./binutils-2.31.1/ld
+ aclocal
+ automake
+
+ mkdir ../build
+ cd ../build
+ echo "Configuring binutils..."
+ ../configure --prefix=$PREFIX --target=$TARGET --with-sysroot --disable-nls
+ echo "Building binutils..."
+ make -j8
+ make install
+
+ echo "Binutils installed. Test if it works? (Ctrl+D to continue with gcc)"
+ bash
+else
+ echo "Binutils found, skipping..."
+ cd binutils-2.31.1/build
+fi
# Build gcc
-cd ../../gcc-8.2.0/libstdc++-v3/
-autoconf
-
-mkdir ../build
-cd ../build
-echo "Configure gcc... (../configure)"
-bash
-echo "Building gcc..."
-make -j8
-make install
+if ! [ -x "$(command -v $TARGET-gcc)" ]; then
+ if [ ! -d "$PREFIX/usr/include" ]; then
+ # Control will enter here if $DIRECTORY doesn't exist.
+ echo "Installing pdclib includes..."
+ mkdir -p $PREFIX/usr/include
+ cp -Rv ../../../src/pdclib/include/* $PREFIX/usr/include
+ cp -Rv ../../../src/pdclib/platform/stmos/include/* \
+ $PREFIX/usr/include
+ fi
+
+ cd ../../gcc-8.2.0/libstdc++-v3/
+ autoreconf
+ autoconf
+
+ mkdir ../build
+ cd ../build
+ echo "Configuring gcc..."
+ ../configure --prefix=$PREFIX --target=$TARGET --with-sysroot=$PREFIX \
+ --disable-nls --enable-languages=c,c++
+ echo "Building gcc..."
+ make all-gcc all-target-libgcc -j8
+ make install-gcc install-target-libgcc -j8
+else
+ echo "gcc found, skipping..."
+fi
+
+echo "All done :) enjoy"