From abe3b8f248e747fa1267b2260f9605987aa0c41d Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sat, 1 Mar 2014 13:41:21 +0100 Subject: add basic support for x86_64 x32 abi, convert to miniconfig --- toolchain/gcc/Makefile | 1 + toolchain/gcc/Makefile.inc | 7 ------- 2 files changed, 1 insertion(+), 7 deletions(-) (limited to 'toolchain') diff --git a/toolchain/gcc/Makefile b/toolchain/gcc/Makefile index 2cd720a63..8fe6e0b09 100644 --- a/toolchain/gcc/Makefile +++ b/toolchain/gcc/Makefile @@ -18,6 +18,7 @@ GCC_CONFOPTS= --prefix=$(STAGING_HOST_DIR) \ --with-libelf=$(STAGING_HOST_DIR) \ --disable-__cxa_atexit \ --with-gnu-ld \ + --disable-libsanitizer \ --disable-libmudflap \ --disable-libgomp \ --disable-decimal-float \ diff --git a/toolchain/gcc/Makefile.inc b/toolchain/gcc/Makefile.inc index 689de3b63..86a0a5992 100644 --- a/toolchain/gcc/Makefile.inc +++ b/toolchain/gcc/Makefile.inc @@ -2,15 +2,8 @@ # material, please see the LICENCE file in the top-level directory. PKG_NAME:= gcc - -ifeq ($(ADK_LINUX_MICROBLAZE),y) PKG_VERSION:= 4.8.2 PKG_MD5SUM:= a3d7d63b9cb6b6ea049469a0c4a43c9d -else -PKG_VERSION:= 4.7.3 -PKG_MD5SUM:= 86f428a30379bdee0224e353ee2f999e -endif - PKG_RELEASE:= 1 PKG_SITES:= ${MASTER_SITE_GNU:=gcc/gcc-${PKG_VERSION}/} DISTFILES:= $(PKG_NAME)-$(PKG_VERSION).tar.bz2 -- cgit v1.2.3 From 99c3d73da02a1c67c0ff9c33a3ff35d1d5249844 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sun, 2 Mar 2014 08:31:24 +0100 Subject: add musl sh patch --- toolchain/gcc/patches/4.8.2/musl-sh.patch | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 toolchain/gcc/patches/4.8.2/musl-sh.patch (limited to 'toolchain') diff --git a/toolchain/gcc/patches/4.8.2/musl-sh.patch b/toolchain/gcc/patches/4.8.2/musl-sh.patch new file mode 100644 index 000000000..237f76f63 --- /dev/null +++ b/toolchain/gcc/patches/4.8.2/musl-sh.patch @@ -0,0 +1,11 @@ +diff -Nur gcc-4.8.2.orig/gcc/config/sh/linux.h gcc-4.8.2/gcc/config/sh/linux.h +--- gcc-4.8.2.orig/gcc/config/sh/linux.h 2013-03-14 04:01:53.000000000 +0100 ++++ gcc-4.8.2/gcc/config/sh/linux.h 2014-03-01 11:33:10.000000000 +0100 +@@ -44,6 +44,7 @@ + #define TARGET_ASM_FILE_END file_end_indicate_exec_stack + + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" ++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-sh.so.1" + + #undef SUBTARGET_LINK_EMUL_SUFFIX + #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" -- cgit v1.2.3 From 16fb2268394f00ab27e3582d02e03b6f5abbc72e Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sun, 2 Mar 2014 08:48:13 +0100 Subject: strip toolchain components without copying debug data, clean toolchain after every target so no 300Gb are required to bulk build the toolchains --- Makefile | 3 +++ mk/build.mk | 14 ++++++++++++-- scripts/rstrip.sh | 14 +++++++++++--- toolchain/eglibc/Makefile | 4 ++-- toolchain/glibc/Makefile | 4 ++-- toolchain/musl/Makefile | 4 ++-- toolchain/uClibc/Makefile | 4 ++-- 7 files changed, 34 insertions(+), 13 deletions(-) (limited to 'toolchain') diff --git a/Makefile b/Makefile index 4a8da9685..b0b6f61c3 100644 --- a/Makefile +++ b/Makefile @@ -104,6 +104,9 @@ cleantarget targetclean: .prereq_done -@${GMAKE_INV} cleantarget @-rm -f make.log +cleantoolchain toolchainclean: .prereq_done + -@${GMAKE_INV} cleantoolchain + distclean cleandist: -@${GMAKE_INV} distclean @-rm -f make.log .prereq_done diff --git a/mk/build.mk b/mk/build.mk index 3108ec064..16174c4b7 100644 --- a/mk/build.mk +++ b/mk/build.mk @@ -141,7 +141,7 @@ ${TOPDIR}/package/Depends.mk: ${TOPDIR}/.config $(wildcard ${TOPDIR}/package/*/M $(STAGING_HOST_DIR)/usr/bin/depmaker > ${TOPDIR}/package/Depends.mk .NOTPARALLEL: -.PHONY: all world clean cleantarget cleandir distclean image_clean +.PHONY: all world clean cleantarget cleandir cleantoolchain distclean image_clean world: mkdir -p $(DISTDIR) $(BUILD_DIR) $(TARGET_DIR) $(FW_DIR) \ @@ -275,6 +275,15 @@ cleandir: rm -rf $(STAGING_TARGET_DIR_PFX) $(STAGING_PKG_DIR_PFX) rm -f .menu .tmpconfig.h .rebuild* ${TOPDIR}/package/Depends.mk ${TOPDIR}/prereq.mk +cleantoolchain: + @$(TRACE) cleantoolchain + @$(MAKE) -C $(CONFIG) clean $(MAKE_TRACE) + rm -rf $(BUILD_DIR_PFX) $(TARGET_DIR_PFX) \ + ${TOPDIR}/package/pkglist.d ${TOPDIR}/package/pkgconfigs.d + rm -rf $(TOOLCHAIN_BUILD_DIR_PFX) $(STAGING_HOST_DIR_PFX) $(TOOLS_BUILD_DIR) + rm -rf $(STAGING_TARGET_DIR_PFX) $(STAGING_PKG_DIR_PFX) + rm -f .menu .tmpconfig.h .rebuild* ${TOPDIR}/package/Depends.mk ${TOPDIR}/prereq.mk + cleantarget: @$(TRACE) cleantarget @$(MAKE) -C $(CONFIG) clean $(MAKE_TRACE) @@ -535,7 +544,8 @@ bulktoolchain: $(GMAKE) prereq && \ $(GMAKE) ARCH=$$tarch SYSTEM=toolchain-$$arch LIBC=$$libc defconfig; \ $(GMAKE) VERBOSE=1 all; if [ $$? -ne 0 ]; then touch .exit;fi; \ - tar -cvJf ${TOPDIR}/firmware/toolchain_$${arch}_$${libc}.tar.xz host_$${arch}_*_$${libc} target_$${arch}_*_$${libc}; \ + tar -cvJf ${TOPDIR}/firmware/toolchain_$${arch}_$${libc}.tar.xz host_* target_$${arch}_$${libc}_*; \ + $(GMAKE) cleantoolchain; \ rm .config; \ ) 2>&1 | tee $(TOPDIR)/firmware/toolchain_$${arch}_$${libc}/build.log; \ if [ -f .exit ];then break;fi \ diff --git a/scripts/rstrip.sh b/scripts/rstrip.sh index e676dea82..bacf25ca7 100644 --- a/scripts/rstrip.sh +++ b/scripts/rstrip.sh @@ -5,6 +5,10 @@ SELF=${0##*/} +if [[ -z $debug ]];then + debug=1 +fi + if [[ -z $prefix ]]; then echo >&2 "$SELF: strip command not defined ('prefix' variable not set)" exit 1 @@ -60,9 +64,13 @@ find $TARGETS -type f -a -exec file {} \; | \ echo "$SELF: $V:$S" echo "-> $T $F" eval "chmod u+w $F" - eval "mkdir -p $D/usr/lib/debug/$Q" - eval "$O --only-keep-debug $F $D/usr/lib/debug/$P.debug" + if [[ $debug -eq 1 ]];then + eval "mkdir -p $D/usr/lib/debug/$Q" + eval "$O --only-keep-debug $F $D/usr/lib/debug/$P.debug" + fi eval "$T $F" - eval "cd $D/usr/lib/debug/$Q && $O --add-gnu-debuglink=$R.debug $F" + if [[ $debug -eq 1 ]];then + eval "cd $D/usr/lib/debug/$Q && $O --add-gnu-debuglink=$R.debug $F" + fi done exit 0 diff --git a/toolchain/eglibc/Makefile b/toolchain/eglibc/Makefile index 66c326a93..e2028dcd4 100644 --- a/toolchain/eglibc/Makefile +++ b/toolchain/eglibc/Makefile @@ -92,8 +92,8 @@ $(WRKBUILD)/.fixup: -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 - PATH="$(TARGET_PATH)" prefix='${TARGET_CROSS}' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_TARGET_DIR) - prefix=' ' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_HOST_DIR) + PATH="$(TARGET_PATH)" debug='' prefix='${TARGET_CROSS}' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_TARGET_DIR) + debug='' prefix=' ' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_HOST_DIR) touch $@ include ${TOPDIR}/mk/toolchain.mk diff --git a/toolchain/glibc/Makefile b/toolchain/glibc/Makefile index 7f304330c..00bd67cbc 100644 --- a/toolchain/glibc/Makefile +++ b/toolchain/glibc/Makefile @@ -73,8 +73,8 @@ $(WRKBUILD)/.fixup: -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 - PATH="$(TARGET_PATH)" prefix='${TARGET_CROSS}' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_TARGET_DIR) - prefix=' ' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_HOST_DIR) + PATH="$(TARGET_PATH)" debug='' prefix='${TARGET_CROSS}' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_TARGET_DIR) + debug='' prefix=' ' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_HOST_DIR)/bin $(STAGING_HOST_DIR)/$(GNU_TARGET_NAME)/ touch $@ include ${TOPDIR}/mk/toolchain.mk diff --git a/toolchain/musl/Makefile b/toolchain/musl/Makefile index 726a036c3..b94c4e916 100644 --- a/toolchain/musl/Makefile +++ b/toolchain/musl/Makefile @@ -59,8 +59,8 @@ $(WRKBUILD)/.fixup: $(MAKE) -C $(WRKBUILD) DESTDIR=$(STAGING_TARGET_DIR) install # cleanup toolchain -find $(STAGING_TARGET_DIR) $(STAGING_HOST_DIR) -name \*.la -delete - PATH="$(TARGET_PATH)" prefix='${TARGET_CROSS}' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_TARGET_DIR) - prefix=' ' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_HOST_DIR) + PATH="$(TARGET_PATH)" debug='' prefix='${TARGET_CROSS}' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_TARGET_DIR) + debug='' prefix=' ' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_HOST_DIR) touch $@ include ${TOPDIR}/mk/toolchain.mk diff --git a/toolchain/uClibc/Makefile b/toolchain/uClibc/Makefile index 232c3944e..7e53b5d21 100644 --- a/toolchain/uClibc/Makefile +++ b/toolchain/uClibc/Makefile @@ -120,8 +120,8 @@ endif ln -s libc.so.0 $(STAGING_TARGET_DIR)/lib/libc.so # cleanup toolchain -find $(STAGING_TARGET_DIR) $(STAGING_HOST_DIR) -name \*.la -delete - PATH="$(TARGET_PATH)" prefix='${TARGET_CROSS}' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_TARGET_DIR) - prefix=' ' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_HOST_DIR) + PATH="$(TARGET_PATH)" debug='' prefix='${TARGET_CROSS}' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_TARGET_DIR) + debug='' prefix=' ' ${BASH} ${SCRIPT_DIR}/rstrip.sh $(STAGING_HOST_DIR) touch $@ include ${TOPDIR}/mk/toolchain.mk -- cgit v1.2.3