Hello. > > Similar patches for 3.4 and 4.0 will follow in a few days. It took a bit longer than expected. At last, all 3 trees are in sync, and I'm ready to submit patches. > - please describe TARGETBD in debian/rules.defs Looks that rules.defs is not the correct place, rules.conf is better (at least, other similar thins, like LIBC_DEP, are set there). Moved. > - check that the native configuration still works. OK. Sorry for that issue, I applied a patch sent me by other person without proper checking. I will try to be more careful in future. At last I restored ability of 3.4 to buiild for all debian linux targets (except x86 on non-x86 host - which never worked yet), including ia64, where it cross-builds libunwind. This is currently done a bit hacky, because libunwind does not have proper support for cross-building, but works, and affects only rules.d/binary-libgcc-cross.mk (which is 100% not used for native builds). 4.0 does not currently build for powerpc and ia64 targets, and builds ok for others. I had to restore setting of --with-gxx-include-dir configure flag in debian/rules2 in 4.0 - looks that it was removed in error? If you really meant to remove it, the settings should be put in ifdef DEB_CROSS ... endif I also added ability to use debian/target file instead of GCC_TARGET variable - the request was from toolchain-source maintainer, who is going to convert toolchain-source to use gcc source package's cross-compiler build functionality :). I've tested native builds on x86 this time, using sbuild. 3.3 and 3.4 build ok. 4.0 failed somewhere in ada code, which does not look like cross-gcc related problem. Error was: ... gnatbind -C -I- -I. -Iada -I../../src/gcc/ada -o ada/b_gnatb.c ada/gnatbind.ali fatal error: file gnatbind.ali is incorrectly formatted make sure you are using consistent versions of gcc-3.3/gnatbind I've set up a private subversion repository to maintain cross-gcc trees, these patches are created using 'svn diff'. Patches are against packages currently in sid. Nikita
Index: debian/control.m4 =================================================================== --- debian/control.m4 (.../debian/3.3.5-5) (revision 46) +++ debian/control.m4 (.../3.3) (revision 46) @@ -10,7 +10,7 @@ dnl ifdef(`CV', , errexit(`CV')) dnl ifdef(`NV', , errexit(`NV')) dnl ifdef(`PV', , errexit(`PV')) -dnl ifdef(`ARCH', , errexit(`ARCH')) +dnl ifdef(`ARCH', , errexit(`ARCH')) dnl The architecture will also be defined (-D__i386__, -D__powerpc__, etc.) @@ -20,17 +20,6 @@ ') define(`MAINTAINER', `Debian GCC maintainers <debian-gcc@lists.debian.org>') -ifelse(TARGET, `sparc', ` -define(`TARGETBD', `, libc6-dev-sparc64-sparc-cross') -') -ifelse(TARGET, `s390', ` -define(`TARGETBD', `, libc6-dev-s390x-s390-cross') -') -ifelse(TARGET, `ia64', ` -define(`TARGETBD', `, libunwind7-dev-ia64-cross (>= 0.98.3-3)') -') -ifdef(`TARGETBD', , `') - define(`ifenabled', `ifelse(index(enabled_languages, `$1'), -1, `dnl', `$2')') divert`'dnl Index: debian/rules.defs =================================================================== --- debian/rules.defs (.../debian/3.3.5-5) (revision 46) +++ debian/rules.defs (.../3.3) (revision 46) @@ -18,6 +18,15 @@ DEB_HOST_GNU_SYSTEM := $(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM) DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +# allow debian/target to be used instead of GCC_TARGET - this was requested +# by toolchain-source maintainer +ifndef GCC_TARGET +DEBIAN_TARGET_FILE := $(strip $(shell cat debian/target 2>/dev/null)) +ifneq ($(DEBIAN_TARGET_FILE),) +GCC_TARGET := $(DEBIAN_TARGET_FILE) +endif +endif + DEB_TARGET_ARCH := $(shell dpkg-architecture -f \ -a$(GCC_TARGET) -qDEB_HOST_ARCH 2>/dev/null) DEB_TARGET_GNU_CPU := $(shell dpkg-architecture -f \ Index: debian/README.cross =================================================================== --- debian/README.cross (.../debian/3.3.5-5) (revision 46) +++ debian/README.cross (.../3.3) (revision 46) @@ -96,6 +96,10 @@ not GNU system type (i.e. 'powerpc-linux' or 'arm-linux'). Setting GCC_TARGET to GNU system type will cause cross-compiler build to fail. +Instead of setting GCC_TARGET, target architecture name may be put into +debian/target file. If both GCC_TARGET is defined and debian/target file +exists, GCC_TARGET is used. + Run debian/rules control. This will change debian/control file, adjusting build-depends. Index: debian/rules.conf =================================================================== --- debian/rules.conf (.../debian/3.3.5-5) (revision 46) +++ debian/rules.conf (.../3.3) (revision 46) @@ -123,8 +123,18 @@ -DLS=$(LS) ifdef DEB_CROSS + ifeq ($(DEB_TARGET_ARCH),sparc) + TARGETBD = , libc6-dev-sparc64-sparc-cross + endif + ifeq ($(DEB_TARGET_ARCH),s390) + TARGETBD = , libc6-dev-s390x-s390-cross + endif + ifeq ($(DEB_TARGET_ARCH),ia64) + TARGETBD = , libunwind7-dev-ia64-cross (>= 0.98.3-3) + endif ctrl_flags += \ - -DTARGET=$(DEB_TARGET_ARCH) + -DTARGET=$(DEB_TARGET_ARCH) \ + -DTARGETBD="$(TARGETBD)" else # XXX uncomment when 3.4 becomes the default compiler # ctrl_flags += \
Index: debian/cross-unwind/path_max.patch
===================================================================
--- debian/cross-unwind/path_max.patch (revision 0)
+++ debian/cross-unwind/path_max.patch (revision 46)
@@ -0,0 +1,21 @@
+--- src.orig/os-linux.h 2004-11-04 00:08:07.000000000 +0300
++++ src/os-linux.h 2005-01-04 22:56:46.000000000 +0300
+@@ -26,6 +26,8 @@
+ #ifndef os_linux_h
+ #define os_linux_h
+
++#include <linux/limits.h>
++
+ struct map_iterator
+ {
+ off_t offset;
+--- src.orig/ptrace/_UPT_find_proc_info.c 2004-11-04 00:08:07.000000000 +0300
++++ src/ptrace/_UPT_find_proc_info.c 2005-01-04 23:37:34.000000000 +0300
+@@ -35,6 +35,7 @@
+ #if UNW_TARGET_IA64
+
+ #include "elf64.h"
++#include <linux/limits.h>
+
+ static unw_word_t
+ find_gp (struct UPT_info *ui, Elf64_Phdr *pdyn, Elf64_Addr load_base)
Index: debian/cross-unwind/Gcursor_i.h
===================================================================
--- debian/cross-unwind/Gcursor_i.h (revision 0)
+++ debian/cross-unwind/Gcursor_i.h (revision 46)
@@ -0,0 +1,33 @@
+#ifndef cursor_i_h
+#define cursor_i_h
+
+/*
+ * DO NOT MODIFY
+ *
+ * This file was generated by ./a.out.
+ *
+ */
+
+#define IP_OFF 8 /* 0x8 */
+#define PR_OFF 24 /* 0x18 */
+#define BSP_OFF 32 /* 0x20 */
+#define PSP_OFF 48 /* 0x30 */
+#define PFS_LOC_OFF 152 /* 0x98 */
+#define RNAT_LOC_OFF 168 /* 0xa8 */
+#define UNAT_LOC_OFF 328 /* 0x148 */
+#define LC_LOC_OFF 360 /* 0x168 */
+#define FPSR_LOC_OFF 376 /* 0x178 */
+#define B1_LOC_OFF 392 /* 0x188 */
+#define B2_LOC_OFF 408 /* 0x198 */
+#define B3_LOC_OFF 424 /* 0x1a8 */
+#define B4_LOC_OFF 440 /* 0x1b8 */
+#define B5_LOC_OFF 456 /* 0x1c8 */
+#define F2_LOC_OFF 472 /* 0x1d8 */
+#define F3_LOC_OFF 488 /* 0x1e8 */
+#define F4_LOC_OFF 504 /* 0x1f8 */
+#define F5_LOC_OFF 520 /* 0x208 */
+#define FR_LOC_OFF 536 /* 0x218 */
+#define LOC_SIZE 16 /* 0x10 */
+#define SIGCONTEXT_ADDR_OFF 824 /* 0x338 */
+
+#endif /* cursor_i_h */
Index: debian/cross-unwind/Lcursor_i.h
===================================================================
--- debian/cross-unwind/Lcursor_i.h (revision 0)
+++ debian/cross-unwind/Lcursor_i.h (revision 46)
@@ -0,0 +1,33 @@
+#ifndef cursor_i_h
+#define cursor_i_h
+
+/*
+ * DO NOT MODIFY
+ *
+ * This file was generated by ./a.out.
+ *
+ */
+
+#define IP_OFF 8 /* 0x8 */
+#define PR_OFF 24 /* 0x18 */
+#define BSP_OFF 32 /* 0x20 */
+#define PSP_OFF 48 /* 0x30 */
+#define PFS_LOC_OFF 104 /* 0x68 */
+#define RNAT_LOC_OFF 112 /* 0x70 */
+#define UNAT_LOC_OFF 192 /* 0xc0 */
+#define LC_LOC_OFF 208 /* 0xd0 */
+#define FPSR_LOC_OFF 216 /* 0xd8 */
+#define B1_LOC_OFF 224 /* 0xe0 */
+#define B2_LOC_OFF 232 /* 0xe8 */
+#define B3_LOC_OFF 240 /* 0xf0 */
+#define B4_LOC_OFF 248 /* 0xf8 */
+#define B5_LOC_OFF 256 /* 0x100 */
+#define F2_LOC_OFF 264 /* 0x108 */
+#define F3_LOC_OFF 272 /* 0x110 */
+#define F4_LOC_OFF 280 /* 0x118 */
+#define F5_LOC_OFF 288 /* 0x120 */
+#define FR_LOC_OFF 296 /* 0x128 */
+#define LOC_SIZE 8 /* 0x8 */
+#define SIGCONTEXT_ADDR_OFF 456 /* 0x1c8 */
+
+#endif /* cursor_i_h */
Index: debian/cross-unwind/README
===================================================================
--- debian/cross-unwind/README (revision 0)
+++ debian/cross-unwind/README (revision 46)
@@ -0,0 +1,10 @@
+Files in this directory are used to cross-compile libunwind while building
+cross-gcc for ia64 target. Libunwind source can't cross-compile as-is because
+it builds tools to generate two header files that are used later in build
+process, and this procedure can't handle cross-compiling case properly.
+
+Fixing build procedure seems too hard because autotools don't seem to
+support this case.
+
+So, as a temporary solution, files are pre-built on ia64 host and provided
+in this directory.
Index: debian/rules.d/binary-libstdcxx-cross.mk
===================================================================
--- debian/rules.d/binary-libstdcxx-cross.mk (.../debian/3.4.3-6) (revision 46)
+++ debian/rules.d/binary-libstdcxx-cross.mk (.../3.4) (revision 46)
@@ -212,7 +212,7 @@
: # remove precompiled headers
-find $(d) -type d -name '*.gch' | xargs rm -rf
-ifeq ($(biarch),yes)
+ifeq ($(with_lib64cxx),yes)
mv $(d)/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib64/lib*c++*.a $(d)/$(gcc_lib_dir)/64/.
ln -sf ../../../../../lib64/libstdc++.so.$(CXX_SONAME) \
$(d)/$(gcc_lib_dir)/64/libstdc++.so
Index: debian/rules.d/binary-libgcc-cross.mk
===================================================================
--- debian/rules.d/binary-libgcc-cross.mk (.../debian/3.4.3-6) (revision 46)
+++ debian/rules.d/binary-libgcc-cross.mk (.../3.4) (revision 46)
@@ -23,7 +23,11 @@
endif
# ----------------------------------------------------------------------
+ifeq ($(DEB_TARGET_GNU_CPU),ia64)
+$(binary_stamp)-libgcc: $(install_dependencies) $(binary_stamp)-libunwind
+else
$(binary_stamp)-libgcc: $(install_dependencies)
+endif
dh_testdir
dh_testroot
mv $(install_stamp) $(install_stamp)-tmp
@@ -41,18 +45,30 @@
dh_installchangelogs -p$(p_lgcc)
debian/dh_rmemptydirs -p$(p_lgcc)
- PATH=/usr/share/dpkg-cross:$$PATH dh_strip -p$(p_lgcc)
- dh_compress -p$(p_lgcc)
- dh_fixperms -p$(p_lgcc)
ifeq ($(with_shared_libgcc),yes)
+ ifeq ($(DEB_TARGET_GNU_CPU),ia64)
+ cp -a $(PWD)/$(d)-unwind/usr/lib/libunwind.so.* $(d_lgcc)/usr/$(DEB_TARGET_GNU_TYPE)/lib/
+ dh_makeshlibs -p$(p_lgcc) -V '$(p_lgcc) (>= 1:3.4.3-6)' -n
+ sed s/$(cross_lib_arch)//g < debian/$(p_lgcc)/DEBIAN/shlibs > debian/$(p_lgcc)/DEBIAN/shlibs.fixed
+ mv debian/$(p_lgcc)/DEBIAN/shlibs.fixed debian/$(p_lgcc)/DEBIAN/shlibs
+ touch debian/$(p_lgcc).substvars
+ ARCH=$(DEB_TARGET_ARCH) MAKEFLAGS="CC=something" dh_shlibdeps -p$(p_lgcc) -Xlibgcc_s
+ sed 's/\(lib[^ ]*\) /\1$(cross_lib_arch) /g' < debian/$(p_lgcc).substvars > debian/$(p_lgcc).substvars.new
+ mv debian/$(p_lgcc).substvars.new debian/$(p_lgcc).substvars
+ else
dh_makeshlibs -p$(p_lgcc) -V '$(p_lgcc) (>= $(DEB_LIBGCC_SOVERSION))' -n
sed s/$(cross_lib_arch)//g < debian/$(p_lgcc)/DEBIAN/shlibs > debian/$(p_lgcc)/DEBIAN/shlibs.fixed
mv debian/$(p_lgcc)/DEBIAN/shlibs.fixed debian/$(p_lgcc)/DEBIAN/shlibs
- cat debian/$(p_lgcc)/DEBIAN/shlibs >> debian/shlibs.local
-endif
+ touch debian/$(p_lgcc).substvars
ARCH=$(DEB_TARGET_ARCH) MAKEFLAGS="CC=something" dh_shlibdeps -p$(p_lgcc)
sed 's/\(lib[^ ]*\) /\1$(cross_lib_arch) /g' < debian/$(p_lgcc).substvars > debian/$(p_lgcc).substvars.new
mv debian/$(p_lgcc).substvars.new debian/$(p_lgcc).substvars
+ endif
+ cat debian/$(p_lgcc)/DEBIAN/shlibs >> debian/shlibs.local
+endif
+ PATH=/usr/share/dpkg-cross:$$PATH dh_strip -p$(p_lgcc)
+ dh_compress -p$(p_lgcc)
+ dh_fixperms -p$(p_lgcc)
dh_gencontrol -p$(p_lgcc) -u-v$(DEB_LIBGCC_VERSION)
b=libgcc; v=$(GCC_SONAME); \
for ext in preinst postinst prerm postrm; do \
@@ -158,3 +174,40 @@
trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
# ----------------------------------------------------------------------
+
+unwind_dir = libunwind-0.98.3
+xxx: $(binary_stamp)-libunwind
+$(binary_stamp)-libunwind:
+ rm -rf $(unwind_dir).tar.gz $(unwind_dir) $(d)-unwind
+ uudecode libunwind.uue
+ tar xfz $(unwind_dir).tar.gz
+
+ : Below are several hacks to allow cross-build of libunwind unless
+ : related bugs both at unwind side and at gcc side are fixed
+
+ : Put pre-built Gcursor_i.h and Lcursor_i.h into src/ ...
+ cp debian/cross-unwind/[GL]cursor_i.h $(unwind_dir)/src/
+ touch $(unwind_dir)/src/[GL]cursor_i.h
+
+ : ... and avoid rebuilding of those files
+ sed 's/\(@[GL]cursor_i.h\):/\1DISABLE:/g' $(unwind_dir)/src/Makefile.in > $(unwind_dir)/src/Makefile.in.tmp
+ mv -f $(unwind_dir)/src/Makefile.in.tmp $(unwind_dir)/src/Makefile.in
+
+ : also, alter configure to disable REMOTE_ONLY mode of libunwind
+ : that is turned on with target!=build
+ : /manually checked that the following regexp affects only this/
+ sed 's/test x\$$target_arch != x\$$build_arch/false/g' $(unwind_dir)/configure > $(unwind_dir)/configure.tmp
+ mv $(unwind_dir)/configure.tmp $(unwind_dir)/configure
+ chmod 755 $(unwind_dir)/configure
+
+ : also, patch iseveral files to ensure PATH_MAX is defined
+ : /limits.h does not include it because of some problem/
+ cd $(unwind_dir)/src && patch -p1 < ../../debian/cross-unwind/path_max.patch
+
+ cd $(unwind_dir) && CC="$(PWD)/build/gcc/xgcc -B$(PWD)/build/gcc/" ./configure \
+ --build=$(DEB_BUILD_GNU_TYPE) \
+ --host=$(DEB_TARGET_GNU_TYPE) \
+ --prefix=/usr
+ $(MAKE) -C $(unwind_dir)
+ $(MAKE) -C $(unwind_dir) install DESTDIR=$(PWD)/$(d)-unwind
+ touch $(binary_stamp)-libunwind
Index: debian/control.m4
===================================================================
--- debian/control.m4 (.../debian/3.4.3-6) (revision 46)
+++ debian/control.m4 (.../3.4) (revision 46)
@@ -10,7 +10,7 @@
dnl ifdef(`CV', , errexit(`CV'))
dnl ifdef(`NV', , errexit(`NV'))
dnl ifdef(`PV', , errexit(`PV'))
-dnl ifdef(`ARCH', , errexit(`ARCH'))
+dnl ifdef(`ARCH', , errexit(`ARCH'))
dnl The architecture will also be defined (-D__i386__, -D__powerpc__, etc.)
@@ -19,14 +19,6 @@
define(`PRI', `$1')
')
define(`MAINTAINER', `Debian GCC maintainers <debian-gcc@lists.debian.org>')
-ifdef(`TARGET', `
- define(`LS', `-'TARGET`-cross')
- define(`BD64', `ifelse(TARGET, `sparc', `, libc6-dev-sparc64-sparc-cross',
- `ifelse(TARGET, `s390', `, libc6-dev-s390x-s390-cross')')')
-', `
- define(`TS')
- define(`LS')
-')
define(`ifenabled', `ifelse(index(enabled_languages, `$1'), -1, `dnl', `$2')')
@@ -39,7 +31,7 @@
Uploaders: Matthias Klose <doko@debian.org>, Gerhard Tonn <gt@debian.org>
Standards-Version: 3.6.1
ifdef(`TARGET',`dnl cross
-Build-Depends: LIBC_BUILD_DEP, m4, autoconf2.13, autoconf, automake1.4, automake1.7, libtool, autotools-dev, gawk, bzip2, dpkg-cross (>= 1.18.1), BINUTILS_BUILD_DEP, debhelper (>= 4.1), , bison (>= 1:1.875a-1) | bison (<< 1:1.50), flex`', realpath (>= 1.9.12)BD64
+Build-Depends: LIBC_BUILD_DEP, m4, autoconf2.13, autoconf, automake1.4, automake1.7, libtool, autotools-dev, gawk, bzip2, dpkg-cross (>= 1.18.1), BINUTILS_BUILD_DEP, debhelper (>= 4.1), bison (>= 1:1.875a-1) | bison (<< 1:1.50), flex, realpath (>= 1.9.12)`'TARGETBD
',`dnl native
Build-Depends: LIBC_BUILD_DEP, libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], amd64-libs-dev [i386], ia32-libs-dev [amd64], libunwind7-dev (>= 0.98.3-3) [ia64], libatomic-ops-dev [ia64], m4, autoconf2.13, autoconf, automake1.4, automake1.7, libtool, autotools-dev, gawk, dejagnu (>= 1.4.3) [check_no_archs], expect (>= 5.38.0) [check_no_archs], bzip2, BINUTILS_BUILD_DEP, binutils-hppa64 [hppa], debhelper (>= 4.1), gperf (>= 2.7-3), bison (>= 1:1.875a-1) | bison (<< 1:1.50), flex, gettext, texinfo (>= 4.3), zlib1g-dev, libgc-dev [libgc_no_archs], xlibs-dev, gnat-3.3 [ada_no_archs] | gnat-3.4 [ada_no_archs] | gnat [i386 powerpc sparc], libncurses5-dev [pascal_no_archs], libgmp3-dev, tetex-bin [pascal_no_archs], locales [locale_no_archs !hurd-i386], procps [check_no_archs], help2man [pascal_no_archs], sharutils, libgtk2.0-dev (>= 2.4.4-2) [java_no_archs], libart-2.0-dev [java_no_archs], g++-3.3 [!amd64], g77-3.3 [!amd64], gobjc-3.3 [!amd64], realpath (>= 1.9.12)
Build-Depends-Indep: doxygen (>= 1.3.9.1)
@@ -67,8 +59,8 @@
Priority: ifdef(`TARGET',`extra',required)
Depends: ${shlibs:Depends}
ifelse(ARCH,`ia64',`dnl
-Conflicts: libunwind7 (<< 0.98.3-2)
-Replaces: libunwind7 (<< 0.98.3-2)
+Conflicts: libunwind7`'LS (<< 0.98.3-2)
+Replaces: libunwind7`'LS (<< 0.98.3-2)
')`'dnl
Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `')
Shared version of the support library, a library of internal subroutines
@@ -131,8 +123,8 @@
Architecture: any
Section: devel
Priority: ifdef(`TARGET',`extra',`PRI(standard)')
-Depends: gcc`'PV-base (>= CV), libgcc`'GCC_SO`'LS (>= ifelse(GCC_SO,1,CEV,CV)), ${shlibs:Depends}, cpp`'PV`'TS (>= CV), cpp`'PV`'TS (<< NV), binutils`'TS (>= BINUTILSV)ifelse(ARCH,`ia64',`, libunwind7-dev (>= 0.98.3-3)')
-Recommends: ifdef(`TARGET',`libc6-dev`'LS | libc-dev`'LS',`LIBC_DEP')
+Depends: gcc`'PV-base (>= CV), libgcc`'GCC_SO`'LS (>= ifelse(GCC_SO,1,CEV,CV)), ${shlibs:Depends}, cpp`'PV`'TS (>= CV), cpp`'PV`'TS (<< NV), binutils`'TS (>= BINUTILSV)ifelse(ARCH,`ia64',`, libunwind7-dev`'LS (>= 0.98.3-3)')
+Recommends: LIBC_DEP
Conflicts: gcc-3.2`'TS (<= 1:3.2.3-0pre8)
Suggests: gcc`'PV-doc (>= CV)ifelse(ARCH,`i386',`, amd64-libs-dev',ARCH,`amd64',`, lib32gcc1')
Provides: c-compiler`'TS
@@ -533,11 +525,11 @@
environment.
')`'dnl
-Package: lib32stdc++6-0
-Architecture: any
-Section: libs
-Priority: optional
-Depends: gcc`'PV-base (>= CV), lib32gcc`'GCC_SO
+Package: lib32stdc++6-0`'LS
+Architecture: ifdef(`TARGET',`all',`any')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: gcc`'PV-base (>= CV), lib32gcc`'GCC_SO`'LS
Description: The GNU Standard C++ Library v3 (ia32)
This package contains an additional runtime library for C++ programs
built with the GNU compiler.
@@ -573,10 +565,8 @@
Architecture: ifdef(`TARGET',`all',`any')
Section: ifdef(`TARGET',`devel',`libdevel')
Priority: ifdef(`TARGET',`extra',PRI(standard))
-ifdef(`TARGET',`dnl cross
-Depends: gcc`'PV-base (>= CV), libstdc++CXX_SO`'LS (>= CV), libc6-dev`'LS, g++`'PV`'TS (>= CV)
-',`dnl native
-Depends: gcc`'PV-base (>= CV), libstdc++CXX_SO (>= CV), LIBC_DEP, g++`'PV (>= CV)
+Depends: gcc`'PV-base (>= CV), libstdc++CXX_SO`'LS (>= CV), LIBC_DEP, g++`'PV`'TS (>= CV)
+ifdef(`TARGET',`',`dnl
Conflicts: libg++27-dev, libg++272-dev (<< 2.7.2.8-1), libstdc++2.8-dev, libg++2.8-dev, libstdc++2.9-dev, libstdc++2.9-glibc2.1-dev, libstdc++2.10-dev (<< 1:2.95.3-2), libstdc++3.0-dev
Suggests: libstdc++CXX_SO-doc, stl-manual
')`'dnl native
@@ -599,10 +589,8 @@
Architecture: ifdef(`TARGET',`all',`amd64 arm')
Section: ifdef(`TARGET',`devel',`libdevel')
Priority: ifdef(`TARGET',`extra',PRI(standard))
-ifdef(`TARGET',`dnl cross
-Depends: gcc`'PV-base (>= CV), libstdc++6-0`'LS (>= CV), libc6-dev`'LS, g++`'PV`'TS (>= CV)
-',`dnl native
-Depends: gcc`'PV-base (>= CV), libstdc++6-0 (>= CV), LIBC_DEP, g++`'PV (>= CV)
+Depends: gcc`'PV-base (>= CV), libstdc++6-0`'LS (>= CV), LIBC_DEP, g++`'PV`'TS (>= CV)
+ifdef(`TARGET',`',`dnl native
Conflicts: libg++27-dev, libg++272-dev (<< 2.7.2.8-1), libstdc++2.8-dev, libg++2.8-dev, libstdc++2.9-dev, libstdc++2.9-glibc2.1-dev, libstdc++2.10-dev (<< 1:2.95.3-2), libstdc++3.0-dev, libstdc++6-dev (<< 3.4.1-2)
Suggests: libstdc++CXX_SO-doc, stl-manual
')`'dnl native
Index: debian/rules.defs
===================================================================
--- debian/rules.defs (.../debian/3.4.3-6) (revision 46)
+++ debian/rules.defs (.../3.4) (revision 46)
@@ -21,6 +21,15 @@
DEB_HOST_GNU_SYSTEM := $(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM)
DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+# allow debian/target to be used instead of GCC_TARGET - this was requested
+# by toolchain-source maintainer
+ifndef GCC_TARGET
+DEBIAN_TARGET_FILE := $(strip $(shell cat debian/target 2>/dev/null))
+ifneq ($(DEBIAN_TARGET_FILE),)
+GCC_TARGET := $(DEBIAN_TARGET_FILE)
+endif
+endif
+
DEB_TARGET_ARCH := $(shell dpkg-architecture -f \
-a$(GCC_TARGET) -qDEB_HOST_ARCH 2>/dev/null)
DEB_TARGET_GNU_CPU := $(shell dpkg-architecture -f \
@@ -46,9 +55,12 @@
# names (e.g. powerpc-linux-gcc).
# TS: Target Suffix. Used primarily at the end of cross compiler
# package names (e.g. gcc-powerpc).
+ # LS: Library Suffix. Used primarily at the end of cross compiler
+ # library package names (e.g. libgcc-powerpc-cross).
+ DEB_TARGET_ALIAS ?= $(DEB_TARGET_GNU_TYPE)
TP = $(DEB_TARGET_GNU_TYPE)-
- DEB_TARGET_ALIAS ?= $(DEB_TARGET_GNU_TYPE)
TS = -$(DEB_TARGET_ALIAS)
+ LS = -$(DEB_TARGET_ARCH)-cross
endif
ifeq ($(DEB_CROSS),yes)
Index: debian/README.cross
===================================================================
--- debian/README.cross (.../debian/3.4.3-6) (revision 46)
+++ debian/README.cross (.../3.4) (revision 46)
@@ -96,6 +96,10 @@
not GNU system type (i.e. 'powerpc-linux' or 'arm-linux'). Setting GCC_TARGET
to GNU system type will cause cross-compiler build to fail.
+Instead of setting GCC_TARGET, target architecture name may be put into
+debian/target file. If both GCC_TARGET is defined and debian/target file
+exists, GCC_TARGET is used.
+
Run debian/rules control. This will change debian/control file, adjusting
build-depends.
Index: debian/rules.conf
===================================================================
--- debian/rules.conf (.../debian/3.4.3-6) (revision 46)
+++ debian/rules.conf (.../3.4) (revision 46)
@@ -12,7 +12,7 @@
# various platforms in INSTALL/specific.html) ).
BINUTILSV = 2.15-5
ifdef DEB_CROSS
- BINUTILS_BUILD_DEP = binutils-$(DEB_TARGET_GNU_TYPE)
+ BINUTILS_BUILD_DEP = binutils$(TS) (>= $(BINUTILSV))
else
BINUTILS_BUILD_DEP = binutils (>= $(BINUTILSV)) | binutils-multiarch (>= $(BINUTILSV))
endif
@@ -21,25 +21,33 @@
libc_ver := 2.3.2.ds1-16
ifeq ($(DEB_TARGET_GNU_SYSTEM),linux)
ifeq ($(DEB_TARGET_GNU_CPU), $(findstring $(DEB_TARGET_GNU_CPU),alpha ia64))
- LIBC_DEP = libc6.1-dev (>= $(libc_ver))
+ LIBC_DEP = libc6.1-dev$(LS) (>= $(libc_ver))
else
- LIBC_DEP = libc6-dev (>= $(libc_ver))
+ LIBC_DEP = libc6-dev$(LS) (>= $(libc_ver))
endif
endif
ifeq ($(DEB_TARGET_GNU_SYSTEM),gnu)
- LIBC_DEP = libc0.3-dev
+ LIBC_DEP = libc0.3-dev$(LS)
endif
ifeq ($(DEB_TARGET_GNU_SYSTEM),kfreebsd-gnu)
- LIBC_DEP = libc0.1-dev
+ LIBC_DEP = libc0.1-dev$(LS)
endif
ifeq ($(DEB_TARGET_GNU_SYSTEM),knetbsd-gnu)
- LIBC_DEP = libc0.1-dev
+ LIBC_DEP = libc0.1-dev$(LS)
endif
ifeq ($(DEB_TARGET_GNU_SYSTEM),netbsd-elf-gnu)
- LIBC_DEP = libc12-dev
+ LIBC_DEP = libc12-dev$(LS)
endif
+
+ifndef DEB_CROSS
LIBC_BUILD_DEP = libc6.1-dev (>= $(libc_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_ver)) | libc0.1-dev (>= $(libc_ver)) | libc12-dev (>= $(libc_ver)) | libc6-dev (>= $(libc_ver))
+else
+# When building a cross compiler, the libc-dev build dependancy must be
+# sensitive to the target architecture; the host architecture is irrelevant.
+LIBC_BUILD_DEP = $(LIBC_DEP)
+endif
+
SOURCE_VERSION := $(shell dpkg-parsechangelog | awk '/^Version:/ {print $$NF}')
DEB_VERSION := $(shell echo $(SOURCE_VERSION) \
| sed -e 's/.*://' -e 's/ds[0-9]*//')
@@ -142,14 +150,24 @@
ctrl_flags += \
-DLIBC_DEP="$(LIBC_DEP)" \
-DBINUTILS_BUILD_DEP="$(BINUTILS_BUILD_DEP)" \
- -DLIBC_BUILD_DEP="$(LIBC_BUILD_DEP)"
+ -DLIBC_BUILD_DEP="$(LIBC_BUILD_DEP)" \
+ -DTP=$(TP) \
+ -DTS=$(TS) \
+ -DLS=$(LS)
ifdef DEB_CROSS
+ ifeq ($(DEB_TARGET_ARCH),sparc)
+ TARGETBD = , libc6-dev-sparc64-sparc-cross
+ endif
+ ifeq ($(DEB_TARGET_ARCH),s390)
+ TARGETBD = , libc6-dev-s390x-s390-cross
+ endif
+ ifeq ($(DEB_TARGET_ARCH),ia64)
+ TARGETBD = , libunwind7-dev-ia64-cross (>= 0.98.3-3), libatomic-ops-dev-ia64-cross
+ endif
ctrl_flags += \
-DTARGET=$(DEB_TARGET_ARCH) \
- -DTP=$(TP) \
- -DTS=$(TS) \
- -DPRI=optional
+ -DTARGETBD="$(TARGETBD)"
else
# XXX change when 3.4 becomes the default compiler
ctrl_flags += \
Index: debian/rules2
===================================================================
--- debian/rules2 (.../debian/4.0ds1-0pre2) (revision 46)
+++ debian/rules2 (.../4.0) (revision 46)
@@ -82,6 +82,7 @@
--enable-languages=$(shell echo $(enabled_languages) | tr -s ' ' ',') \
--prefix=/$(PF) \
--libexecdir=/$(libexecdir) \
+ --with-gxx-include-dir=/$(cxx_inc_dir) \
--enable-shared \
--with-system-zlib \
--enable-nls \
@@ -911,9 +912,11 @@
include debian/rules.d/binary-libstdcxx-cross.mk
endif
-#ifeq ($(DEB_TARGET_GNU_CPU),powerpc)
-# include debian/rules.d/binary-nof-cross.mk
-#endif
+ifneq ($(with_libnof),yes)
+ ifeq ($(DEB_TARGET_GNU_CPU),powerpc)
+ include debian/rules.d/binary-nof-cross.mk
+ endif
+endif
ifeq ($(with_cdev),yes)
include debian/rules.d/binary-gcc-cross.mk
Index: debian/control.m4
===================================================================
--- debian/control.m4 (.../debian/4.0ds1-0pre2) (revision 46)
+++ debian/control.m4 (.../4.0) (revision 46)
@@ -19,14 +19,6 @@
define(`PRI', `$1')
')
define(`MAINTAINER', `Debian GCC maintainers <debian-gcc@lists.debian.org>')
-ifdef(`TARGET', `
- define(`LS', `-'TARGET`-cross')
- define(`BD64', `ifelse(TARGET, `sparc', `, libc6-dev-sparc64-sparc-cross',
- `ifelse(TARGET, `s390', `, libc6-dev-s390x-s390-cross')')')
-', `
- define(`TS')
- define(`LS')
-')
define(`ifenabled', `ifelse(index(enabled_languages, `$1'), -1, `dnl', `$2')')
@@ -39,10 +31,10 @@
Uploaders: Matthias Klose <doko@debian.org>
Standards-Version: 3.6.1
ifdef(`TARGET',`dnl cross
-Build-Depends: LIBC_BUILD_DEP, m4, autoconf, automake1.9, libtool, autotools-dev, autogen, gawk, bzip2, dpkg-cross (>= 1.18.1), BINUTILS_BUILD_DEP, debhelper (>= 4.1), bison (>= 1:1.875a-1) | bison (<< 1:1.50), flex, realpath (>= 1.9.12), chrpath`'BD64
+Build-Depends: LIBC_BUILD_DEP, m4, autoconf, automake1.9, libtool, autotools-dev, autogen, gawk, bzip2, dpkg-cross (>= 1.18.1), BINUTILS_BUILD_DEP, debhelper (>= 4.1), bison (>= 1:1.875a-1) | bison (<< 1:1.50), flex, realpath (>= 1.9.12)`'TARGETBD
',`dnl native
Build-Depends: LIBC_BUILD_DEP, libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], amd64-libs-dev [i386], ia32-libs-dev [amd64], libunwind7-dev [ia64], m4, autoconf, automake1.9, libtool, autogen, gawk, dejagnu (>= 1.4.3) [check_no_archs], expect (>= 5.38.0) [check_no_archs], bzip2, BINUTILS_BUILD_DEP, binutils-hppa64 [hppa], debhelper (>= 4.1), gperf (>= 2.7-3), bison (>= 1:1.875a-1), flex, gettext, texinfo (>= 4.3), zlib1g-dev, libgc-dev [libgc_no_archs], xlibs-dev, gnat-3.3 [ada_no_archs] | gnat-3.4 [ada_no_archs], libncurses5-dev [pascal_no_archs], libmpfr-dev | libgmp3-dev (<< 4.1.4-3), tetex-bin [pascal_no_archs], locales [locale_no_archs], procps [linux_gnu_archs], help2man [pascal_no_archs], sharutils, libgtk2.0-dev [java_no_archs], libart-2.0-dev [java_no_archs], g++-3.4, gobjc-3.4, type-handling (>= 0.2.1), realpath (>= 1.9.12), chrpath
-Build-Depends-Indep: doxygen (>= 1.3.9.1)
+Build-Depends-Indep: doxygen (>= 1.3.7)
')dnl
ifdef(`TARGET', `', `
@@ -129,8 +121,8 @@
Architecture: any
Section: devel
Priority: ifdef(`TARGET',`extra',`PRI(standard)')
-Depends: gcc`'PV-base (>= CV), libgcc`'GCC_SO`'LS (>= ifelse(GCC_SO,1,CEV,CV)), ${shlibs:Depends}, cpp`'PV`'TS (>= CV), cpp`'PV`'TS (<< NV), binutils`'TS (>= BINUTILSV)ifelse(ARCH,`ia64',`, libunwind7-dev')
-Recommends: ifdef(`TARGET',`libc6-dev`'LS | libc-dev`'LS',`LIBC_DEP'), libmudflap`'MF_SO-dev (>= CV)
+Depends: gcc`'PV-base (>= CV), libgcc`'GCC_SO`'LS (>= ifelse(GCC_SO,1,CEV,CV)), ${shlibs:Depends}, cpp`'PV`'TS (>= CV), cpp`'PV`'TS (<< NV), binutils`'TS (>= BINUTILSV)ifelse(ARCH,`ia64',`, libunwind7-dev`'LS')
+Recommends: LIBC_DEP, libmudflap`'MF_SO-dev`'LS (>= CV)
Conflicts: gcc-3.2`'TS (<= 1:3.2.3-0pre8), gcc-3.5
Replaces: gcc-3.5
Suggests: gcc`'PV-doc (>= CV)ifelse(ARCH,`i386',`, amd64-libs-dev',ARCH,`amd64',`, lib32gcc1')
@@ -552,10 +544,8 @@
Architecture: ifdef(`TARGET',`all',`any')
Section: ifdef(`TARGET',`devel',`libdevel')
Priority: ifdef(`TARGET',`extra',PRI(standard))
-ifdef(`TARGET',`dnl cross
-Depends: gcc`'PV-base (>= CV), libstdc++CXX_SO`'LS (>= CV), libc6-dev`'LS, g++`'PV`'TS (>= CV)
-',`dnl native
-Depends: gcc`'PV-base (>= CV), libstdc++CXX_SO (>= CV), LIBC_DEP, g++`'PV (>= CV)
+Depends: gcc`'PV-base (>= CV), libstdc++CXX_SO`'LS (>= CV), LIBC_DEP, g++`'PV`'TS (>= CV)
+ifdef(`TARGET',`',`dnl native
Conflicts: libg++27-dev, libg++272-dev (<< 2.7.2.8-1), libstdc++2.8-dev, libg++2.8-dev, libstdc++2.9-dev, libstdc++2.9-glibc2.1-dev, libstdc++2.10-dev (<< 1:2.95.3-2), libstdc++3.0-dev
Suggests: libstdc++CXX_SO`'PV-doc, stl-manual
')`'dnl native
Index: debian/rules.defs
===================================================================
--- debian/rules.defs (.../debian/4.0ds1-0pre2) (revision 46)
+++ debian/rules.defs (.../4.0) (revision 46)
@@ -18,6 +18,15 @@
DEB_HOST_GNU_SYSTEM := $(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM)
DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+# allow debian/target to be used instead of GCC_TARGET - this was requested
+# by toolchain-source maintainer
+ifndef GCC_TARGET
+DEBIAN_TARGET_FILE := $(strip $(shell cat debian/target 2>/dev/null))
+ifneq ($(DEBIAN_TARGET_FILE),)
+GCC_TARGET := $(DEBIAN_TARGET_FILE)
+endif
+endif
+
DEB_TARGET_ARCH := $(shell dpkg-architecture -f \
-a$(GCC_TARGET) -qDEB_HOST_ARCH 2>/dev/null)
DEB_TARGET_GNU_CPU := $(shell dpkg-architecture -f \
@@ -43,9 +52,12 @@
# names (e.g. powerpc-linux-gcc).
# TS: Target Suffix. Used primarily at the end of cross compiler
# package names (e.g. gcc-powerpc).
+ # LS: Library Suffix. Used primarily at the end of cross compiler
+ # library package names (e.g. libgcc-powerpc-cross).
+ DEB_TARGET_ALIAS ?= $(DEB_TARGET_GNU_TYPE)
TP = $(DEB_TARGET_GNU_TYPE)-
- DEB_TARGET_ALIAS ?= $(DEB_TARGET_GNU_TYPE)
TS = -$(DEB_TARGET_ALIAS)
+ LS = -$(DEB_TARGET_ARCH)-cross
endif
ifeq ($(DEB_CROSS),yes)
Index: debian/README.cross
===================================================================
--- debian/README.cross (.../debian/4.0ds1-0pre2) (revision 46)
+++ debian/README.cross (.../4.0) (revision 46)
@@ -96,6 +96,10 @@
not GNU system type (i.e. 'powerpc-linux' or 'arm-linux'). Setting GCC_TARGET
to GNU system type will cause cross-compiler build to fail.
+Instead of setting GCC_TARGET, target architecture name may be put into
+debian/target file. If both GCC_TARGET is defined and debian/target file
+exists, GCC_TARGET is used.
+
Run debian/rules control. This will change debian/control file, adjusting
build-depends.
Index: debian/rules.conf
===================================================================
--- debian/rules.conf (.../debian/4.0ds1-0pre2) (revision 46)
+++ debian/rules.conf (.../4.0) (revision 46)
@@ -12,7 +12,7 @@
# various platforms in INSTALL/specific.html) ).
BINUTILSV = 2.15-5
ifdef DEB_CROSS
- BINUTILS_BUILD_DEP = binutils-$(DEB_TARGET_GNU_TYPE) (>= $(BINUTILSV))
+ BINUTILS_BUILD_DEP = binutils$(TS) (>= $(BINUTILSV))
else
BINUTILS_BUILD_DEP = binutils (>= $(BINUTILSV)) | binutils-multiarch (>= $(BINUTILSV))
endif
@@ -21,24 +21,31 @@
libc_ver := 2.3.2.ds1-19
ifeq ($(DEB_TARGET_GNU_SYSTEM),linux)
ifeq ($(DEB_TARGET_GNU_CPU), $(findstring $(DEB_TARGET_GNU_CPU),alpha ia64))
- LIBC_DEP = libc6.1-dev (>= $(libc_ver))
+ LIBC_DEP = libc6.1-dev$(LS) (>= $(libc_ver))
else
- LIBC_DEP = libc6-dev (>= $(libc_ver))
+ LIBC_DEP = libc6-dev$(LS) (>= $(libc_ver))
endif
endif
ifeq ($(DEB_TARGET_GNU_SYSTEM),gnu)
- LIBC_DEP = libc0.3-dev
+ LIBC_DEP = libc0.3-dev$(LS)
endif
ifeq ($(DEB_TARGET_GNU_SYSTEM),kfreebsd-gnu)
- LIBC_DEP = libc0.1-dev
+ LIBC_DEP = libc0.1-dev$(LS)
endif
ifeq ($(DEB_TARGET_GNU_SYSTEM),knetbsd-gnu)
- LIBC_DEP = libc0.1-dev
+ LIBC_DEP = libc0.1-dev$(LS)
endif
ifeq ($(DEB_TARGET_GNU_SYSTEM),netbsd-elf-gnu)
- LIBC_DEP = libc12-dev
+ LIBC_DEP = libc12-dev$(LS)
endif
+
+ifndef DEB_CROSS
LIBC_BUILD_DEP = libc6.1-dev (>= $(libc_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_ver)) | libc0.1-dev | libc12-dev (>= $(libc_ver)) | libc6-dev (>= $(libc_ver))
+else
+# When building a cross compiler, the libc-dev build dependancy must be
+# sensitive to the target architecture; the host architecture is irrelevant.
+LIBC_BUILD_DEP = $(LIBC_DEP)
+endif
SOURCE_VERSION := $(shell dpkg-parsechangelog | awk '/^Version:/ {print $$NF}')
DEB_VERSION := $(shell echo $(SOURCE_VERSION) \
@@ -133,14 +140,24 @@
ctrl_flags += \
-DLIBC_DEP="$(LIBC_DEP)" \
-DBINUTILS_BUILD_DEP="$(BINUTILS_BUILD_DEP)" \
- -DLIBC_BUILD_DEP="$(LIBC_BUILD_DEP)"
+ -DLIBC_BUILD_DEP="$(LIBC_BUILD_DEP)" \
+ -DTP=$(TP) \
+ -DTS=$(TS) \
+ -DLS=$(LS)
ifdef DEB_CROSS
+ ifeq ($(DEB_TARGET_ARCH),sparc)
+ TARGETBD = , libc6-dev-sparc64-sparc-cross
+ endif
+ ifeq ($(DEB_TARGET_ARCH),s390)
+ TARGETBD = , libc6-dev-s390x-s390-cross
+ endif
+ ifeq ($(DEB_TARGET_ARCH),ia64)
+ TARGETBD = , libunwind7-dev-ia64-cross
+ endif
ctrl_flags += \
-DTARGET=$(DEB_TARGET_ARCH) \
- -DTP=$(TP) \
- -DTS=$(TS) \
- -DPRI=optional
+ -DTARGETBD="$(TARGETBD)"
else
# XXX change when 4.0 becomes the default compiler
ctrl_flags += \
Attachment:
pgpuD7q2fp3Ej.pgp
Description: PGP signature