version: 14.3.0-7 (UNRELEASED) commit: 1fce39729a3f2eeebe194de8d8892899a9fbea9d
397 lines
11 KiB
Diff
397 lines
11 KiB
Diff
# -*- makefile -*-
|
|
# rules to patch the unpacked files in the source directory
|
|
# ---------------------------------------------------------------------------
|
|
# various rules to unpack addons and (un)apply patches.
|
|
# - patch / apply-patches
|
|
# - unpatch / reverse-patches
|
|
|
|
.NOTPARALLEL:
|
|
|
|
patchdir ?= debian/patches
|
|
series_file ?= $(patchdir)/series
|
|
|
|
# which patches should be applied?
|
|
|
|
debian_patches = \
|
|
git-updates \
|
|
|
|
# git-updates \
|
|
|
|
ifneq ($(GFDL_INVARIANT_FREE),yes)
|
|
debian_patches += \
|
|
rename-info-files \
|
|
|
|
# git-doc-updates \
|
|
|
|
else
|
|
endif
|
|
debian_patches += \
|
|
gcc-gfdl-build
|
|
|
|
# libstdc++-pic \
|
|
|
|
|
|
debian_patches += \
|
|
0004-Ada-merge-all-timeval-and-timespec-definitions-and-c \
|
|
0009-Ada-select-64-bits-time-functions-from-GNU-libc-when \
|
|
gcc-textdomain \
|
|
gcc-distro-specs \
|
|
gcc-driver-extra-langs \
|
|
gcc-hash-style-gnu \
|
|
libstdc++-doclink \
|
|
libstdc++-man-3cxx \
|
|
libstdc++-test-installed \
|
|
libstdc++-doxygen-SOURCE_DATE_EPOCH \
|
|
alpha-no-ev4-directive \
|
|
note-gnu-stack \
|
|
libgomp-omp_h-multilib \
|
|
libgo-testsuite \
|
|
libgo-cleanfiles \
|
|
gcc-target-include-asm \
|
|
libgo-revert-timeout-exp \
|
|
libgo-setcontext-config \
|
|
gcc-auto-build \
|
|
libitm-no-fortify-source \
|
|
sparc64-biarch-long-double-128 \
|
|
pr66368 \
|
|
pr67590 \
|
|
libffi-race-condition \
|
|
cuda-float128 \
|
|
t-libunwind-elf-Wl-z-defs \
|
|
gcc-force-cross-layout \
|
|
gcc-search-prefixed-as-ld \
|
|
pr87808 \
|
|
pr94253 \
|
|
gcc-arm-disable-guality-tests \
|
|
musl-ssp \
|
|
pr79724-revert \
|
|
pr104290-followup \
|
|
arc-stddef \
|
|
pr107475 \
|
|
gccrs-bootstrap-mipsel \
|
|
hppa64-libgcov-fallback \
|
|
libsanitizer-timebits \
|
|
gcc-vhdl \
|
|
libgo-hurd-syscall \
|
|
gcc-no-multilib-dejagnu \
|
|
libphobos-unittest \
|
|
pr118045 \
|
|
binutils-pr32491 \
|
|
|
|
# see https://bugs.debian.org/1108322
|
|
ifneq (,$(filter $(DEB_TARGET_ARCH),hppa m68k powerpc))
|
|
debian_patches += ada-tv_nsec-size
|
|
endif
|
|
|
|
ifneq (,$(newlib_tarball))
|
|
debian_patches +=
|
|
endif
|
|
|
|
ifneq (,$(filter $(distrelease),lunar))
|
|
debian_patches += rust-enabled
|
|
endif
|
|
|
|
ifneq (,$(filter $(distrelease), jessie stretch buster bullseye precise trusty xenial bionic focal groovy hirsute))
|
|
debian_patches += dwarf5-revert-default
|
|
ifneq ($(GFDL_INVARIANT_FREE),yes)
|
|
debian_patches += dwarf5-revert-default-doc
|
|
endif
|
|
endif
|
|
|
|
# TODO:
|
|
# pr81829 \
|
|
|
|
# $(if $(filter yes, $(DEB_CROSS)),,gcc-print-file-name) \
|
|
# libstdc++-nothumb-check \
|
|
|
|
hardening_patches =
|
|
ifneq (,$(filter $(derivative),Ubuntu))
|
|
ifneq (,$(findstring gcc-14, $(PKGSOURCE)))
|
|
hardening_patches += \
|
|
gcc-distro-specs-ubuntu-doc \
|
|
testsuite-hardening-format \
|
|
testsuite-hardening-printf-types \
|
|
testsuite-hardening-updates \
|
|
testsuite-glibc-warnings
|
|
endif
|
|
else ifneq (,$(filter $(derivative),Debian))
|
|
ifneq (,$(findstring gcc-14, $(PKGSOURCE)))
|
|
# ifneq ($(with_pie),yes)
|
|
# hardening_patches += \
|
|
# ignore-pie-specs-when-not-enabled
|
|
# endif
|
|
endif
|
|
endif
|
|
|
|
# FIXME 4.5: Drop and adjust symbols files
|
|
ifneq (,$(findstring 4.4, $(PKGSOURCE)))
|
|
debian_patches += pr39491
|
|
endif
|
|
|
|
# Patches for non-core languages.
|
|
|
|
ifeq ($(GFDL_INVARIANT_FREE),yes)
|
|
debian_patches += gm2-texinfo
|
|
endif
|
|
|
|
# Most of the time, it would be safe to apply them whether the
|
|
# language is selected or not. But when working on a new GCC version,
|
|
# it is convenient to concentrate on core languages, and refresh them
|
|
# later when working on the specific language.
|
|
ifeq ($(with_ada),yes)
|
|
debian_patches += ada-gcc-name
|
|
debian_patches += ada-gnat-name
|
|
debian_patches += ada-verbose
|
|
debian_patches += ada-link-lib
|
|
debian_patches += ada-gnattools-cross
|
|
ifeq ($(with_gnatsjlj),yes)
|
|
debian_patches += ada-sjlj
|
|
endif
|
|
debian_patches += ada-lib-info-source-date-epoch
|
|
debian_patches += ada-749574
|
|
debian_patches += ada-perl-shebang
|
|
debian_patches += ada-hurd-amd64
|
|
debian_patches += ada-numerics-arrays-eigenv-revert-a210011
|
|
endif
|
|
|
|
# FIXME: still relevant?
|
|
# gdc-multiarch
|
|
|
|
ifeq ($(GFDL_INVARIANT_FREE),yes)
|
|
debian_patches += gdc-texinfo
|
|
endif
|
|
ifeq (,$(filter $(DEB_TARGET_ARCH),amd64 i386 armhf))
|
|
debian_patches += disable-gdc-tests
|
|
endif
|
|
|
|
debian_patches += alpha-ieee
|
|
ifneq ($(GFDL_INVARIANT_FREE),yes)
|
|
debian_patches += alpha-ieee-doc
|
|
endif
|
|
|
|
# see https://bugs.debian.org/1107416
|
|
ifeq ($(DEB_TARGET_ARCH),m68k)
|
|
debian_patches += gcc-m68k-no-fold-mem-offsets
|
|
endif
|
|
ifneq ($(GFDL_INVARIANT_FREE),yes)
|
|
debian_patches += gcc-m68k-no-fold-mem-offsets-doc
|
|
endif
|
|
|
|
# all patches below this line are applied for gcc-snapshot builds as well
|
|
|
|
ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE)))
|
|
debian_patches =
|
|
endif
|
|
|
|
debian_patches += \
|
|
gdc-dynamic-link-phobos \
|
|
ia64-disable-selective-scheduling \
|
|
libstdc++-pythondir \
|
|
gcc-verbose-lto-link \
|
|
|
|
ifeq ($(with_ada),yes)
|
|
debian_patches += \
|
|
ada-armel-libatomic
|
|
endif
|
|
|
|
ifeq ($(with_ibm_branch),yes)
|
|
debian_patches += ibm-branch
|
|
endif
|
|
|
|
ifeq ($(with_softfloat),yes)
|
|
debian_patches += arm-multilib-soft-float
|
|
endif
|
|
ifneq (,$(filter $(distrelease), precise trusty xenial bionic focal groovy hirsute))
|
|
debian_patches += arm-multilib-defaults
|
|
endif
|
|
|
|
ifneq (,$(filter $(build_type), build-cross cross-build-cross))
|
|
debian_patches += cross-fixes
|
|
debian_patches += cross-install-location
|
|
endif
|
|
|
|
debian_patches += hurd-multiarch
|
|
debian_patches += hurd-multilib-multiarch
|
|
ifeq ($(DEB_TARGET_ARCH_OS),hurd)
|
|
debian_patches += hurd-changes
|
|
# FIXME: #1005297, PR 104660
|
|
debian_patches += libgo-hurd-hack
|
|
endif
|
|
|
|
debian_patches += gcc-ice-dump
|
|
debian_patches += gcc-ice-apport
|
|
debian_patches += skip-bootstrap-multilib
|
|
debian_patches += libffi-ro-eh_frame_sect
|
|
|
|
# sigaction on sparc changed between glibc 2.19 and 2.21
|
|
ifeq (,$(filter 2.1%, $(shell dpkg-query -l libc-bin | awk '/^.i/ {print $$3}')))
|
|
# keep it, gets remove in GCC from time to time
|
|
#debian_patches += pr67899
|
|
endif
|
|
|
|
debian_patches += gcc-multiarch
|
|
debian_patches += config-ml
|
|
ifneq ($(single_package),yes)
|
|
ifeq ($(with_multiarch_cxxheaders),yes)
|
|
debian_patches += g++-multiarch-incdir
|
|
debian_patches += canonical-cpppath
|
|
endif
|
|
endif
|
|
ifneq (,$(filter $(build_type), build-cross cross-build-cross))
|
|
debian_patches += cross-no-locale-include
|
|
debian_patches += cross-biarch
|
|
endif
|
|
debian_patches += gcc-multilib-multiarch
|
|
|
|
ifneq ($(trunk_build),yes)
|
|
ifneq (,$(filter $(derivative),Ubuntu))
|
|
debian_patches += gcc-as-needed
|
|
ifeq (,$(filter $(distrelease), precise trusty xenial))
|
|
debian_patches += gcc-as-needed-gold
|
|
endif
|
|
else # Debian
|
|
ifeq (,$(filter $(distrelease), jessie stretch))
|
|
debian_patches += gcc-as-needed gcc-as-needed-gold
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
debian_patches += go-testsuite
|
|
|
|
# don't remove, this is regularly overwritten, see PR sanitizer/63958.
|
|
#debian_patches += libasan-sparc
|
|
|
|
series_stamp = $(stampdir)/02-series-stamp
|
|
series: $(series_stamp)
|
|
$(series_stamp):
|
|
echo $(strip $(addsuffix .diff,$(debian_patches))) \
|
|
| sed -r 's/ +/ /g' | tr " " "\n" > $(series_file)
|
|
ifneq (,$(strip $(hardening_patches)))
|
|
ifneq ($(trunk_build),yes)
|
|
echo $(strip $(addsuffix .diff,$(hardening_patches))) \
|
|
| sed -r 's/ +/ /g' | tr " " "\n" >> $(series_file)
|
|
endif
|
|
endif
|
|
sed -r 's/(.)$$/\1 -p1/' -i $(series_file)
|
|
touch $@
|
|
|
|
autoconf_files = $(shell lsdiff --no-filename $(foreach patch,$(debian_patches),$(patchdir)/$(patch).diff) \
|
|
| sed -rn '/(configure\.ac|acinclude.m4)$$/s:[^/]+/src/:src/:p' | sort -u)
|
|
autoconf_dirs = $(sort $(dir $(autoconf_files)))
|
|
|
|
automake_files = $(addprefix ./, $(filter-out none, \
|
|
$(shell lsdiff --no-filename $(foreach patch,$(debian_patches),$(patchdir)/$(patch).diff) \
|
|
| sed -rn '/Makefile\.(am|in)$$/s:[^/]+/src/:src/:p' | sort -u)))
|
|
|
|
autoconf_version = 2.69
|
|
ifneq (,$(filter $(distrelease),stretch buster trusty xenial bionic focal groovy))
|
|
autoconf_version =
|
|
endif
|
|
ifeq ($(trunk_build),yes)
|
|
# The actual version depends on the build-dependencies set by
|
|
# variable AUTO_BUILD_DEP in rules.conf. Here, we assume the
|
|
# correct version is installed.
|
|
#autoconf_version =
|
|
endif
|
|
|
|
# FIXME: the auto* stuff is done every time for every subdir, which
|
|
# leads to build errors. Idea: record the auto* calls in the patch
|
|
# files (AUTO <dir> <auto-command with options>) and run them separately,
|
|
# maybe only once per directory).
|
|
$(patch_stamp): $(unpack_stamp) $(series_stamp)
|
|
sync
|
|
QUILT_PATCHES=$(patchdir) QUILT_PATCH_OPTS='-E' \
|
|
quilt --quiltrc /dev/null push -a || test $$? = 2
|
|
|
|
: # only needed when we have changes, and currently fails with autogen 5.18
|
|
: #cd $(srcdir)/fixincludes && ./genfixes
|
|
|
|
sync
|
|
echo -n $(autoconf_dirs) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \
|
|
sh -c 'echo "Running autoconf$(autoconf_version) in {}..." ; \
|
|
cd $(CURDIR)/{} && rm -f configure && \
|
|
AUTOM4TE=/usr/bin/autom4te$(autoconf_version) autoconf$(autoconf_version)'
|
|
|
|
for i in $(debian_patches) $(hardening_patches); do \
|
|
echo -e "\n$$i:" >> pxxx; \
|
|
sed -n 's/^# *DP: */ /p' $(patchdir)/$$i.diff >> pxxx; \
|
|
done
|
|
# -$(srcdir)/move-if-change pxxx $@
|
|
|
|
: # generate the distro-defaults.h header
|
|
rm -f $(srcdir)/gcc/distro-defaults.h
|
|
( \
|
|
echo '/* distro specific configuration injected by the distro build. */'; \
|
|
echo ''; \
|
|
echo '#ifndef ACCEL_COMPILER' \
|
|
) >> $(srcdir)/gcc/distro-defaults.h
|
|
ifeq ($(with_async_unwind),yes)
|
|
echo '#define DIST_DEFAULT_ASYNC_UNWIND 1' \
|
|
>> $(srcdir)/gcc/distro-defaults.h
|
|
endif
|
|
ifeq ($(with_ssp)-$(with_ssp_default),yes-yes)
|
|
echo '#define DIST_DEFAULT_SSP 1' \
|
|
>> $(srcdir)/gcc/distro-defaults.h
|
|
ifeq (,$(filter $(distrelease), precise trusty))
|
|
echo '#define DIST_DEFAULT_SSP_STRONG 1' \
|
|
>> $(srcdir)/gcc/distro-defaults.h
|
|
endif
|
|
echo '#define DIST_DEFAULT_FORMAT_SECURITY 1' \
|
|
>> $(srcdir)/gcc/distro-defaults.h
|
|
endif
|
|
ifneq (,$(filter $(derivative),Ubuntu))
|
|
ifneq (,$(filter $(distrelease),lucid precise trusty xenial bionic focal jammy kinetic lunar mantic))
|
|
( \
|
|
echo '#define DIST_DEFAULT_FORTIFY_SOURCE 2'; \
|
|
echo '#define DIST_DEFAULT_FORTIFY_SOURCE_S "2"' \
|
|
) >> $(srcdir)/gcc/distro-defaults.h
|
|
else
|
|
( \
|
|
echo '#define DIST_DEFAULT_FORTIFY_SOURCE 3'; \
|
|
echo '#define DIST_DEFAULT_FORTIFY_SOURCE_S "3"' \
|
|
) >> $(srcdir)/gcc/distro-defaults.h
|
|
endif
|
|
echo '#define DIST_DEFAULT_RELRO 1' \
|
|
>> $(srcdir)/gcc/distro-defaults.h
|
|
echo '#define DIST_DEFAULT_BIND_NOW 1' \
|
|
>> $(srcdir)/gcc/distro-defaults.h
|
|
ifeq ($(with_stack_clash),yes)
|
|
echo '#define DIST_DEFAULT_STACK_CLASH 1' \
|
|
>> $(srcdir)/gcc/distro-defaults.h
|
|
endif
|
|
ifeq ($(with_cf_protection),yes)
|
|
echo '#define DIST_DEFAULT_CF_PROTECTION 1' \
|
|
>> $(srcdir)/gcc/distro-defaults.h
|
|
endif
|
|
else ifneq (,$(filter $(derivative),Debian))
|
|
ifneq (,$(findstring gcc-14, $(PKGSOURCE)))
|
|
endif
|
|
endif
|
|
ifeq ($(with_timet64),yes)
|
|
echo '#define DIST_DEFAULT_TIMET64 1' \
|
|
>> $(srcdir)/gcc/distro-defaults.h
|
|
endif
|
|
ifeq ($(with_sframe),yes)
|
|
echo '#define DIST_DEFAULT_SFRAME 1' \
|
|
>> $(srcdir)/gcc/distro-defaults.h
|
|
endif
|
|
echo '#endif' \
|
|
>> $(srcdir)/gcc/distro-defaults.h
|
|
|
|
mv pxxx $@
|
|
|
|
unpatch:
|
|
QUILT_PATCHES=$(patchdir) \
|
|
quilt --quiltrc /dev/null pop -a -R || test $$? = 2
|
|
rm -rf .pc
|
|
|
|
update-patches: $(series_stamp)
|
|
export QUILT_PATCHES=$(patchdir); \
|
|
quilt pop -a; \
|
|
export QUILT_REFRESH_ARGS="--no-timestamps --no-index -pab"; \
|
|
export QUILT_DIFF_ARGS="--no-timestamps --no-index -pab"; \
|
|
while quilt push; do quilt refresh --no-timestamps --no-index -pab; done
|
|
|
|
patch: $(patch_stamp)
|
|
.PHONY: patch series quilt autotools
|