Commit d3207cdd authored by Federico Vaga's avatar Federico Vaga

lm32: add Makefile to generate lm32 toolchain

Signed-off-by: 's avatarFederico Vaga <federico.vaga@gmail.com>
parent 971fafc8
NEWLIB_V=2.2.0-1
GCC_V=5.3.0
GDB_V=7.10.1
BINUTILS_V=2.26
MPC_V=1.0.3
MPFR_V=3.1.3
GMP_V=6.1.0
JOBS=$(shell lscpu -e=cpu | wc -l)
PREFIX=$(shell pwd)/lm32-toolchain
.PHONY: download extract toolchain gdb binutils gmp mpfr mpc gcc newlib gcc-final
download:
wget ftp://ftp.gnu.org/gnu/gdb/gdb-$(GDB_V).tar.gz -nc --quiet || true
wget ftp://ftp.gnu.org/gnu/binutils/binutils-$(BINUTILS_V).tar.bz2 -nc --quiet || true
wget ftp://ftp.gnu.org/gnu/gmp/gmp-$(GMP_V).tar.bz2 -nc --quiet || true
wget ftp://ftp.gnu.org/gnu/mpfr/mpfr-$(MPFR_V).tar.bz2 -nc --quiet || true
wget ftp://ftp.gnu.org/gnu/mpc/mpc-$(MPC_V).tar.gz -nc --quiet || true
wget ftp://ftp.gnu.org/gnu/gcc/gcc-$(GCC_V)/gcc-$(GCC_V).tar.bz2 -nc --quiet || true
wget ftp://sources.redhat.com/pub/newlib/newlib-$(NEWLIB_V).tar.gz -nc --quiet || true
extract: download
tar -x -f gdb-$(GDB_V).tar.gz
tar -x -f binutils-$(BINUTILS_V).tar.bz2
tar -x -f gmp-$(GMP_V).tar.bz2
tar -x -f mpfr-$(MPFR_V).tar.bz2
tar -x -f mpc-$(MPC_V).tar.gz
tar -x -f gcc-$(GCC_V).tar.bz2
tar -x -f newlib-$(NEWLIB_V).tar.gz
toolchain: gcc-final gdb
gdb:
mkdir -p $(PREFIX)
test -d build-gdb-$(GDB_V) || \
(mkdir -p build-gdb-$(GDB_V) && \
cd build-gdb-$(GDB_V) && \
../gdb-$(GDB_V)/configure --prefix=$(PREFIX) --target=lm32-elf && \
make -j$(JOBS) && \
make install)
binutils:
mkdir -p $(PREFIX)
test -d build-binutils-$(BINUTILS_V) || \
(mkdir -p build-binutils-$(BINUTILS_V) && \
cd build-binutils-$(BINUTILS_V) && \
../binutils-$(BINUTILS_V)/configure --prefix=$(PREFIX) --target=lm32-elf \
--disable-nls \
--enable-multilib && \
make -j$(JOBS) && make check && make install)
gmp:
mkdir -p $(PREFIX)
test -d build-gmp-$(GMP_V) || \
(mkdir -p build-gmp-$(GMP_V) && \
cd build-gmp-$(GMP_V) && \
../gmp-$(GMP_V)/configure --prefix=$(PREFIX) --host=lm32-elf && \
make -j$(JOBS) && make check && make install)
mpfr: gmp
mkdir -p $(PREFIX)
test -d build-mpfr-$(MPFR_V) || \
(mkdir -p build-mpfr-$(MPFR_V) && \
cd build-mpfr-$(MPFR_V) && \
../mpfr-$(MPFR_V)/configure --prefix=$(PREFIX) --host=lm32-elf \
--with-gmp=$(PREFIX) && \
make -j$(JOBS) && make check && make install)
mpc: mpfr gmp
mkdir -p $(PREFIX)
test -d build-mpc-$(MPC_V) || \
(mkdir -p build-mpc-$(MPC_V) && \
cd build-mpc-$(MPC_V) && \
../mpc-$(MPC_V)/configure --prefix=$(PREFIX) --host=lm32-elf --with-gmp=$(PREFIX) --with-mpfr=$(PREFIX) && \
make -j$(JOBS) && make check && make install)
gcc: gmp mpfr mpc
mkdir -p $(PREFIX)
test -d build-gcc-$(GCC_V) || \
(mkdir -p build-gcc-$(GCC_V) && \
cd build-gcc-$(GCC_V) && ../gcc-$(GCC_V)/configure --prefix=$(PREFIX) --target=lm32-elf \
--enable-multilib \
--enable-languages=c \
--disable-nls \
--disable-shared \
--disable-libssp \
--with-gmp=$(PREFIX) \
--with-mpfr=$(PREFIX) \
--with-mpc=$(PREFIX) \
--with-gmp=$(PREFIX) \
--with-mpfr=$(PREFIX) \
--with-mpc=$(PREFIX) && \
make -j$(JOBS) all-gcc && make -j$(JOBS) all-target-libgcc && make install-gcc && make install-target-libgcc)
newlib: binutils gcc
mkdir -p $(PREFIX)
test -d build-newlib-$(NEWLIB_V) || \
(mkdir -p build-newlib-$(NEWLIB_V) && \
cd build-newlib-$(NEWLIB_V) && \
../newlib-$(NEWLIB_V)/configure --prefix=$(PREFIX) --target=lm32-elf \
--with-newlib \
--enable-lite-exit \
--enable-newlib-nano-malloc \
--disable-newlib-multithread \
CC_FOR_TARGET=$(PREFIX)/bin/lm32-elf-gcc \
AS_FOR_TARGET=$(PREFIX)/bin/lm32-elf-as \
AR_FOR_TARGET=$(PREFIX)/bin/lm32-elf-ar \
LD_FOR_TARGET=$(PREFIX)/bin/lm32-elf-ld \
RANLIB_FOR_TARGET=$(PREFIX)/bin/lm32-elf-ranlib && \
make -j$(JOBS) && make check && make install)
gcc-final: gmp mpfr mpc gcc newlib
mkdir -p $(PREFIX)
test -d build-gcc-$(GCC_V) || \
(mkdir -p build-gcc-$(GCC_V) && \
cd build-gcc-$(GCC_V) && ../gcc-$(GCC_V)/configure --prefix=$(PREFIX) --target=lm32-elf \
--enable-multilib \
--enable-languages=c \
--disable-nls \
--disable-shared \
--disable-libssp \
--with-gmp=$(PREFIX) \
--with-mpfr=$(PREFIX) \
--with-mpc=$(PREFIX) \
--with-gmp=$(PREFIX) \
--with-mpfr=$(PREFIX) \
--with-mpc=$(PREFIX) \
--with-newlib && \
make -j$(JOBS) all-gcc && make -j$(JOBS) all-target-libgcc && make install-gcc && make install-target-libgcc)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment