1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
|
#!/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)
|