diff options
Diffstat (limited to 'toolchain/gcc/Makefile')
-rw-r--r-- | toolchain/gcc/Makefile | 49 |
1 files changed, 41 insertions, 8 deletions
diff --git a/toolchain/gcc/Makefile b/toolchain/gcc/Makefile index 3f533bad9..51fc1fe8b 100644 --- a/toolchain/gcc/Makefile +++ b/toolchain/gcc/Makefile @@ -26,6 +26,15 @@ ifeq ($(ADK_TARGET_ARCH_ARM),y) TARGET_CFLAGS:= $(filter-out -mcpu=cortex-a9,$(TARGET_CFLAGS)) TARGET_CXXFLAGS:= $(filter-out -mcpu=cortex-a9,$(TARGET_CXXFLAGS)) endif +ifeq ($(ADK_TARGET_ARCH_ARM),y) +TARGET_CFLAGS:= $(filter-out -mcpu=cortex-a7,$(TARGET_CFLAGS)) +TARGET_CXXFLAGS:= $(filter-out -mcpu=cortex-a7,$(TARGET_CXXFLAGS)) +endif + +ifeq ($(ADK_TARGET_ARCH_ARM),y) +TARGET_CFLAGS:= $(filter-out -mcpu=xscale,$(TARGET_CFLAGS)) +TARGET_CXXFLAGS:= $(filter-out -mcpu=xscale,$(TARGET_CXXFLAGS)) +endif ifeq ($(ADK_TARGET_USE_STATIC_AND_SHARED_LIBS),y) TARGET_CFLAGS:= $(filter-out -static,$(TARGET_CFLAGS)) @@ -54,6 +63,7 @@ GCC_CONFOPTS:= --prefix=$(TOOLCHAIN_DIR)/usr \ --disable-libquadmath \ --disable-libquadmath-support \ --disable-decimal-float \ + --disable-gcov \ --disable-libstdcxx-pch \ --disable-ppl-version-check \ --disable-cloog-version-check \ @@ -122,8 +132,10 @@ GCC_CONFOPTS+= --with-arch=$(ADK_TARGET_GCC_ARCH) endif ifneq ($(ADK_TARGET_FLOAT),) +ifneq ($(ADK_TARGET_ARCH_OR1K),y) GCC_CONFOPTS+= --with-float=$(ADK_TARGET_FLOAT) endif +endif ifneq ($(ADK_TARGET_FPU),) GCC_CONFOPTS+= --with-fpu=$(ADK_TARGET_FPU) @@ -155,10 +167,6 @@ ifeq ($(ADK_TARGET_ARCH_METAG),y) GCC_CONFOPTS+= --with-cpu=2.1 --enable-meta-default --disable-symvers endif -ifeq ($(ADK_TARGET_CPU_CF),y) -GCC_CONFOPTS+= --with-arch=cf --disable-multilib -endif - ifeq ($(ADK_TARGET_ARCH_NDS32),y) GCC_CONFOPTS+= --with-arch=v3 endif @@ -167,6 +175,16 @@ ifeq ($(ADK_TARGET_ARCH_M68K)$(ADK_TARGET_ARCH_X86_64)$(ADK_TARGET_ARCH_X86),) GCC_FINAL_CONFOPTS+= --disable-biarch --disable-multilib endif +ifeq ($(ADK_TARGET_CPU_CF),y) +GCC_CONFOPTS+= --with-arch=cf +GCC_INITIAL_CONFOPTS+= --enable-multilib +ifeq ($(ADK_TARGET_BINFMT_ELF)$(ADK_TARGET_WITH_MMU),y) +GCC_FINAL_CONFOPTS+= --disable-multilib --disable-threads --disable-libatomic +endif +else +GCC_INITIAL_CONFOPTS+= --disable-multilib +endif + ifeq ($(ADK_TARGET_ARCH_SH),y) ifeq ($(ADK_TARGET_LITTLE_ENDIAN),y) @@ -243,6 +261,10 @@ ifneq ($(ADK_TARGET_ABI_RISCV),) GCC_CONFOPTS+= --with-abi=${ADK_TARGET_ABI_RISCV} endif +ifeq ($(ADK_TOOLCHAIN_GCC_NDS32),y) +EXTRA_CXXFLAGS:= --std=c++03 +endif + ifeq (${ADK_MAKE_PARALLEL},y) GCC_MAKEOPTS+= -j${ADK_MAKE_JOBS} endif @@ -270,8 +292,13 @@ GCC_BUILD_DIR_FINAL:= $(WRKBUILD)-final $(GCC_BUILD_DIR_INITIAL)/.configured: ifeq ($(ADK_TARGET_ARCH_XTENSA),y) +ifeq ($(ADK_TARGET_ABI),) tar xf $(ADK_TOPDIR)/target/xtensa/overlay/xtensa_$(ADK_TARGET_CPU_TYPE).tar \ --strip-components=1 -C $(WRKSRC) gcc +else + tar xf $(ADK_TOPDIR)/target/xtensa/overlay/xtensa_$(ADK_TARGET_CPU_TYPE)_$(ADK_TARGET_ABI).tar \ + --strip-components=1 -C $(WRKSRC) gcc +endif endif mkdir -p $(GCC_BUILD_DIR_INITIAL) # these symlinks are very important, do not remove @@ -299,21 +326,27 @@ ifeq ($(ADK_TARGET_CPU_SH_SH4A),y) (cd ${STAGING_TARGET_DIR}/ && ln -sf . m4a) endif endif +ifeq ($(ADK_TARGET_CPU_CF),y) + # Need to get gcc to generate _all_ the multilib variants + # (so both MMU and non-mmu M68k and ColdFire). + $(SED) 's/M68K_MLIB_CPU +=/#M68K_MLIB_CPU +=/' $(WRKBUILD)/gcc/config/m68k/t-m68k + $(SED) 's/&& (FLAGS ~ "FL_MMU")//' $(WRKBUILD)/gcc/config/m68k/t-linux +endif $(SED) '/k prot/agcc_cv_libc_provides_ssp=yes' $(WRKBUILD)/gcc/configure cd $(GCC_BUILD_DIR_INITIAL); \ PATH='$(TARGET_PATH)' \ CC='$(HOST_CC)' \ CXX='$(HOST_CXX)' \ CFLAGS="-O0 -g0 -fomit-frame-pointer" \ - CXXFLAGS="-O0 -g0 -fomit-frame-pointer" \ + CXXFLAGS="-O0 -g0 -fomit-frame-pointer $(EXTRA_CXXFLAGS)" \ $(WRKBUILD)/configure \ + ${GCC_INITIAL_CONFOPTS} \ ${GCC_CONFOPTS} \ ${GCC_TLS_CONFOPTS} \ --enable-languages=c \ --with-newlib \ --disable-shared \ --disable-threads \ - --disable-multilib \ --without-headers touch $@ @@ -346,7 +379,7 @@ $(WRKBUILD)/.compiled: cd $(GCC_BUILD_DIR_FINAL); \ PATH='$(TARGET_PATH)' \ CC='$(HOST_CC)' \ - CXX='$(HOST_CXX)' \ + CXX='$(HOST_CXX) $(EXTRA_CXXFLAGS)' \ CFLAGS_FOR_TARGET='$(TARGET_CFLAGS)' \ CXXFLAGS_FOR_TARGET='$(TARGET_CXXFLAGS)' \ $(WRKBUILD)/configure \ @@ -368,7 +401,7 @@ $(WRKBUILD)/.installed: $(WRKBUILD)/.compiled # remove duplicate tools, convert hardlinks to symlinks set -e; \ cd $(TOOLCHAIN_DIR)/usr/$(GNU_TARGET_NAME)/bin; \ - for app in ar as c++ g++ gcc ld ld.gold ld.bfd nm objcopy objdump ranlib strip; do \ + for app in ar as c++ g++ gcc ld ld.bfd nm objcopy objdump ranlib strip; do \ ln -sf ../../bin/$(GNU_TARGET_NAME)-$${app} $${app}; \ done; (cd $(TOOLCHAIN_DIR)/usr/bin && \ |