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 --- mk/image.mk | 9 ++++++--- mk/vars.mk | 10 +++++----- 2 files changed, 11 insertions(+), 8 deletions(-) (limited to 'mk') diff --git a/mk/image.mk b/mk/image.mk index 9b60c2400..2c120d36b 100644 --- a/mk/image.mk +++ b/mk/image.mk @@ -51,6 +51,7 @@ image-prepare-post: -rm -f ${TARGET_DIR}/bin/sh ln -sf ${BINSH} ${TARGET_DIR}/bin/sh ifeq ($(ADK_LINUX_X86_64),y) +ifneq ($(ADK_TARGET_ABI_X32),y) # fixup lib dirs mv ${TARGET_DIR}/lib/* ${TARGET_DIR}/${ADK_TARGET_LIBC_PATH} rm -rf ${TARGET_DIR}/lib/ @@ -60,6 +61,7 @@ ifeq ($(ADK_LINUX_X86_64),y) rm -rf ${TARGET_DIR}/usr/lib/ (cd ${TARGET_DIR}/usr ; ln -sf ${ADK_TARGET_LIBC_PATH} lib) endif +endif ifeq ($(ADK_LINUX_PPC64),y) # fixup lib dirs mv ${TARGET_DIR}/lib/* ${TARGET_DIR}/${ADK_TARGET_LIBC_PATH} @@ -175,10 +177,11 @@ createinitramfs: ${FW_DIR}/${INITRAMFS}_list ${LINUX_DIR}/.config ( \ echo "CONFIG_BLK_DEV_INITRD=y"; \ + echo "CONFIG_ACPI_INITRD_TABLE_OVERRIDE=n"; \ echo 'CONFIG_INITRAMFS_SOURCE="${FW_DIR}/${INITRAMFS}_list"'; \ - echo '# CONFIG_INITRAMFS_COMPRESSION_NONE is not set' >> ${LINUX_DIR}/.config; \ - echo 'CONFIG_INITRAMFS_ROOT_UID=0' >> ${LINUX_DIR}/.config; \ - echo 'CONFIG_INITRAMFS_ROOT_GID=0' >> ${LINUX_DIR}/.config; \ + echo '# CONFIG_INITRAMFS_COMPRESSION_NONE is not set'; \ + echo 'CONFIG_INITRAMFS_ROOT_UID=0'; \ + echo 'CONFIG_INITRAMFS_ROOT_GID=0'; \ ) >> ${LINUX_DIR}/.config ifeq ($(ADK_KERNEL_COMP_XZ),y) echo "CONFIG_RD_BZIP2=n" >> ${LINUX_DIR}/.config diff --git a/mk/vars.mk b/mk/vars.mk index 427b5b4ec..e043950b4 100644 --- a/mk/vars.mk +++ b/mk/vars.mk @@ -44,8 +44,13 @@ TARGET_DIR_PFX:= $(BASE_DIR)/root_* TARGET_PATH= ${SCRIPT_DIR}:${BIN_DIR}:${STAGING_TARGET_DIR}/scripts:${STAGING_HOST_DIR}/bin:${STAGING_HOST_DIR}/usr/bin:${_PATH} HOST_PATH= ${SCRIPT_DIR}:${BIN_DIR}:${STAGING_HOST_DIR}/bin:${STAGING_HOST_DIR}/usr/bin:${_PATH} AUTOTOOL_PATH= ${BIN_DIR}:${STAGING_HOST_DIR}/bin:${STAGING_HOST_DIR}/usr/bin:${STAGING_TARGET_DIR}/scripts:${_PATH} +ifeq ($(ADK_TARGET_ABI_X32),y) +REAL_GNU_TARGET_NAME= $(CPU_ARCH)-x32-linux-$(ADK_TARGET_SUFFIX) +GNU_TARGET_NAME= $(CPU_ARCH)-x32-linux +else REAL_GNU_TARGET_NAME= $(CPU_ARCH)-$(ADK_VENDOR)-linux-$(ADK_TARGET_SUFFIX) GNU_TARGET_NAME= $(CPU_ARCH)-$(ADK_VENDOR)-linux +endif ifeq ($(ADK_DISABLE_HONOUR_CFLAGS),) GCC_CHECK:= GCC_HONOUR_COPTS=2 @@ -82,13 +87,8 @@ endif endif TARGET_CPPFLAGS:= -ifeq ($(ADK_LINUX_MICROBLAZE),y) TARGET_CFLAGS:= $(TARGET_CFLAGS_ARCH) -fwrapv -fno-ident $(ADK_TARGET_ABI_CFLAGS) TARGET_CFLAGS_LIBC:= $(TARGET_CFLAGS_ARCH) -fwrapv -fno-ident $(TARGET_OPTIMIZATION) -else -TARGET_CFLAGS:= $(TARGET_CFLAGS_ARCH) -fwrapv -fno-ident -fhonour-copts $(ADK_TARGET_ABI_CFLAGS) $(MODE_FLAGS) -TARGET_CFLAGS_LIBC:= $(TARGET_CFLAGS_ARCH) -fwrapv -fno-ident -fhonour-copts $(TARGET_OPTIMIZATION) $(MODE_FLAGS) -endif TARGET_CXXFLAGS:= $(TARGET_CFLAGS_ARCH) -fwrapv -fno-ident $(MODE_FLAGS) TARGET_LDFLAGS:= -L$(STAGING_TARGET_DIR)/lib -L$(STAGING_TARGET_DIR)/usr/lib \ -Wl,-O1 -Wl,-rpath -Wl,/usr/lib \ -- cgit v1.2.3 From f9c7cc2a67b4f49285e7bc5283ebb4d5672457e1 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Sun, 2 Mar 2014 08:21:06 +0100 Subject: fix make clean --- mk/build.mk | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'mk') diff --git a/mk/build.mk b/mk/build.mk index 3108ec064..f37f7b766 100644 --- a/mk/build.mk +++ b/mk/build.mk @@ -252,10 +252,8 @@ clean: $(MAKE) -C $(CONFIG) clean for f in $$(ls ${STAGING_PKG_DIR}/ 2>/dev/null |grep -v [A-Z]|grep -v stamps 2>/dev/null); do \ while read file ; do \ - echo ${STAGING_DIR}/$$file ;\ rm ${STAGING_DIR}/$$file 2>/dev/null;\ - done < $$f ; \ - echo ${STAGING_PKG_DIR}/$$f ;\ + done < ${STAGING_PKG_DIR}/$$f ; \ rm ${STAGING_PKG_DIR}/$$f ; \ done rm -rf $(BUILD_DIR) $(FW_DIR) $(TARGET_DIR) \ -- 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 'mk') 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