#!/usr/bin/make -f include /usr/share/dpkg/pkg-info.mk MULTILIB_LIST_ARM="--with-multilib-list=rmprofile,aprofile" TARGET_ARM=arm-none-eabi TARGET_AARCH64=aarch64-none-elf PACKAGE_GCC_ARM=gcc-$(TARGET_ARM) PACKAGE_GCC_AARCH64=gcc-$(TARGET_AARCH64) PACKAGE_GCC_SOURCE=gcc-arm-none-eabi-source PACKAGE_LIBSTDCXX_ARM=libstdc++-$(TARGET_ARM) PACKAGE_LIBSTDCXX_ARM_COMMON=libstdc++-$(TARGET_ARM)-common PACKAGE_LIBSTDCXX_AARCH64=libstdc++-$(TARGET_AARCH64) TOP_DIR=$(shell pwd) UPSTREAM_URL=https://developer.arm.com/-/media/Files/downloads/gnu/15.2.rel1/srcrel/arm-gnu-toolchain-src-snapshot-15.2.rel1.tar.xz GCC_BUILD_DIR_ARM=$(TOP_DIR)/build-$(TARGET_ARM) GCC_BUILD_DIR_AARCH64=$(TOP_DIR)/build-$(TARGET_AARCH64) GCC_SOURCE_DIR=$(TOP_DIR)/src GCC_DEB_TMP_DIR_ARM=$(TOP_DIR)/debian/$(PACKAGE_LIBSTDCXX_ARM)-tmp GCC_DEB_TMP_DIR_AARCH64=$(TOP_DIR)/debian/$(PACKAGE_LIBSTDCXX_AARCH64)-tmp LIBSTDCXX_BUILD_DIR_ARM=$(GCC_BUILD_DIR_ARM)/libstdc++-v3 LIBSTDCXX_BUILD_DIR_AARCH64=$(GCC_BUILD_DIR_AARCH64)/libstdc++-v3 STAMP_DIR=$(TOP_DIR)/debian/stamp UNPACK=$(STAMP_DIR)/unpack GCC_SOURCE_VERSION := $(shell dpkg-query -W -f="\$${Version}\n" $(PACKAGE_GCC_SOURCE)) PACKAGE_VERSION := $(GCC_SOURCE_VERSION)+$(DEB_VERSION) # these need to match the flags used in gcc-arm-none-eabi export DEB_BUILD_MAINT_OPTIONS=hardening=-format BUILDFLAGS:=$(shell dpkg-buildflags --export=configure) INHIBIT_LIBC_CFLAGS="-DUSE_TM_CLONE_REGISTRY=0" TARGET_TOOLS_ARM=\ AR_FOR_TARGET=$(TARGET_ARM)-ar \ AS_FOR_TARGET=$(TARGET_ARM)-as \ LD_FOR_TARGET=$(TARGET_ARM)-ld \ NM_FOR_TARGET=$(TARGET_ARM)-nm \ OBJDUMP_FOR_TARGET=$(TARGET_ARM)-objdump \ RANLIB_FOR_TARGET=$(TARGET_ARM)-ranlib \ READELF_FOR_TARGET=$(TARGET_ARM)-readelf \ STRIP_FOR_TARGET=$(TARGET_ARM)-strip TARGET_TOOLS_AARCH64=\ AR_FOR_TARGET=$(TARGET_AARCH64)-ar \ AS_FOR_TARGET=$(TARGET_AARCH64)-as \ LD_FOR_TARGET=$(TARGET_AARCH64)-ld \ NM_FOR_TARGET=$(TARGET_AARCH64)-nm \ OBJDUMP_FOR_TARGET=$(TARGET_AARCH64)-objdump \ RANLIB_FOR_TARGET=$(TARGET_AARCH64)-ranlib \ READELF_FOR_TARGET=$(TARGET_AARCH64)-readelf \ STRIP_FOR_TARGET=$(TARGET_AARCH64)-strip CONFIGURE_GCC_FLAGS_LIBSTDC = \ --enable-libstdcxx \ --enable-hosted-libstdcxx CONFIGURE_GCC_FLAGS_COMMON = \ --with-gcc-major-version-only \ --mandir=/usr/share/man \ --enable-languages=c,c++,lto \ --enable-multilib-space \ --disable-decimal-float \ --disable-libffi \ --disable-libgomp \ --disable-libmudflap \ --disable-libquadmath \ --disable-libssp \ --disable-libstdcxx-pch \ --disable-nls \ --disable-shared \ --disable-threads \ --enable-tls \ --build=$(DEB_BUILD_GNU_TYPE) \ --with-system-zlib \ --with-gnu-as \ --with-gnu-ld \ "--with-pkgversion=$(DEB_VERSION)" \ --without-included-gettext \ --prefix=/usr \ --libexecdir=/usr/libexec \ --libdir=/usr/lib \ --host=$(DEB_HOST_GNU_TYPE) \ --with-headers=no \ --with-picolibc \ --without-newlib \ $(CONFIGURE_GCC_FLAGS_LIBSTDC) \ $(BUILDFLAGS) \ SED=/bin/sed \ SHELL=/bin/sh \ BASH=/bin/bash \ CONFIG_SHELL=/bin/bash \ CONFIGURE_GCC_FLAGS_ARM = \ $(CONFIGURE_GCC_FLAGS_COMMON) \ --target=$(TARGET_ARM) \ --enable-multilib \ --infodir=/usr/share/doc/$(PACKAGE_LIBSTDCXX_ARM)/info \ --htmldir=/usr/share/doc/$(PACKAGE_LIBSTDCXX_ARM)/html \ --pdfdir=/usr/share/doc/$(PACKAGE_LIBSTDCXX_ARM)/pdf \ $(MULTILIB_LIST_ARM) \ $(TARGET_TOOLS_ARM) CONFIGURE_GCC_FLAGS_AARCH64 = \ $(CONFIGURE_GCC_FLAGS_COMMON) \ --target=$(TARGET_AARCH64) \ --disable-multilib \ --infodir=/usr/share/doc/$(PACKAGE_LIBSTDCXX_AARCH64)/info \ --htmldir=/usr/share/doc/$(PACKAGE_LIBSTDCXX_AARCH64)/html \ --pdfdir=/usr/share/doc/$(PACKAGE_LIBSTDCXX_AARCH64)/pdf \ $(TARGET_TOOLS_AARCH64) %: dh $@ override_dh_auto_configure: $(UNPACK) dh_auto_configure -D$(GCC_SOURCE_DIR) -Bbuild-$(TARGET_AARCH64) -- $(CONFIGURE_GCC_FLAGS_AARCH64) dh_auto_configure -D$(GCC_SOURCE_DIR) -Bbuild-$(TARGET_ARM) -- $(CONFIGURE_GCC_FLAGS_ARM) override_dh_auto_build: dh_auto_build -Bbuild-$(TARGET_AARCH64) -- all-target-libstdc++-v3 dh_auto_build -Bbuild-$(TARGET_ARM) -- all-target-libstdc++-v3 # remove the libtool dregs override_dh_auto_install: $(MAKE) install-target-libstdc++-v3 -C$(GCC_BUILD_DIR_AARCH64) DESTDIR=$(GCC_DEB_TMP_DIR_AARCH64) find $(GCC_DEB_TMP_DIR_AARCH64) -name *.la -exec rm '{}' + $(MAKE) install-target-libstdc++-v3 -C$(GCC_BUILD_DIR_ARM) DESTDIR=$(GCC_DEB_TMP_DIR_ARM) find $(GCC_DEB_TMP_DIR_ARM) -name *.la -exec rm '{}' + override_dh_auto_test: @echo "no testing, that's way too painful" override_dh_clean: rm -rf build-$(TARGET_ARM) rm -rf build-$(TARGET_AARCH64) rm -rf $(GCC_BUILD_DIR_ARM) rm -rf $(GCC_BUILD_DIR_AARCH64) rm -rf $(GCC_DEB_TMP_DIR_ARM) rm -rf $(GCC_DEB_TMP_DIR_ARM_AARCH64) rm -rf $(GCC_SOURCE_DEB_TMP_DIR) dh_clean override_dh_strip: dh_strip -X.a override_dh_install: dh_install -p$(PACKAGE_LIBSTDCXX_AARCH64) --sourcedir $(GCC_DEB_TMP_DIR_AARCH64) dh_install -p$(PACKAGE_LIBSTDCXX_ARM) --sourcedir $(GCC_DEB_TMP_DIR_ARM) dh_install -p$(PACKAGE_LIBSTDCXX_ARM_COMMON) --sourcedir $(GCC_DEB_TMP_DIR_ARM) $(UNPACK): mkdir -p $(STAMP_DIR) mkdir -p $(GCC_SOURCE_DIR) tar xf /usr/src/$(PACKAGE_GCC_SOURCE).tar.* -C $(GCC_SOURCE_DIR) touch $@ override_dh_gencontrol: dh_gencontrol -- -v$(PACKAGE_VERSION) -Vgcc:Version=$(GCC_SOURCE_VERSION)