I think this is ready for inclusion. Nobody complained during my
holiday, and I'm quite happy with it.

There's more work to be done in order to build GtkAda and others, but
I'm looking for OKs on this diff first:

(note: PARALLEL_INSTALL=No, the gnat part can't handle it)

Index: 4.2/Makefile
===================================================================
RCS file: /home/vcs/cvs/openbsd/ports/lang/gcc/4.2/Makefile,v
retrieving revision 1.86
diff -u -p -r1.86 Makefile
--- 4.2/Makefile        7 Oct 2012 20:09:44 -0000       1.86
+++ 4.2/Makefile        4 Nov 2012 19:43:18 -0000
@@ -7,10 +7,13 @@ DPB_PROPERTIES = parallel
 V = 4.2.4
 FULL_VERSION = $V
 FULL_PKGVERSION = $V
-BOOTSTRAP_GEN = 5
-# XXX adastrap bundles libc.so.60.1 (from OpenBSD 5.0) to build on i386
-LIBC_VERSION = 60.1
-ADASTRAP = adastrap-i386-$V-${BOOTSTRAP_GEN}.tgz
+
+ADASTRAP_LIBC-i386 = 60.1
+ADASTRAP-i386 = adastrap-i386-$V-5.tgz
+ADASTRAP_LIBC-amd64 = 66.0
+ADASTRAP-amd64 = adastrap-amd64-$V-1.tgz
+ADASTRAP_LIBC-sparc64 = 66.0
+ADASTRAP-sparc64 = adastrap-sparc64-$V-1.tgz
 
 PKGNAME-main =  gcc-${FULL_PKGVERSION}
 PKGNAME-c++ =   g++-${FULL_PKGVERSION}
@@ -20,13 +23,13 @@ PKGNAME-java =  gcj-${FULL_PKGVERSION}
 PKGNAME-objc =  gobjc-${FULL_PKGVERSION}
 PKGNAME-ada =   gnat-${FULL_PKGVERSION}
 
-REVISION-main = 13
+REVISION-main = 14
 REVISION-c++ = 17
 REVISION-estdc = 5
 REVISION-f95 = 15
 REVISION-java = 15
 REVISION-objc = 14
-REVISION-ada = 11
+REVISION-ada = 12
 EPOCH = 0
 
 SHARED_LIBS =  estdc++         13.0 \
@@ -48,7 +51,7 @@ USE_GROFF =   Yes
 PSEUDO_FLAVORS = no_c++ no_f95 no_objc no_java no_ada full
 FLAVOR ?= 
 
-ONLY_FOR_ARCHS-ada = i386
+ONLY_FOR_ARCHS-ada = i386 amd64 sparc64
 ONLY_FOR_ARCHS-java = amd64 sparc64 i386
 
 MULTI_PACKAGES = -main -f95 -objc -java -c++ -estdc -ada
@@ -61,7 +64,7 @@ BUILD_PACKAGES := ${BUILD_PACKAGES:N-est
 .endif
 
 DISTFILES =  ${DISTNAME}.tar.bz2
-SUPDISTFILES = ${ADASTRAP}:0
+SUPDISTFILES = ${ADASTRAP-i386}:0 ${ADASTRAP-amd64}:0 ${ADASTRAP-sparc64}:0
 
 BUILD_DEPENDS += devel/autoconf/2.59
 BUILD_DEPENDS += devel/metaauto
@@ -101,7 +104,7 @@ CONFIGURE_ARGS += --enable-libgcj
 .endif
 .if ${BUILD_PACKAGES:M-ada}
 LANGS := ${LANGS},ada
-DISTFILES += ${ADASTRAP}:0
+DISTFILES += ${ADASTRAP-${MACHINE_ARCH}}:0
 CONFIGURE_ENV = ADAC=${WRKDIR}/bin/egcc GNATBIND=${WRKDIR}/bin/gnatbind
 MAKE_ENV = ADAC=${WRKDIR}/bin/egcc GNATBIND=${WRKDIR}/bin/gnatbind
 CC = ${WRKDIR}/bin/egcc
@@ -119,9 +122,6 @@ post-extract:
 .for l v in ${SHARED_LIBS}
        echo "LIB$l_LTVERSION = -version-info ${v:S/./:/}" >> 
${WRKSRC}/libversions
 .endfor
-.if ${BUILD_PACKAGES:M-ada}
-       ${WRKDIR}/bin/egcc -v # if this fails, you must extract suitable 
libraries from the relevant OpenBSD release or use the no_ada FLAVOR.
-.endif
 
 post-install:
 .if ${BUILD_PACKAGES:M-ada}
@@ -159,8 +159,8 @@ CONFIGURE_ARGS += \
 # visible beast
 CONFIGURE_ARGS += --enable-cpp
 
-CONFIGURE_ARGS += --with-gnu-as 
-CONFIGURE_ARGS += --with-gnu-ld 
+CONFIGURE_ARGS += --with-gnu-as
+CONFIGURE_ARGS += --with-gnu-ld
 CONFIGURE_ARGS += ${CONFIGURE_SHARED}
 
 post-patch:
@@ -208,6 +208,7 @@ RUN_DEPENDS-java =  archivers/unzip \
                        archivers/zip>=2.3p0
 
 RUN_DEPENDS-c++ =      ${RUN_DEPENDS} 
libstdc++->=4.2,<4.3|libstdc++->=4.2v0,<4.3v0:${BUILD_PKGPATH},-estdc
+RUN_DEPENDS-ada =      ${FULLPKGNAME-main}:${BUILD_PKGPATH}
 WANTLIB-estdc =                m
 WANTLIB-java =         c m pthread z
 
@@ -216,19 +217,26 @@ LIB_DEPENDS-f95 = devel/gmp>=4.2 \
 WANTLIB-f95 =          ${WANTLIB} gmp mpfr
 .include <bsd.port.mk>
 
-ADA_PACKAGE = ${PACKAGE_REPOSITORY}/i386/all/${PKGNAME-ada}${PKG_SUFX}
-GCC_PACKAGE = ${PACKAGE_REPOSITORY}/i386/all/${PKGNAME-main}${PKG_SUFX}
+ADA_PACKAGE = ${PACKAGE_REPOSITORY}/${MACHINE_ARCH}/all/${FULLPKGNAME-ada}.tgz
+GCC_PACKAGE = ${PACKAGE_REPOSITORY}/${MACHINE_ARCH}/all/${FULLPKGNAME-main}.tgz
 
 adastrap: ${ADA_PACKAGE} ${GCC_PACKAGE}
-.if !defined(LIBC_VERSION)
+.if !defined(ADASTRAP_LIBC-${MACHINE_ARCH})
        @echo 1>&2 "Error: you must specify a libc to bundle"
        @exit 1
 .else
        mkdir -p ${WRKDIR}/prepare/bootstrap/system-libs
-       cp /usr/lib/libc.so.${LIBC_VERSION} 
${WRKDIR}/prepare/bootstrap/system-libs
+       cp /usr/lib/libc.so.${ADASTRAP_LIBC-${MACHINE_ARCH}} \
+               ${WRKDIR}/prepare/bootstrap/system-libs
        cd ${WRKDIR}/prepare/bootstrap && tar zxf ${ADA_PACKAGE}
        cd ${WRKDIR}/prepare/bootstrap && tar zxf ${GCC_PACKAGE}
        rm -rf ${WRKDIR}/prepare/bootstrap/{+*,info,man}
-       cd ${WRKDIR}/prepare && tar zcf ${FULLDISTDIR}/${ADASTRAP} bootstrap
+       if ! ldd ${WRKDIR}/prepare/bootstrap/bin/egcc | \
+               fgrep libc.so.${ADASTRAP_LIBC-${MACHINE_ARCH}} >/dev/null; then 
\
+               echo 1>&2 "Error: adastrap egcc linked against wrong libc"; \
+               exit 1; \
+       fi
+       cd ${WRKDIR}/prepare && \
+               tar zcf ${FULLDISTDIR}/${ADASTRAP-${MACHINE_ARCH}} bootstrap
 .endif
 
Index: 4.2/distinfo
===================================================================
RCS file: /home/vcs/cvs/openbsd/ports/lang/gcc/4.2/distinfo,v
retrieving revision 1.13
diff -u -p -r1.13 distinfo
--- 4.2/distinfo        23 Jan 2012 14:59:57 -0000      1.13
+++ 4.2/distinfo        4 Nov 2012 19:43:18 -0000
@@ -1,10 +1,8 @@
-MD5 (gcc/adastrap-i386-4.2.4-5.tgz) = P7bTVwwZUV8a04KxGkc74g==
-MD5 (gcc/gcc-4.2.4.tar.bz2) = 159VPnkW6iHFVjKerP6qFg==
-RMD160 (gcc/adastrap-i386-4.2.4-5.tgz) = dPxzQN5ZpqXvCb9HcsIA+TrdccA=
-RMD160 (gcc/gcc-4.2.4.tar.bz2) = FXk9crQ8gagK/KCNAxw40RC2ybY=
-SHA1 (gcc/adastrap-i386-4.2.4-5.tgz) = HBjIhRuB5xYiawoo6YrX3LrmLio=
-SHA1 (gcc/gcc-4.2.4.tar.bz2) = uyDvx3UP4NYXLFlFVyvwNv5Z090=
+SHA256 (gcc/adastrap-amd64-4.2.4-1.tgz) = 
rtUtnfFB451plXgoL3zohSNv8KG/f3HT5oUqwXWf73s=
 SHA256 (gcc/adastrap-i386-4.2.4-5.tgz) = 
yaKlqYwZBSgc4aHnJI82CncwnMbC3UWzqr3NWEQWWKs=
+SHA256 (gcc/adastrap-sparc64-4.2.4-1.tgz) = 
God5qMDJK77QhAOIFYsUu8DKTE3YOw2XA2+4Xuzft04=
 SHA256 (gcc/gcc-4.2.4.tar.bz2) = r7qEXi04VHpjvTl26QJFyB6hdnhvnmlmM5xtN2HxEzo=
+SIZE (gcc/adastrap-amd64-4.2.4-1.tgz) = 39976611
 SIZE (gcc/adastrap-i386-4.2.4-5.tgz) = 40647378
+SIZE (gcc/adastrap-sparc64-4.2.4-1.tgz) = 39261588
 SIZE (gcc/gcc-4.2.4.tar.bz2) = 44025458
Index: 4.6/Makefile
===================================================================
RCS file: /home/vcs/cvs/openbsd/ports/lang/gcc/4.6/Makefile,v
retrieving revision 1.39
diff -u -p -r1.39 Makefile
--- 4.6/Makefile        17 Oct 2012 19:58:21 -0000      1.39
+++ 4.6/Makefile        4 Nov 2012 19:43:18 -0000
@@ -6,9 +6,13 @@ DPB_PROPERTIES = parallel
 V = 4.6.3
 FULL_VERSION = $V
 FULL_PKGVERSION = $V
-BOOTSTRAP_GEN = 0
-LIBC_VERSION = 63.0
-ADASTRAP = adastrap-i386-$V-${BOOTSTRAP_GEN}.tar.xz
+
+ADASTRAP_LIBC-i386 = 63.0
+ADASTRAP-i386 = adastrap-i386-$V-0.tar.xz
+ADASTRAP_LIBC-amd64 = 66.0
+ADASTRAP-amd64 = adastrap-amd64-$V-0.tar.xz
+ADASTRAP_LIBC-sparc64 = 66.0
+ADASTRAP-sparc64 = adastrap-sparc64-$V-0.tar.xz
 
 PKGNAME-main =  gcc-${FULL_PKGVERSION}
 PKGNAME-c++ =   g++-${FULL_PKGVERSION}
@@ -20,13 +24,13 @@ PKGNAME-ada =   gnat-${FULL_PKGVERSION}
 PKGNAME-go =   gccgo-${FULL_PKGVERSION}
 PKGSPEC-main = gcc->=4.6,<4.7
 
-REVISION-main = 12
+REVISION-main = 13
 REVISION-c++ = 12
 REVISION-estdc = 10
 REVISION-f95 = 12
 REVISION-java = 13
 REVISION-objc = 12
-REVISION-ada = 12
+REVISION-ada = 13
 REVISION-go = 12
 
 SHARED_LIBS =  estdc++         14.0 \
@@ -43,7 +47,7 @@ SHARED_LIBS = estdc++         14.0 \
 PSEUDO_FLAVORS = no_c++ no_f95 no_objc no_java no_ada no_go full
 FLAVOR ?= 
 
-ONLY_FOR_ARCHS-ada = i386
+ONLY_FOR_ARCHS-ada = i386 amd64 sparc64
 ONLY_FOR_ARCHS-java = amd64 i386 sparc64
 
 MULTI_PACKAGES = -main -f95 -objc -java -c++ -estdc -ada -go
@@ -59,7 +63,8 @@ DISTNAME =    gcc-${FULL_VERSION}
 DISTFILES =    ${DISTNAME}.tar.bz2
 # there's no ecj-4.6.jar
 ECJ =          ecj-4.5.jar
-SUPDISTFILES = ${ADASTRAP}:0 ${ECJ}:1
+SUPDISTFILES = ${ADASTRAP-i386}:0 ${ADASTRAP-amd64}:0 ${ADASTRAP-sparc64}:0 \
+               ${ECJ}:1
 EXTRACT_ONLY = ${DISTNAME}.tar.bz2
 
 USE_LIBTOOL =  Yes
@@ -94,8 +99,8 @@ VMEM_WARNING =                Yes
 .endif
 .if ${BUILD_PACKAGES:M-ada}
 LANGS := ${LANGS},ada
-DISTFILES += ${ADASTRAP}:0
-EXTRACT_ONLY += ${ADASTRAP}
+DISTFILES += ${ADASTRAP-${MACHINE_ARCH}}:0
+EXTRACT_ONLY += ${ADASTRAP-${MACHINE_ARCH}}
 EXTRA_ENV += ADAC=${WRKDIR}/bin/egcc GNATBIND=${WRKDIR}/bin/gnatbind
 CC = ${WRKDIR}/bin/egcc
 REGRESS_DEPENDS += ${BUILD_PKGPATH},-ada
@@ -187,6 +192,7 @@ RUN_DEPENDS-estdc =
 
 RUN_DEPENDS-c++ =      ${RUN_DEPENDS} \
                        ${BUILD_PKGPATH},-estdc>=4.6,<4.7
+RUN_DEPENDS-ada =      ${FULLPKGNAME-main}:${BUILD_PKGPATH}
 WANTLIB-estdc =                m
 WANTLIB-f95 =          ${WANTLIB}
 WANTLIB-java =         ${WANTLIB} pthread
@@ -213,11 +219,6 @@ post-extract:
        echo "LIB$l_LTVERSION = -version-info ${v:S/./:/}" >> \
                ${WRKSRC}/libversions
 .endfor
-.if ${BUILD_PACKAGES:M-ada}
-       # XXX cheat a bit
-       cd ${WRKDIR}/bootstrap/system-libs && ln -sf libc.so.${LIBC_VERSION} 
libc.so.61.0
-       ${WRKDIR}/bin/egcc -v # if this fails, you must extract suitable 
libraries from the relevant OpenBSD release or use the no_ada FLAVOR.
-.endif
 .if ${BUILD_PACKAGES:M-java}
        cp ${FULLDISTDIR}/${ECJ} ${WRKSRC}/ecj.jar
 .endif
@@ -239,20 +240,26 @@ post-install:
 
 .include <bsd.port.mk>
 
-ADA_PACKAGE = ${PACKAGE_REPOSITORY}/i386/all/${PKGNAME-ada}.tgz
-GCC_PACKAGE = ${PACKAGE_REPOSITORY}/i386/all/${PKGNAME-main}.tgz
+ADA_PACKAGE = ${PACKAGE_REPOSITORY}/${MACHINE_ARCH}/all/${FULLPKGNAME-ada}.tgz
+GCC_PACKAGE = ${PACKAGE_REPOSITORY}/${MACHINE_ARCH}/all/${FULLPKGNAME-main}.tgz
 
 adastrap: ${ADA_PACKAGE} ${GCC_PACKAGE}
-.if !defined(LIBC_VERSION)
+.if !defined(ADASTRAP_LIBC-${MACHINE_ARCH})
        @echo 1>&2 "Error: you must specify a libc to bundle"
        @exit 1
 .else
        mkdir -p ${WRKDIR}/prepare/bootstrap/system-libs
-       cp /usr/lib/libc.so.${LIBC_VERSION} 
${WRKDIR}/prepare/bootstrap/system-libs
+       cp /usr/lib/libc.so.${ADASTRAP_LIBC-${MACHINE_ARCH}} \
+               ${WRKDIR}/prepare/bootstrap/system-libs
        cd ${WRKDIR}/prepare/bootstrap && tar zxf ${ADA_PACKAGE}
        cd ${WRKDIR}/prepare/bootstrap && tar zxf ${GCC_PACKAGE}
        rm -rf ${WRKDIR}/prepare/bootstrap/{+*,info,man}
+       if ! ldd ${WRKDIR}/prepare/bootstrap/bin/egcc | \
+               fgrep libc.so.${ADASTRAP_LIBC-${MACHINE_ARCH}} >/dev/null; then 
\
+               echo 1>&2 "Error: adastrap egcc linked against wrong libc"; \
+               exit 1; \
+       fi
        cd ${WRKDIR}/prepare && tar cf - bootstrap | \
-               xz > ${FULLDISTDIR}/${ADASTRAP}
+               xz > ${FULLDISTDIR}/${ADASTRAP-${MACHINE_ARCH}}
 .endif
 
Index: 4.6/distinfo
===================================================================
RCS file: /home/vcs/cvs/openbsd/ports/lang/gcc/4.6/distinfo,v
retrieving revision 1.5
diff -u -p -r1.5 distinfo
--- 4.6/distinfo        31 Mar 2012 20:02:03 -0000      1.5
+++ 4.6/distinfo        4 Nov 2012 19:43:18 -0000
@@ -1,15 +1,10 @@
-MD5 (gcc/adastrap-i386-4.6.3-0.tar.xz) = h3oa6vXJhsLyHMGSyQdGpg==
-MD5 (gcc/ecj-4.5.jar) = 181qJ8iAHmbLqpZKA57P2w==
-MD5 (gcc/gcc-4.6.3.tar.bz2) = dzCS/lGUNTsCuwEQBSqXLg==
-RMD160 (gcc/adastrap-i386-4.6.3-0.tar.xz) = gp0rq+VpuV1tiRT+YLLs+fCYFCQ=
-RMD160 (gcc/ecj-4.5.jar) = 0/TaZX8Ia2Qj906T8AETL0hVNoo=
-RMD160 (gcc/gcc-4.6.3.tar.bz2) = mrsvlA0I/ITy2RtqbOjWYsqIkmk=
-SHA1 (gcc/adastrap-i386-4.6.3-0.tar.xz) = LaVcCPxDBBeZnD8tr+3+pgXxyzU=
-SHA1 (gcc/ecj-4.5.jar) = WMHXnGTIzXGFUPMqkyzP3o0eZEk=
-SHA1 (gcc/gcc-4.6.3.tar.bz2) = zjF8pcgYW1i8kwAYK1NGCMV4Y38=
+SHA256 (gcc/adastrap-amd64-4.6.3-0.tar.xz) = 
ERQ13M2trP3g8RHRWTuP3xpRvSsdunVsjngys9+6XUM=
 SHA256 (gcc/adastrap-i386-4.6.3-0.tar.xz) = 
b5+DW9S4owsMIiWLIJTFxbjLzYBBEj6W2mv9AfRIG2w=
+SHA256 (gcc/adastrap-sparc64-4.6.3-0.tar.xz) = 
Jc8cIUq+YZf1sQkFqjRWfxmwp9gQSjdSt0kshuHW0uk=
 SHA256 (gcc/ecj-4.5.jar) = mP0Sjx03TZ5C/Z1INr3SScbVEevGwN8X+8G535bD14E=
 SHA256 (gcc/gcc-4.6.3.tar.bz2) = 6PWFPU7sL166+Kcq5NU8Q2qs+YFTskmfhjW0jEcYoJM=
+SIZE (gcc/adastrap-amd64-4.6.3-0.tar.xz) = 25762076
 SIZE (gcc/adastrap-i386-4.6.3-0.tar.xz) = 22075992
+SIZE (gcc/adastrap-sparc64-4.6.3-0.tar.xz) = 20885416
 SIZE (gcc/ecj-4.5.jar) = 1470676
 SIZE (gcc/gcc-4.6.3.tar.bz2) = 71999439
Index: 4.7/Makefile
===================================================================
RCS file: /home/vcs/cvs/openbsd/ports/lang/gcc/4.7/Makefile,v
retrieving revision 1.19
diff -u -p -r1.19 Makefile
--- 4.7/Makefile        7 Oct 2012 20:09:45 -0000       1.19
+++ 4.7/Makefile        4 Nov 2012 19:43:18 -0000
@@ -6,9 +6,11 @@ BROKEN-sparc64 = ICE in libgcc
 V = 4.7.2
 FULL_VERSION = $V
 FULL_PKGVERSION = $V
-BOOTSTRAP_GEN = 0
-LIBC_VERSION = 63.0
-ADASTRAP = adastrap-i386-$V-${BOOTSTRAP_GEN}.tar.xz
+
+ADASTRAP_LIBC-i386 = 63.0
+ADASTRAP-i386 = adastrap-i386-$V-0.tar.xz
+ADASTRAP_LIBC-amd64 = 66.0
+ADASTRAP-amd64 = adastrap-amd64-$V-0.tar.xz
 
 PKGNAME-main =  gcc-${FULL_PKGVERSION}
 PKGNAME-c++ =   g++-${FULL_PKGVERSION}
@@ -22,12 +24,12 @@ PKGNAME-ada =   gnat-${FULL_PKGVERSION}
 #PKGNAME-go =  gccgo-${FULL_PKGVERSION}
 PKGSPEC-main = gcc->=4.7,<4.8
 
-REVISION-main = 0
+REVISION-main = 1
 REVISION-c++ = 0
 REVISION-estdc = 0
 REVISION-f95 = 0
 REVISION-objc = 0
-REVISION-ada = 0
+REVISION-ada = 1
 
 SHARED_LIBS =  estdc++         15.0 \
                gfortran        4.0 \
@@ -44,7 +46,7 @@ SHARED_LIBS = estdc++         15.0 \
 PSEUDO_FLAVORS = no_c++ no_f95 no_objc no_java no_ada no_go full
 FLAVOR ?= 
 
-ONLY_FOR_ARCHS-ada = i386
+ONLY_FOR_ARCHS-ada = i386 amd64
 ONLY_FOR_ARCHS-java = amd64 i386 sparc64
 
 MULTI_PACKAGES = -main -f95 -objc -c++ -estdc -ada
@@ -62,7 +64,7 @@ DISTNAME =    gcc-${FULL_VERSION}
 DISTFILES =    ${DISTNAME}.tar.bz2
 # there's no ecj-4.7.jar
 ECJ =          ecj-4.5.jar
-SUPDISTFILES = ${ADASTRAP}:0 ${ECJ}:1
+SUPDISTFILES = ${ADASTRAP-i386}:0 ${ADASTRAP-amd64}:0 ${ECJ}:1
 EXTRACT_ONLY = ${DISTNAME}.tar.bz2
 
 USE_LIBTOOL =  Yes
@@ -97,8 +99,8 @@ VMEM_WARNING =                Yes
 .endif
 .if ${BUILD_PACKAGES:M-ada}
 LANGS := ${LANGS},ada
-DISTFILES += ${ADASTRAP}:0
-EXTRACT_ONLY += ${ADASTRAP}
+DISTFILES += ${ADASTRAP-${MACHINE_ARCH}}:0
+EXTRACT_ONLY += ${ADASTRAP-${MACHINE_ARCH}}
 EXTRA_ENV += ADAC=${WRKDIR}/bin/egcc GNATBIND=${WRKDIR}/bin/gnatbind
 CC = ${WRKDIR}/bin/egcc
 REGRESS_DEPENDS += ${BUILD_PKGPATH},-ada
@@ -190,6 +192,7 @@ RUN_DEPENDS-estdc =
 
 RUN_DEPENDS-c++ =      ${RUN_DEPENDS} \
                        ${BUILD_PKGPATH},-estdc>=4.7,<4.8
+RUN_DEPENDS-ada =      ${FULLPKGNAME-main}:${BUILD_PKGPATH}
 WANTLIB-estdc =                m
 WANTLIB-java =         ${WANTLIB} pthread
 WANTLIB-main =         ${WANTLIB} pthread
@@ -215,11 +218,6 @@ post-extract:
        echo "LIB$l_LTVERSION = -version-info ${v:S/./:/}" >> \
                ${WRKSRC}/libversions
 .endfor
-.if ${BUILD_PACKAGES:M-ada}
-       # XXX cheat a bit
-       cd ${WRKDIR}/bootstrap/system-libs && ln -sf libc.so.${LIBC_VERSION} 
libc.so.61.0
-       ${WRKDIR}/bin/egcc -v # if this fails, you must extract suitable 
libraries from the relevant OpenBSD release or use the no_ada FLAVOR.
-.endif
 .if ${BUILD_PACKAGES:M-java}
        cp ${FULLDISTDIR}/${ECJ} ${WRKSRC}/ecj.jar
 .endif
@@ -241,20 +239,26 @@ post-install:
 
 .include <bsd.port.mk>
 
-ADA_PACKAGE = ${PACKAGE_REPOSITORY}/i386/all/${PKGNAME-ada}.tgz
-GCC_PACKAGE = ${PACKAGE_REPOSITORY}/i386/all/${PKGNAME-main}.tgz
+ADA_PACKAGE = ${PACKAGE_REPOSITORY}/${MACHINE_ARCH}/all/${FULLPKGNAME-ada}.tgz
+GCC_PACKAGE = ${PACKAGE_REPOSITORY}/${MACHINE_ARCH}/all/${FULLPKGNAME-main}.tgz
 
 adastrap: ${ADA_PACKAGE} ${GCC_PACKAGE}
-.if !defined(LIBC_VERSION)
+.if !defined(ADASTRAP_LIBC-${MACHINE_ARCH})
        @echo 1>&2 "Error: you must specify a libc to bundle"
        @exit 1
 .else
        mkdir -p ${WRKDIR}/prepare/bootstrap/system-libs
-       cp /usr/lib/libc.so.${LIBC_VERSION} 
${WRKDIR}/prepare/bootstrap/system-libs
+       cp /usr/lib/libc.so.${ADASTRAP_LIBC-${MACHINE_ARCH}} \
+               ${WRKDIR}/prepare/bootstrap/system-libs
        cd ${WRKDIR}/prepare/bootstrap && tar zxf ${ADA_PACKAGE}
        cd ${WRKDIR}/prepare/bootstrap && tar zxf ${GCC_PACKAGE}
        rm -rf ${WRKDIR}/prepare/bootstrap/{+*,info,man}
+       if ! ldd ${WRKDIR}/prepare/bootstrap/bin/egcc | \
+               fgrep libc.so.${ADASTRAP_LIBC-${MACHINE_ARCH}} >/dev/null; then 
\
+               echo 1>&2 "Error: adastrap egcc linked against wrong libc"; \
+               exit 1; \
+       fi
        cd ${WRKDIR}/prepare && tar cf - bootstrap | \
-               xz > ${FULLDISTDIR}/${ADASTRAP}
+               xz > ${FULLDISTDIR}/${ADASTRAP-${MACHINE_ARCH}}
 .endif
 
Index: 4.7/distinfo
===================================================================
RCS file: /home/vcs/cvs/openbsd/ports/lang/gcc/4.7/distinfo,v
retrieving revision 1.3
diff -u -p -r1.3 distinfo
--- 4.7/distinfo        28 Sep 2012 18:45:42 -0000      1.3
+++ 4.7/distinfo        4 Nov 2012 19:43:18 -0000
@@ -1,6 +1,8 @@
-SHA256 (gcc/adastrap-i386-4.7.2-0.tar.xz) = 
7zzkpP6UDkWQckJy9arvYOSEfhWpnqdzqETxdCE43a4=
+SHA256 (gcc/adastrap-amd64-4.7.2-0.tar.xz) = 
6y44r5vz49SKyE8/hAGz5ix7hy1xyn5o6wGHz2qhbcY=
+SHA256 (gcc/adastrap-i386-4.7.2-0.tar.xz) = 
LyX2zLBrrveS+0ffql1dfoDD4UTOt3V2+LDR3R4fLXI=
 SHA256 (gcc/ecj-4.5.jar) = mP0Sjx03TZ5C/Z1INr3SScbVEevGwN8X+8G535bD14E=
 SHA256 (gcc/gcc-4.7.2.tar.bz2) = ipKD1wEPuf5ezjylB+CvXBlBJiY4T4pelDQlGuEAsIQ=
-SIZE (gcc/adastrap-i386-4.7.2-0.tar.xz) = 30305556
+SIZE (gcc/adastrap-amd64-4.7.2-0.tar.xz) = 34066848
+SIZE (gcc/adastrap-i386-4.7.2-0.tar.xz) = 29194740
 SIZE (gcc/ecj-4.5.jar) = 1470676
 SIZE (gcc/gcc-4.7.2.tar.bz2) = 82884636
Index: 4.7/patches/patch-gcc_ada_gcc-interface_Makefile_in
===================================================================
RCS file: 
/home/vcs/cvs/openbsd/ports/lang/gcc/4.7/patches/patch-gcc_ada_gcc-interface_Makefile_in,v
retrieving revision 1.2
diff -u -p -r1.2 patch-gcc_ada_gcc-interface_Makefile_in
--- 4.7/patches/patch-gcc_ada_gcc-interface_Makefile_in 1 Jul 2012 18:56:45 
-0000       1.2
+++ 4.7/patches/patch-gcc_ada_gcc-interface_Makefile_in 4 Nov 2012 19:43:18 
-0000
@@ -1,6 +1,6 @@
 $OpenBSD: patch-gcc_ada_gcc-interface_Makefile_in,v 1.2 2012/07/01 18:56:45 
pascal Exp $
---- gcc/ada/gcc-interface/Makefile.in.orig     Tue Jun 12 17:12:37 2012
-+++ gcc/ada/gcc-interface/Makefile.in  Wed Jun 20 14:39:11 2012
+--- gcc/ada/gcc-interface/Makefile.in.orig     Mon Aug  6 16:34:27 2012
++++ gcc/ada/gcc-interface/Makefile.in  Sat Sep 29 18:22:21 2012
 @@ -103,13 +103,13 @@ MAKEINFO = makeinfo
  TEXI2DVI = texi2dvi
  TEXI2PDF = texi2pdf
@@ -17,10 +17,20 @@ $OpenBSD: patch-gcc_ada_gcc-interface_Ma
  PICFLAG_FOR_TARGET = @PICFLAG_FOR_TARGET@
  
  # Pretend that _Unwind_GetIPInfo is available for the target by default.  This
-@@ -1253,6 +1253,32 @@ ifeq ($(strip $(filter-out %86_64 freebsd%,$(arch) $(o
- 
-   EH_MECHANISM=-gcc
-   THREADSLIB= -lpthread
+@@ -1243,6 +1243,58 @@ ifeq ($(strip $(filter-out %86_64 freebsd%,$(arch) $(o
+   s-taspri.ads<s-taspri-posix.ads \
+   s-tpopsp.adb<s-tpopsp-posix.adb \
+   g-trasym.adb<g-trasym-dwarf.adb \
++  $(ATOMICS_TARGET_PAIRS) \
++  $(X86_64_TARGET_PAIRS) \
++  system.ads<system-freebsd-x86_64.ads
++
++  TOOLS_TARGET_PAIRS = \
++  mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb
++  GNATLIB_SHARED = gnatlib-shared-dual
++
++  EH_MECHANISM=-gcc
++  THREADSLIB= -lpthread
 +  GMEM_LIB = gmemlib
 +  LIBRARY_VERSION := $(LIB_VERSION)
 +  MISCLIB = -lutil
@@ -46,7 +56,23 @@ $OpenBSD: patch-gcc_ada_gcc-interface_Ma
 +  GNATLIB_SHARED = gnatlib-shared-dual
 +
 +  EH_MECHANISM=-gcc
-+  THREADSLIB= -pthread
-   GMEM_LIB = gmemlib
-   LIBRARY_VERSION := $(LIB_VERSION)
-   MISCLIB = -lutil
++  THREADSLIB= -lpthread
++  GMEM_LIB = gmemlib
++  LIBRARY_VERSION := $(LIB_VERSION)
++  MISCLIB = -lutil
++endif
++
++ifeq ($(strip $(filter-out %86_64 openbsd%,$(arch) $(osys))),)
++  LIBGNAT_TARGET_PAIRS = \
++  a-intnam.ads<a-intnam-freebsd.ads \
++  s-inmaop.adb<s-inmaop-posix.adb \
++  s-intman.adb<s-intman-posix.adb \
++  s-osinte.adb<s-osinte-freebsd.adb \
++  s-osinte.ads<s-osinte-freebsd.ads \
++  s-osprim.adb<s-osprim-posix.adb \
++  s-taprop.adb<s-taprop-posix.adb \
++  s-taspri.ads<s-taspri-posix.ads \
++  s-tpopsp.adb<s-tpopsp-posix.adb \
+   $(ATOMICS_TARGET_PAIRS) \
+   $(X86_64_TARGET_PAIRS) \
+   system.ads<system-freebsd-x86_64.ads

Reply via email to