diff options
Diffstat (limited to 'arm-stmos/create-toolchain.sh')
-rwxr-xr-x | arm-stmos/create-toolchain.sh | 104 |
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" |