You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							66 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							66 lines
						
					
					
						
							1.5 KiB
						
					
					
				#!/usr/bin/env bash
 | 
						|
# https://blog.tan-ce.com/gcc-bare-metal/
 | 
						|
# https://imvoid.wordpress.com/2013/05/01/building-the-gnu-arm-toolchain-for-bare-metal/
 | 
						|
set -e
 | 
						|
 | 
						|
BINUTILS=binutils-2.32
 | 
						|
GCC=gcc-4.7.1
 | 
						|
 | 
						|
mkdir -p src
 | 
						|
pushd src
 | 
						|
if [ ! -d $BINUTILS ]; then
 | 
						|
  wget ftp://ftp.gnu.org/gnu/binutils/$BINUTILS.tar.bz2
 | 
						|
  tar -xf $BINUTILS.tar.bz2
 | 
						|
fi
 | 
						|
popd
 | 
						|
 | 
						|
# TODO: replace with /usr
 | 
						|
mkdir -p out
 | 
						|
PREFIX=$PWD/out
 | 
						|
 | 
						|
mkdir -p build/$BINUTILS
 | 
						|
pushd build/$BINUTILS
 | 
						|
../../src/$BINUTILS/configure --target=arm-none-eabi \
 | 
						|
  --build=aarch64-unknown-linux-gnu \
 | 
						|
  --prefix=$PREFIX --with-cpu=cortex-m4 \
 | 
						|
  --with-mode=thumb \
 | 
						|
  --disable-nls \
 | 
						|
  --disable-werror
 | 
						|
make -j4 all
 | 
						|
make install
 | 
						|
popd
 | 
						|
 | 
						|
mkdir -p src
 | 
						|
pushd src
 | 
						|
if [ ! -d $GCC ]; then
 | 
						|
  wget ftp://ftp.gnu.org/gnu/gcc/$GCC/$GCC.tar.bz2
 | 
						|
  tar -xf $GCC.tar.bz2
 | 
						|
 | 
						|
  cd $GCC
 | 
						|
  contrib/download_prerequisites
 | 
						|
fi
 | 
						|
 | 
						|
popd
 | 
						|
 | 
						|
export PATH="$PREFIX/bin:$PATH"
 | 
						|
 | 
						|
mkdir -p build/$GCC
 | 
						|
pushd build/$GCC
 | 
						|
../../src/$GCC/configure --target=arm-none-eabi \
 | 
						|
  --build=aarch64-unknown-linux-gnu \
 | 
						|
  --disable-libssp --disable-gomp --disable-libstcxx-pch --enable-threads \
 | 
						|
  --disable-shared --disable-libmudflap \
 | 
						|
  --prefix=$PREFIX --with-cpu=cortex-m4 \
 | 
						|
  --with-mode=thumb --disable-multilib \
 | 
						|
  --enable-interwork \
 | 
						|
  --enable-languages="c" \
 | 
						|
  --disable-nls \
 | 
						|
  --disable-libgcc
 | 
						|
make -j4 all-gcc
 | 
						|
make install-gcc
 | 
						|
popd
 | 
						|
 | 
						|
# replace stdint.h with stdint-gcc.h for Android compatibility
 | 
						|
mv $PREFIX/lib/gcc/arm-none-eabi/4.7.1/include/stdint-gcc.h $PREFIX/lib/gcc/arm-none-eabi/4.7.1/include/stdint.h
 | 
						|
 | 
						|
 | 
						|
 |