123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- OUTPUT = $(CURDIR)/output
- BINUTILS_SRCDIR = BINUTILS_SRCDIR_not_set
- GCC_SRCDIR = GCC_SRCDIR_not_set
- MUSL_SRCDIR = MUSL_SRCDIR_not_set
- GCC_CONFIG_FOR_TARGET =
- COMMON_CONFIG =
- GCC_CONFIG =
- TOOLCHAIN_CONFIG =
- XGCC_DIR = ../obj_gcc/gcc
- XGCC = $(XGCC_DIR)/xgcc -B $(XGCC_DIR)
- -include config.mak
- ifneq ($(findstring fdpic,$(TARGET)),)
- GCC_CONFIG_FOR_TARGET += --enable-fdpic
- endif
- ifneq ($(filter x86_64%x32,$(TARGET)),)
- GCC_CONFIG_FOR_TARGET += --with-abi=x32
- endif
- ifneq ($(findstring powerpc64,$(TARGET)),)
- GCC_CONFIG_FOR_TARGET += --with-abi=elfv2
- endif
- ifneq ($(findstring mips64,$(TARGET))$(findstring mipsisa64,$(TARGET)),)
- ifneq ($(findstring n32,$(TARGET)),)
- GCC_CONFIG_FOR_TARGET += --with-abi=n32
- else
- GCC_CONFIG_FOR_TARGET += --with-abi=64
- endif
- endif
- ifneq ($(findstring s390x,$(TARGET)),)
- GCC_CONFIG_FOR_TARGET += --with-long-double-128
- endif
- ifneq ($(filter %sf,$(TARGET)),)
- GCC_CONFIG_FOR_TARGET += --with-float=soft
- endif
- ifneq ($(filter %hf,$(TARGET)),)
- GCC_CONFIG_FOR_TARGET += --with-float=hard
- endif
- ifneq ($(LIBTOOL),)
- LIBTOOL_ARG = LIBTOOL=$(LIBTOOL)
- endif
- MAKE += MULTILIB_OSDIRNAMES=
- MAKE += INFO_DEPS= infodir=
- MAKE += ac_cv_prog_lex_root=lex.yy
- MAKE += MAKEINFO=false
- FULL_BINUTILS_CONFIG = \
- --disable-separate-code \
- $(COMMON_CONFIG) $(BINUTILS_CONFIG) $(TOOLCHAIN_CONFIG) \
- --disable-werror \
- --target=$(TARGET) --prefix= \
- --libdir=/lib --disable-multilib \
- --with-sysroot=$(SYSROOT) \
- --enable-deterministic-archives
- FULL_GCC_CONFIG = --enable-languages=c,c++ \
- $(GCC_CONFIG_FOR_TARGET) \
- $(COMMON_CONFIG) $(GCC_CONFIG) $(TOOLCHAIN_CONFIG) \
- --disable-bootstrap \
- --disable-assembly \
- --disable-werror \
- --target=$(TARGET) --prefix= \
- --libdir=/lib --disable-multilib \
- --with-sysroot=$(SYSROOT) \
- --enable-tls \
- --disable-libmudflap --disable-libsanitizer \
- --disable-gnu-indirect-function \
- --disable-libmpx \
- --enable-initfini-array \
- --enable-libstdcxx-time=rt
- FULL_MUSL_CONFIG = $(MUSL_CONFIG) \
- --prefix= --host=$(TARGET)
- ifneq ($(NATIVE),)
- HOST:=$(TARGET)
- endif
- ifeq ($(BUILD),)
- GUESS = $(shell cd $(GCC_SRCDIR) && ./config.guess)
- TARGET_CANON = $(shell cd $(GCC_SRCDIR) && ./config.sub $(TARGET))
- BUILD = $(GUESS)$(if $(subst $(TARGET_CANON),,$(GUESS)),,xx)
- endif
- ifeq ($(HOST),)
- SYSROOT = /$(TARGET)
- FULL_BINUTILS_CONFIG += --build=$(BUILD) --host=$(BUILD)
- FULL_GCC_CONFIG += --with-build-sysroot=$(CURDIR)/obj_sysroot \
- AR_FOR_TARGET=$(PWD)/obj_binutils/binutils/ar \
- AS_FOR_TARGET=$(PWD)/obj_binutils/gas/as-new \
- LD_FOR_TARGET=$(PWD)/obj_binutils/ld/ld-new \
- NM_FOR_TARGET=$(PWD)/obj_binutils/binutils/nm-new \
- OBJCOPY_FOR_TARGET=$(PWD)/obj_binutils/binutils/objcopy \
- OBJDUMP_FOR_TARGET=$(PWD)/obj_binutils/binutils/objdump \
- RANLIB_FOR_TARGET=$(PWD)/obj_binutils/binutils/ranlib \
- READELF_FOR_TARGET=$(PWD)/obj_binutils/binutils/readelf \
- STRIP_FOR_TARGET=$(PWD)/obj_binutils/binutils/strip-new \
- --build=$(BUILD) --host=$(BUILD) \
- # end
- FULL_MUSL_CONFIG += CC="$(XGCC)" LIBCC="../obj_gcc/$(TARGET)/libgcc/libgcc.a"
- MUSL_VARS = AR=../obj_binutils/binutils/ar RANLIB=../obj_binutils/binutils/ranlib
- obj_musl/.lc_configured: | obj_gcc/gcc/.lc_built
- obj_musl/.lc_built: | obj_gcc/$(TARGET)/libgcc/libgcc.a
- obj_gcc/gcc/.lc_built: | obj_sysroot/usr obj_sysroot/lib32 obj_sysroot/lib64 obj_sysroot/include
- obj_gcc/.lc_built: | obj_sysroot/.lc_libs obj_sysroot/.lc_headers
- obj_gcc/.lc_configured: obj_binutils/.lc_built
- else
- SYSROOT = /
- FULL_BINUTILS_CONFIG += --build=$(BUILD) --host=$(HOST)
- FULL_GCC_CONFIG += --build=$(BUILD) --host=$(HOST)
- MUSL_VARS =
- endif
- ifeq ($(TARGET),)
- all:
- @echo TARGET must be set.
- @exit 1
- install: all
- else
- all: musl gcc binutils
- install: install-musl install-gcc install-binutils
- musl: obj_musl/.lc_built
- toolchain: gcc binutils
- install-toolchain: install-gcc install-binutils
- gcc: obj_gcc/.lc_built
- binutils: obj_binutils/.lc_built
- .PHONY: all musl toolchain install-musl install-toolchain clean
- src_binutils: | $(BINUTILS_SRCDIR)
- ln -sf $(BINUTILS_SRCDIR) $@
- src_gcc_base: | $(GCC_SRCDIR)
- ln -sf $(GCC_SRCDIR) $@
- src_musl: | $(MUSL_SRCDIR)
- ln -sf $(MUSL_SRCDIR) $@
- ifneq ($(GMP_SRCDIR),)
- src_gcc: src_gmp
- src_gmp: | $(GMP_SRCDIR)
- ln -sf "$(GMP_SRCDIR)" $@
- endif
- ifneq ($(MPC_SRCDIR),)
- src_gcc: src_mpc
- src_mpc: | $(MPC_SRCDIR)
- ln -sf "$(MPC_SRCDIR)" $@
- endif
- ifneq ($(MPFR_SRCDIR),)
- src_gcc: src_mpfr
- src_mpfr: | $(MPFR_SRCDIR)
- ln -sf "$(MPFR_SRCDIR)" $@
- endif
- ifneq ($(ISL_SRCDIR),)
- src_gcc: src_isl
- src_isl: | $(ISL_SRCDIR)
- ln -sf "$(ISL_SRCDIR)" $@
- endif
- src_gcc: src_gcc_base
- rm -rf $@ [email protected]
- mkdir [email protected]
- cd [email protected] && ln -sf ../src_gcc_base/* .
- $(if $(GMP_SRCDIR),cd [email protected] && ln -sf ../src_gmp gmp)
- $(if $(MPC_SRCDIR),cd [email protected] && ln -sf ../src_mpc mpc)
- $(if $(MPFR_SRCDIR),cd [email protected] && ln -sf ../src_mpfr mpfr)
- $(if $(ISL_SRCDIR),cd [email protected] && ln -sf ../src_isl isl)
- mv [email protected] $@
- obj_%:
- mkdir -p $@
- obj_sysroot/include:
- mkdir -p $@
- obj_sysroot/usr: | obj_sysroot
- ln -sf . $@
- obj_sysroot/lib32: | obj_sysroot
- ln -sf lib $@
- obj_sysroot/lib64: | obj_sysroot
- ln -sf lib $@
- obj_binutils/.lc_configured: | obj_binutils src_binutils
- cd obj_binutils && ../src_binutils/configure $(FULL_BINUTILS_CONFIG)
- touch $@
- obj_binutils/.lc_built: | obj_binutils/.lc_configured
- cd obj_binutils && $(MAKE) MAKE="$(MAKE) $(LIBTOOL_ARG)" all
- touch $@
- obj_gcc/.lc_configured: | obj_gcc src_gcc
- cd obj_gcc && ../src_gcc/configure $(FULL_GCC_CONFIG)
- touch $@
- obj_gcc/gcc/.lc_built: | obj_gcc/.lc_configured
- cd obj_gcc && $(MAKE) MAKE="$(MAKE) $(LIBTOOL_ARG)" all-gcc
- touch $@
- obj_musl/.lc_configured: | obj_musl src_musl
- cd obj_musl && ../src_musl/configure $(FULL_MUSL_CONFIG)
- touch $@
- obj_sysroot/.lc_headers: | obj_musl/.lc_configured obj_sysroot
- cd obj_musl && $(MAKE) DESTDIR=$(CURDIR)/obj_sysroot install-headers
- touch $@
- obj_gcc/$(TARGET)/libgcc/libgcc.a: | obj_sysroot/.lc_headers
- cd obj_gcc && $(MAKE) MAKE="$(MAKE) enable_shared=no $(LIBTOOL_ARG)" all-target-libgcc
- obj_musl/.lc_built: | obj_musl/.lc_configured
- cd obj_musl && $(MAKE) $(MUSL_VARS)
- touch $@
- obj_sysroot/.lc_libs: | obj_musl/.lc_built
- cd obj_musl && $(MAKE) $(MUSL_VARS) DESTDIR=$(CURDIR)/obj_sysroot install
- touch $@
- obj_gcc/.lc_built: | obj_gcc/.lc_configured obj_gcc/gcc/.lc_built
- cd obj_gcc && $(MAKE) MAKE="$(MAKE) $(LIBTOOL_ARG)"
- touch $@
- install-musl: | obj_musl/.lc_built
- cd obj_musl && $(MAKE) $(MUSL_VARS) DESTDIR=$(DESTDIR)$(OUTPUT)$(SYSROOT) install
- install-binutils: | obj_binutils/.lc_built
- cd obj_binutils && $(MAKE) MAKE="$(MAKE) $(LIBTOOL_ARG)" DESTDIR=$(DESTDIR)$(OUTPUT) install
- install-gcc: | obj_gcc/.lc_built
- cd obj_gcc && $(MAKE) MAKE="$(MAKE) $(LIBTOOL_ARG)" DESTDIR=$(DESTDIR)$(OUTPUT) install
- ln -sf $(TARGET)-gcc $(DESTDIR)$(OUTPUT)/bin/$(TARGET)-cc
- ifneq ($(LINUX_SRCDIR),)
- TARGET_ARCH = $(firstword $(subst -, ,$(TARGET)))
- TARGET_ARCH_MANGLED = $(patsubst i%86,x86,$(patsubst aarch64%,arm64%,$(TARGET_ARCH)))
- LINUX_ARCH_LIST = $(sort $(notdir $(wildcard $(LINUX_SRCDIR)/arch/*)))
- LINUX_ARCH = $(lastword $(foreach a,$(LINUX_ARCH_LIST),$(if $(filter $(a)%,$(TARGET_ARCH_MANGLED)),$(a))))
- ifneq ($(LINUX_ARCH),)
- all: kernel-headers
- install: install-kernel-headers
- kernel-headers: | obj_kernel_headers/.lc_built
- src_kernel_headers: | $(LINUX_SRCDIR)
- ln -sf "$(LINUX_SRCDIR)" $@
- obj_kernel_headers/.lc_built: | src_kernel_headers
- mkdir -p $(CURDIR)/obj_kernel_headers/staged
- cd src_kernel_headers && $(MAKE) ARCH=$(LINUX_ARCH) O=$(CURDIR)/obj_kernel_headers INSTALL_HDR_PATH=$(CURDIR)/obj_kernel_headers/staged headers_install
- find obj_kernel_headers/staged/include '(' -name .install -o -name ..install.cmd ')' -exec rm {} +
- touch $@
- install-kernel-headers: | obj_kernel_headers/.lc_built
- mkdir -p $(DESTDIR)$(OUTPUT)$(SYSROOT)/include
- cp -R obj_kernel_headers/staged/include/* $(DESTDIR)$(OUTPUT)$(SYSROOT)/include
- endif
- endif
- endif
- clean:
- rm -rf src_* obj_*
|