[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: draft implementation for a Multi-Arch: foreign interface to gcc



Control: reassign -1 src:gcc-10

Hi Matthias,

On Sun, Sep 30, 2018 at 02:46:04PM +0200, Helmut Grohne wrote:
> >  - please complete the patch to cover all frontends.  while these
> >    might not be necessary for your bootstrap effort, I'd like to
> >    have all frontends be covered in an uniform way.
> 
> I've worked on this. It now covers cpp, cxx, d, fortran, gcc, go and
> objc. Notably, it does not cover ada, brig or objc++. ada looks
> complex. brig depends on hsail-tools, which is not Multi-Arch: foreign.
> So we cannot do brig at this time. objc++ looks manageable.

I've completed objc++, which was indeed easy. The new gm2 frontend is
also missing.

I've also split up the big patch into individual patches to make them
easier to use/review/select. The updated patch stack for gcc-10 is
applied. Beware that the patch stack introduces Breaks and Replaces. The
versions in these Breaks and Replaces is always "0TODO" or "999:0TODO"
and needs to be replaced with the version used for applying.

> >  - for testing:

I've performed a regular build and inspected the resulting lintian
warnings and package contents.

I've also attempted building cross compilers using the patch stack by
adding the stack to a fork of rebootstrap.

I've not attempted cross building gcc with the patch stack, because
cross builds are known broken:
 * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92336
 * https://gcc.gnu.org/legacy-ml/gcc-help/2015-01/msg00111.html
Both of these issues are reproducible on gcc-9 and gcc-10 in unstable.

Moving forward:

There is more urgency for this feature now, because we need to run 64bit
executables for building larger packages on 32bit architectures. There
are two routes:
 * Moving this stack forward and going Multi-Arch.
 * Introducing yet another pile of compiler executables for this purpose
   (YunQiang Su's appraoch).

I believe that the utility for any of these -for-host variants is very
limited except for c, cxx and fortran. I recommend not applying the
other patches (d, go, objc, objcxx), but I have attached them for
reference.

How to apply the patch stack:
0001: Only makes sense if you apply one of 0002, 0003, 0004, 0005, 0006,
      0007, 0009, 0010 or 0011.
0002: cpp-$v-$triplet. Requires 0001. Update Breaks+Replaces.
0003: gcc-$v-$triplet. Requires 0001 and 0002. Updates Breaks+Replaces.
0004: g++-$v-$triplet. Requires 0001, 0002, and 0003. Update
      Breaks+Replaces.
0005: gfortran-$v-$triplet. Requires 0001. Update Breaks+Replaces.
0006: gdc-$v-$triplet. Requires 0001. Update Breaks+Replaces.
0007: gccgo-$v-$triplet: Requires 0001. Update Breaks+Replaces.
0008: Cleanup. Consider applying right away.
0009: Cleanup. Consider applying right away.
0010: gobjc-$v-$triplet: Requires 0001 and 0009. Update Breaks+Replaces.
0011: gobjc++-$v-$triplet. Requires 0001, 0010 and 0011. Update
      Breaks+Replaces.

I hope that this allows us to move forward. I've also Cced
debian-cross@l.d.o to elicit more review and testing.

Helmut
>From 069536e9afe1082c29a3b2da9e6f6b156f44e9fc Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 06:32:46 +0100
Subject: [PATCH 01/11] add support code for gcc-for-host

control.m4 macro for_each_arch iterates over all known architectures and
substitutes arch_deb (the Debian architecture name), arch_gnu (the GNU
triplet) and arch_gnusuffix (a package name suffix encoding the
architecture) variables.

The substitution variable target:suffix can be used to interpolate the
current target architecture suffix for dependencies from the regular
tool packages on architecture-qualified tool packages.
---
 debian/control.m4 | 7 +++++++
 debian/rules.conf | 2 ++
 2 files changed, 9 insertions(+)

diff --git a/debian/control.m4 b/debian/control.m4
index bbc71a2..94a9741 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -39,6 +39,13 @@ define(`BUILT_USING', ifelse(add_built_using,yes,`Built-Using: ${Built-Using}
 '))
 define(`TARGET_PACKAGE',`X-DH-Build-For-Type: target
 ')
+define(`_for_each',`ifelse(`$3',`',`',`pushdef(`$1',`$3')$2`'popdef(`$1')`'$0(`$1',`$2',shift(shift(shift($@))))')')
+define(`for_each_arch',`_for_each(`_arch',`dnl
+pushdef(`arch_deb',`patsubst(_arch,`=.*',`')')dnl
+pushdef(`arch_gnu',`patsubst(_arch,`.*=',`')')dnl
+pushdef(`arch_gnusuffix',`-patsubst(arch_gnu,`_',`-')')dnl
+$1`'popdef(`arch_gnusuffix')popdef(`arch_gnu')popdef(`arch_deb')',dnl
+patsubst(ARCH_GNUTYPE_MAP,`\s+',`,'))')
 
 divert`'dnl
 dnl --------------------------------------------------------------------------
diff --git a/debian/rules.conf b/debian/rules.conf
index 441c0e8..6149073 100644
--- a/debian/rules.conf
+++ b/debian/rules.conf
@@ -686,6 +686,7 @@ ctrl_flags += \
 	-DPHOBOS_BUILD_DEP="$(PHOBOS_BUILD_DEP)" \
 	-DGM2_BUILD_DEP="$(GM2_BUILD_DEP)" \
 	-DOFFLOAD_BUILD_DEP="$(OFFLOAD_BUILD_DEP)" \
+	-DARCH_GNUTYPE_MAP="$(arch_gnutype_map)" \
 	-DMULTILIB_ARCHS="$(multilib_archs)" \
 	-DNEON_ARCHS="$(neon_archs)" \
 	-DTP=$(TP) \
@@ -1095,6 +1096,7 @@ substvars-file: control-file
 		echo 'dep:libgnat=$(LIBGNAT_DEP)'; \
 		echo 'base:Breaks=$(BASE_BREAKS)'; \
 		echo 'libgcc:Breaks=$(LIBGCC_BREAKS)'; \
+		echo 'target:suffix=-$(subst _,-,$(TARGET_ALIAS))'; \
 	) > debian/substvars.local.tmp
 ifneq (,$(filter $(DEB_TARGET_ARCH), $(multilib_archs)))
 	( \
-- 
2.25.1

>From 0b3bfbb124921a65e1c9d83639f400e8b5af8b57 Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 06:37:47 +0100
Subject: [PATCH 02/11] introduce cpp-$v-$triplet

---
 debian/control.m4            | 33 ++++++++++++-----
 debian/rules.d/binary-cpp.mk | 69 ++++++++++++++++++++++++------------
 debian/rules2                |  3 ++
 3 files changed, 74 insertions(+), 31 deletions(-)

diff --git a/debian/control.m4 b/debian/control.m4
index 94a9741..e870706 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -1119,16 +1119,34 @@ Description: GNU C compiler (cross compiler for hppa64)
  This is the GNU C compiler, a fairly portable optimizing compiler for C.
 ')`'dnl cdev
 
-ifenabled(`cdev',`
-Package: cpp`'PV`'TS
-Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
+ifenabled(`cdev',`dnl
+for_each_arch(`
+Package: cpp`'PV`'arch_gnusuffix
+Architecture: ifdef(`TARGET',`any',arch_deb)
+Multi-Arch: foreign
 Section: ifdef(`TARGET',`devel',`interpreters')
 Priority: optional
 Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
 Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion})
-Breaks: libmagics++-dev (<< 2.28.0-4)ifdef(`TARGET',`',`, hardening-wrapper (<< 2.8+nmu3)')
+Replaces: cpp`'PV (<< 999:0TODO)
+Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3), cpp`'PV (<< 0TODO)
+BUILT_USING`'dnl
+Description: GNU C preprocessor for arch_gnu
+ A macro processor that is used automatically by the GNU C compiler
+ to transform programs before actual compilation.
+ .
+ This package has been separated from gcc for the benefit of those who
+ require the preprocessor configured for arch_gnu architecture but not
+ the compiler.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: cpp`'PV
+Architecture: any
+Section: interpreters
+Priority: optional
+Depends: BASEDEP, cpp`'PV`'${target:suffix} (= ${gcc:Version}), ${misc:Depends}
+Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion})
+Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3)
 BUILT_USING`'dnl
 Description: GNU C preprocessor
  A macro processor that is used automatically by the GNU C compiler
@@ -1136,9 +1154,6 @@ Description: GNU C preprocessor
  .
  This package has been separated from gcc for the benefit of those who
  require the preprocessor but not the compiler.
-ifdef(`TARGET', `dnl
- .
- This package contains preprocessor configured for TARGET architecture.
 ')`'dnl
 
 ifdef(`TARGET', `', `
diff --git a/debian/rules.d/binary-cpp.mk b/debian/rules.d/binary-cpp.mk
index cbeeb26..c65f999 100644
--- a/debian/rules.d/binary-cpp.mk
+++ b/debian/rules.d/binary-cpp.mk
@@ -1,5 +1,8 @@
 ifneq ($(DEB_STAGE),rtlibs)
-  arch_binaries  := $(arch_binaries) cpp
+  arch_binaries  := $(arch_binaries) cpp-nat
+  ifeq ($(unprefixed_names),yes)
+    arch_binaries  := $(arch_binaries) cpp
+  endif
   ifneq ($(DEB_CROSS),yes)
     ifneq ($(GFDL_INVARIANT_FREE),yes)
       indep_binaries := $(indep_binaries) cpp-doc
@@ -7,22 +10,59 @@ ifneq ($(DEB_STAGE),rtlibs)
   endif
 endif
 
-dirs_cpp = \
+dirs_cppn = \
 	$(docdir) \
 	$(PF)/share/man/man1 \
 	$(PF)/bin \
-	$(gcc_lexec_dir)
+	$(gcc_lexec_dir) \
+	usr/share/lintian/overrides
+
+dirs_cpp = \
+	$(docdir) \
+	$(PF)/bin \
+	$(PF)/share/man/man1 \
+	usr/share/lintian/overrides
 
-files_cpp = \
+files_cppn = \
 	$(PF)/bin/$(cmd_prefix)cpp$(pkg_ver) \
 	$(gcc_lexec_dir)/cc1
 
 ifneq ($(GFDL_INVARIANT_FREE),yes)
-  files_cpp += \
+  files_cppn += \
 	$(PF)/share/man/man1/$(cmd_prefix)cpp$(pkg_ver).1
 endif
 
 # ----------------------------------------------------------------------
+$(binary_stamp)-cpp-nat: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_cppn)
+	dh_installdirs -p$(p_cppn) $(dirs_cppn)
+	$(dh_compat2) dh_movefiles -p$(p_cppn) $(files_cppn)
+
+	echo '$(p_cppn) binary: hardening-no-pie' \
+	  > $(d_cppn)/usr/share/lintian/overrides/$(p_cppn)
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	echo '$(p_cppn) binary: binary-without-manpage' \
+	  >> $(d_cppn)/usr/share/lintian/overrides/$(p_cppn)
+endif
+
+	debian/dh_doclink -p$(p_cppn) $(p_xbase)
+	debian/dh_rmemptydirs -p$(p_cppn)
+
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
+	$(DWZ) $(d_cppn)/$(gcc_lexec_dir)/cc1
+endif
+	dh_strip -p$(p_cppn) \
+	  $(if $(unstripped_exe),-X/cc1)
+	dh_shlibdeps -p$(p_cppn)
+
+	echo $(p_cppn) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
 $(binary_stamp)-cpp: $(install_stamp)
 	dh_testdir
 	dh_testroot
@@ -30,21 +70,13 @@ $(binary_stamp)-cpp: $(install_stamp)
 
 	rm -rf $(d_cpp)
 	dh_installdirs -p$(p_cpp) $(dirs_cpp)
-	$(dh_compat2) dh_movefiles -p$(p_cpp) $(files_cpp)
 
-ifeq ($(unprefixed_names),yes)
 	ln -sf $(cmd_prefix)cpp$(pkg_ver) \
 	    $(d_cpp)/$(PF)/bin/cpp$(pkg_ver)
-  ifneq ($(GFDL_INVARIANT_FREE),yes)
+ifneq ($(GFDL_INVARIANT_FREE),yes)
 	ln -sf $(cmd_prefix)cpp$(pkg_ver).1 \
 	    $(d_cpp)/$(PF)/share/man/man1/cpp$(pkg_ver).1
-  endif
-endif
-
-	mkdir -p $(d_cpp)/usr/share/lintian/overrides
-	echo '$(p_cpp) binary: hardening-no-pie' \
-	  > $(d_cpp)/usr/share/lintian/overrides/$(p_cpp)
-ifeq ($(GFDL_INVARIANT_FREE),yes)
+else
 	echo '$(p_cpp) binary: binary-without-manpage' \
 	  >> $(d_cpp)/usr/share/lintian/overrides/$(p_cpp)
 endif
@@ -52,13 +84,6 @@ endif
 	debian/dh_doclink -p$(p_cpp) $(p_xbase)
 	debian/dh_rmemptydirs -p$(p_cpp)
 
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
-	$(DWZ) $(d_cpp)/$(gcc_lexec_dir)/cc1
-endif
-	dh_strip -p$(p_cpp) \
-	  $(if $(unstripped_exe),-X/cc1)
-	dh_shlibdeps -p$(p_cpp)
-
 	echo $(p_cpp) >> debian/arch_binaries
 
 	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff --git a/debian/rules2 b/debian/rules2
index 98947cd..ec85477 100644
--- a/debian/rules2
+++ b/debian/rules2
@@ -1980,6 +1980,8 @@ ifeq ($(versioned_packages),yes)
   pkg_ver := -$(BASE_VERSION)
 endif
 
+p_cppn = cpp$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+
 # if native or rtlibs build
 ifeq ($(if $(filter yes,$(DEB_CROSS)),$(if $(filter rtlibs,$(DEB_STAGE)),native,cross),native),native)
   p_base = gcc$(pkg_ver)-base
@@ -2014,6 +2016,7 @@ d_base	= debian/$(p_base)
 d_xbase = debian/$(p_xbase)
 d_gcc	= debian/$(p_gcc)
 d_cpp	= debian/$(p_cpp)
+d_cppn  = debian/$(p_cppn)
 d_cppd	= debian/$(p_cppd)
 d_cxx	= debian/$(p_cxx)
 d_doc	= debian/$(p_doc)
-- 
2.25.1

>From a3f1ea23b2d993e43e650c50f60cffdaa652cc05 Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 06:42:26 +0100
Subject: [PATCH 03/11] introduce gcc-$v-$triplet

---
 debian/control.m4            |  57 +++++++++++++-----
 debian/rules.d/binary-gcc.mk | 108 +++++++++++++++++++++++------------
 debian/rules2                |   2 +
 3 files changed, 115 insertions(+), 52 deletions(-)

diff --git a/debian/control.m4 b/debian/control.m4
index e870706..e16e4b8 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -1020,21 +1020,22 @@ Description: GCC support library (x32 development files)
 ')`'dnl x32dev
 ')`'dnl cdev
 
-ifenabled(`cdev',`
-Package: gcc`'PV`'TS
-Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
+ifenabled(`cdev',`dnl
+for_each_arch(`
+Package: gcc`'PV`'arch_gnusuffix
+Architecture: ifdef(`TARGET',`any',arch_deb)
+Multi-Arch: foreign
 Section: devel
 Priority: optional
-Depends: cpp`'PV`'TS (= ${gcc:Version}),ifenabled(`gccbase',` BASEDEP,')
+Depends: cpp`'PV`'arch_gnusuffix (= ${gcc:Version}),ifenabled(`gccbase',` BASEDEP,')
   ifenabled(`gccxbase',` BASEDEP,')
   ${dep:libcc1},
-  binutils`'TS (>= ${binutils:Version}),
+  binutils`'arch_gnusuffix (>= ${binutils:Version}),
   ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends}
 Recommends: ${dep:libcdev}
-Replaces: cpp`'PV`'TS (<< 7.1.1-8)
-Suggests: ${gcc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}),
+Replaces: cpp`'PV`'arch_gnusuffix (<< 7.1.1-8), gcc`'PV (<< 999:0TODO)
+Breaks: gcc`'PV (<< 0TODO)
+Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}),
  gcc`'PV-locales (>= ${gcc:SoftVersion}),
  libdbgdep(gcc-s`'GCC_SO-dbg,,>=,${libgcc:Version}),
  libdbgdep(gomp`'GOMP_SO-dbg,),
@@ -1048,15 +1049,43 @@ ifenabled(`libvtv',`',`
  libdbgdep(vtv`'VTV_SO-dbg,),
 ')`'dnl
  libdbgdep(quadmath`'QMATH_SO-dbg,),
-Provides: c-compiler`'TS
+Provides: c-compiler`'arch_gnusuffix
 ifdef(`TARGET',`Conflicts: gcc-multilib
 ')`'dnl
 BUILT_USING`'dnl
-Description: GNU C compiler`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `')
+Description: GNU C compiler for the arch_gnu architecture
+ This is the GNU C compiler for the arch_gnu architecture,
+ a fairly portable optimizing compiler for C.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: gcc`'PV
+Architecture: any
+Section: devel
+Priority: optional
+Depends: gcc`'PV`'${target:suffix} (= ${gcc:Version}),ifenabled(`gccbase',` BASEDEP,')
+  ifenabled(`gccxbase',` BASEDEP,')
+  binutils (>= ${binutils:Version}),
+  ${misc:Depends}
+Recommends: ${dep:libcdev}
+Replaces: cpp`'PV (<< 7.1.1-8)
+Suggests: ${gcc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}),
+ gcc`'PV-locales (>= ${gcc:SoftVersion}),
+ libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}),
+ libdbgdep(gomp`'GOMP_SO-dbg,),
+ libdbgdep(itm`'ITM_SO-dbg,),
+ libdbgdep(atomic`'ATOMIC_SO-dbg,),
+ libdbgdep(asan`'ASAN_SO-dbg,),
+ libdbgdep(lsan`'LSAN_SO-dbg,),
+ libdbgdep(tsan`'TSAN_SO-dbg,),
+ libdbgdep(ubsan`'UBSAN_SO-dbg,),
+ifenabled(`libvtv',`',`
+ libdbgdep(vtv`'VTV_SO-dbg,),
+')`'dnl
+ libdbgdep(quadmath`'QMATH_SO-dbg),
+Provides: c-compiler
+BUILT_USING`'dnl
+Description: GNU C compiler
  This is the GNU C compiler, a fairly portable optimizing compiler for C.
-ifdef(`TARGET', `dnl
- .
- This package contains C cross-compiler for TARGET architecture.
 ')`'dnl
 
 ifenabled(`multilib',`
diff --git a/debian/rules.d/binary-gcc.mk b/debian/rules.d/binary-gcc.mk
index 11bf871..bcd5461 100644
--- a/debian/rules.d/binary-gcc.mk
+++ b/debian/rules.d/binary-gcc.mk
@@ -6,7 +6,10 @@ ifneq ($(DEB_STAGE),rtlibs)
     arch_binaries  := $(arch_binaries) gcc-plugindev
   endif
 
-  arch_binaries  := $(arch_binaries) gcc
+  arch_binaries  := $(arch_binaries) gcc-nat
+  ifeq ($(unprefixed_names),yes)
+    arch_binaries  := $(arch_binaries) gcc
+  endif
 
   ifneq ($(DEB_CROSS),yes)
     ifneq ($(GFDL_INVARIANT_FREE),yes)
@@ -26,15 +29,21 @@ endif
 # not all files $(PF)/include/*.h are part of gcc,
 # but it becomes difficult to name all these files ...
 
-dirs_gcc = \
-	$(docdir)/$(p_xbase)/{gcc,libssp,gomp,itm,quadmath,sanitizer} \
+dirs_gccn = \
 	$(PF)/bin \
 	$(gcc_lexec_dir) \
 	$(gcc_lib_dir)/include \
-	$(PF)/share/man/man1 $(libgcc_dir)
+	$(PF)/share/man/man1 $(libgcc_dir) \
+	usr/share/lintian/overrides
+
+dirs_gcc = \
+	$(docdir)/$(p_xbase)/{gcc,libssp,gomp,itm,quadmath,sanitizer} \
+	$(PF)/bin \
+	$(PF)/share/man/man1 \
+	usr/share/lintian/overrides
 
 # XXX: what about triarch mapping?
-files_gcc = \
+files_gccn = \
 	$(PF)/bin/$(cmd_prefix){gcc,gcov,gcov-tool,gcov-dump,lto-dump}$(pkg_ver) \
 	$(PF)/bin/$(cmd_prefix)gcc-{ar,ranlib,nm}$(pkg_ver) \
 	$(PF)/share/man/man1/$(cmd_prefix)gcc-{ar,nm,ranlib}$(pkg_ver).1 \
@@ -43,20 +52,20 @@ files_gcc = \
 		&& echo $(gcc_lib_dir)/SYSCALLS.c.X)
 
 ifeq ($(with_libcc1_plugin),yes)
-    files_gcc += \
+    files_gccn += \
 	$(gcc_lib_dir)/plugin/libc[cp]1plugin.so{,.0,.0.0.0}
 endif
 
-files_gcc += \
+files_gccn += \
 	$(gcc_lexec_dir)/liblto_plugin.so{,.0,.0.0.0}
 
 ifeq ($(DEB_STAGE),stage1)
-    files_gcc += \
+    files_gccn += \
 	$(gcc_lib_dir)/include
 endif
 
 ifneq ($(GFDL_INVARIANT_FREE),yes)
-    files_gcc += \
+    files_gccn += \
 	$(PF)/share/man/man1/$(cmd_prefix){gcc,gcov}$(pkg_ver).1 \
 	$(PF)/share/man/man1/$(cmd_prefix)gcov-{dump,tool}$(pkg_ver).1 \
 	$(PF)/share/man/man1/$(cmd_prefix)lto-dump$(pkg_ver).1
@@ -78,6 +87,56 @@ p_tst	= gcc$(pkg_ver)-test-results
 d_tst	= debian/$(p_tst)
 
 # ----------------------------------------------------------------------
+$(binary_stamp)-gcc-nat: $(install_dependencies)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_gccn)
+	dh_installdirs -p$(p_gccn) $(dirs_gccn)
+
+ifeq ($(with_gomp),yes)
+	mv $(d)/$(usr_lib)/libgomp*.spec $(d_gccn)/$(gcc_lib_dir)/
+endif
+ifeq ($(with_itm),yes)
+	mv $(d)/$(usr_lib)/libitm*.spec $(d_gccn)/$(gcc_lib_dir)/
+endif
+ifeq ($(with_asan),yes)
+	mv $(d)/$(usr_lib)/libsanitizer*.spec $(d_gccn)/$(gcc_lib_dir)/
+endif
+ifeq ($(with_cc1),yes)
+	rm -f $(d)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so
+	dh_link -p$(p_gccn) \
+	    /$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so.$(CC1_SONAME) \
+	    /$(gcc_lib_dir)/libcc1.so
+endif
+
+	$(dh_compat2) dh_movefiles -p$(p_gccn) $(files_gccn)
+
+#	dh_installdebconf
+	debian/dh_doclink -p$(p_gccn) $(p_xbase)
+
+	echo '$(p_gccn) binary: hardening-no-pie' \
+	  > $(d_gccn)/usr/share/lintian/overrides/$(p_gccn)
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	echo '$(p_gccn) binary: binary-without-manpage' \
+	  >> $(d_gccn)/usr/share/lintian/overrides/$(p_gccn)
+endif
+
+	debian/dh_rmemptydirs -p$(p_gccn)
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
+	$(DWZ) \
+	  $(d_gccn)/$(gcc_lexec_dir)/lto1 \
+	  $(d_gccn)/$(gcc_lexec_dir)/lto-wrapper \
+	  $(d_gccn)/$(gcc_lexec_dir)/collect2
+endif
+	dh_strip -p$(p_gccn) \
+	  $(if $(unstripped_exe),-X/lto1)
+	dh_shlibdeps -p$(p_gccn)
+	echo $(p_gccn) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
 $(binary_stamp)-gcc: $(install_dependencies)
 	dh_testdir
 	dh_testroot
@@ -97,12 +156,10 @@ ifeq ($(with_libssp),yes)
 		$(d_gcc)/$(docdir)/$(p_xbase)/libssp/changelog
 endif
 ifeq ($(with_gomp),yes)
-	mv $(d)/$(usr_lib)/libgomp*.spec $(d_gcc)/$(gcc_lib_dir)/
 	cp -p $(srcdir)/libgomp/ChangeLog \
 		$(d_gcc)/$(docdir)/$(p_xbase)/gomp/changelog
 endif
 ifeq ($(with_itm),yes)
-	mv $(d)/$(usr_lib)/libitm*.spec $(d_gcc)/$(gcc_lib_dir)/
 	cp -p $(srcdir)/libitm/ChangeLog \
 		$(d_gcc)/$(docdir)/$(p_xbase)/itm/changelog
 endif
@@ -111,35 +168,24 @@ ifeq ($(with_qmath),yes)
 		$(d_gcc)/$(docdir)/$(p_xbase)/quadmath/changelog
 endif
 ifeq ($(with_asan),yes)
-	mv $(d)/$(usr_lib)/libsanitizer*.spec $(d_gcc)/$(gcc_lib_dir)/
 	cp -p $(srcdir)/libsanitizer/ChangeLog \
 		$(d_gcc)/$(docdir)/$(p_xbase)/sanitizer/changelog
 endif
-ifeq ($(with_cc1),yes)
-	rm -f $(d)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so
-	dh_link -p$(p_gcc) \
-	    /$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so.$(CC1_SONAME) \
-	    /$(gcc_lib_dir)/libcc1.so
-endif
 
-	$(dh_compat2) dh_movefiles -p$(p_gcc) $(files_gcc)
-
-ifeq ($(unprefixed_names),yes)
 	for i in gcc gcov gcov-dump gcov-tool gcc-ar gcc-nm gcc-ranlib lto-dump; do \
 	  ln -sf $(cmd_prefix)$$i$(pkg_ver) \
 	    $(d_gcc)/$(PF)/bin/$$i$(pkg_ver); \
 	done
-  ifneq ($(GFDL_INVARIANT_FREE),yes)
+ifneq ($(GFDL_INVARIANT_FREE),yes)
 	for i in gcc gcov gcov-dump gcov-tool lto-dump; do \
 	  ln -sf $(cmd_prefix)$$i$(pkg_ver).1.gz \
 	    $(d_gcc)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \
 	done
-  endif
+endif
 	for i in gcc-ar gcc-nm gcc-ranlib; do \
 	  ln -sf $(cmd_prefix)$$i$(pkg_ver).1.gz \
 	    $(d_gcc)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \
 	done
-endif
 
 #	dh_installdebconf
 	debian/dh_doclink -p$(p_gcc) $(p_xbase)
@@ -159,28 +205,14 @@ endif
 	    echo ""; \
 	    cat $(builddir)/gcc/.bad_compare; \
 	  ) > $(d_gcc)/$(docdir)/$(p_xbase)/BOOTSTRAP_COMPARISION_FAILURE; \
-	else \
-	  true; \
 	fi
 
-	mkdir -p $(d_gcc)/usr/share/lintian/overrides
-	echo '$(p_gcc) binary: hardening-no-pie' \
-	  > $(d_gcc)/usr/share/lintian/overrides/$(p_gcc)
 ifeq ($(GFDL_INVARIANT_FREE),yes)
 	echo '$(p_gcc) binary: binary-without-manpage' \
 	  >> $(d_gcc)/usr/share/lintian/overrides/$(p_gcc)
 endif
 
 	debian/dh_rmemptydirs -p$(p_gcc)
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
-	$(DWZ) \
-	  $(d_gcc)/$(gcc_lexec_dir)/lto1 \
-	  $(d_gcc)/$(gcc_lexec_dir)/lto-wrapper \
-	  $(d_gcc)/$(gcc_lexec_dir)/collect2
-endif
-	dh_strip -p$(p_gcc) \
-	  $(if $(unstripped_exe),-X/lto1)
-	dh_shlibdeps -p$(p_gcc)
 	echo $(p_gcc) >> debian/arch_binaries
 
 	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff --git a/debian/rules2 b/debian/rules2
index ec85477..ad5fee4 100644
--- a/debian/rules2
+++ b/debian/rules2
@@ -1980,6 +1980,7 @@ ifeq ($(versioned_packages),yes)
   pkg_ver := -$(BASE_VERSION)
 endif
 
+p_gccn = gcc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
 p_cppn = cpp$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
 
 # if native or rtlibs build
@@ -2015,6 +2016,7 @@ d	= debian/tmp
 d_base	= debian/$(p_base)
 d_xbase = debian/$(p_xbase)
 d_gcc	= debian/$(p_gcc)
+d_gccn  = debian/$(p_gccn)
 d_cpp	= debian/$(p_cpp)
 d_cppn  = debian/$(p_cppn)
 d_cppd	= debian/$(p_cppd)
-- 
2.25.1

>From db1c1e31f70f846f361158e092890fe710915159 Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 06:43:03 +0100
Subject: [PATCH 04/11] introduce g++-$v-$triplet

---
 debian/control.m4            | 37 ++++++++++++++-------
 debian/rules.d/binary-cxx.mk | 63 +++++++++++++++++++++++++-----------
 debian/rules2                |  2 ++
 3 files changed, 72 insertions(+), 30 deletions(-)

diff --git a/debian/control.m4 b/debian/control.m4
index e16e4b8..451e50f 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -1214,23 +1214,36 @@ Description: GCC, the GNU compiler collection (native language support files)
 ')`'dnl cdev
 
 ifenabled(`c++',`
-ifenabled(`c++dev',`
-Package: g++`'PV`'TS
-Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
+ifenabled(`c++dev',`dnl
+for_each_arch(`
+Package: g++`'PV`'arch_gnusuffix
+Architecture: ifdef(`TARGET',`any',arch_deb)
+Multi-Arch: foreign
 Section: devel
 Priority: optional
-Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libidevdep(stdc++`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends}
-Provides: c++-compiler`'TS`'ifdef(`TARGET',`',`, c++abi2-dev')
-Suggests: ${gxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(stdc++CXX_SO`'PV-dbg),
+Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), libidevdep(stdc++`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends}
+Provides: c++-compiler`'arch_gnusuffix
+Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(stdc++CXX_SO`'PV-dbg,)
+Breaks: g++`'PV (<< 0TODO)
+Replaces: g++`'PV (<< 999:0TODO)
 BUILT_USING`'dnl
-Description: GNU C++ compiler`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `')
+Description: GNU C++ compiler for arch_gnu architecture
  This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
-ifdef(`TARGET', `dnl
  .
- This package contains C++ cross-compiler for TARGET architecture.
-')`'dnl
+ This package contains C++ cross-compiler for arch_gnu architecture.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: g++`'PV
+Architecture: any
+Section: devel
+Priority: optional
+Depends: g++`'PV`'${target:suffix} (= ${gcc:Version}), BASEDEP, gcc`'PV (= ${gcc:Version}), ${misc:Depends}
+Provides: c++-compiler, c++abi2-dev
+Suggests: ${gxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion})
+BUILT_USING`'dnl
+Description: GNU C++ compiler
+ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
+')`'dnl TARGET
 
 ifenabled(`multilib',`
 Package: g++`'PV-multilib`'TS
diff --git a/debian/rules.d/binary-cxx.mk b/debian/rules.d/binary-cxx.mk
index aaa3235..18554de 100644
--- a/debian/rules.d/binary-cxx.mk
+++ b/debian/rules.d/binary-cxx.mk
@@ -2,21 +2,31 @@ ifneq ($(DEB_STAGE),rtlibs)
   ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf)))
     arch_binaries  := $(arch_binaries) cxx-multi
   endif
-  arch_binaries  := $(arch_binaries) cxx
+  arch_binaries  := $(arch_binaries) cxx-nat
+  ifeq ($(unprefixed_names),yes)
+    arch_binaries  := $(arch_binaries) cxx
+  endif
 endif
 
+dirs_cxxn = \
+	$(PF)/bin \
+	$(gcc_lexec_dir) \
+	$(PF)/share/man/man1 \
+	usr/share/lintian/overrides
+
 dirs_cxx = \
 	$(docdir)/$(p_xbase)/C++ \
 	$(PF)/bin \
 	$(PF)/share/info \
-	$(gcc_lexec_dir) \
-	$(PF)/share/man/man1
-files_cxx = \
+	$(PF)/share/man/man1 \
+	usr/share/lintian/overrides
+
+files_cxxn = \
 	$(PF)/bin/$(cmd_prefix)g++$(pkg_ver) \
 	$(gcc_lexec_dir)/cc1plus
 
 ifneq ($(GFDL_INVARIANT_FREE),yes)
-  files_cxx += \
+  files_cxxn += \
 	$(PF)/share/man/man1/$(cmd_prefix)g++$(pkg_ver).1
 endif
 
@@ -24,6 +34,35 @@ p_cxx_m	= g++$(pkg_ver)-multilib$(cross_bin_arch)
 d_cxx_m	= debian/$(p_cxx_m)
 
 # ----------------------------------------------------------------------
+$(binary_stamp)-cxx-nat: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_cxxn)
+	dh_installdirs -p$(p_cxxn) $(dirs_cxxn)
+	$(dh_compat2) dh_movefiles -p$(p_cxxn) $(files_cxxn)
+
+	echo '$(p_cxxn) binary: hardening-no-pie' \
+	  > $(d_cxxn)/usr/share/lintian/overrides/$(p_cxxn)
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	echo '$(p_cxxn) binary: binary-without-manpage' \
+	  >> $(d_cxxn)/usr/share/lintian/overrides/$(p_cxxn)
+endif
+
+	debian/dh_doclink -p$(p_cxxn) $(p_xbase)
+	debian/dh_rmemptydirs -p$(p_cxxn)
+
+	dh_shlibdeps -p$(p_cxxn)
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
+	$(DWZ) \
+	  $(d_cxxn)/$(gcc_lexec_dir)/cc1plus
+endif
+	dh_strip -p$(p_cxxn) $(if $(unstripped_exe),-X/cc1plus)
+	echo $(p_cxxn) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
 $(binary_stamp)-cxx: $(install_stamp)
 	dh_testdir
 	dh_testroot
@@ -31,20 +70,14 @@ $(binary_stamp)-cxx: $(install_stamp)
 
 	rm -rf $(d_cxx)
 	dh_installdirs -p$(p_cxx) $(dirs_cxx)
-	$(dh_compat2) dh_movefiles -p$(p_cxx) $(files_cxx)
 
-ifeq ($(unprefixed_names),yes)
 	ln -sf $(cmd_prefix)g++$(pkg_ver) \
 	    $(d_cxx)/$(PF)/bin/g++$(pkg_ver)
-  ifneq ($(GFDL_INVARIANT_FREE),yes)
+ifneq ($(GFDL_INVARIANT_FREE),yes)
 	ln -sf $(cmd_prefix)g++$(pkg_ver).1.gz \
 	    $(d_cxx)/$(PF)/share/man/man1/g++$(pkg_ver).1.gz
-  endif
 endif
 
-	mkdir -p $(d_cxx)/usr/share/lintian/overrides
-	echo '$(p_cxx) binary: hardening-no-pie' \
-	  > $(d_cxx)/usr/share/lintian/overrides/$(p_cxx)
 ifeq ($(GFDL_INVARIANT_FREE),yes)
 	echo '$(p_cxx) binary: binary-without-manpage' \
 	  >> $(d_cxx)/usr/share/lintian/overrides/$(p_cxx)
@@ -56,12 +89,6 @@ endif
 		$(d_cxx)/$(docdir)/$(p_xbase)/C++/changelog
 	debian/dh_rmemptydirs -p$(p_cxx)
 
-	dh_shlibdeps -p$(p_cxx)
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
-	$(DWZ) \
-	  $(d_cxx)/$(gcc_lexec_dir)/cc1plus
-endif
-	dh_strip -p$(p_cxx) $(if $(unstripped_exe),-X/cc1plus)
 	echo $(p_cxx) >> debian/arch_binaries
 
 	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff --git a/debian/rules2 b/debian/rules2
index ad5fee4..7b167de 100644
--- a/debian/rules2
+++ b/debian/rules2
@@ -1982,6 +1982,7 @@ endif
 
 p_gccn = gcc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
 p_cppn = cpp$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+p_cxxn = g++$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
 
 # if native or rtlibs build
 ifeq ($(if $(filter yes,$(DEB_CROSS)),$(if $(filter rtlibs,$(DEB_STAGE)),native,cross),native),native)
@@ -2021,6 +2022,7 @@ d_cpp	= debian/$(p_cpp)
 d_cppn  = debian/$(p_cppn)
 d_cppd	= debian/$(p_cppd)
 d_cxx	= debian/$(p_cxx)
+d_cxxn	= debian/$(p_cxxn)
 d_doc	= debian/$(p_doc)
 d_lgcc	= debian/$(p_lgcc)
 d_hppa64= debian/$(p_hppa64)
-- 
2.25.1

>From 79c4d01941ef0c07a575ebb1f6fee4f3e889060f Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 06:43:37 +0100
Subject: [PATCH 05/11] introduce gfortran-$v-$triplet

---
 debian/control.m4                | 29 ++++++++----
 debian/rules.d/binary-fortran.mk | 79 ++++++++++++++++++++++----------
 2 files changed, 76 insertions(+), 32 deletions(-)

diff --git a/debian/control.m4 b/debian/control.m4
index 451e50f..8f2c09a 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -3872,23 +3872,36 @@ Description: Runtime library for GNU Objective-C applications  [NEON version]
 ')`'dnl objc
 
 ifenabled(`fortran',`
-ifenabled(`fdev',`
-Package: gfortran`'PV`'TS
+ifenabled(`fdev',`dnl
+for_each_arch(`
+Package: gfortran`'PV`'arch_gnusuffix
 Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
+Multi-Arch: foreign
 Priority: optional
-Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libidevdep(gfortran`'PV-dev,,=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
-ifdef(`TARGET',`',`Provides: fortran95-compiler, ${fortran:mod-version}
-')dnl
-Suggests: ${gfortran:multilib}, gfortran`'PV-doc,
+Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), libidevdep(gfortran`'PV-dev,,=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Breaks: gfortran`'PV (<< 0TODO)
+Replaces: gfortran`'PV (<< 999:0TODO)
+Suggests: gfortran`'PV-doc,
  libdbgdep(gfortran`'FORTRAN_SO-dbg),
  libcoarrays-dev
 BUILT_USING`'dnl
+Description: GNU Fortran compiler for the arch_gnu architecture
+ This is the GNU Fortran compiler for the arch_gnu architecture,
+ which compiles Fortran on platforms supported by the gcc compiler.
+ It uses the gcc backend to generate optimized code.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: gfortran`'PV
+Architecture: any
+Priority: optional
+Depends: gfortran`'PV`'${target:suffix} (= ${gcc:Version}), BASEDEP, gcc`'PV (= ${gcc:Version}), ${misc:Depends}
+Provides: fortran95-compiler, ${fortran:mod-version}
+Suggests: ${gfortran:multilib}, gfortran`'PV-doc
 Description: GNU Fortran compiler
  This is the GNU Fortran compiler, which compiles
  Fortran on platforms supported by the gcc compiler. It uses the
  gcc backend to generate optimized code.
+')`'dnl TARGET
 
 ifenabled(`multilib',`
 Package: gfortran`'PV-multilib`'TS
diff --git a/debian/rules.d/binary-fortran.mk b/debian/rules.d/binary-fortran.mk
index 18c24b9..0adcbca 100644
--- a/debian/rules.d/binary-fortran.mk
+++ b/debian/rules.d/binary-fortran.mk
@@ -45,7 +45,10 @@ ifeq ($(with_fdev),yes)
   ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf)))
     arch_binaries  := $(arch_binaries) fdev-multi
   endif
-  arch_binaries  := $(arch_binaries) fdev
+  arch_binaries  := $(arch_binaries) fdev-nat
+  ifeq ($(unprefixed_names),yes)
+    arch_binaries  := $(arch_binaries) fdev
+  endif
   ifneq ($(DEB_CROSS),yes)
     ifneq ($(GFDL_INVARIANT_FREE),yes)
       indep_binaries := $(indep_binaries) fortran-doc
@@ -53,29 +56,37 @@ ifeq ($(with_fdev),yes)
   endif
 endif
 
-p_g95	= gfortran$(pkg_ver)$(cross_bin_arch)
+p_g95n  = gfortran$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+p_g95	= gfortran$(pkg_ver)
 p_g95_m	= gfortran$(pkg_ver)-multilib$(cross_bin_arch)
 p_g95d	= gfortran$(pkg_ver)-doc
 p_flib	= libgfortran$(FORTRAN_SONAME)$(cross_lib_arch)
 
+d_g95n  = debian/$(p_g95n)
 d_g95	= debian/$(p_g95)
 d_g95_m	= debian/$(p_g95_m)
 d_g95d	= debian/$(p_g95d)
 
-dirs_g95 = \
-	$(docdir)/$(p_xbase)/fortran \
+dirs_g95n = \
 	$(PF)/bin \
 	$(gcc_lexec_dir) \
 	$(gcc_lib_dir) \
 	$(PF)/include \
+	$(PF)/share/man/man1 \
+	usr/share/lintian/overrides
+
+dirs_g95 = \
+	$(docdir)/$(p_xbase)/fortran \
+	$(PF)/bin \
 	$(PF)/share/man/man1
-files_g95 = \
+
+files_g95n = \
 	$(PF)/bin/$(cmd_prefix)gfortran$(pkg_ver) \
 	$(gcc_lib_dir)/finclude \
 	$(gcc_lexec_dir)/f951 
 
 ifneq ($(GFDL_INVARIANT_FREE),yes)
-  files_g95 += \
+  files_g95n += \
 	$(PF)/share/man/man1/$(cmd_prefix)gfortran$(pkg_ver).1
 endif
 
@@ -168,6 +179,41 @@ $(binary_stamp)-libsffortran: $(install_stamp)
 	$(call do_fortran,sf)
 
 # ----------------------------------------------------------------------
+$(binary_stamp)-fdev-nat: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_g95n)
+	dh_installdirs -p$(p_g95n) $(dirs_g95n)
+
+	$(dh_compat2) dh_movefiles -p$(p_g95n) $(files_g95n)
+
+	mv $(d)/$(usr_lib)/libgfortran.spec $(d_g95n)/$(gcc_lib_dir)/
+
+	echo '$(p_g95n) binary: hardening-no-pie' \
+	  > $(d_g95n)/usr/share/lintian/overrides/$(p_g95n)
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	echo '$(p_g95n) binary: binary-without-manpage' \
+	  >> $(d_g95n)/usr/share/lintian/overrides/$(p_g95n)
+endif
+
+	debian/dh_doclink -p$(p_g95n) $(p_xbase)
+
+	debian/dh_rmemptydirs -p$(p_g95n)
+
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
+	$(DWZ) \
+	  $(d_g95n)/$(gcc_lexec_dir)/f951
+endif
+	dh_strip -p$(p_g95n) \
+	  $(if $(unstripped_exe),-X/f951)
+	dh_shlibdeps -p$(p_g95n)
+
+	echo $(p_g95n) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
 $(binary_stamp)-fdev: $(install_stamp)
 	dh_testdir
 	dh_testroot
@@ -176,25 +222,17 @@ $(binary_stamp)-fdev: $(install_stamp)
 	rm -rf $(d_g95)
 	dh_installdirs -p$(p_g95) $(dirs_g95)
 
-	$(dh_compat2) dh_movefiles -p$(p_g95) $(files_g95)
-
-	mv $(d)/$(usr_lib)/libgfortran.spec $(d_g95)/$(gcc_lib_dir)/
-
-ifeq ($(unprefixed_names),yes)
 	ln -sf $(cmd_prefix)gfortran$(pkg_ver) \
 	    $(d_g95)/$(PF)/bin/gfortran$(pkg_ver)
-  ifneq ($(GFDL_INVARIANT_FREE),yes)
+ifneq ($(GFDL_INVARIANT_FREE),yes)
 	ln -sf $(cmd_prefix)gfortran$(pkg_ver).1 \
 	    $(d_g95)/$(PF)/share/man/man1/gfortran$(pkg_ver).1
-  endif
 endif
 
-	mkdir -p $(d_g95)/usr/share/lintian/overrides
-	echo '$(p_g95) binary: hardening-no-pie' \
-	  > $(d_g95)/usr/share/lintian/overrides/$(p_g95)
 ifeq ($(GFDL_INVARIANT_FREE),yes)
+	mkdir -p $(d_g95)/usr/share/lintian/overrides
 	echo '$(p_g95) binary: binary-without-manpage' \
-	  >> $(d_g95)/usr/share/lintian/overrides/$(p_g95)
+	  > $(d_g95)/usr/share/lintian/overrides/$(p_g95)
 endif
 
 	debian/dh_doclink -p$(p_g95) $(p_xbase)
@@ -203,13 +241,6 @@ endif
 		$(d_g95)/$(docdir)/$(p_xbase)/fortran/changelog
 	debian/dh_rmemptydirs -p$(p_g95)
 
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
-	$(DWZ) \
-	  $(d_g95)/$(gcc_lexec_dir)/f951
-endif
-	dh_strip -p$(p_g95) \
-	  $(if $(unstripped_exe),-X/f951)
-	dh_shlibdeps -p$(p_g95)
 	echo $(p_g95) >> debian/arch_binaries
 
 	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
-- 
2.25.1

>From fbaddaff32c659c17a8fab6c2ef164b09adf8f52 Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 06:44:13 +0100
Subject: [PATCH 06/11] introduce gdc-$v-$triplet

---
 debian/control.m4          | 32 +++++++++----
 debian/rules.d/binary-d.mk | 96 ++++++++++++++++++++++++--------------
 2 files changed, 83 insertions(+), 45 deletions(-)

diff --git a/debian/control.m4 b/debian/control.m4
index 8f2c09a..4ecd84d 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -5324,22 +5324,36 @@ Description: GNU Ada compiler (documentation)
 ')`'dnl gfdldoc
 ')`'dnl ada
 
-ifenabled(`d ',`
-Package: gdc`'PV`'TS
+ifenabled(`d ',`dnl
+for_each_arch(`
+Package: gdc`'PV`'arch_gnusuffix
 Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
+Multi-Arch: foreign
 Priority: optional
-Depends: SOFTBASEDEP, g++`'PV`'TS (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends}
-ifdef(`TARGET',`',`Provides: gdc, d-compiler, d-v2-compiler
-')dnl
-Replaces: gdc (<< 4.4.6-5)
+Depends: SOFTBASEDEP, g++`'PV`'arch_gnusuffix (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends}
+Breaks: gdc`'PV (<< 0TODO)
+Replaces: gdc (<< 4.4.6-5), gdc`'PV (<< 999:0TODO)
 BUILT_USING`'dnl
-Description: GNU D compiler (version 2)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `')
+Description: GNU D compiler (version 2) for the arch_gnu architecture
+ This is the GNU D compiler for the arch_gnu architecture,
+ which compiles D on platforms supported by gcc.
+ It uses the gcc backend to generate optimised code.
+ .
+ This compiler supports D language version 2.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: gdc`'PV
+Architecture: any
+Priority: optional
+Depends: gdc`'PV`'${target:suffix} (= ${gcc:SoftVersion}), SOFTBASEDEP, g++`'PV (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${misc:Depends}
+Provides: gdc, d-compiler, d-v2-compiler
+Replaces: gdc (<< 4.4.6-5)
+Description: GNU D compiler (version 2)
  This is the GNU D compiler, which compiles D on platforms supported by gcc.
  It uses the gcc backend to generate optimised code.
  .
  This compiler supports D language version 2.
+')`'dnl TARGET
 
 ifenabled(`multilib',`
 Package: gdc`'PV-multilib`'TS
diff --git a/debian/rules.d/binary-d.mk b/debian/rules.d/binary-d.mk
index 7a4ba4c..3d08dc5 100644
--- a/debian/rules.d/binary-d.mk
+++ b/debian/rules.d/binary-d.mk
@@ -2,7 +2,10 @@ ifneq ($(DEB_STAGE),rtlibs)
   ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchsf)))
     arch_binaries  := $(arch_binaries) gdc-multi
   endif
-  arch_binaries := $(arch_binaries) gdc
+  arch_binaries := $(arch_binaries) gdc-nat
+  ifeq ($(unprefixed_names),yes)
+    arch_binaries := $(arch_binaries) gdc
+  endif
 
   ifeq ($(with_libphobosdev),yes)
     $(lib_binaries) += libphobos-dev
@@ -50,11 +53,13 @@ ifneq ($(DEB_STAGE),rtlibs)
   endif
 endif
 
-p_gdc           = gdc$(pkg_ver)$(cross_bin_arch)
+p_gdc_n		= gdc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+p_gdc           = gdc$(pkg_ver)
 p_gdc_m		= gdc$(pkg_ver)-multilib$(cross_bin_arch)
 p_libphobos     = libgphobos$(GPHOBOS_SONAME)
 p_libphobosdev  = libgphobos$(pkg_ver)-dev
 
+d_gdc_n		= debian/$(p_gdc_n)
 d_gdc           = debian/$(p_gdc)
 d_gdc_m		= debian/$(p_gdc_m)
 d_libphobos     = debian/$(p_libphobos)
@@ -68,20 +73,26 @@ endif
 # FIXME: always here?
 gdc_include_dir := $(gcc_lib_dir)/include/d
 
-dirs_gdc = \
+dirs_gdc_n = \
 	$(PF)/bin \
 	$(PF)/share/man/man1 \
-	$(gcc_lexec_dir)
+	$(gcc_lexec_dir) \
+	usr/share/lintian/overrides
+
+dirs_gdc = \
+	$(PF)/bin \
+	$(PF)/share/man/man1
+
 ifneq ($(DEB_CROSS),yes)
-  dirs_gdc += \
+  dirs_gdc_n += \
 	$(gdc_include_dir)
 endif
 
-files_gdc = \
+files_gdc_n = \
 	$(PF)/bin/$(cmd_prefix)gdc$(pkg_ver) \
 	$(gcc_lexec_dir)/d21
 ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl)
-    files_gdc += \
+    files_gdc_n += \
 	$(PF)/share/man/man1/$(cmd_prefix)gdc$(pkg_ver).1
 endif
 
@@ -90,58 +101,71 @@ dirs_libphobos = \
 	$(gdc_include_dir) \
 	$(gcc_lib_dir)
 
-$(binary_stamp)-gdc: $(install_stamp)
+$(binary_stamp)-gdc-nat: $(install_stamp)
 	dh_testdir
 	dh_testroot
 	mv $(install_stamp) $(install_stamp)-tmp
 
-	rm -rf $(d_gdc)
-	dh_installdirs -p$(p_gdc) $(dirs_gdc)
+	rm -rf $(d_gdc_n)
+	dh_installdirs -p$(p_gdc_n) $(dirs_gdc_n)
 
-	dh_installdocs -p$(p_gdc)
-	dh_installchangelogs -p$(p_gdc) src/gcc/d/ChangeLog
+	debian/dh_doclink -p$(p_gdc_n) $(p_xbase)
 
-	$(dh_compat2) dh_movefiles -p$(p_gdc) -X/zlib/ $(files_gdc)
+	$(dh_compat2) dh_movefiles -p$(p_gdc_n) -X/zlib/ $(files_gdc_n)
 
 ifeq ($(with_phobos),yes)
-	mv $(d)/$(usr_lib)/libgphobos.spec $(d_gdc)/$(gcc_lib_dir)/
-endif
-
-ifeq ($(unprefixed_names),yes)
-	ln -sf $(cmd_prefix)gdc$(pkg_ver) \
-	    $(d_gdc)/$(PF)/bin/gdc$(pkg_ver)
-  ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl)
-	ln -sf $(cmd_prefix)gdc$(pkg_ver).1 \
-	    $(d_gdc)/$(PF)/share/man/man1/gdc$(pkg_ver).1
-  endif
+	mv $(d)/$(usr_lib)/libgphobos.spec $(d_gdc_n)/$(gcc_lib_dir)/
 endif
 
 # FIXME: __entrypoint.di needs to go into a libgdc-dev Multi-Arch: same package
 	# Always needed by gdc.
-	mkdir -p $(d_gdc)/$(gdc_include_dir)
+	mkdir -p $(d_gdc_n)/$(gdc_include_dir)
 	cp $(srcdir)/libphobos/libdruntime/__entrypoint.di \
-	    $(d_gdc)/$(gdc_include_dir)/.
+	    $(d_gdc_n)/$(gdc_include_dir)/.
 #ifneq ($(DEB_CROSS),yes)
-#	dh_link -p$(p_gdc) \
+#	dh_link -p$(p_gdc_n) \
 #		/$(gdc_include_dir) \
 #		/$(dir $(gdc_include_dir))/$(GCC_VERSION)
 #endif
 
-	dh_link -p$(p_gdc) \
-		/$(docdir)/$(p_gcc)/README.Bugs \
-		/$(docdir)/$(p_gdc)/README.Bugs
-
 ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
 	$(DWZ) \
-	  $(d_gdc)/$(gcc_lexec_dir)/d21
+	  $(d_gdc_n)/$(gcc_lexec_dir)/d21
 endif
-	dh_strip -p$(p_gdc) \
+	dh_strip -p$(p_gdc_n) \
 	  $(if $(unstripped_exe),-X/d21)
-	dh_shlibdeps -p$(p_gdc)
+	dh_shlibdeps -p$(p_gdc_n)
+
+	echo '$(p_gdc_n) binary: hardening-no-pie' \
+	  > $(d_gdc_n)/usr/share/lintian/overrides/$(p_gdc_n)
+
+	echo $(p_gdc_n) >> debian/arch_binaries
 
-	mkdir -p $(d_gdc)/usr/share/lintian/overrides
-	echo '$(p_gdc) binary: hardening-no-pie' \
-	  > $(d_gdc)/usr/share/lintian/overrides/$(p_gdc)
+	find $(d_gdc_n) -type d -empty -delete
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+$(binary_stamp)-gdc: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_gdc)
+	dh_installdirs -p$(p_gdc) $(dirs_gdc)
+
+	dh_installdocs -p$(p_gdc)
+	dh_installchangelogs -p$(p_gdc) src/gcc/d/ChangeLog
+
+	ln -sf $(cmd_prefix)gdc$(pkg_ver) \
+	    $(d_gdc)/$(PF)/bin/gdc$(pkg_ver)
+ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl)
+	ln -sf $(cmd_prefix)gdc$(pkg_ver).1.gz \
+	    $(d_gdc)/$(PF)/share/man/man1/gdc$(pkg_ver).1.gz
+endif
+
+	dh_link -p$(p_gdc) \
+		/$(docdir)/$(p_gcc)/README.Bugs \
+		/$(docdir)/$(p_gdc)/README.Bugs
 
 	echo $(p_gdc) >> debian/arch_binaries
 
-- 
2.25.1

>From 16ed5831dec90a1f9d88e9840f96fa65aae8ac99 Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 06:44:46 +0100
Subject: [PATCH 07/11] introduce gccgo-$v-$triplet

---
 debian/control.m4           |  28 +++++--
 debian/rules.d/binary-go.mk | 145 ++++++++++++++++++++++--------------
 2 files changed, 110 insertions(+), 63 deletions(-)

diff --git a/debian/control.m4 b/debian/control.m4
index 4ecd84d..74d505f 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -4236,20 +4236,34 @@ Description: Runtime library for GNU Fortran applications [NEON version]
 
 ifenabled(`ggo',`
 ifenabled(`godev',`
-Package: gccgo`'PV`'TS
+for_each_arch(`
+Package: gccgo`'PV`'arch_gnusuffix
+Architecture: ifdef(`TARGET',`any',arch_deb)
+Multi-Arch: foreign
+Priority: optional
+Depends: BASEDEP, ifdef(`STANDALONEGO',`${dep:libcc1}, ',`gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), ')libidevdep(go`'PV-dev,,>=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: gccgo`'PV-doc, libdbgdep(go`'GO_SO-dbg),
+Conflicts: ${golang:Conflicts}
+Breaks: libgo12`'LS (<< 8-20171209-2), gccgo`'PV (<< 0TODO)
+Replaces: libgo12`'LS (<< 8-20171209-2), gccgo`'PV (<< 999:0TODO)
+BUILT_USING`'dnl
+Description: GNU Go compiler for the arch_gnu architecture
+ This is the GNU Go compiler for the arch_gnu architecture, which
+ compiles Go on platforms supported by the gcc compiler. It uses the gcc
+ backend to generate optimized code.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: gccgo`'PV
 Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
 Priority: optional
-Depends: BASEDEP, ifdef(`STANDALONEGO',`${dep:libcc1}, ',`gcc`'PV`'TS (= ${gcc:Version}), ')libidevdep(go`'PV-dev,,>=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
-ifdef(`TARGET',`',`Provides: go-compiler
-')dnl
+Depends: BASEDEP, gccgo`'PV`'${target:suffix} (= ${gcc:Version}), ifdef(`STANDALONEGO',`',`gcc`'PV (= ${gcc:Version}), ')${misc:Depends}
+Provides: go-compiler
 Suggests: ${go:multilib}, gccgo`'PV-doc, libdbgdep(go`'GO_SO-dbg),
 Conflicts: ${golang:Conflicts}
-BUILT_USING`'dnl
 Description: GNU Go compiler
  This is the GNU Go compiler, which compiles Go on platforms supported
  by the gcc compiler. It uses the gcc backend to generate optimized code.
+')`'dnl no-TARGET
 
 ifenabled(`multilib',`
 Package: gccgo`'PV-multilib`'TS
diff --git a/debian/rules.d/binary-go.mk b/debian/rules.d/binary-go.mk
index 29e0ea6..4cb7e84 100644
--- a/debian/rules.d/binary-go.mk
+++ b/debian/rules.d/binary-go.mk
@@ -30,7 +30,10 @@ ifeq ($(with_libx32godev),yes)
 endif
 
 ifneq ($(DEB_STAGE),rtlibs)
-  arch_binaries  := $(arch_binaries) gccgo
+  arch_binaries  := $(arch_binaries) gccgo-nat
+  ifeq ($(unprefixed_names),yes)
+    arch_binaries  := $(arch_binaries) gccgo
+  endif
   ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32)))
     arch_binaries  := $(arch_binaries) gccgo-multi
   endif
@@ -41,29 +44,37 @@ ifneq ($(DEB_STAGE),rtlibs)
   endif
 endif
 
-p_go	= gccgo$(pkg_ver)$(cross_bin_arch)
+p_go_n  = gccgo$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+p_go	= gccgo$(pkg_ver)
 p_go_m	= gccgo$(pkg_ver)-multilib$(cross_bin_arch)
 p_god	= gccgo$(pkg_ver)-doc
 p_golib	= libgo$(GO_SONAME)$(cross_lib_arch)
 
+d_go_n  = debian/$(p_go_n)
 d_go	= debian/$(p_go)
 d_go_m	= debian/$(p_go_m)
 d_god	= debian/$(p_god)
 d_golib	= debian/$(p_golib)
 
-dirs_go = \
-	$(docdir)/$(p_xbase)/go \
+dirs_go_n = \
 	$(PF)/bin \
 	$(gcc_lexec_dir) \
 	$(gcc_lib_dir) \
 	$(PF)/include \
-	$(PF)/share/man/man1
-files_go = \
+	$(PF)/share/man/man1 \
+	usr/share/lintian/overrides
+
+dirs_go = \
+	$(docdir)/$(p_xbase)/go \
+	$(PF)/bin \
+	$(PF)/share/man/man1 \
+
+files_go_n = \
 	$(PF)/bin/$(cmd_prefix)gccgo$(pkg_ver) \
 	$(gcc_lexec_dir)/go1
 
 ifneq (,$(filter $(build_type), build-native cross-build-native))
-  files_go += \
+  files_go_n += \
 	$(PF)/bin/$(cmd_prefix){go,gofmt}$(pkg_ver) \
 	$(gcc_lexec_dir)/cgo \
 	$(gcc_lexec_dir)/{buildid,test2json,vet} \
@@ -71,18 +82,20 @@ ifneq (,$(filter $(build_type), build-native cross-build-native))
 endif
 
 ifneq ($(GFDL_INVARIANT_FREE),yes)
-  files_go += \
+  files_go_n += \
 	$(PF)/share/man/man1/$(cmd_prefix)gccgo$(pkg_ver).1
 endif
 
 ifeq ($(with_standalone_go),yes)
 
-  dirs_go += \
+  dirs_go_n += \
 	$(gcc_lib_dir)/include \
 	$(PF)/share/man/man1
+  dirs_go += \
+	$(PF)/share/man/man1
 
 # XXX: what about triarch mapping?
-  files_go += \
+  files_go_n += \
 	$(PF)/bin/$(cmd_prefix){cpp,gcc,gcov,gcov-tool}$(pkg_ver) \
 	$(PF)/bin/$(cmd_prefix)gcc-{ar,ranlib,nm}$(pkg_ver) \
 	$(PF)/share/man/man1/$(cmd_prefix)gcc-{ar,nm,ranlib}$(pkg_ver).1 \
@@ -94,26 +107,26 @@ ifeq ($(with_standalone_go),yes)
 		&& echo $(gcc_lib_dir)/SYSCALLS.c.X)
 
   ifeq ($(with_cc1),yes)
-    files_go += \
+    files_go_n += \
 	$(gcc_lib_dir)/plugin/libcc1plugin.so{,.0,.0.0.0}
   endif
 
   ifneq ($(GFDL_INVARIANT_FREE),yes)
-    files_go += \
+    files_go_n += \
 	$(PF)/share/man/man1/$(cmd_prefix){cpp,gcc,gcov,gcov-tool}$(pkg_ver).1
   endif
 
   ifeq ($(biarch64),yes)
-    files_go += $(gcc_lib_dir)/$(biarch64subdir)/{libgcc*,libgcov.a,*.o}
+    files_go_n += $(gcc_lib_dir)/$(biarch64subdir)/{libgcc*,libgcov.a,*.o}
   endif
   ifeq ($(biarch32),yes)
-    files_go += $(gcc_lib_dir)/$(biarch32subdir)/{libgcc*,*.o}
+    files_go_n += $(gcc_lib_dir)/$(biarch32subdir)/{libgcc*,*.o}
   endif
   ifeq ($(biarchn32),yes)
-    files_go += $(gcc_lib_dir)/$(biarchn32subdir)/{libgcc*,libgcov.a,*.o}
+    files_go_n += $(gcc_lib_dir)/$(biarchn32subdir)/{libgcc*,libgcov.a,*.o}
   endif
   ifeq ($(biarchx32),yes)
-    files_go += $(gcc_lib_dir)/$(biarchx32subdir)/{libgcc*,libgcov.a,*.o}
+    files_go_n += $(gcc_lib_dir)/$(biarchx32subdir)/{libgcc*,libgcov.a,*.o}
   endif
 endif
 
@@ -242,22 +255,64 @@ $(binary_stamp)-libn32go-dev: $(install_stamp)
 	$(call do_libgo_dev,n32)
 
 # ----------------------------------------------------------------------
-$(binary_stamp)-gccgo: $(install_stamp)
+$(binary_stamp)-gccgo-nat: $(install_stamp)
 	dh_testdir
 	dh_testroot
 	mv $(install_stamp) $(install_stamp)-tmp
 
-	rm -rf $(d_go)
-	dh_installdirs -p$(p_go) $(dirs_go)
+	rm -rf $(d_go_n)
+	dh_installdirs -p$(p_go_n) $(dirs_go_n)
 
-	$(dh_compat2) dh_movefiles -p$(p_go) $(files_go)
+	$(dh_compat2) dh_movefiles -p$(p_go_n) $(files_go_n)
 
 ifneq (,$(findstring gccgo,$(PKGSOURCE)))
-	rm -rf $(d_go)/$(gcc_lib_dir)/include/cilk
-	rm -rf $(d_go)/$(gcc_lib_dir)/include/openacc.h
+	rm -rf $(d_go_n)/$(gcc_lib_dir)/include/cilk
+	rm -rf $(d_go_n)/$(gcc_lib_dir)/include/openacc.h
+endif
+
+ifeq ($(with_standalone_go),yes)
+  ifeq ($(with_gomp),yes)
+	mv $(d)/$(usr_lib)/libgomp*.spec $(d_go_n)/$(gcc_lib_dir)/
+  endif
+  ifeq ($(with_cc1),yes)
+	rm -f $(d)/$(usr_lib)/libcc1.so
+	dh_link -p$(p_go_n) \
+		/$(usr_lib)/libcc1.so.$(CC1_SONAME) /$(gcc_lib_dir)/libcc1.so
+  endif
+endif
+
+	echo '$(p_go_n) binary: unstripped-binary-or-object' \
+	  > $(d_go_n)/usr/share/lintian/overrides/$(p_go_n)
+	echo '$(p_go_n) binary: hardening-no-pie' \
+	  >> $(d_go_n)/usr/share/lintian/overrides/$(p_go_n)
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	echo '$(p_go_n) binary: binary-without-manpage' \
+	  >> $(d_go_n)/usr/share/lintian/overrides/$(p_go_n)
+endif
+
+	debian/dh_doclink -p$(p_go_n) $(p_xbase)
+
+	debian/dh_rmemptydirs -p$(p_go_n)
+
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
+	$(DWZ) \
+	  $(d_go_n)/$(gcc_lexec_dir)/go1
 endif
+	dh_strip -v -p$(p_go_n) -X/cgo -X/go$(pkg_ver) -X/gofmt$(pkg_ver) \
+	  -X/buildid -X/test2json -X/vet $(if $(unstripped_exe),-X/go1)
+	dh_shlibdeps -p$(p_go_n)
+	echo $(p_go_n) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+$(binary_stamp)-gccgo: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_go)
+	dh_installdirs -p$(p_go) $(dirs_go)
 
-ifeq ($(unprefixed_names),yes)
 	ln -sf $(cmd_prefix)gccgo$(pkg_ver) \
 	    $(d_go)/$(PF)/bin/gccgo$(pkg_ver)
 	ln -sf $(cmd_prefix)go$(pkg_ver) \
@@ -265,46 +320,31 @@ ifeq ($(unprefixed_names),yes)
 	ln -sf $(cmd_prefix)gofmt$(pkg_ver) \
 	    $(d_go)/$(PF)/bin/gofmt$(pkg_ver)
   ifneq ($(GFDL_INVARIANT_FREE),yes)
-	ln -sf $(cmd_prefix)gccgo$(pkg_ver).1 \
-	    $(d_go)/$(PF)/share/man/man1/gccgo$(pkg_ver).1
+	ln -sf $(cmd_prefix)gccgo$(pkg_ver).1.gz \
+	    $(d_go)/$(PF)/share/man/man1/gccgo$(pkg_ver).1.gz
   endif
-	ln -sf $(cmd_prefix)go$(pkg_ver).1 \
-	    $(d_go)/$(PF)/share/man/man1/go$(pkg_ver).1
-	ln -sf $(cmd_prefix)gofmt$(pkg_ver).1 \
-	    $(d_go)/$(PF)/share/man/man1/gofmt$(pkg_ver).1
-endif
+	ln -sf $(cmd_prefix)go$(pkg_ver).1.gz \
+	    $(d_go)/$(PF)/share/man/man1/go$(pkg_ver).1.gz
+	ln -sf $(cmd_prefix)gofmt$(pkg_ver).1.gz \
+	    $(d_go)/$(PF)/share/man/man1/gofmt$(pkg_ver).1.gz
 
 ifeq ($(with_standalone_go),yes)
-  ifeq ($(unprefixed_names),yes)
 	for i in gcc gcov gcov-tool gcc-ar gcc-nm gcc-ranlib; do \
 	  ln -sf $(cmd_prefix)$$i$(pkg_ver) \
 	    $(d_go)/$(PF)/bin/$$i$(pkg_ver); \
 	done
-    ifneq ($(GFDL_INVARIANT_FREE),yes)
+  ifneq ($(GFDL_INVARIANT_FREE),yes)
 	for i in gcc gcov gcov-tool gcc-ar gcc-nm gcc-ranlib; do \
-	  ln -sf $(cmd_prefix)gcc$(pkg_ver).1 \
-	    $(d_go)/$(PF)/share/man/man1/$$i$(pkg_ver).1; \
+	  ln -sf $(cmd_prefix)gcc$(pkg_ver).1.gz \
+	    $(d_go)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \
 	done
-    endif
-  endif
-  ifeq ($(with_gomp),yes)
-	mv $(d)/$(usr_lib)/libgomp*.spec $(d_go)/$(gcc_lib_dir)/
-  endif
-  ifeq ($(with_cc1),yes)
-	rm -f $(d)/$(usr_lib)/libcc1.so
-	dh_link -p$(p_go) \
-		/$(usr_lib)/libcc1.so.$(CC1_SONAME) /$(gcc_lib_dir)/libcc1.so
   endif
 endif
 
-	mkdir -p $(d_go)/usr/share/lintian/overrides
-	echo '$(p_go) binary: unstripped-binary-or-object' \
-	  > $(d_go)/usr/share/lintian/overrides/$(p_go)
-	echo '$(p_go) binary: hardening-no-pie' \
-	  >> $(d_go)/usr/share/lintian/overrides/$(p_go)
 ifeq ($(GFDL_INVARIANT_FREE),yes)
+	mkdir -p $(d_go)/usr/share/lintian/overrides
 	echo '$(p_go) binary: binary-without-manpage' \
-	  >> $(d_go)/usr/share/lintian/overrides/$(p_go)
+	  > $(d_go)/usr/share/lintian/overrides/$(p_go)
 endif
 
 	debian/dh_doclink -p$(p_go) $(p_xbase)
@@ -313,13 +353,6 @@ endif
 #		$(d_go)/$(docdir)/$(p_base)/go/changelog
 	debian/dh_rmemptydirs -p$(p_go)
 
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
-	$(DWZ) \
-	  $(d_go)/$(gcc_lexec_dir)/go1
-endif
-	dh_strip -v -p$(p_go) -X/cgo -X/go$(pkg_ver) -X/gofmt$(pkg_ver) \
-	  -X/buildid -X/test2json -X/vet $(if $(unstripped_exe),-X/go1)
-	dh_shlibdeps -p$(p_go)
 	echo $(p_go) >> debian/arch_binaries
 
 	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
-- 
2.25.1

>From c23a7ae8f7d72296e81607daaf811020d38349ce Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 15:31:00 +0100
Subject: [PATCH 08/11] drop obsolete sparc-only conflict

---
 debian/control.m4 | 1 -
 1 file changed, 1 deletion(-)

diff --git a/debian/control.m4 b/debian/control.m4
index 74d505f..aa4374d 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -3562,7 +3562,6 @@ Priority: optional
 Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends}
 Suggests: ${gobjc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(objc`'OBJC_SO-dbg),
 Provides: objc-compiler`'TS
-ifdef(`__sparc__',`Conflicts: gcc`'PV-sparc64', `dnl')
 BUILT_USING`'dnl
 Description: GNU Objective-C compiler
  This is the GNU Objective-C compiler, which compiles
-- 
2.25.1

>From f83c872dd7eb83fed9c28e077539360dd8103c0a Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 15:50:21 +0100
Subject: [PATCH 09/11] remove unused binary-without-manpage overrides

gobjc-N and gobjc++-N don't contain any binaries on $PATH that would
warrant a manual page.
---
 debian/rules.d/binary-objc.mk   | 4 ----
 debian/rules.d/binary-objcxx.mk | 4 ----
 2 files changed, 8 deletions(-)

diff --git a/debian/rules.d/binary-objc.mk b/debian/rules.d/binary-objc.mk
index b5cd216..743bf52 100644
--- a/debian/rules.d/binary-objc.mk
+++ b/debian/rules.d/binary-objc.mk
@@ -36,10 +36,6 @@ $(binary_stamp)-objc: $(install_stamp)
 	mkdir -p $(d_objc)/usr/share/lintian/overrides
 	echo '$(p_objc) binary: hardening-no-pie' \
 	  > $(d_objc)/usr/share/lintian/overrides/$(p_objc)
-ifeq ($(GFDL_INVARIANT_FREE),yes)
-	echo '$(p_objc) binary: binary-without-manpage' \
-	  >> $(d_objc)/usr/share/lintian/overrides/$(p_objc)
-endif
 
 	debian/dh_doclink -p$(p_objc) $(p_xbase)
 
diff --git a/debian/rules.d/binary-objcxx.mk b/debian/rules.d/binary-objcxx.mk
index 4f6d8e1..e750cae 100644
--- a/debian/rules.d/binary-objcxx.mk
+++ b/debian/rules.d/binary-objcxx.mk
@@ -34,10 +34,6 @@ $(binary_stamp)-objcxx: $(install_stamp)
 	mkdir -p $(d_objcx)/usr/share/lintian/overrides
 	echo '$(p_objcx) binary: hardening-no-pie' \
 	  > $(d_objcx)/usr/share/lintian/overrides/$(p_objcx)
-ifeq ($(GFDL_INVARIANT_FREE),yes)
-	echo '$(p_objcx) binary: binary-without-manpage' \
-	  >> $(d_objcx)/usr/share/lintian/overrides/$(p_objcx)
-endif
 
 	debian/dh_rmemptydirs -p$(p_objcx)
 
-- 
2.25.1

>From b8f8ed1b63c6ebfb720c0cb3c1a3d998828d72e2 Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Fri, 27 Mar 2020 06:45:05 +0100
Subject: [PATCH 10/11] introduce gobjc-$v-$triplet

---
 debian/control.m4             | 28 ++++++++++++-----
 debian/rules.d/binary-objc.mk | 58 +++++++++++++++++++++++++----------
 2 files changed, 62 insertions(+), 24 deletions(-)

diff --git a/debian/control.m4 b/debian/control.m4
index aa4374d..1402abe 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -3554,20 +3554,34 @@ Description: GNU Objective-C++ compiler (multilib support)
 
 ifenabled(`objc',`
 ifenabled(`objcdev',`
-Package: gobjc`'PV`'TS
+for_each_arch(`
+Package: gobjc`'PV`'arch_gnusuffix
 Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
+Multi-Arch: foreign
 Priority: optional
-Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends}
-Suggests: ${gobjc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(objc`'OBJC_SO-dbg),
-Provides: objc-compiler`'TS
+Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends}
+Breaks: gobjc`'PV (<< 0TODO)
+Replaces: gobjc`'PV (<< 999:0TODO)
+Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(objc`'OBJC_SO-dbg,)
+Provides: objc-compiler`'arch_gnusuffix
 BUILT_USING`'dnl
+Description: GNU Objective-C compiler for the arch_gnu architecture
+ This is the GNU Objective-C compiler for the arch_gnu architecture,
+ which compiles Objective-C on platforms supported by the gcc compiler.
+ It uses the gcc backend to generate optimized code.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: gobjc`'PV
+Architecture: any
+Priority: optional
+Depends: BASEDEP, gobjc`'PV`'${target:suffix} (= ${gcc:Version}), gcc`'PV (= ${gcc:Version}), ${misc:Depends}
+Suggests: ${gobjc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion})
+Provides: objc-compiler
 Description: GNU Objective-C compiler
  This is the GNU Objective-C compiler, which compiles
  Objective-C on platforms supported by the gcc compiler. It uses the
  gcc backend to generate optimized code.
-
+')`'dnl ifndef TARGET
 ifenabled(`multilib',`
 Package: gobjc`'PV-multilib`'TS
 Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS)
diff --git a/debian/rules.d/binary-objc.mk b/debian/rules.d/binary-objc.mk
index 743bf52..eeaec33 100644
--- a/debian/rules.d/binary-objc.mk
+++ b/debian/rules.d/binary-objc.mk
@@ -2,22 +2,58 @@ ifneq ($(DEB_STAGE),rtlibs)
   ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf)))
     arch_binaries  := $(arch_binaries) objc-multi
   endif
-  arch_binaries := $(arch_binaries) objc
+  arch_binaries := $(arch_binaries) objc-nat
+  ifeq ($(unprefixed_names),yes)
+    arch_binaries := $(arch_binaries) objc
+  endif
 endif
 
-p_objc	= gobjc$(pkg_ver)$(cross_bin_arch)
+p_objc_n = gobjc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+d_objc_n = debian/$(p_objc_n)
+
+p_objc	= gobjc$(pkg_ver)
 d_objc	= debian/$(p_objc)
 
 p_objc_m= gobjc$(pkg_ver)-multilib$(cross_bin_arch)
 d_objc_m= debian/$(p_objc_m)
 
+dirs_objc_n = \
+	$(gcc_lexec_dir) \
+	usr/share/lintian/overrides
+
 dirs_objc = \
-	$(docdir)/$(p_xbase)/ObjC \
-	$(gcc_lexec_dir)
+	$(docdir)/$(p_xbase)/ObjC
 
-files_objc = \
+files_objc_n = \
 	$(gcc_lexec_dir)/cc1obj
 
+$(binary_stamp)-objc-nat: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_objc_n)
+	dh_installdirs -p$(p_objc_n) $(dirs_objc_n)
+	$(dh_compat2) dh_movefiles -p$(p_objc_n) $(files_objc_n)
+
+	echo '$(p_objc_n) binary: hardening-no-pie' \
+	  > $(d_objc_n)/usr/share/lintian/overrides/$(p_objc_n)
+
+	debian/dh_doclink -p$(p_objc_n) $(p_xbase)
+
+	debian/dh_rmemptydirs -p$(p_objc_n)
+
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
+	$(DWZ) \
+	  $(d_objc_n)/$(gcc_lexec_dir)/cc1obj
+endif
+	dh_strip -p$(p_objc_n) \
+	  $(if $(unstripped_exe),-X/cc1obj)
+	dh_shlibdeps -p$(p_objc_n)
+	echo $(p_objc_n) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
 $(binary_stamp)-objc: $(install_stamp)
 	dh_testdir
 	dh_testroot
@@ -25,7 +61,6 @@ $(binary_stamp)-objc: $(install_stamp)
 
 	rm -rf $(d_objc)
 	dh_installdirs -p$(p_objc) $(dirs_objc)
-	$(dh_compat2) dh_movefiles -p$(p_objc) $(files_objc)
 
 	cp -p $(srcdir)/libobjc/{README*,THREADS*} \
 		$(d_objc)/$(docdir)/$(p_xbase)/ObjC/.
@@ -33,21 +68,10 @@ $(binary_stamp)-objc: $(install_stamp)
 	cp -p $(srcdir)/libobjc/ChangeLog \
 		$(d_objc)/$(docdir)/$(p_xbase)/ObjC/changelog.libobjc
 
-	mkdir -p $(d_objc)/usr/share/lintian/overrides
-	echo '$(p_objc) binary: hardening-no-pie' \
-	  > $(d_objc)/usr/share/lintian/overrides/$(p_objc)
-
 	debian/dh_doclink -p$(p_objc) $(p_xbase)
 
 	debian/dh_rmemptydirs -p$(p_objc)
 
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
-	$(DWZ) \
-	  $(d_objc)/$(gcc_lexec_dir)/cc1obj
-endif
-	dh_strip -p$(p_objc) \
-	  $(if $(unstripped_exe),-X/cc1obj)
-	dh_shlibdeps -p$(p_objc)
 	echo $(p_objc) >> debian/arch_binaries
 
 	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
-- 
2.25.1

>From 717dbd8777a62e17c768ac2914027819dde081f1 Mon Sep 17 00:00:00 2001
From: Helmut Grohne <helmut@subdivi.de>
Date: Mon, 30 Mar 2020 11:52:40 +0200
Subject: [PATCH 11/11] introduce gobjc++-$v-$triplet

---
 debian/control.m4               | 25 ++++++++++++---
 debian/rules.d/binary-objcxx.mk | 56 +++++++++++++++++++++++----------
 2 files changed, 60 insertions(+), 21 deletions(-)

diff --git a/debian/control.m4 b/debian/control.m4
index 1402abe..586da84 100644
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -3519,19 +3519,34 @@ Description: GCC just-in-time compilation (development files)
 
 ifenabled(`objpp',`
 ifenabled(`objppdev',`
-Package: gobjc++`'PV`'TS
+for_each_arch(`
+Package: gobjc++`'PV`'arch_gnusuffix
 Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
+Multi-Arch: foreign
 Priority: optional
-Depends: BASEDEP, gobjc`'PV`'TS (= ${gcc:Version}), g++`'PV`'TS (= ${gcc:Version}), ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends}
+Depends: BASEDEP, gobjc`'PV`'arch_gnusuffix (= ${gcc:Version}), g++`'PV`'arch_gnusuffix (= ${gcc:Version}), ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends}
+Breaks: gobjc++`'PV (<< 0TODO)
+Replaces: gobjc++`'PV (<< 999:0TODO)
 Suggests: ${gobjcxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion})
-Provides: objc++-compiler`'TS
+Provides: objc++-compiler`'arch_gnusuffix
 BUILT_USING`'dnl
+Description: GNU Objective-C++ compiler for the arch_gnu architecture
+ This is the GNU Objective-C++ compiler for the arch_gnu architecture,
+ which compiles Objective-C++ on platforms supported by the gcc compiler.
+ It uses the gcc backend to generate optimized code.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: gobjc++`'PV
+Architecture: any
+Priority: optional
+Depends: BASEDEP, gobjc++`'PV`'${target:suffix} (= ${gcc:Version}), gobjc`'PV (= ${gcc:Version}), g++`'PV (= ${gcc:Version}), ${misc:Depends}
+Suggests: ${gobjcxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion})
+Provides: objc++-compiler
 Description: GNU Objective-C++ compiler
  This is the GNU Objective-C++ compiler, which compiles
  Objective-C++ on platforms supported by the gcc compiler. It uses the
  gcc backend to generate optimized code.
+')`'dnl TARGET
 ')`'dnl obcppdev
 
 ifenabled(`multilib',`
diff --git a/debian/rules.d/binary-objcxx.mk b/debian/rules.d/binary-objcxx.mk
index e750cae..984483d 100644
--- a/debian/rules.d/binary-objcxx.mk
+++ b/debian/rules.d/binary-objcxx.mk
@@ -2,22 +2,58 @@ ifneq ($(DEB_STAGE),rtlibs)
   ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf)))
     arch_binaries  := $(arch_binaries) objcxx-multi
   endif
-  arch_binaries := $(arch_binaries) objcxx
+  arch_binaries := $(arch_binaries) objcxx-nat
+  ifeq ($(unprefixed_names),yes)
+    arch_binaries := $(arch_binaries) objcxx
+  endif
 endif
 
-p_objcx		= gobjc++$(pkg_ver)$(cross_bin_arch)
+p_objcx_n	= gobjc++$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS))
+d_objcx_n	= debian/$(p_objcx_n)
+
+p_objcx		= gobjc++$(pkg_ver)
 d_objcx		= debian/$(p_objcx)
 
 p_objcx_m	= gobjc++$(pkg_ver)-multilib$(cross_bin_arch)
 d_objcx_m	= debian/$(p_objcx_m)
 
+dirs_objcx_n = \
+	$(gcc_lexec_dir) \
+	usr/share/lintian/overrides
+
 dirs_objcx = \
 	$(docdir)/$(p_xbase)/Obj-C++ \
-	$(gcc_lexec_dir)
 
-files_objcx = \
+files_objcx_n = \
 	$(gcc_lexec_dir)/cc1objplus
 
+$(binary_stamp)-objcxx-nat: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_objcx_n)
+	dh_installdirs -p$(p_objcx_n) $(dirs_objcx_n)
+	$(dh_compat2) dh_movefiles -p$(p_objcx_n) $(files_objcx_n)
+
+	debian/dh_doclink -p$(p_objcx_n) $(p_xbase)
+
+	echo '$(p_objcx_n) binary: hardening-no-pie' \
+	  > $(d_objcx_n)/usr/share/lintian/overrides/$(p_objcx_n)
+
+	debian/dh_rmemptydirs -p$(p_objcx_n)
+
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
+	$(DWZ) \
+	  $(d_objcx_n)/$(gcc_lexec_dir)/cc1objplus
+endif
+	dh_strip -p$(p_objcx_n) \
+	  $(if $(unstripped_exe),-X/cc1objplus)
+	dh_shlibdeps -p$(p_objcx_n)
+	echo $(p_objcx_n) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
 $(binary_stamp)-objcxx: $(install_stamp)
 	dh_testdir
 	dh_testroot
@@ -25,25 +61,13 @@ $(binary_stamp)-objcxx: $(install_stamp)
 
 	rm -rf $(d_objcx)
 	dh_installdirs -p$(p_objcx) $(dirs_objcx)
-	$(dh_compat2) dh_movefiles -p$(p_objcx) $(files_objcx)
 
 	debian/dh_doclink -p$(p_objcx) $(p_xbase)
 	cp -p $(srcdir)/gcc/objcp/ChangeLog \
 		$(d_objcx)/$(docdir)/$(p_xbase)/Obj-C++/changelog
 
-	mkdir -p $(d_objcx)/usr/share/lintian/overrides
-	echo '$(p_objcx) binary: hardening-no-pie' \
-	  > $(d_objcx)/usr/share/lintian/overrides/$(p_objcx)
-
 	debian/dh_rmemptydirs -p$(p_objcx)
 
-ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS)))
-	$(DWZ) \
-	  $(d_objcx)/$(gcc_lexec_dir)/cc1objplus
-endif
-	dh_strip -p$(p_objcx) \
-	  $(if $(unstripped_exe),-X/cc1objplus)
-	dh_shlibdeps -p$(p_objcx)
 	echo $(p_objcx) >> debian/arch_binaries
 
 	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
-- 
2.25.1


Reply to: