File: rules

package info (click to toggle)
libstdc%2B%2B-arm-none-eabi 30
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 72 kB
  • sloc: makefile: 135
file content (163 lines) | stat: -rwxr-xr-x 5,296 bytes parent folder | download
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)