musl-cross-make/Makefile
Rich Felker 532e13f3f7 avoid installing stage0 gcc
previously the stage0 gcc was installed to the output location during
the build, then replaced later by the final gcc. this violates the
principles of make and simply wastes time. the stage0 gcc is usable
in-place without installing it, so we can simply do that instead.
2015-08-27 06:42:32 +00:00

130 lines
3.4 KiB
Makefile

OUTPUT = $(PWD)/output
TARGET = sh2eb-linux-musl
BINUTILS_VER = 2.25.1
GCC_VER = 5.2.0
MUSL_TAG = master
COMMON_CONFIG = --disable-werror \
--target=$(TARGET) --prefix=$(OUTPUT) \
--with-sysroot=$(OUTPUT)/$(TARGET)
BINUTILS_CONFIG = $(COMMON_CONFIG)
GCC_CONFIG = $(COMMON_CONFIG) \
--disable-libmudflap --disable-libsanitizer \
--disable-libquadmath --disable-decimal-float
GCC0_CONFIG = $(GCC_CONFIG) \
--with-newlib --disable-libssp --disable-threads \
--disable-shared --disable-libgomp --disable-libatomic \
--disable-libquadmath --disable-decimal-float --disable-nls \
--enable-languages=c \
CFLAGS="-O0 -g0" CXXFLAGS="-O0 -g0"
GCC0_BDIR = $(PWD)/gcc-$(GCC_VER)/build0/gcc
GCC0_CC = $(GCC0_BDIR)/xgcc -B $(GCC0_BDIR)
MUSL_CONFIG = CC="$(GCC0_CC)" --prefix=
-include config.mak
all: steps/install_binutils steps/install_musl steps/install_gcc
clean:
rm -rf gcc-$(GCC_VER) binutils-$(BINUTILS_VER) musl
rm -rf steps/extract_* steps/clone_*
rm -rf steps/configure_* steps/build_* steps/install_*
distclean: clean
rm -rf sources/config.sub sources/*.tar.bz2
steps/configure_gcc0: steps/install_binutils
steps/configure_gcc: steps/install_musl
sources/config.sub:
wget -O $@ 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
sources/binutils-%:
wget -c -O $@.part http://ftp.gnu.org/pub/gnu/binutils/$(notdir $@)
mv $@.part $@
sources/gcc-%:
wget -c -O $@.part http://ftp.gnu.org/pub/gnu/gcc/$(basename $(basename $(notdir $@)))/$(notdir $@)
mv $@.part $@
steps/extract_binutils: sources/binutils-$(BINUTILS_VER).tar.bz2 sources/config.sub
tar jxvf $<
cat patches/binutils-$(BINUTILS_VER)/* | ( cd binutils-$(BINUTILS_VER) && patch -p1 )
cp sources/config.sub binutils-$(BINUTILS_VER)
touch $@
steps/configure_binutils: steps/extract_binutils
test -e binutils-$(BINUTILS_VER)/config.status || ( cd binutils-$(BINUTILS_VER) && ./configure $(BINUTILS_CONFIG) )
touch $@
steps/build_binutils: steps/configure_binutils
cd binutils-$(BINUTILS_VER) && $(MAKE)
touch $@
steps/install_binutils: steps/build_binutils
cd binutils-$(BINUTILS_VER) && $(MAKE) install
touch $@
steps/extract_gcc: sources/gcc-$(GCC_VER).tar.bz2 sources/config.sub
tar jxvf $<
cat patches/gcc-$(GCC_VER)/* | ( cd gcc-$(GCC_VER) && patch -p1 )
cp sources/config.sub gcc-$(GCC_VER)
touch $@
steps/configure_gcc0: steps/extract_gcc
mkdir -p gcc-$(GCC_VER)/build0
test -e gcc-$(GCC_VER)/build0/config.status || ( cd gcc-$(GCC_VER)/build0 && ../configure $(GCC0_CONFIG) )
touch $@
steps/build_gcc0: steps/configure_gcc0
cd gcc-$(GCC_VER)/build0 && $(MAKE)
touch $@
steps/configure_gcc: steps/extract_gcc
mkdir -p gcc-$(GCC_VER)/build
test -e gcc-$(GCC_VER)/build/config.status || ( cd gcc-$(GCC_VER)/build && ../configure $(GCC_CONFIG) )
touch $@
steps/build_gcc: steps/configure_gcc
cd gcc-$(GCC_VER)/build && $(MAKE)
touch $@
steps/install_gcc: steps/build_gcc
cd gcc-$(GCC_VER)/build && $(MAKE) install
touch $@
steps/clone_musl:
test -d musl || git clone -b $(MUSL_TAG) git://git.musl-libc.org/musl musl
touch $@
steps/configure_musl: steps/clone_musl steps/build_gcc0
cd musl && ./configure $(MUSL_CONFIG)
cat patches/musl-complex-hack >> musl/config.mak
touch $@
steps/build_musl: steps/configure_musl
cd musl && $(MAKE)
touch $@
steps/install_musl: steps/build_musl
cd musl && $(MAKE) install DESTDIR=$(OUTPUT)/$(TARGET)
ln -sfn . $(OUTPUT)/$(TARGET)/usr
touch $@