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
|
#!/usr/bin/make -f
include /usr/share/dpkg/pkg-info.mk
GCC_VERSION=15.2.0
DEB_SOURCE_VERSION=$(shell dpkg-parsechangelog -S Version)
DEB_VERSION := $(GCC_VERSION)-$(DEB_SOURCE_VERSION)
PACKAGE_GCC_RISCV=gcc-riscv64-unknown-elf
PACKAGE_GCC_SOURCE=gcc-riscv64-unknown-elf-source
TARGET_RISCV=riscv64-unknown-elf
TOP_DIR=$(shell pwd)
NPROC=$(shell nproc)
GCC_TAR_DIR=debian
GCC_BUILD_DIR_RISCV=$(TOP_DIR)/build-$(TARGET_RISCV)
GCC_SOURCE_DIR=gcc-$(GCC_VERSION)
GCC_DEB_TMP_DIR_RISCV=$(TOP_DIR)/debian/$(PACKAGE_GCC_RISCV)-tmp
GCC_SOURCE_DEB_TMP_DIR=$(TOP_DIR)/debian/$(PACKAGE_GCC_SOURCE)-tmp
export DEB_BUILD_MAINT_OPTIONS=hardening=+all,-format
ifeq ($(DEB_BUILD_ARCH),mips64el)
export DEB_CFLAGS_MAINT_APPEND=-mxgot
export DEB_CXXFLAGS_MAINT_APPEND=-mxgot
endif
ifeq ($(DEB_BUILD_ARCH),m68k)
export DEB_CFLAGS_MAINT_APPEND=-mlong-jump-table-offsets
export DEB_CXXFLAGS_MAINT_APPEND=-mlong-jump-table-offsets
endif
BUILDFLAGS:=$(shell dpkg-buildflags --export=configure) INHIBIT_LIBC_CFLAGS="-DUSE_TM_CLONE_REGISTRY=0"
STAMPDIR=debian/stamp
unpack_stamp=$(STAMPDIR)/unpack
tar_stamp=$(STAMPDIR)/tar
TARGET_TOOLS_RISCV=\
AR_FOR_TARGET=$(TARGET_RISCV)-ar \
AS_FOR_TARGET=$(TARGET_RISCV)-as \
LD_FOR_TARGET=$(TARGET_RISCV)-ld \
NM_FOR_TARGET=$(TARGET_RISCV)-nm \
OBJDUMP_FOR_TARGET=$(TARGET_RISCV)-objdump \
RANLIB_FOR_TARGET=$(TARGET_RISCV)-ranlib \
READELF_FOR_TARGET=$(TARGET_RISCV)-readelf \
STRIP_FOR_TARGET=$(TARGET_RISCV)-strip
CONFIGURE_GCC_FLAGS_LIBSTDC = \
--disable-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_RISCV = \
$(CONFIGURE_GCC_FLAGS_COMMON) \
--target=$(TARGET_RISCV) \
--enable-multilib \
--includedir=/usr/$(TARGET_RISCV)/include \
--infodir=/usr/share/doc/$(PACKAGE_GCC_RISCV)/info \
--htmldir=/usr/share/doc/$(PACKAGE_GCC_RISCV)/html \
--pdfdir=/usr/share/doc/$(PACKAGE_GCC_RISCV)/pdf \
--with-cmodel=medany \
--with-arch=rv64imafdc \
$(TARGET_TOOLS_RISCV)
%:
dh $@ --parallel --with autoreconf
$(unpack_stamp): $(tar_stamp)
set -ex; \
cd gcc-*; \
for patch in ../debian/patches/*.patch; do \
echo Applying patch "$$patch"; \
patch -p1 < "$$patch"; \
done
touch $@
$(tar_stamp):
tar xf $(GCC_TAR_DIR)/gcc-*.tar.*
mkdir -p $(STAMPDIR)
touch $@
override_dh_autoreconf: $(unpack_stamp)
autoreconf2.69 -f -i $(GCC_SOURCE_DIR)
override_dh_auto_configure: $(unpack_stamp)
dh_auto_configure -D$(GCC_SOURCE_DIR) -Bbuild-$(TARGET_RISCV) -- $(CONFIGURE_GCC_FLAGS_RISCV)
override_dh_auto_build:
dh_auto_build -Bbuild-$(TARGET_RISCV) -- -j$(NPROC)
override_dh_auto_install:
$(MAKE) install -C$(GCC_BUILD_DIR_RISCV) DESTDIR=$(GCC_DEB_TMP_DIR_RISCV)
override_dh_auto_test:
@echo "no testing, that's way too painful"
override_dh_clean:
rm -rf $(GCC_BUILD_DIR_RISCV)
rm -rf $(GCC_DEB_TMP_DIR_RISCV)
rm -rf $(GCC_SOURCE_DEB_TMP_DIR)
rm -rf $(GCC_SOURCE_DIR)
rm -rf $(STAMPDIR)
dh_clean
override_dh_strip:
dh_strip -X.a
override_dh_install:
dh_install -p$(PACKAGE_GCC_RISCV) --sourcedir $(GCC_DEB_TMP_DIR_RISCV)
mkdir -p $(GCC_SOURCE_DEB_TMP_DIR)/usr/src
tar --exclude=autom4te.cache --sort=name --mtime="@$(SOURCE_DATE_EPOCH)" --owner=0 --group=0 --numeric-owner --mode=go-w,u+rw -C $(GCC_SOURCE_DIR) -c -f - . | xz -T0 > $(GCC_SOURCE_DEB_TMP_DIR)/usr/src/$(PACKAGE_GCC_SOURCE).tar.xz
dh_install -p$(PACKAGE_GCC_SOURCE) --sourcedir $(GCC_SOURCE_DEB_TMP_DIR)
override_dh_compress:
dh_compress -Xexamples/
override_dh_installchangelogs:
dh_installchangelogs $(GCC_SOURCE_DIR)/ChangeLog
override_dh_gencontrol:
dh_gencontrol -- -v$(DEB_VERSION) -Vgcc:Version=$(GCC_VERSION)
|