From b357b7bef1cdf64045e946238ad405cb7f66a706 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Thu, 20 Mar 2014 00:21:05 +0100 Subject: add fpu settings, fix symlinks --- rules.mk | 1 + target/arm/sys-available/cubox-i | 1 + target/arm/sys-available/qemu-arm | 1 + target/arm/sys-available/qemu-armhf | 1 + target/arm/sys-available/raspberry-pi | 1 + target/arm/sys-available/toolchain-arm | 1 + target/arm/sys-available/toolchain-armhf | 1 + target/config/Config.in | 11 +++++++++++ toolchain/gcc/Makefile | 28 ++++++++++++---------------- 9 files changed, 30 insertions(+), 16 deletions(-) diff --git a/rules.mk b/rules.mk index 81c613c83..f822642d1 100644 --- a/rules.mk +++ b/rules.mk @@ -32,6 +32,7 @@ ADK_TARGET_LIBC:= $(strip $(subst ",, $(ADK_TARGET_LIBC))) ADK_TARGET_LIBC_PATH:= $(strip $(subst ",, $(ADK_TARGET_LIBC_PATH))) ADK_TARGET_ENDIAN:= $(strip $(subst ",, $(ADK_TARGET_ENDIAN))) ADK_TARGET_FLOAT:= $(strip $(subst ",, $(ADK_TARGET_FLOAT))) +ADK_TARGET_FPU:= $(strip $(subst ",, $(ADK_TARGET_FPU))) ADK_TARGET_ARM_MODE:= $(strip $(subst ",, $(ADK_TARGET_ARM_MODE))) ADK_TARGET_CPU_ARCH:= $(strip $(subst ",, $(ADK_TARGET_CPU_ARCH))) ADK_TARGET_CFLAGS:= $(strip $(subst ",, $(ADK_TARGET_CFLAGS))) diff --git a/target/arm/sys-available/cubox-i b/target/arm/sys-available/cubox-i index 9a63c8350..97a9a84b4 100644 --- a/target/arm/sys-available/cubox-i +++ b/target/arm/sys-available/cubox-i @@ -4,6 +4,7 @@ config ADK_TARGET_SYSTEM_CUBOX_I select ADK_little select ADK_hard_float select ADK_eabihf + select ADK_fpu_neon select ADK_cubox_i select ADK_CPU_CORTEX_A9 select ADK_TARGET_WITH_MMC diff --git a/target/arm/sys-available/qemu-arm b/target/arm/sys-available/qemu-arm index 1fa057c4b..aeaa41d44 100644 --- a/target/arm/sys-available/qemu-arm +++ b/target/arm/sys-available/qemu-arm @@ -4,6 +4,7 @@ config ADK_TARGET_SYSTEM_QEMU_ARM select ADK_qemu_arm select ADK_little select ADK_soft_float + select ADK_fpu_vfp select ADK_eabi select ADK_HARDWARE_QEMU select ADK_TARGET_KERNEL_ZIMAGE diff --git a/target/arm/sys-available/qemu-armhf b/target/arm/sys-available/qemu-armhf index 85cc9c00f..dab039931 100644 --- a/target/arm/sys-available/qemu-armhf +++ b/target/arm/sys-available/qemu-armhf @@ -5,6 +5,7 @@ config ADK_TARGET_SYSTEM_QEMU_ARMHF select ADK_little select ADK_hard_float select ADK_eabihf + select ADK_fpu_vfp select ADK_HARDWARE_QEMU select ADK_TARGET_KERNEL_ZIMAGE help diff --git a/target/arm/sys-available/raspberry-pi b/target/arm/sys-available/raspberry-pi index 518b7b2a3..e91e0e4a1 100644 --- a/target/arm/sys-available/raspberry-pi +++ b/target/arm/sys-available/raspberry-pi @@ -4,6 +4,7 @@ config ADK_TARGET_SYSTEM_RASPBERRY_PI select ADK_little select ADK_hard_float select ADK_eabihf + select ADK_fpu_vfp select ADK_raspberry_pi select ADK_CPU_ARM1176JZF_S select ADK_TARGET_WITH_MMC diff --git a/target/arm/sys-available/toolchain-arm b/target/arm/sys-available/toolchain-arm index 23febc50e..3ad081933 100644 --- a/target/arm/sys-available/toolchain-arm +++ b/target/arm/sys-available/toolchain-arm @@ -4,6 +4,7 @@ config ADK_TARGET_SYSTEM_TOOLCHAIN_ARM select ADK_toolchain_arm select ADK_little select ADK_soft_float + select ADK_fpu_vfp select ADK_eabi select ADK_TOOLCHAIN select ADK_TARGET_PACKAGE_TGZ diff --git a/target/arm/sys-available/toolchain-armhf b/target/arm/sys-available/toolchain-armhf index bf671481c..8a2db49a8 100644 --- a/target/arm/sys-available/toolchain-armhf +++ b/target/arm/sys-available/toolchain-armhf @@ -4,6 +4,7 @@ config ADK_TARGET_SYSTEM_TOOLCHAIN_ARMHF select ADK_little select ADK_hard_float select ADK_eabihf + select ADK_fpu_vfp select ADK_toolchain_armhf select ADK_TOOLCHAIN select ADK_TARGET_PACKAGE_TGZ diff --git a/target/config/Config.in b/target/config/Config.in index 38004d7e3..05f495449 100644 --- a/target/config/Config.in +++ b/target/config/Config.in @@ -37,6 +37,12 @@ config ADK_soft_float config ADK_hard_float boolean +config ADK_fpu_neon + boolean + +config ADK_fpu_vfp + boolean + config ADK_mode_arm boolean @@ -48,6 +54,11 @@ config ADK_TARGET_FLOAT default "hard" if ADK_hard_float default "soft" if ADK_soft_float +config ADK_TARGET_FPU + string + default "vfp" if ADK_fpu_vfp + default "neon" if ADK_fpu_neon + config ADK_TARGET_ARM_MODE depends on ADK_LINUX_ARM string diff --git a/toolchain/gcc/Makefile b/toolchain/gcc/Makefile index 98e150f7a..6f70bfd12 100644 --- a/toolchain/gcc/Makefile +++ b/toolchain/gcc/Makefile @@ -80,6 +80,9 @@ endif ifeq ($(ARCH),arm) GCC_CONFOPTS+= --with-float=$(ADK_TARGET_FLOAT) GCC_CONFOPTS+= --with-mode=$(ADK_TARGET_ARM_MODE) +ifneq ($(ADK_TARGET_FPU),) +GCC_CONFOPTS+= --with-fpu=$(ADK_TARGET_FPU) +endif endif ifeq ($(ADK_CPU_ARM926EJ_S),y) @@ -87,11 +90,11 @@ GCC_CONFOPTS+= --with-arch=armv5te --with-tune=arm1176jzf-s endif ifeq ($(ADK_CPU_ARM1176JZF_S),y) -GCC_CONFOPTS+= --with-arch=armv6 --with-tune=arm1176jzf-s --with-fpu=vfp +GCC_CONFOPTS+= --with-arch=armv6 --with-tune=arm1176jzf-s endif ifeq ($(ADK_CPU_CORTEX_A9),y) -GCC_CONFOPTS+= --with-arch=armv7-a --with-tune=cortex-a9 --with-fpu=neon +GCC_CONFOPTS+= --with-arch=armv7-a --with-tune=cortex-a9 endif ifeq ($(ADK_CPU_SPARC_V9),y) @@ -120,11 +123,13 @@ GCC_BUILD_DIR_FINAL:= $(WRKBUILD)-final $(GCC_BUILD_DIR_MINIMAL)/.configured: mkdir -p $(GCC_BUILD_DIR_MINIMAL) # these symlinks are very important, do not remove - rm -rf $(TOOLCHAIN_DIR)/$(GNU_TARGET_NAME)/sys-include - ln -sf ${STAGING_TARGET_DIR}/usr/include \ - $(TOOLCHAIN_DIR)/usr/$(GNU_TARGET_NAME)/sys-include + rm -rf $(TOOLCHAIN_DIR)/usr/$(GNU_TARGET_NAME)/sys-include + mkdir -p $(TOOLCHAIN_DIR)/usr/$(GNU_TARGET_NAME) + (cd $(TOOLCHAIN_DIR)/usr/$(GNU_TARGET_NAME); \ + ln -s ../$(STAGING_HOST2TARGET)/usr/include sys-include) rm -rf ${TOOLCHAIN_DIR}/usr/$(GNU_TARGET_NAME)/lib - ln -sf ${STAGING_TARGET_DIR}/lib $(TOOLCHAIN_DIR)/usr/$(GNU_TARGET_NAME)/lib + (cd $(TOOLCHAIN_DIR)/usr/$(GNU_TARGET_NAME); \ + ln -s ../$(STAGING_HOST2TARGET)/lib lib) ifeq ($(ADK_LINUX_SH),y) (cd ${STAGING_TARGET_DIR}/ && ln -sf . m4 && ln -sf . m4-nofpu) endif @@ -202,16 +207,7 @@ $(WRKBUILD)/.installed: $(WRKBUILD)/.compiled done; (cd $(TOOLCHAIN_DIR)/usr/bin && \ ln -sf $(GNU_TARGET_NAME)-gcc $(GNU_TARGET_NAME)-gcc-${PKG_VERSION}) - @-test -d $(STAGING_TARGET_DIR)/lib32 && \ - cd $(STAGING_TARGET_DIR)/lib32 && \ - ln -sf libstdc++.so.6.0.18 libstdc++.so && \ - ln -sf libstdc++.so.6.0.18 libstdc++.so.6 - @-test -d $(STAGING_TARGET_DIR)/libx32 && \ - cd $(STAGING_TARGET_DIR)/libx32 && \ - ln -sf libstdc++.so.6.0.18 libstdc++.so && \ - ln -sf libstdc++.so.6.0.18 libstdc++.so.6 - @-test -d $(STAGING_TARGET_DIR)/lib64 && \ - cd $(STAGING_TARGET_DIR)/lib64 && \ + cd $(STAGING_TARGET_DIR)/lib && \ ln -sf libstdc++.so.6.0.18 libstdc++.so && \ ln -sf libstdc++.so.6.0.18 libstdc++.so.6 # cleanup unneeded docs -- cgit v1.2.3 From 3506da29a1648b1890c9a49c1eb8cdfdc0eca6f8 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Thu, 20 Mar 2014 00:33:30 +0100 Subject: fix stripping for uclibc/musl toolchains, do not remove *_pic.a might be needed for shared libraries --- toolchain/glibc/Makefile | 2 -- toolchain/musl/Makefile | 5 +++-- toolchain/uClibc/Makefile | 5 +++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/toolchain/glibc/Makefile b/toolchain/glibc/Makefile index b117aadb0..44f73c1ff 100644 --- a/toolchain/glibc/Makefile +++ b/toolchain/glibc/Makefile @@ -64,13 +64,11 @@ $(WRKBUILD)/.installed: ${GLIBC_ENV} $(MAKE) -C $(GLIBC_BUILD_DIR_FINAL) install_root=$(STAGING_TARGET_DIR) install mkdir -p ${STAGING_TARGET_DIR}/etc ${INSTALL_DATA} ${WRKBUILD}/posix/gai.conf ${STAGING_TARGET_DIR}/etc - ${INSTALL_DATA} ${WRKBUILD}/nscd/nscd.conf ${STAGING_TARGET_DIR}/etc ${INSTALL_DATA} ${WRKBUILD}/nss/nsswitch.conf ${STAGING_TARGET_DIR}/etc touch $@ $(WRKBUILD)/.fixup: -find $(STAGING_TARGET_DIR) $(STAGING_HOST_DIR) -name \*.la -delete - -find $(STAGING_TARGET_DIR) -type f -name \*_pic\* -delete rm -rf $(STAGING_TARGET_DIR)/usr/share/locale $(STAGING_TARGET_DIR)/usr/share/i18n rm -rf $(STAGING_TARGET_DIR)/usr/lib/gconv ifeq ($(ADK_TOOLCHAIN),y) diff --git a/toolchain/musl/Makefile b/toolchain/musl/Makefile index aa5e8845c..f13a2613d 100644 --- a/toolchain/musl/Makefile +++ b/toolchain/musl/Makefile @@ -55,8 +55,9 @@ $(WRKBUILD)/.fixup: -find $(STAGING_TARGET_DIR) $(STAGING_HOST_DIR) -name \*.la -delete ifeq ($(ADK_TOOLCHAIN),y) # strip target libs and host tools for toolchain builds - PATH="$(TARGET_PATH)" debug='0' prefix='${TARGET_CROSS}' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_TARGET_DIR) - debug='0' prefix=' ' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_HOST_DIR) + PATH="$(TARGET_PATH)" debug='0' prefix='${TARGET_CROSS}' ${BASH} ${SCRIPT_DIR}/rstrip.sh \ + $(STAGING_TARGET_DIR) $(TOOLCHAIN_DIR)/usr/lib/gcc/$(GNU_TARGET_NAME) + debug='0' prefix=' ' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(TOOLCHAIN_DIR)/usr/bin endif touch $@ diff --git a/toolchain/uClibc/Makefile b/toolchain/uClibc/Makefile index 18b94916f..ffd85225f 100644 --- a/toolchain/uClibc/Makefile +++ b/toolchain/uClibc/Makefile @@ -118,8 +118,9 @@ endif -find $(STAGING_TARGET_DIR) $(STAGING_HOST_DIR) -name \*.la -delete ifeq ($(ADK_TOOLCHAIN),y) # strip target libs and host tools for toolchain builds - PATH="$(TARGET_PATH)" debug='0' prefix='${TARGET_CROSS}' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_TARGET_DIR) - debug='0' prefix=' ' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_HOST_DIR) + PATH="$(TARGET_PATH)" debug='0' prefix='${TARGET_CROSS}' ${BASH} ${SCRIPT_DIR}/rstrip.sh \ + $(STAGING_TARGET_DIR) $(TOOLCHAIN_DIR)/usr/lib/gcc/$(GNU_TARGET_NAME) + debug='0' prefix=' ' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(TOOLCHAIN_DIR)/usr/bin endif touch $@ -- cgit v1.2.3 From cc328910729827d72311e59e2aa99403de84db35 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Thu, 20 Mar 2014 01:08:03 +0100 Subject: fix qemu-i686 and uClibc build --- BUGS | 1 - toolchain/uClibc/Makefile | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/BUGS b/BUGS index 5bd4fc77c..70759ad05 100644 --- a/BUGS +++ b/BUGS @@ -1,4 +1,3 @@ -- qemu-i386: uCLibc fails for non-debug builds - qemu-sparc: startup kernel with gcc 4.8.2 broken - qemu-sh4: usb keyboard is broken - qemu-arm: thumb mode with glibc does not boot diff --git a/toolchain/uClibc/Makefile b/toolchain/uClibc/Makefile index 18b94916f..2488232c0 100644 --- a/toolchain/uClibc/Makefile +++ b/toolchain/uClibc/Makefile @@ -104,9 +104,8 @@ $(WRKBUILD)/.installed: $(WRKBUILD)/.install_headers touch $@ $(WRKBUILD)/.fixup: -ifneq ($(ADK_DEBUG),) + # DOSTRIP kills x86 target (ld.so can not map libc.so.0), always use DODEBUG $(SED) 's,DOSTRIP,DODEBUG,' ${WRKBUILD}/.config -endif $(MAKE) -C $(WRKBUILD) \ PREFIX=$(STAGING_TARGET_DIR) \ DEVEL_PREFIX=/usr/ \ -- cgit v1.2.3