draft implementation for a Multi-Arch: foreign interface to gcc
Control: reopen -1
Control: reassign -1 src:gcc-8
Hi Matthias,
you requested that I send my unfinished work and here it goes. I've seen
that you have quickly applied my previous patches towards this matter
and would like to thank you. The attached patch was last tested on
8-20180402-1. I performed the following test methods thus far:
* native build (reduced using nolang=...)
* lintian
* piuparts
* looking at package contents
* manually installing and testing the resulting packages (thus
discovering #891289)
Caveats:
* The patch still contains temporary Breaks/Replaces versions. You'll
find them by searching for /0TODO/ in debian/control.m4. These need
to be updated before uploading (as we are moving files to new
packages).
* You'll go through NEW of course.
* I did not perform cross builds or cross compiler builds.
* I did not perform non-dfsg builds.
* I did not perform gcc-snapshot builds.
I had to make a number of bike coloring decision during the
implementation. If you want something different, I'm happy to change
that and will try to update the patch in a timely manner.
* "arch_gnutype_map" gets passed to control.m4 as "ARCH_GNUTYPE_MAP".
* The target suffix of the new packages is passed as a substvar called
"target:suffix".
* The make variables for these packages are called "p_${tool}n" and
"d_${tool}n".
* The new targets are called "$(binary_stamp)-$(tool)-nat".
I would like to thank James Clarke his advice during the planning stage
and for reviewing an earlier version of this patch.
I'd also be interested in learning which test build configurations are
particularly relevant to you.
I'v Cced d-cross@l.d.o to have more eyeballs on this difficult piece of
code.
Helmut
--- a/debian/control.m4
+++ b/debian/control.m4
@@ -35,6 +35,13 @@
'))
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 --------------------------------------------------------------------------
@@ -700,21 +707,22 @@
')`'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: gccgo-8 (<< ${gcc:Version}), cpp`'PV`'TS (<< 7.1.1-8)
-Suggests: ${gcc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}),
+Replaces: gccgo-8 (<< ${gcc:Version}), cpp`'PV`'arch_gnusuffix (<< 7.1.1-8), gcc`'PV (<< 999:0TODO)
+Breaks: cpp`'PV (<< 0TODO)
+Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}),
gcc`'PV-locales (>= ${gcc:SoftVersion}),
libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}),
libdbgdep(gomp`'GOMP_SO-dbg,),
@@ -729,15 +737,44 @@
')`'dnl
libdbgdep(mpx`'MPX_SO-dbg,),
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: gccgo-8 (<< ${gcc:Version}), 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(mpx`'MPX_SO-dbg,),
+ 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',`
@@ -800,17 +837,35 @@
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})
+Replaces: gccgo-8 (<< ${gcc:Version}), 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})
Replaces: gccgo-8 (<< ${gcc:Version})
-Breaks: libmagics++-dev (<< 2.28.0-4)ifdef(`TARGET',`',`, hardening-wrapper (<< 2.8+nmu3)')
+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
@@ -818,9 +873,6 @@
.
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', `', `
@@ -852,22 +904,33 @@
')`'dnl cdev
ifenabled(`c++',`
-ifenabled(`c++dev',`
-Package: g++`'PV`'TS
+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`'arch_gnusuffix (= ${gcc:Version}), libidevdep(stdc++`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends}
+Suggests: ${gxx:multilib}, 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 for arch_gnu
+ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
+ .
+ This compiler produces binaries for arch_gnu.
+')`'dnl for_each_arch
+ifdef(`TARGET',`',`
+Package: g++`'PV
Architecture: any
-ifdef(`TARGET',`Multi-Arch: foreign
-')dnl
Section: devel
Priority: optional
-Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libidevdep(stdc++`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends}
+Depends: BASEDEP, g++`'PV`'${target:suffix} (= ${gcc:Version}), gcc`'PV (= ${gcc:Version}), ${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,)
-BUILT_USING`'dnl
Description: GNU C++ compiler`'ifdef(`TARGET)',` (cross compiler for TARGET 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
ifenabled(`multilib',`
--- a/debian/rules.conf
+++ b/debian/rules.conf
@@ -634,6 +634,7 @@
-DTARGET_TOOL_BUILD_DEP='$(TARGET_TOOL_BUILD_DEP)' \
-DPHOBOS_BUILD_DEP="$(PHOBOS_BUILD_DEP)" \
-DOFFLOAD_BUILD_DEP="$(OFFLOAD_BUILD_DEP)" \
+ -DARCH_GNUTYPE_MAP="$(arch_gnutype_map)" \
-DMULTILIB_ARCHS="$(multilib_archs)" \
-DNEON_ARCHS="$(neon_archs)" \
-DTP=$(TP) \
@@ -1020,6 +1021,7 @@
echo 'dep:libcxxbiarchdbg=$(libstdc++biarchdbg)'; \
echo 'dep:libgnat=$(LIBGNAT_DEP)'; \
echo 'base:Breaks=$(BASE_BREAKS)'; \
+ echo 'target:suffix=-$(subst _,-,$(TARGET_ALIAS))'; \
) > debian/substvars.local.tmp
ifneq (,$(filter $(DEB_TARGET_ARCH), $(multilib_archs)))
( \
--- 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
+ ifeq ($(unprefixed_names),yes)
+ arch_binaries := $(arch_binaries) cpp
+ endif
+ arch_binaries := $(arch_binaries) cpp-nat
ifneq ($(DEB_CROSS),yes)
ifneq ($(GFDL_INVARIANT_FREE),yes)
indep_binaries := $(indep_binaries) cpp-doc
@@ -7,22 +10,59 @@
endif
endif
+dirs_cppn = \
+ $(docdir) \
+ $(PF)/share/man/man1 \
+ $(PF)/bin \
+ $(gcc_lexec_dir) \
+ usr/share/lintian/overrides
+
dirs_cpp = \
$(docdir) \
$(PF)/share/man/man1 \
$(PF)/bin \
- $(gcc_lexec_dir)
+ 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 @@
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 @@
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)
--- a/debian/rules.d/binary-cxx.mk
+++ b/debian/rules.d/binary-cxx.mk
@@ -2,21 +2,32 @@
ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf)))
arch_binaries := $(arch_binaries) cxx-multi
endif
- arch_binaries := $(arch_binaries) cxx
+ ifeq ($(unprefixed_names),yes)
+ arch_binaries := $(arch_binaries) cxx
+ endif
+ arch_binaries := $(arch_binaries) cxx-nat
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 +35,35 @@
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,21 +71,13 @@
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)
+else
echo '$(p_cxx) binary: binary-without-manpage' \
>> $(d_cxx)/usr/share/lintian/overrides/$(p_cxx)
endif
@@ -56,12 +88,6 @@
$(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)
--- a/debian/rules.d/binary-gcc.mk
+++ b/debian/rules.d/binary-gcc.mk
@@ -6,7 +6,10 @@
arch_binaries := $(arch_binaries) gcc-plugindev
endif
- arch_binaries := $(arch_binaries) gcc
+ ifeq ($(unprefixed_names),yes)
+ arch_binaries := $(arch_binaries) gcc
+ endif
+ arch_binaries := $(arch_binaries) gcc-nat
ifneq ($(DEB_CROSS),yes)
ifneq ($(GFDL_INVARIANT_FREE),yes)
@@ -26,15 +29,21 @@
# 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,mpx} \
+dirs_gccn = \
$(PF)/bin \
$(gcc_lexec_dir) \
$(gcc_lib_dir)/{include,include-fixed} \
- $(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,mpx} \
+ $(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}$(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,15 +52,15 @@
&& 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 \
$(shell for h in \
README limits.h syslimits.h; \
@@ -62,7 +71,7 @@
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
endif
@@ -83,6 +92,59 @@
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_mpx),yes)
+ mv $(d)/$(usr_lib)/libmpx.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
@@ -102,12 +164,10 @@
$(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
@@ -116,40 +176,31 @@
$(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_mpx),yes)
- mv $(d)/$(usr_lib)/libmpx.spec $(d_gcc)/$(gcc_lib_dir)/
cp -p $(srcdir)/libmpx/ChangeLog \
$(d_gcc)/$(docdir)/$(p_xbase)/mpx/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; 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; do \
ln -sf $(cmd_prefix)$$i$(pkg_ver).1.gz \
$(d_gcc)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \
done
- endif
+else
+ echo '$(p_gcc) binary: binary-without-manpage' \
+ >> $(d_gcc)/usr/share/lintian/overrides/$(p_gcc)
+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)
@@ -169,28 +220,9 @@
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)
--- a/debian/rules2
+++ b/debian/rules2
@@ -1821,6 +1823,10 @@
pkg_ver := -$(BASE_VERSION)
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)
p_base = gcc$(pkg_ver)-base
@@ -1854,9 +1860,12 @@
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)
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)
Reply to: