From 4345869df894faae79f68d4a835e2e825a4778f7 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sat, 14 Feb 2015 11:36:56 +0100 Subject: rework float support ARM, MIPS and PPC have support for soft or hard float configuration of toolchain and system. Generalize the support for this in OpenADK. --- toolchain/gcc/Makefile | 40 ++++++++++++++++++------------------- toolchain/uclibc-ng/Makefile | 47 ++++++++++++++++++++------------------------ 2 files changed, 41 insertions(+), 46 deletions(-) (limited to 'toolchain') diff --git a/toolchain/gcc/Makefile b/toolchain/gcc/Makefile index eb36c49b6..f1b8c4455 100644 --- a/toolchain/gcc/Makefile +++ b/toolchain/gcc/Makefile @@ -69,6 +69,26 @@ GCC_FINAL_CONFOPTS+= --enable-shared='libstdc++,libgcc' endif endif +ifeq ($(ADK_TOOLCHAIN_WITH_SSP),y) +GCC_FINAL_CONFOPTS+= --enable-libssp +else +GCC_FINAL_CONFOPTS+= --disable-libssp +endif + +ifeq ($(ADK_TOOLCHAIN_WITH_LTO),y) +GCC_CONFOPTS+= --enable-lto +else +GCC_CONFOPTS+= --disable-lto +endif + +# +# architecture specific +# + +ifneq ($(ADK_TARGET_ARCH_ARM)$(ADK_TARGET_ARCH_MIPS)$(ADK_TARGET_ARCH_PPC),) +GCC_CONFOPTS+= --with-float=$(ADK_TARGET_FLOAT) +endif + ifeq ($(ADK_TARGET_ARCH_M68K)$(ADK_TARGET_ARCH_SH)$(ADK_TARGET_ARCH_X86_64)$(ADK_TARGET_ARCH_X86),) GCC_FINAL_CONFOPTS+= --disable-biarch --disable-multilib endif @@ -99,31 +119,11 @@ GCC_FINAL_CONFOPTS+= --disable-biarch --disable-multilib endif endif -ifeq ($(ADK_TOOLCHAIN_WITH_SSP),y) -GCC_FINAL_CONFOPTS+= --enable-libssp -else -GCC_FINAL_CONFOPTS+= --disable-libssp -endif - -ifeq ($(ADK_TOOLCHAIN_WITH_LTO),y) -GCC_CONFOPTS+= --enable-lto -else -GCC_CONFOPTS+= --disable-lto -endif - ifeq ($(ADK_TARGET_ARCH_PPC),y) GCC_CONFOPTS+= --with-long-double-64 --enable-secureplt -ifneq ($(ADK_TARGET_CPU_WITH_FPU),y) -GCC_CONFOPTS+= --with-float=soft -endif -endif - -ifeq ($(ADK_TARGET_ARCH_MIPS),y) -GCC_CONFOPTS+= --with-float=$(ADK_TARGET_FLOAT) endif ifeq ($(ADK_TARGET_ARCH_ARM),y) -GCC_CONFOPTS+= --with-float=$(ADK_TARGET_FLOAT) ifneq ($(ADK_TARGET_FPU),) GCC_CONFOPTS+= --with-fpu=$(ADK_TARGET_FPU) endif diff --git a/toolchain/uclibc-ng/Makefile b/toolchain/uclibc-ng/Makefile index b9c53e960..2adc0859e 100644 --- a/toolchain/uclibc-ng/Makefile +++ b/toolchain/uclibc-ng/Makefile @@ -30,6 +30,14 @@ else $(SED) 's/.*\(ARCH_LITTLE_ENDIAN\).*/# \1 is not set/' ${WRKBUILD}/.config $(SED) 's/.*\(ARCH_WANTS_LITTLE_ENDIAN\).*/# \1 is not set/' ${WRKBUILD}/.config endif +ifeq ($(ADK_TARGET_SOFT_FLOAT),y) + $(SED) 's/.*\(UCLIBC_HAS_FPU\).*/# \1 is not set/' ${WRKBUILD}/.config + $(SED) 's/.*\(UCLIBC_HAS_SOFT_FLOAT\).*/#\1=y/' ${WRKBUILD}/.config +endif +ifeq ($(ADK_TARGET_HARD_FLOAT),y) + $(SED) 's/.*\(UCLIBC_HAS_FPU\).*/\1=y/' ${WRKBUILD}/.config + $(SED) 's/.*\(UCLIBC_HAS_SOFT_FLOAT\).*/# \1 is not set/' ${WRKBUILD}/.config +endif ifeq ($(ADK_TARGET_BINFMT_FLAT),y) $(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/\1=y/' ${WRKBUILD}/.config endif @@ -67,32 +75,29 @@ ifeq ($(ADK_TARGET_USE_SSP),y) echo "UCLIBC_BUILD_SSP=y" >> ${WRKBUILD}/.config endif +# # architecture specific options +# + # arm ifeq ($(ADK_TARGET_ARCH_ARM),y) -ifeq ($(ADK_TARGET_ABI_EABI),y) - $(SED) 's/.*\(UCLIBC_HAS_FPU\).*/# \1 is not set/' ${WRKBUILD}/.config - $(SED) 's/.*\(UCLIBC_HAS_SOFT_FLOAT\).*/#\1=y/' ${WRKBUILD}/.config - -endif -ifeq ($(ADK_TARGET_ABI_EABIHF),y) - $(SED) 's/.*\(UCLIBC_HAS_FPU\).*/\1=y/' ${WRKBUILD}/.config - $(SED) 's/.*\(UCLIBC_HAS_SOFT_FLOAT\).*/# \1 is not set/' ${WRKBUILD}/.config -endif ifeq ($(ADK_TARGET_ARCH_ARM_WITH_THUMB),y) $(SED) 's/.*\(COMPILE_IN_THUMB_MODE\).*/\1=y/' ${WRKBUILD}/.config endif endif -# mips/mips64 -ifeq ($(ADK_TARGET_ARCH_MIPS64),y) - $(SED) 's/.*\(CONFIG_MIPS_ISA_MIPS64\).*/\1=y/' ${WRKBUILD}/.config - $(SED) 's/.*\(CONFIG_MIPS_ISA_MIPS32\).*/# \1 is not set/' ${WRKBUILD}/.config -endif + +# mips ifeq ($(ADK_TARGET_ARCH_MIPS),y) - $(SED) 's/.*\(CONFIG_MIPS_ISA_MIPS32\).*/\1=y/' ${WRKBUILD}/.config - $(SED) 's/.*\(CONFIG_MIPS_ISA_MIPS64\).*/# \1 is not set/' ${WRKBUILD}/.config +ifeq ($(ADK_CPU_MIPS32R2),y) + $(SED) 's/.*\(CONFIG_MIPS_ISA_MIPS32 \).*/# \1 is not set/' ${WRKBUILD}/.config + $(SED) 's/.*\(CONFIG_MIPS_ISA_MIPS32R2\).*/\1=y/' ${WRKBUILD}/.config endif +endif + +# mips64 ifeq ($(ADK_TARGET_ARCH_MIPS64),y) + $(SED) 's/.*\(CONFIG_MIPS_ISA_MIPS64\).*/\1=y/' ${WRKBUILD}/.config + $(SED) 's/.*\(CONFIG_MIPS_ISA_MIPS32\).*/# \1 is not set/' ${WRKBUILD}/.config ifeq ($(ADK_n64),y) $(SED) 's/.*\(CONFIG_MIPS_N64_ABI\).*/\1=y/' ${WRKBUILD}/.config $(SED) 's/.*\(CONFIG_MIPS_O32_ABI\).*/# \1 is not set/' ${WRKBUILD}/.config @@ -108,16 +113,6 @@ ifeq ($(ADK_o32),y) $(SED) 's/.*\(CONFIG_MIPS_N32_ABI\).*/# \1 is not set/' ${WRKBUILD}/.config $(SED) 's/.*\(CONFIG_MIPS_N64_ABI\).*/# \1 is not set/' ${WRKBUILD}/.config endif -endif -# powerpc -ifeq ($(ADK_TARGET_ARCH_PPC),y) -ifeq ($(ADK_TARGET_CPU_WITH_FPU),y) - $(SED) 's/.*\(UCLIBC_HAS_FPU\).*/\1=y/' ${WRKBUILD}/.config - $(SED) 's/.*\(UCLIBC_HAS_SOFT_FLOAT\).*/# \1 is not set/' ${WRKBUILD}/.config -else - $(SED) 's/.*\(UCLIBC_HAS_FPU\).*/# \1 is not set/' ${WRKBUILD}/.config - $(SED) 's/.*\(UCLIBC_HAS_SOFT_FLOAT\).*/#\1=y/' ${WRKBUILD}/.config -endif endif echo N|PATH='$(HOST_PATH)' $(MAKE) ${UCLIBC_MAKEOPTS} -C $(WRKBUILD) \ PREFIX=$(STAGING_TARGET_DIR) \ -- cgit v1.2.3