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
 | |
| 
 | |
| 
 | |
| 
 |