├── README ├── arm-patch ├── build_aarch64 ├── build_arm ├── build_arm10 ├── build_arm5 ├── build_arm9 ├── build_clean ├── build_llvm_aarch64 ├── build_llvm_armv4t ├── build_llvm_armv6m ├── build_llvm_armv7m ├── build_llvm_riscv ├── build_llvm_riscv32 ├── build_llvm_riscv64 ├── build_mips ├── build_moxie ├── build_msp430 ├── build_pdp11 ├── build_riscv ├── build_riscv32 ├── build_riscv64 ├── build_x86_64 ├── llvm_test ├── Makefile ├── memmap ├── one.c ├── start.s └── test.c ├── mips-patch ├── riscv-patch ├── save ├── build_clang ├── build_clang37 ├── build_esp32 ├── build_esp8266 ├── build_gdcarm ├── build_vbcc └── build_vbcc_arm └── test.c /README: -------------------------------------------------------------------------------- 1 | 2 | This is so I can save my gnu cross compiler build scripts for various 3 | targets. This is how I build the compilers I am using for the other 4 | examples. Also a clang/llvm script as well. 5 | 6 | clang/llvm only needs one build as it is by nature a cross compiler. 7 | 8 | these scripts were derived from a script found in the mpx project at 9 | opencores.org. 10 | 11 | -------------------------------------------------------------------------------- /arm-patch: -------------------------------------------------------------------------------- 1 | --- binutils-patch/opcodes/arm-dis.c 2 | +++ binutils-patch/opcodes/arm-dis.c 3 | @@ -3030,7 +3030,7 @@ 4 | }; 5 | 6 | /* Default to GCC register name set. */ 7 | -static unsigned int regname_selected = 1; 8 | +static unsigned int regname_selected = 2; 9 | 10 | #define NUM_ARM_REGNAMES NUM_ELEM (regnames) 11 | #define arm_regnames regnames[regname_selected].reg_names 12 | -------------------------------------------------------------------------------- /build_aarch64: -------------------------------------------------------------------------------- 1 | 2 | # Usage 3 | # sudo ./build_arm64 4 | 5 | # Setup vars 6 | export TARGET=aarch64-none-elf 7 | export PREFIX=/opt/gnu/aarch64 8 | export PATH=$PATH:$PREFIX/bin 9 | export JN='-j 16' 10 | 11 | sudo mkdir -p $PREFIX 12 | 13 | export GCCVER=14.1.0 14 | export BINUVER=2.42 15 | 16 | rm -rf build-* 17 | rm -rf gcc-* 18 | rm -rf binutils-* 19 | 20 | # Get archives 21 | wget https://ftp.gnu.org/gnu/binutils/binutils-$BINUVER.tar.gz 22 | wget https://ftp.gnu.org/gnu/gcc/gcc-$GCCVER/gcc-$GCCVER.tar.gz 23 | 24 | # Extract archives 25 | tar xf binutils-$BINUVER.tar.gz 26 | tar xf gcc-$GCCVER.tar.gz 27 | 28 | # Build binutils 29 | mkdir build-binutils 30 | cd build-binutils 31 | ../binutils-$BINUVER/configure --target=$TARGET --prefix=$PREFIX 32 | echo "MAKEINFO = :" >> Makefile 33 | make $JN all 34 | sudo make install 35 | 36 | # Build GCC 37 | mkdir ../build-gcc 38 | cd ../build-gcc 39 | ../gcc-$GCCVER/configure --target=$TARGET --prefix=$PREFIX --without-headers --with-newlib --with-gnu-as --with-gnu-ld --enable-languages='c' 40 | make $JN all-gcc 41 | sudo make install-gcc 42 | 43 | # Build libgcc.a 44 | make $JN all-target-libgcc CFLAGS_FOR_TARGET="-g -O2" 45 | sudo make install-target-libgcc 46 | 47 | -------------------------------------------------------------------------------- /build_arm: -------------------------------------------------------------------------------- 1 | 2 | # Usage 3 | # sudo ./build_arm 4 | 5 | # Setup vars 6 | export TARGET=arm-none-eabi 7 | export PREFIX=/opt/gnu/arm 8 | export PATH=$PATH:$PREFIX/bin 9 | export JN='-j 16' 10 | 11 | sudo mkdir -p $PREFIX 12 | 13 | export GCCVER=14.1.0 14 | export BINUVER=2.42 15 | 16 | rm -rf build-* 17 | rm -rf gcc-* 18 | rm -rf binutils-* 19 | 20 | # Get archives 21 | wget https://ftp.gnu.org/gnu/binutils/binutils-$BINUVER.tar.gz 22 | wget https://ftp.gnu.org/gnu/gcc/gcc-$GCCVER/gcc-$GCCVER.tar.gz 23 | 24 | # Extract archives 25 | tar xf binutils-$BINUVER.tar.gz 26 | tar xf gcc-$GCCVER.tar.gz 27 | 28 | # may have to touch this from time to time 29 | ln -s binutils-$BINUVER binutils-patch 30 | patch -p0 < arm-patch 31 | 32 | # Build binutils 33 | mkdir build-binutils 34 | cd build-binutils 35 | ../binutils-$BINUVER/configure --target=$TARGET --prefix=$PREFIX 36 | echo "MAKEINFO = :" >> Makefile 37 | make $JN all 38 | sudo make install 39 | 40 | # Build GCC 41 | mkdir ../build-gcc 42 | cd ../build-gcc 43 | ../gcc-$GCCVER/configure --target=$TARGET --prefix=$PREFIX --without-headers --with-newlib --with-gnu-as --with-gnu-ld --enable-languages='c' --enable-frame-pointer=no 44 | make $JN all-gcc 45 | sudo make install-gcc 46 | 47 | # Build libgcc.a 48 | make $JN all-target-libgcc CFLAGS_FOR_TARGET="-g -O2" 49 | sudo make install-target-libgcc 50 | 51 | -------------------------------------------------------------------------------- /build_arm10: -------------------------------------------------------------------------------- 1 | 2 | # Usage 3 | # sudo ./build_arm 4 | 5 | # Setup vars 6 | export TARGET=arm-none-eabi 7 | export PREFIX=/opt/gnuarm10 8 | export PATH=$PATH:$PREFIX/bin 9 | export JN='-j 8' 10 | 11 | export GCCVER=10.3.0 12 | export BINUVER=2.36.1 13 | 14 | rm -rf build-* 15 | rm -rf gcc-* 16 | rm -rf binutils-* 17 | 18 | # Get archives 19 | wget https://ftp.gnu.org/gnu/binutils/binutils-$BINUVER.tar.gz 20 | wget https://ftp.gnu.org/gnu/gcc/gcc-$GCCVER/gcc-$GCCVER.tar.gz 21 | 22 | # Extract archives 23 | tar xf binutils-$BINUVER.tar.gz 24 | tar xf gcc-$GCCVER.tar.gz 25 | 26 | # may have to touch this from time to time 27 | ln -s binutils-$BINUVER binutils-patch 28 | patch -p0 < arm-patch 29 | 30 | # Build binutils 31 | mkdir build-binutils 32 | cd build-binutils 33 | ../binutils-$BINUVER/configure --target=$TARGET --prefix=$PREFIX 34 | echo "MAKEINFO = :" >> Makefile 35 | make $JN all 36 | sudo make install 37 | 38 | # Build GCC 39 | mkdir ../build-gcc 40 | cd ../build-gcc 41 | ../gcc-$GCCVER/configure --target=$TARGET --prefix=$PREFIX --without-headers --with-newlib --with-gnu-as --with-gnu-ld --enable-languages='c' --enable-frame-pointer=no 42 | make $JN all-gcc 43 | sudo make install-gcc 44 | 45 | # Build libgcc.a 46 | make $JN all-target-libgcc CFLAGS_FOR_TARGET="-g -O2" 47 | sudo make install-target-libgcc 48 | 49 | -------------------------------------------------------------------------------- /build_arm5: -------------------------------------------------------------------------------- 1 | 2 | # Usage 3 | # sudo ./build_arm5 4 | 5 | # Setup vars 6 | export TARGET=arm-none-eabi 7 | export PREFIX=/opt/gnuarm5 8 | export PATH=$PATH:$PREFIX/bin 9 | export JN='-j 8' 10 | 11 | export GCCVER=5.5.0 12 | export BINUVER=2.35.1 13 | 14 | rm -rf build-* 15 | rm -rf gcc-* 16 | rm -rf binutils-* 17 | 18 | # Get archives 19 | wget https://ftp.gnu.org/gnu/binutils/binutils-$BINUVER.tar.gz 20 | wget https://ftp.gnu.org/gnu/gcc/gcc-$GCCVER/gcc-$GCCVER.tar.gz 21 | 22 | # Extract archives 23 | tar xf binutils-$BINUVER.tar.gz 24 | tar xf gcc-$GCCVER.tar.gz 25 | 26 | # may have to touch this from time to time 27 | ln -s binutils-$BINUVER binutils-patch 28 | patch -p0 < arm-patch 29 | 30 | # Build binutils 31 | mkdir build-binutils 32 | cd build-binutils 33 | ../binutils-$BINUVER/configure --target=$TARGET --prefix=$PREFIX 34 | echo "MAKEINFO = :" >> Makefile 35 | make $JN all 36 | make install 37 | 38 | # Build GCC 39 | mkdir ../build-gcc 40 | cd ../build-gcc 41 | ../gcc-$GCCVER/configure --target=$TARGET --prefix=$PREFIX --without-headers --with-newlib --with-gnu-as --with-gnu-ld --enable-languages='c' --enable-frame-pointer=no 42 | make $JN all-gcc 43 | make install-gcc 44 | 45 | # Build libgcc.a 46 | make $JN all-target-libgcc CFLAGS_FOR_TARGET="-g -O2" 47 | make install-target-libgcc 48 | 49 | -------------------------------------------------------------------------------- /build_arm9: -------------------------------------------------------------------------------- 1 | 2 | # Usage 3 | # sudo ./build_arm 4 | 5 | # Setup vars 6 | export TARGET=arm-none-eabi 7 | export PREFIX=/opt/gnuarm9 8 | export PATH=$PATH:$PREFIX/bin 9 | export JN='-j 8' 10 | 11 | export GCCVER=9.4.0 12 | export BINUVER=2.36.1 13 | 14 | rm -rf build-* 15 | rm -rf gcc-* 16 | rm -rf binutils-* 17 | 18 | # Get archives 19 | wget https://ftp.gnu.org/gnu/binutils/binutils-$BINUVER.tar.gz 20 | wget https://ftp.gnu.org/gnu/gcc/gcc-$GCCVER/gcc-$GCCVER.tar.gz 21 | 22 | # Extract archives 23 | tar xf binutils-$BINUVER.tar.gz 24 | tar xf gcc-$GCCVER.tar.gz 25 | 26 | # may have to touch this from time to time 27 | ln -s binutils-$BINUVER binutils-patch 28 | patch -p0 < arm-patch 29 | 30 | # Build binutils 31 | mkdir build-binutils 32 | cd build-binutils 33 | ../binutils-$BINUVER/configure --target=$TARGET --prefix=$PREFIX 34 | echo "MAKEINFO = :" >> Makefile 35 | make $JN all 36 | sudo make install 37 | 38 | # Build GCC 39 | mkdir ../build-gcc 40 | cd ../build-gcc 41 | ../gcc-$GCCVER/configure --target=$TARGET --prefix=$PREFIX --without-headers --with-newlib --with-gnu-as --with-gnu-ld --enable-languages='c' --enable-frame-pointer=no 42 | make $JN all-gcc 43 | sudo make install-gcc 44 | 45 | # Build libgcc.a 46 | make $JN all-target-libgcc CFLAGS_FOR_TARGET="-g -O2" 47 | sudo make install-target-libgcc 48 | 49 | -------------------------------------------------------------------------------- /build_clean: -------------------------------------------------------------------------------- 1 | 2 | rm -rf build-* 3 | rm -rf gcc-* 4 | rm -rf binutils-* 5 | rm -f test.o 6 | 7 | -------------------------------------------------------------------------------- /build_llvm_aarch64: -------------------------------------------------------------------------------- 1 | 2 | 3 | export LLREV=18.1.5 4 | 5 | export THEPLACE=/opt/llvm/aarch64 6 | export THETARGET=aarch64-none-eabi 7 | 8 | sudo mkdir -p /opt/llvm 9 | rm -rf llvm-project 10 | rm -rf $THEPLACE 11 | 12 | git clone https://github.com/llvm/llvm-project.git 13 | cd llvm-project 14 | git checkout llvmorg-$LLREV 15 | mkdir build 16 | cd build 17 | cmake \ 18 | -DLLVM_ENABLE_PROJECTS='clang;lld' \ 19 | -DCMAKE_BUILD_TYPE=Release \ 20 | -DCMAKE_CROSSCOMPILING=True \ 21 | -DCMAKE_INSTALL_PREFIX=$THEPLACE \ 22 | -DLLVM_DEFAULT_TARGET_TRIPLE=$THETARGET \ 23 | -DLLVM_TARGETS_TO_BUILD=AArch64 \ 24 | -G "Unix Makefiles" \ 25 | ../llvm 26 | 27 | make -j 16 28 | make -j 8 29 | make -j 4 30 | make 31 | sudo make install 32 | 33 | -------------------------------------------------------------------------------- /build_llvm_armv4t: -------------------------------------------------------------------------------- 1 | 2 | 3 | export LLREV=18.1.5 4 | 5 | export THEPLACE=/opt/llvm/armv4t 6 | export THETARGET=armv4t-none-eabi 7 | 8 | sudo mkdir -p /opt/llvm 9 | rm -rf llvm-project 10 | rm -rf $THEPLACE 11 | 12 | git clone https://github.com/llvm/llvm-project.git 13 | cd llvm-project 14 | git checkout llvmorg-$LLREV 15 | mkdir build 16 | cd build 17 | cmake \ 18 | -DLLVM_ENABLE_PROJECTS='clang;lld' \ 19 | -DCMAKE_BUILD_TYPE=Release \ 20 | -DCMAKE_CROSSCOMPILING=True \ 21 | -DCMAKE_INSTALL_PREFIX=$THEPLACE \ 22 | -DLLVM_DEFAULT_TARGET_TRIPLE=$THETARGET \ 23 | -DLLVM_TARGET_ARCH=ARM \ 24 | -DLLVM_TARGETS_TO_BUILD=ARM \ 25 | -G "Unix Makefiles" \ 26 | ../llvm 27 | 28 | make -j 16 29 | make -j 8 30 | make -j 4 31 | make 32 | sudo make install 33 | -------------------------------------------------------------------------------- /build_llvm_armv6m: -------------------------------------------------------------------------------- 1 | 2 | 3 | export LLREV=18.1.5 4 | 5 | export THEPLACE=/opt/llvm/armv6m 6 | export THETARGET=armv6m-none-eabi 7 | 8 | sudo mkdir -p /opt/llvm 9 | rm -rf llvm-project 10 | rm -rf $THEPLACE 11 | 12 | git clone https://github.com/llvm/llvm-project.git 13 | cd llvm-project 14 | git checkout llvmorg-$LLREV 15 | mkdir build 16 | cd build 17 | cmake \ 18 | -DLLVM_ENABLE_PROJECTS='clang;lld' \ 19 | -DCMAKE_BUILD_TYPE=Release \ 20 | -DCMAKE_CROSSCOMPILING=True \ 21 | -DCMAKE_INSTALL_PREFIX=$THEPLACE \ 22 | -DLLVM_DEFAULT_TARGET_TRIPLE=$THETARGET \ 23 | -DLLVM_TARGET_ARCH=ARM \ 24 | -DLLVM_TARGETS_TO_BUILD=ARM \ 25 | -G "Unix Makefiles" \ 26 | ../llvm 27 | 28 | make -j 16 29 | make -j 8 30 | make -j 4 31 | make 32 | sudo make install 33 | -------------------------------------------------------------------------------- /build_llvm_armv7m: -------------------------------------------------------------------------------- 1 | 2 | 3 | export LLREV=18.1.5 4 | 5 | export THEPLACE=/opt/llvm/armv7m 6 | export THETARGET=armv7m-none-eabi 7 | 8 | sudo mkdir -p /opt/llvm 9 | rm -rf $THEPLACE 10 | rm -rf llvm-project 11 | 12 | git clone https://github.com/llvm/llvm-project.git 13 | cd llvm-project 14 | git checkout llvmorg-$LLREV 15 | mkdir build 16 | cd build 17 | cmake \ 18 | -DLLVM_ENABLE_PROJECTS='clang;lld' \ 19 | -DCMAKE_BUILD_TYPE=Release \ 20 | -DCMAKE_CROSSCOMPILING=True \ 21 | -DCMAKE_INSTALL_PREFIX=$THEPLACE \ 22 | -DLLVM_DEFAULT_TARGET_TRIPLE=$THETARGET \ 23 | -DLLVM_TARGET_ARCH=ARM \ 24 | -DLLVM_TARGETS_TO_BUILD=ARM \ 25 | -G "Unix Makefiles" \ 26 | ../llvm 27 | 28 | make -j 16 29 | make -j 8 30 | make -j 4 31 | make 32 | sudo make install 33 | -------------------------------------------------------------------------------- /build_llvm_riscv: -------------------------------------------------------------------------------- 1 | 2 | export THEPLACE=/opt/llvm/llvm15riscv 3 | #export THETARGET=riscv-none-elf 4 | export THETARGET=riscv64-unknown-elf 5 | 6 | rm -rf $THEPLACE 7 | rm -rf llvm-project 8 | git clone https://github.com/llvm/llvm-project.git 9 | cd llvm-project 10 | git checkout llvmorg-15.0.1 11 | mkdir build 12 | cd build 13 | cmake \ 14 | -DLLVM_ENABLE_PROJECTS='clang;lld' \ 15 | -DCMAKE_BUILD_TYPE=Release \ 16 | -DCMAKE_CROSSCOMPILING=True \ 17 | -DCMAKE_INSTALL_PREFIX=$THEPLACE \ 18 | -DLLVM_DEFAULT_TARGET_TRIPLE=$THETARGET \ 19 | -DLLVM_TARGETS_TO_BUILD=RISCV \ 20 | -G "Unix Makefiles" \ 21 | ../llvm 22 | 23 | make -j 8 24 | make -j 4 25 | make 26 | sudo make install 27 | 28 | -------------------------------------------------------------------------------- /build_llvm_riscv32: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #export LLREV=15.0.7 5 | #export LLREV=16.0.4 6 | #export LLREV=17.0.6 7 | export LLREV=18.1.5 8 | 9 | export THEPLACE=/opt/llvm/riscv32 10 | export THETARGET=riscv32-unknown-elf 11 | 12 | sudo mkdir -p /opt/llvm 13 | rm -rf llvm-project 14 | 15 | rm -rf $THEPLACE 16 | rm -rf llvm-project 17 | git clone https://github.com/llvm/llvm-project.git 18 | cd llvm-project 19 | git checkout llvmorg-$LLREV 20 | cd llvm/tools 21 | ln -s ../../clang . 22 | ln -s ../../lld . 23 | cd ../../ 24 | mkdir build 25 | cd build 26 | 27 | cmake \ 28 | -G "Unix Makefiles" \ 29 | -DCMAKE_BUILD_TYPE="Release" \ 30 | -DBUILD_SHARED_LIBS=True \ 31 | -DLLVM_USE_SPLIT_DWARF=True \ 32 | -DCMAKE_INSTALL_PREFIX=$THEPLACE \ 33 | -DLLVM_OPTIMIZED_TABLEGEN=True \ 34 | -DLLVM_BUILD_TESTS=False \ 35 | -DDEFAULT_SYSROOT=$THEPLACE/$THETARGET \ 36 | -DLLVM_DEFAULT_TARGET_TRIPLE=$THETARGET \ 37 | -DLLVM_TARGETS_TO_BUILD="RISCV" \ 38 | ../llvm 39 | make -j 16 40 | make -j 8 41 | make -j 4 42 | make 43 | sudo make install 44 | #make install 45 | 46 | -------------------------------------------------------------------------------- /build_llvm_riscv64: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #export LLREV=15.0.7 5 | #export LLREV=16.0.4 6 | #export LLREV=17.0.6 7 | export LLREV=18.1.5 8 | 9 | export THEPLACE=/opt/llvm/riscv64 10 | export THETARGET=riscv64-unknown-elf 11 | 12 | sudo mkdir -p /opt/llvm 13 | rm -rf llvm-project 14 | 15 | rm -rf $THEPLACE 16 | rm -rf llvm-project 17 | git clone https://github.com/llvm/llvm-project.git 18 | cd llvm-project 19 | git checkout llvmorg-$LLREV 20 | cd llvm/tools 21 | ln -s ../../clang . 22 | ln -s ../../lld . 23 | cd ../../ 24 | mkdir build 25 | cd build 26 | 27 | cmake \ 28 | -G "Unix Makefiles" \ 29 | -DCMAKE_BUILD_TYPE="Release" \ 30 | -DBUILD_SHARED_LIBS=True \ 31 | -DLLVM_USE_SPLIT_DWARF=True \ 32 | -DCMAKE_INSTALL_PREFIX=$THEPLACE \ 33 | -DLLVM_OPTIMIZED_TABLEGEN=True \ 34 | -DLLVM_BUILD_TESTS=False \ 35 | -DDEFAULT_SYSROOT=$THEPLACE/$THETARGET \ 36 | -DLLVM_DEFAULT_TARGET_TRIPLE=$THETARGET \ 37 | -DLLVM_TARGETS_TO_BUILD="RISCV" \ 38 | ../llvm 39 | make -j 16 40 | make -j 8 41 | make -j 4 42 | make 43 | sudo make install 44 | #make install 45 | 46 | -------------------------------------------------------------------------------- /build_mips: -------------------------------------------------------------------------------- 1 | 2 | # Usage 3 | # sudo ./build_mips 4 | 5 | # Setup vars 6 | export TARGET=mips-elf 7 | export PREFIX=/opt/gnu/mips 8 | export PATH=$PATH:$PREFIX/bin 9 | export JN='-j 8' 10 | 11 | sudo mkdir -p $PREFIX 12 | 13 | export GCCVER=14.1.0 14 | export BINUVER=2.42 15 | 16 | rm -rf build-* 17 | rm -rf gcc-* 18 | rm -rf binutils-* 19 | 20 | # Get archives 21 | wget https://ftp.gnu.org/gnu/binutils/binutils-$BINUVER.tar.gz 22 | wget https://ftp.gnu.org/gnu/gcc/gcc-$GCCVER/gcc-$GCCVER.tar.gz 23 | 24 | # Extract archives 25 | tar xf binutils-$BINUVER.tar.gz 26 | tar xf gcc-$GCCVER.tar.gz 27 | 28 | # may have to touch this from time to time 29 | ln -s binutils-$BINUVER binutils-patch 30 | patch -p0 < mips-patch 31 | 32 | # Build binutils 33 | mkdir build-binutils 34 | cd build-binutils 35 | ../binutils-$BINUVER/configure --target=$TARGET --prefix=$PREFIX 36 | echo "MAKEINFO = :" >> Makefile 37 | make $JN all 38 | sudo make install 39 | 40 | # Build GCC 41 | mkdir ../build-gcc 42 | cd ../build-gcc 43 | ../gcc-$GCCVER/configure --target=$TARGET --prefix=$PREFIX --without-headers --with-newlib --with-gnu-as --with-gnu-ld --enable-languages='c' 44 | make $JN all-gcc 45 | sudo make install-gcc 46 | 47 | # Build libgcc.a 48 | make $JN all-target-libgcc CFLAGS_FOR_TARGET="-g -O2" 49 | sudo make install-target-libgcc 50 | 51 | -------------------------------------------------------------------------------- /build_moxie: -------------------------------------------------------------------------------- 1 | 2 | # Usage 3 | # sudo ./build_arm 4 | 5 | # Setup vars 6 | export TARGET=moxie-elf 7 | export PREFIX=/opt/gnu/moxie 8 | export PATH=$PATH:$PREFIX/bin 9 | export JN='-j 8' 10 | 11 | sudo mkdir -p $PREFIX 12 | 13 | export GCCVER=14.1.0 14 | export BINUVER=2.42 15 | 16 | rm -rf build-* 17 | rm -rf gcc-* 18 | rm -rf binutils-* 19 | 20 | # Get archives 21 | wget https://ftp.gnu.org/gnu/binutils/binutils-$BINUVER.tar.gz 22 | wget https://ftp.gnu.org/gnu/gcc/gcc-$GCCVER/gcc-$GCCVER.tar.gz 23 | 24 | # Extract archives 25 | tar xf binutils-$BINUVER.tar.gz 26 | tar xf gcc-$GCCVER.tar.gz 27 | 28 | # may have to touch this from time to time 29 | #ln -s binutils-$BINUVER binutils-patch 30 | #patch -p0 < arm-patch 31 | 32 | # Build binutils 33 | mkdir build-binutils 34 | cd build-binutils 35 | ../binutils-$BINUVER/configure --target=$TARGET --prefix=$PREFIX 36 | echo "MAKEINFO = :" >> Makefile 37 | make $JN all 38 | sudo make install 39 | 40 | # Build GCC 41 | mkdir ../build-gcc 42 | cd ../build-gcc 43 | ../gcc-$GCCVER/configure --target=$TARGET --prefix=$PREFIX --without-headers --with-newlib --with-gnu-as --with-gnu-ld --enable-languages='c' 44 | make $JN all-gcc 45 | sudo make install-gcc 46 | 47 | # Build libgcc.a 48 | #make $JN all-target-libgcc CFLAGS_FOR_TARGET="-g -O2" 49 | #sudo make install-target-libgcc 50 | 51 | -------------------------------------------------------------------------------- /build_msp430: -------------------------------------------------------------------------------- 1 | 2 | # Usage 3 | # sudo ./build_msp430 4 | 5 | # Setup vars 6 | export TARGET=msp430 7 | export PREFIX=/opt/gnu/msp430 8 | export PATH=$PATH:$PREFIX/bin 9 | export JN 10 | export JN='-j 8' 11 | 12 | sudo mkdir -p $PREFIX 13 | 14 | #export GCCVER=7.2.0 15 | #export BINUVER=2.29.1 16 | #export GCCVER=12.2.0 17 | #export BINUVER=2.39 18 | export GCCVER=14.1.0 19 | export BINUVER=2.42 20 | 21 | rm -rf build-* 22 | rm -rf gcc-* 23 | rm -rf binutils-* 24 | 25 | # Get archives 26 | wget https://ftp.gnu.org/gnu/binutils/binutils-$BINUVER.tar.gz 27 | wget https://ftp.gnu.org/gnu/gcc/gcc-$GCCVER/gcc-$GCCVER.tar.gz 28 | 29 | # Extract archives 30 | tar xf binutils-$BINUVER.tar.gz 31 | tar xf gcc-$GCCVER.tar.gz 32 | 33 | # Build binutils 34 | mkdir build-binutils 35 | cd build-binutils 36 | ../binutils-$BINUVER/configure --target=$TARGET --prefix=$PREFIX --disable-werror 37 | echo "MAKEINFO = :" >> Makefile 38 | make $JN all 39 | sudo make install 40 | 41 | # Build GCC 42 | mkdir ../build-gcc 43 | cd ../build-gcc 44 | ../gcc-$GCCVER/configure --target=$TARGET --prefix=$PREFIX --without-headers --with-newlib --with-gnu-as --with-gnu-ld --enable-languages='c' 45 | make $JN all-gcc 46 | sudo make install-gcc 47 | 48 | # Build libgcc.a 49 | #make $JN all-target-libgcc CFLAGS_FOR_TARGET="-g -O2" 50 | #make install-target-libgcc 51 | 52 | -------------------------------------------------------------------------------- /build_pdp11: -------------------------------------------------------------------------------- 1 | 2 | # Usage 3 | # sudo ./build_pdp11 4 | 5 | # Setup vars 6 | export TARGET=pdp11-aout 7 | export PREFIX=/opt/gnu/pdp11 8 | export PATH=$PATH:$PREFIX/bin 9 | export JN='-j 8' 10 | 11 | sudo mkdir -p $PREFIX 12 | 13 | export GCCVER=14.1.0 14 | export BINUVER=2.42 15 | 16 | rm -rf build-* 17 | rm -rf gcc-* 18 | rm -rf binutils-* 19 | 20 | # Get archives 21 | wget https://ftp.gnu.org/gnu/binutils/binutils-$BINUVER.tar.gz 22 | wget https://ftp.gnu.org/gnu/gcc/gcc-$GCCVER/gcc-$GCCVER.tar.gz 23 | 24 | # Extract archives 25 | tar xf binutils-$BINUVER.tar.gz 26 | tar xf gcc-$GCCVER.tar.gz 27 | 28 | # Build binutils 29 | mkdir build-binutils 30 | cd build-binutils 31 | ../binutils-$BINUVER/configure --target=$TARGET --prefix=$PREFIX 32 | echo "MAKEINFO = :" >> Makefile 33 | make $JN all 34 | sudo make install 35 | 36 | # Build GCC 37 | mkdir ../build-gcc 38 | cd ../build-gcc 39 | ../gcc-$GCCVER/configure --target=$TARGET --prefix=$PREFIX --without-headers --with-newlib --with-gnu-as --with-gnu-ld 40 | make $JN all-gcc 41 | sudo make install-gcc 42 | 43 | # Build libgcc.a 44 | make $JN all-target-libgcc CFLAGS_FOR_TARGET="-g -O2" 45 | sudo make install-target-libgcc 46 | 47 | -------------------------------------------------------------------------------- /build_riscv: -------------------------------------------------------------------------------- 1 | 2 | # Usage 3 | # sudo ./build_riscv32 4 | 5 | # Setup vars 6 | export TARGET=riscv32-none-elf 7 | export PREFIX=/opt/gnu/riscv32 8 | export PATH=$PATH:$PREFIX/bin 9 | export JN='-j 8' 10 | 11 | export GCCVER=12.2.0 12 | export BINUVER=2.39 13 | 14 | rm -rf build-* 15 | rm -rf gcc-* 16 | rm -rf binutils-* 17 | 18 | # Get archives 19 | wget https://ftp.gnu.org/gnu/binutils/binutils-$BINUVER.tar.gz 20 | wget https://ftp.gnu.org/gnu/gcc/gcc-$GCCVER/gcc-$GCCVER.tar.gz 21 | 22 | # Extract archives 23 | tar xf binutils-$BINUVER.tar.gz 24 | tar xf gcc-$GCCVER.tar.gz 25 | 26 | # Build binutils 27 | mkdir build-binutils 28 | cd build-binutils 29 | ../binutils-$BINUVER/configure --target=$TARGET --prefix=$PREFIX --with-abi=ilp32 30 | echo "MAKEINFO = :" >> Makefile 31 | make $JN all 32 | sudo make install 33 | 34 | # Build GCC 35 | mkdir ../build-gcc 36 | cd ../build-gcc 37 | ../gcc-$GCCVER/configure --target=$TARGET --prefix=$PREFIX --with-abi=ilp32 --without-headers --with-newlib --with-gnu-as --with-gnu-ld --enable-languages='c' --enable-multilib 38 | make $JN all-gcc 39 | sudo make install-gcc 40 | 41 | # Build libgcc.a 42 | make $JN all-target-libgcc CFLAGS_FOR_TARGET="-g -O2" 43 | sudo make install-target-libgcc 44 | 45 | -------------------------------------------------------------------------------- /build_riscv32: -------------------------------------------------------------------------------- 1 | 2 | # Usage 3 | # sudo ./build_riscv32 4 | 5 | # Setup vars 6 | export TARGET=riscv32-none-elf 7 | export PREFIX=/opt/gnu/riscv32 8 | export PATH=$PATH:$PREFIX/bin 9 | export JN='-j 8' 10 | 11 | sudo mkdir -p $PREFIX 12 | 13 | export GCCVER=14.1.0 14 | export BINUVER=2.42 15 | 16 | rm -rf build-* 17 | rm -rf gcc-* 18 | rm -rf binutils-* 19 | 20 | # Get archives 21 | wget https://ftp.gnu.org/gnu/binutils/binutils-$BINUVER.tar.gz 22 | wget https://ftp.gnu.org/gnu/gcc/gcc-$GCCVER/gcc-$GCCVER.tar.gz 23 | 24 | # Extract archives 25 | tar xf binutils-$BINUVER.tar.gz 26 | tar xf gcc-$GCCVER.tar.gz 27 | 28 | # Build binutils 29 | mkdir build-binutils 30 | cd build-binutils 31 | ../binutils-$BINUVER/configure --target=$TARGET --prefix=$PREFIX 32 | echo "MAKEINFO = :" >> Makefile 33 | make $JN all 34 | sudo make install 35 | 36 | # Build GCC 37 | mkdir ../build-gcc 38 | cd ../build-gcc 39 | ../gcc-$GCCVER/configure --target=$TARGET --prefix=$PREFIX --without-headers --with-newlib --with-gnu-as --with-gnu-ld --enable-languages='c' --enable-multilib 40 | make $JN all-gcc 41 | sudo make install-gcc 42 | 43 | # Build libgcc.a 44 | make $JN all-target-libgcc CFLAGS_FOR_TARGET="-g -O2" 45 | sudo make install-target-libgcc 46 | 47 | -------------------------------------------------------------------------------- /build_riscv64: -------------------------------------------------------------------------------- 1 | 2 | # Usage 3 | # sudo ./build_riscv32 4 | 5 | # Setup vars 6 | export TARGET=riscv64-unknown-elf 7 | export PREFIX=/opt/gnu/riscv64 8 | export PATH=$PATH:$PREFIX/bin 9 | export JN='-j 16' 10 | 11 | sudo mkdir -p $PREFIX 12 | 13 | export GCCVER=14.1.0 14 | export BINUVER=2.42 15 | 16 | rm -rf build-* 17 | rm -rf gcc-* 18 | rm -rf binutils-* 19 | 20 | # Get archives 21 | wget https://ftp.gnu.org/gnu/binutils/binutils-$BINUVER.tar.gz 22 | wget https://ftp.gnu.org/gnu/gcc/gcc-$GCCVER/gcc-$GCCVER.tar.gz 23 | 24 | # Extract archives 25 | tar xf binutils-$BINUVER.tar.gz 26 | tar xf gcc-$GCCVER.tar.gz 27 | 28 | # Build binutils 29 | mkdir build-binutils 30 | cd build-binutils 31 | ../binutils-$BINUVER/configure --target=$TARGET --prefix=$PREFIX 32 | echo "MAKEINFO = :" >> Makefile 33 | make $JN all 34 | sudo make install 35 | 36 | # Build GCC 37 | mkdir ../build-gcc 38 | cd ../build-gcc 39 | ../gcc-$GCCVER/configure --target=$TARGET --prefix=$PREFIX --without-headers --with-newlib --with-gnu-as --with-gnu-ld --enable-languages='c' --enable-multilib 40 | make $JN all-gcc 41 | sudo make install-gcc 42 | 43 | # Build libgcc.a 44 | make $JN all-target-libgcc CFLAGS_FOR_TARGET="-g -O2" 45 | sudo make install-target-libgcc 46 | 47 | -------------------------------------------------------------------------------- /build_x86_64: -------------------------------------------------------------------------------- 1 | 2 | # Usage 3 | # sudo ./build_arm 4 | 5 | # Setup vars 6 | export TARGET=x86_64-linux-gnu 7 | export PREFIX=/opt/gnux86_64 8 | export PATH=$PATH:$PREFIX/bin 9 | export JN='-j 8' 10 | 11 | export GCCVER=10.2.0 12 | export BINUVER=2.35.1 13 | 14 | rm -rf build-* 15 | rm -rf gcc-* 16 | rm -rf binutils-* 17 | 18 | # Get archives 19 | wget https://ftp.gnu.org/gnu/binutils/binutils-$BINUVER.tar.gz 20 | wget https://ftp.gnu.org/gnu/gcc/gcc-$GCCVER/gcc-$GCCVER.tar.gz 21 | 22 | # Extract archives 23 | tar xf binutils-$BINUVER.tar.gz 24 | tar xf gcc-$GCCVER.tar.gz 25 | 26 | # Build binutils 27 | mkdir build-binutils 28 | cd build-binutils 29 | ../binutils-$BINUVER/configure --target=$TARGET --prefix=$PREFIX 30 | make $JN all 31 | sudo make install 32 | 33 | # Build GCC 34 | mkdir ../build-gcc 35 | cd ../build-gcc 36 | ../gcc-$GCCVER/configure --target=$TARGET --prefix=$PREFIX --with-gnu-as --with-gnu-ld --enable-languages='c' 37 | make $JN all-gcc 38 | sudo make install-gcc 39 | 40 | # Build libgcc.a 41 | make $JN all-target-libgcc CFLAGS_FOR_TARGET="-g -O2" 42 | sudo make install-target-libgcc 43 | 44 | -------------------------------------------------------------------------------- /llvm_test/Makefile: -------------------------------------------------------------------------------- 1 | 2 | all : 3 | clang -c start.s -o start.o 4 | clang -O2 -flto=thin -fomit-frame-pointer -c test.c 5 | clang -O2 -flto=thin -fomit-frame-pointer -c one.c 6 | ld.lld -T memmap start.o test.o one.o -o test.elf 7 | llvm-objdump -d test.elf > test.list 8 | 9 | clean: 10 | rm -f *.o 11 | rm -f *.list 12 | rm -f *.elf 13 | -------------------------------------------------------------------------------- /llvm_test/memmap: -------------------------------------------------------------------------------- 1 | 2 | MEMORY 3 | { 4 | rom : ORIGIN = 0x08000000, LENGTH = 0x1000 5 | ram : ORIGIN = 0x20000000, LENGTH = 0x1000 6 | } 7 | 8 | SECTIONS 9 | { 10 | /DISCARD/ : { 11 | *(.ARM.exidx*) 12 | } 13 | .text : { *(.text*) } > rom 14 | .rodata : { *(.rodata*) } > rom 15 | .bss : { *(.bss*) } > ram 16 | } 17 | 18 | -------------------------------------------------------------------------------- /llvm_test/one.c: -------------------------------------------------------------------------------- 1 | 2 | unsigned int one ( void ) 3 | { 4 | return(1); 5 | } 6 | -------------------------------------------------------------------------------- /llvm_test/start.s: -------------------------------------------------------------------------------- 1 | 2 | .text 3 | .cpu cortex-m0 4 | .code 16 5 | .globl _start 6 | _start: 7 | .word 0x20001000 8 | .word reset 9 | .thumb_func 10 | reset: 11 | bl testone 12 | bl testtwo 13 | b . 14 | 15 | -------------------------------------------------------------------------------- /llvm_test/test.c: -------------------------------------------------------------------------------- 1 | 2 | unsigned int one ( void ); 3 | unsigned int testone ( void ) 4 | { 5 | return(one()); 6 | } 7 | unsigned int two ( void ) 8 | { 9 | return(2); 10 | } 11 | unsigned int testtwo ( void ) 12 | { 13 | return(two()); 14 | } 15 | -------------------------------------------------------------------------------- /mips-patch: -------------------------------------------------------------------------------- 1 | --- binutils-patch/opcodes/mips-dis.c 2 | +++ binutils-patch/opcodes/mips-dis.c 3 | @@ -426,9 +426,9 @@ 4 | struct mips_abi_choice mips_abi_choices[] = 5 | { 6 | { "numeric", mips_gpr_names_numeric, mips_fpr_names_numeric }, 7 | - { "32", mips_gpr_names_oldabi, mips_fpr_names_32 }, 8 | - { "n32", mips_gpr_names_newabi, mips_fpr_names_n32 }, 9 | - { "64", mips_gpr_names_newabi, mips_fpr_names_64 }, 10 | + { "32", mips_gpr_names_numeric, mips_fpr_names_numeric }, 11 | + { "n32", mips_gpr_names_numeric, mips_fpr_names_numeric }, 12 | + { "64", mips_gpr_names_numeric, mips_fpr_names_numeric }, 13 | }; 14 | 15 | struct mips_arch_choice 16 | @@ -776,7 +776,7 @@ 17 | mips_processor = CPU_R3000; 18 | micromips_ase = 0; 19 | mips_ase = 0; 20 | - mips_gpr_names = mips_gpr_names_oldabi; 21 | + mips_gpr_names = mips_gpr_names_numeric; 22 | mips_fpr_names = mips_fpr_names_numeric; 23 | mips_cp0_names = mips_cp0_names_numeric; 24 | mips_cp0sel_names = NULL; 25 | @@ -793,7 +793,7 @@ 26 | header = elf_elfheader (info->section->owner); 27 | /* If an ELF "newabi" binary, use the n32/(n)64 GPR names. */ 28 | if (is_newabi (header)) 29 | - mips_gpr_names = mips_gpr_names_newabi; 30 | + mips_gpr_names = mips_gpr_names_numeric; 31 | /* If a microMIPS binary, then don't use MIPS16 bindings. */ 32 | micromips_ase = is_micromips (header); 33 | } 34 | -------------------------------------------------------------------------------- /riscv-patch: -------------------------------------------------------------------------------- 1 | --- binutils-patch/opcodes/riscv-dis.c 2 | +++ binutils-patch/opcodes/riscv-dis.c 3 | @@ -47,8 +47,8 @@ 4 | static void 5 | set_default_riscv_dis_options (void) 6 | { 7 | - riscv_gpr_names = riscv_gpr_names_abi; 8 | - riscv_fpr_names = riscv_fpr_names_abi; 9 | + riscv_gpr_names = riscv_gpr_names_numeric; 10 | + riscv_fpr_names = riscv_fpr_names_numeric; 11 | no_aliases = 0; 12 | } 13 | 14 | -------------------------------------------------------------------------------- /save/build_clang: -------------------------------------------------------------------------------- 1 | 2 | rm -rf build-* 3 | rm -rf llvm39 4 | 5 | svn co http://llvm.org/svn/llvm-project/llvm/branches/release_39/ llvm39 6 | cd llvm39 7 | cd tools 8 | svn co http://llvm.org/svn/llvm-project/cfe/branches/release_39/ clang 9 | cd .. 10 | cd .. 11 | mkdir build-clang 12 | cd build-clang 13 | cmake -DCMAKE_INSTALL_PREFIX=/opt/llvm39 -DLLVM_OPTIMIZED_TABLEGEN=ON ../llvm39/ 14 | make 15 | make install 16 | -------------------------------------------------------------------------------- /save/build_clang37: -------------------------------------------------------------------------------- 1 | 2 | 3 | export JN 4 | export JN='-j 8' 5 | 6 | rm -rf llvm37 7 | svn co http://llvm.org/svn/llvm-project/llvm/branches/release_37/ llvm37 8 | cd llvm37 9 | cd tools 10 | svn co http://llvm.org/svn/llvm-project/cfe/branches/release_37/ clang 11 | cd .. 12 | mkdir build 13 | cd build 14 | ../configure --enable-optimized --disable-doxygen --prefix=/opt/llvm37 15 | make $JN 16 | make install 17 | 18 | -------------------------------------------------------------------------------- /save/build_esp32: -------------------------------------------------------------------------------- 1 | 2 | # Usage 3 | # sudo ./build_arm 4 | 5 | # Setup vars 6 | export TARGET=xtensa-esp32-elf 7 | export PREFIX=/opt/gnuesp32 8 | export PATH=$PATH:$PREFIX/bin 9 | export JN 10 | export JN='-j 8' 11 | 12 | export GCCVER=6.3.0 13 | export BINUVER=2.28 14 | 15 | rm -rf build-* 16 | rm -rf gcc-* 17 | rm -rf binutils-* 18 | 19 | # Get archives 20 | wget http://ftp.gnu.org/gnu/binutils/binutils-$BINUVER.tar.bz2 21 | wget http://ftp.gnu.org/gnu/gcc/gcc-$GCCVER/gcc-$GCCVER.tar.bz2 22 | 23 | # Extract archives 24 | bzip2 -dc binutils-$BINUVER.tar.bz2 | tar -xf - 25 | bzip2 -dc gcc-$GCCVER.tar.bz2 | tar -xf - 26 | 27 | # may have to touch this from time to time 28 | ln -s binutils-$BINUVER binutils-patch 29 | patch -p0 < arm-patch 30 | 31 | # Build binutils 32 | mkdir build-binutils 33 | cd build-binutils 34 | ../binutils-$BINUVER/configure --target=$TARGET --prefix=$PREFIX 35 | echo "MAKEINFO = :" >> Makefile 36 | make $JN all 37 | make install 38 | 39 | # Build GCC 40 | mkdir ../build-gcc 41 | cd ../build-gcc 42 | ../gcc-$GCCVER/configure --target=$TARGET --prefix=$PREFIX --without-headers --with-newlib --with-gnu-as --with-gnu-ld --enable-languages='c' 43 | make $JN all-gcc 44 | make install-gcc 45 | 46 | # Build libgcc.a 47 | #make $JN all-target-libgcc CFLAGS_FOR_TARGET="-g -O2" 48 | #make install-target-libgcc 49 | 50 | -------------------------------------------------------------------------------- /save/build_esp8266: -------------------------------------------------------------------------------- 1 | 2 | # Usage 3 | # sudo ./build_arm 4 | 5 | # Setup vars 6 | export TARGET=xtensa-esp8266-elf 7 | export PREFIX=/opt/gnuesp8266 8 | export PATH=$PATH:$PREFIX/bin 9 | export JN 10 | export JN='-j 8' 11 | 12 | export GCCVER=6.3.0 13 | export BINUVER=2.28 14 | 15 | rm -rf build-* 16 | rm -rf gcc-* 17 | rm -rf binutils-* 18 | 19 | # Get archives 20 | wget http://ftp.gnu.org/gnu/binutils/binutils-$BINUVER.tar.bz2 21 | wget http://ftp.gnu.org/gnu/gcc/gcc-$GCCVER/gcc-$GCCVER.tar.bz2 22 | 23 | # Extract archives 24 | bzip2 -dc binutils-$BINUVER.tar.bz2 | tar -xf - 25 | bzip2 -dc gcc-$GCCVER.tar.bz2 | tar -xf - 26 | 27 | # may have to touch this from time to time 28 | ln -s binutils-$BINUVER binutils-patch 29 | patch -p0 < arm-patch 30 | 31 | # Build binutils 32 | mkdir build-binutils 33 | cd build-binutils 34 | ../binutils-$BINUVER/configure --target=$TARGET --prefix=$PREFIX 35 | echo "MAKEINFO = :" >> Makefile 36 | make $JN all 37 | make install 38 | 39 | # Build GCC 40 | mkdir ../build-gcc 41 | cd ../build-gcc 42 | ../gcc-$GCCVER/configure --target=$TARGET --prefix=$PREFIX --without-headers --with-newlib --with-gnu-as --with-gnu-ld --enable-languages='c' 43 | make $JN all-gcc 44 | make install-gcc 45 | 46 | # Build libgcc.a 47 | #make $JN all-target-libgcc CFLAGS_FOR_TARGET="-g -O2" 48 | #make install-target-libgcc 49 | 50 | -------------------------------------------------------------------------------- /save/build_gdcarm: -------------------------------------------------------------------------------- 1 | 2 | # Usage 3 | # sudo ./build_arm 4 | 5 | # Setup vars 6 | export TARGET=arm-none-eabi 7 | export PREFIX=/opt/gdcarm 8 | export PATH=$PATH:$PREFIX/bin 9 | export JN 10 | export JN='-j 8' 11 | 12 | rm -rf build-* 13 | rm -rf gcc-* 14 | rm -rf binutils-* 15 | rm -rf gdc* 16 | 17 | 18 | git clone https://github.com/D-Programming-GDC/GDC.git gdc 19 | cd gdc 20 | git checkout gdc-4.9 21 | cd .. 22 | 23 | # Get archives 24 | wget http://ftp.gnu.org/gnu/binutils/binutils-2.25.tar.bz2 25 | wget http://ftp.gnu.org/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.bz2 26 | 27 | # Extract archives 28 | bzip2 -dc binutils-2.25.tar.bz2 | tar -xf - 29 | bzip2 -dc gcc-4.9.2.tar.bz2 | tar -xf - 30 | 31 | cd gdc 32 | ./setup-gcc.sh ../gcc-4.9.2 33 | cd .. 34 | 35 | # Build binutils 36 | mkdir build-binutils 37 | cd build-binutils 38 | ../binutils-2.25/configure --target=$TARGET --prefix=$PREFIX 39 | echo "MAKEINFO = :" >> Makefile 40 | make $JN all 41 | make install 42 | 43 | # Build GCC 44 | mkdir ../build-gcc 45 | cd ../build-gcc 46 | ../gcc-4.9.2/configure --target=$TARGET --prefix=$PREFIX \ 47 | --enable-languages=d \ 48 | --disable-bootstrap \ 49 | --disable-libssp \ 50 | --disable-libgomp \ 51 | --disable-libmudflap \ 52 | --disable-multilib \ 53 | --disable-libphobos \ 54 | --disable-decimal-float \ 55 | --disable-libffi \ 56 | --disable-libmudflap \ 57 | --disable-libquadmath \ 58 | --disable-libssp \ 59 | --disable-libstdcxx-pch \ 60 | --disable-nls \ 61 | --disable-shared \ 62 | --disable-threads \ 63 | --disable-tls \ 64 | --with-gnu-as \ 65 | --with-gnu-ld \ 66 | --with-mode=thumb \ 67 | --without-headers 68 | make $JN all-gcc 69 | make install-gcc 70 | 71 | # Build libgcc.a 72 | make $JN all-target-libgcc CFLAGS_FOR_TARGET="-g -O2" 73 | make install-target-libgcc 74 | 75 | -------------------------------------------------------------------------------- /save/build_vbcc: -------------------------------------------------------------------------------- 1 | rm -rf vbcc 2 | rm -f vbcc.tar.gz 3 | wget http://www.ibaug.de/vbcc/vbcc.tar.gz 4 | tar xzvf vbcc.tar.gz 5 | cd vbcc 6 | mkdir bin 7 | #mkdir doc/vbcc.pdf 8 | texi2dvi --pdf doc/vbcc.texi 9 | make bin/vc 10 | echo n | make TARGET=generic bin/vbccgeneric 11 | #PATH=/path/to/vbcc/bin:$PATH 12 | #vbccgeneric -c99 -O=32767 -gpr-args=5 program.c 13 | -------------------------------------------------------------------------------- /save/build_vbcc_arm: -------------------------------------------------------------------------------- 1 | rm -rf vbcc 2 | rm -f vbcc.tar.gz 3 | wget http://www.ibaug.de/vbcc/vbcc.tar.gz 4 | tar xzvf vbcc.tar.gz 5 | cd vbcc 6 | mkdir bin 7 | #mkdir doc/vbcc.pdf 8 | texi2dvi --pdf doc/vbcc.texi 9 | make bin/vc 10 | echo n | make TARGET=arm bin/vbccarm 11 | #PATH=/path/to/vbcc/bin:$PATH 12 | #vbccarm -c99 -O=32767 program.c 13 | #vbccarm -c99 -O=32767 -thumb program.c 14 | cd .. 15 | 16 | rm -rf vasm 17 | rm -r vasm.tar.gz 18 | wget http://www.ibaug.de/vasm/vasm.tar.gz 19 | #wget http://sun.hasenbraten.de/vasm/release/vasm.tar.gz 20 | tar xzvf vasm.tar.gz 21 | cd vasm 22 | mkdir obj 23 | texi2dvi --pdf doc/vasm.texi 24 | make CPU=arm SYNTAX=std 25 | #vasmarm_std -Felf -o output.elf program.asm 26 | #vasmarm_std -Felf -o output.elf -thumb program.asm 27 | cd .. 28 | 29 | rm -rf vlink 30 | rm -r vlink.tar.gz 31 | wget http://sun.hasenbraten.de/vlink/release/vlink.tar.gz 32 | tar xzvf vlink.tar.gz 33 | cd vlink 34 | texi2dvi --pdf vlink.texi 35 | make 36 | cd .. 37 | #./vlink/vlink -b ihex -o hello.hex output.elf 38 | # arm-none-eabi-objcopy -I ihex -B arm hello.hex -O elf32-littlearm hello.elf 39 | # arm-none-eabi-objdump -D hello.elf 40 | #./vlink/vlink -b rawbin1 -o hello.bin output.elf 41 | #./vlink/vlink -b rawbin2 -o hello.bin output.elf 42 | 43 | 44 | -------------------------------------------------------------------------------- /test.c: -------------------------------------------------------------------------------- 1 | 2 | unsigned char fun ( unsigned char a, unsigned char b ) 3 | { 4 | return(a+b+7); 5 | } 6 | 7 | --------------------------------------------------------------------------------