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.
		
		
		
		
			
				
					67 lines
				
				1.5 KiB
			
		
		
			
		
	
	
					67 lines
				
				1.5 KiB
			| 
								 
											6 years ago
										 
									 | 
							
								#!/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
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 |