From owner-freebsd-ports-bugs@FreeBSD.ORG Sat Sep 3 14:20:10 2011 Return-Path: Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 966B91065678 for ; Sat, 3 Sep 2011 14:20:10 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 7395B8FC13 for ; Sat, 3 Sep 2011 14:20:10 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id p83EKAl3010872 for ; Sat, 3 Sep 2011 14:20:10 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id p83EKAbL010871; Sat, 3 Sep 2011 14:20:10 GMT (envelope-from gnats) Resent-Date: Sat, 3 Sep 2011 14:20:10 GMT Resent-Message-Id: <201109031420.p83EKAbL010871@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, John Marino Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5514B106564A for ; Sat, 3 Sep 2011 14:17:03 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22]) by mx1.freebsd.org (Postfix) with ESMTP id 3A9B98FC08 for ; Sat, 3 Sep 2011 14:17:03 +0000 (UTC) Received: from red.freebsd.org (localhost [127.0.0.1]) by red.freebsd.org (8.14.4/8.14.4) with ESMTP id p83EH3ru099991 for ; Sat, 3 Sep 2011 14:17:03 GMT (envelope-from nobody@red.freebsd.org) Received: (from nobody@localhost) by red.freebsd.org (8.14.4/8.14.4/Submit) id p83EH3gi099990; Sat, 3 Sep 2011 14:17:03 GMT (envelope-from nobody) Message-Id: <201109031417.p83EH3gi099990@red.freebsd.org> Date: Sat, 3 Sep 2011 14:17:03 GMT From: John Marino To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: ports/160426: [new port] gnatdroid cross compiler (Android ARM v5) X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 03 Sep 2011 14:20:10 -0000 >Number: 160426 >Category: ports >Synopsis: [new port] gnatdroid cross compiler (Android ARM v5) >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Sat Sep 03 14:20:10 UTC 2011 >Closed-Date: >Last-Modified: >Originator: John Marino >Release: >Organization: >Environment: >Description: This port builds a FreeBSD to Android (ARMv5) cross-compiler, which supports Ada and C. ARMv5 is the highest version supported by the Android SDK emulator. >How-To-Repeat: >Fix: Patch attached with submission follows: # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # gnatdroid-armv5 # gnatdroid-armv5/distinfo # gnatdroid-armv5/files # gnatdroid-armv5/files/patch-configure # gnatdroid-armv5/files/patch-gcc__ada__adaint.c # gnatdroid-armv5/files/patch-gcc__Makefile.in # gnatdroid-armv5/files/patch-libiberty__getpagesize.c # gnatdroid-armv5/files/patch-libiberty__setprotitle.c # gnatdroid-armv5/Makefile # gnatdroid-armv5/pkg-descr # gnatdroid-armv5/pkg-plist # echo c - gnatdroid-armv5 mkdir -p gnatdroid-armv5 > /dev/null 2>&1 echo x - gnatdroid-armv5/distinfo sed 's/^X//' >gnatdroid-armv5/distinfo << 'END-of-gnatdroid-armv5/distinfo' XSHA256 (arm-gnat-20110627.tar.bz2) = 3698806aabc63ab93a23e57c2fc4065f41f788e2ac9cff4a05ae501723e7499f XSIZE (arm-gnat-20110627.tar.bz2) = 19133878 END-of-gnatdroid-armv5/distinfo echo c - gnatdroid-armv5/files mkdir -p gnatdroid-armv5/files > /dev/null 2>&1 echo x - gnatdroid-armv5/files/patch-configure sed 's/^X//' >gnatdroid-armv5/files/patch-configure << 'END-of-gnatdroid-armv5/files/patch-configure' X--- configure.orig 2011-07-18 00:12:43.000000000 +0200 X+++ configure 2011-07-18 00:13:35.000000000 +0200 X@@ -3233,7 +3233,7 @@ X libgloss_dir=arm X ;; X arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* ) X- noconfigdirs="$noconfigdirs target-libffi target-qthreads" X+ noconfigdirs="$noconfigdirs target-libffi target-qthreads target-libstdc++-v3" X libgloss_dir=arm X ;; X arm*-*-linux-gnueabi) END-of-gnatdroid-armv5/files/patch-configure echo x - gnatdroid-armv5/files/patch-gcc__ada__adaint.c sed 's/^X//' >gnatdroid-armv5/files/patch-gcc__ada__adaint.c << 'END-of-gnatdroid-armv5/files/patch-gcc__ada__adaint.c' X--- gcc/ada/adaint.c.orig 2011-04-16 05:34:37.000000000 -0500 X+++ gcc/ada/adaint.c 2011-08-19 23:28:10.000000000 -0500 X@@ -1201,6 +1201,47 @@ X free (pname); X } X X+#elif defined (__ANDROID__) X+ X+ /* X+ * ext2 /ext3/ext4/fat16/fat32 have no path limits X+ * /data/local/tmp normally requires rooted devices, if it even exists X+ * /sdcard is the standard location for external storage. Nativeactivity X+ * manifest needs to authorize its use, otherwise it might not have the X+ * proper permissions. X+ */ X+ X+ int testfd; X+ char *datadir = getenv ("ANDROID_DATA"); X+ X+ if (datadir == NULL) X+ strcpy (tmp_filename, "/data/local/tmp/gnat-XXXXXX"); X+ else X+ sprintf (tmp_filename, "%s/local/tmp/gnat-XXXXXX", datadir); X+ X+ testfd = mkstemp (tmp_filename); X+ if (testfd != -1) X+ { X+ close (testfd); X+ return; X+ } X+ X+ char *sdcard = getenv ("EXTERNAL_STORAGE"); X+ X+ if (sdcard == NULL) X+ strcpy (tmp_filename, "/sdcard/gnat-XXXXXX"); X+ else X+ sprintf (tmp_filename, "%s/gnat-XXXXXX", sdcard); X+ X+ testfd = mkstemp (tmp_filename); X+ if (testfd != -1) X+ { X+ close (testfd); X+ return; X+ } X+ X+ tmpnam (tmp_filename); X+ X #elif defined (linux) || defined (__FreeBSD__) || defined (__NetBSD__) \ X || defined (__DragonFly__) \ X || defined (__OpenBSD__) || defined(__GLIBC__) END-of-gnatdroid-armv5/files/patch-gcc__ada__adaint.c echo x - gnatdroid-armv5/files/patch-gcc__Makefile.in sed 's/^X//' >gnatdroid-armv5/files/patch-gcc__Makefile.in << 'END-of-gnatdroid-armv5/files/patch-gcc__Makefile.in' X--- gcc/Makefile.in.orig 2011-01-09 00:44:20.000000000 +0100 X+++ gcc/Makefile.in 2011-01-09 00:53:28.000000000 +0100 X@@ -306,11 +306,11 @@ X # This is where we get zlib from. zlibdir is -L../zlib and zlibinc is X # -I../zlib, unless we were configured with --with-system-zlib, in which X # case both are empty. X-ZLIB = @zlibdir@ -lz X+ZLIB = -Wl,-Bstatic @zlibdir@ -lz -Wl,-Bdynamic X ZLIBINC = @zlibinc@ X X # How to find GMP X-GMPLIBS = @GMPLIBS@ X+GMPLIBS = -Wl,-Bstatic @GMPLIBS@ -Wl,-Bdynamic X GMPINC = @GMPINC@ X X # How to find PPL X@@ -626,8 +626,8 @@ X LIBINTL_DEP = @LIBINTL_DEP@ X X # Character encoding conversion library. X-LIBICONV = @LIBICONV@ X-LIBICONV_DEP = @LIBICONV_DEP@ X+LIBICONV = -Wl,-Bstatic -L/usr/local/lib -liconv -Wl,-Bdynamic X+LIBICONV_DEP = X X # The GC method to be used on this system. X GGC=@GGC@.o END-of-gnatdroid-armv5/files/patch-gcc__Makefile.in echo x - gnatdroid-armv5/files/patch-libiberty__getpagesize.c sed 's/^X//' >gnatdroid-armv5/files/patch-libiberty__getpagesize.c << 'END-of-gnatdroid-armv5/files/patch-libiberty__getpagesize.c' X--- libiberty/getpagesize.c.orig 2011-01-29 06:55:10 +0100 X+++ libiberty/getpagesize.c 2011-01-29 07:07:40 +0100 X@@ -20,6 +20,7 @@ X X */ X X+#ifndef __ANDROID__ X #ifndef VMS X X #include "config.h" X@@ -88,3 +89,4 @@ X } X X #endif /* VMS */ X+#endif /* __ANDROID__ */ END-of-gnatdroid-armv5/files/patch-libiberty__getpagesize.c echo x - gnatdroid-armv5/files/patch-libiberty__setprotitle.c sed 's/^X//' >gnatdroid-armv5/files/patch-libiberty__setprotitle.c << 'END-of-gnatdroid-armv5/files/patch-libiberty__setprotitle.c' X--- libiberty/setproctitle.c.orig 2011-01-29 07:11:03 +0100 X+++ libiberty/setproctitle.c 2011-01-29 07:28:55 +0100 X@@ -40,9 +40,11 @@ X void X setproctitle (const char *name ATTRIBUTE_UNUSED, ...) X { X+#ifndef __ANDROID__ X #ifdef PR_SET_NAME X /* On Linux this sets the top visible "comm", but not necessarily X the name visible in ps. */ X prctl (PR_SET_NAME, name); X #endif X+#endif X } END-of-gnatdroid-armv5/files/patch-libiberty__setprotitle.c echo x - gnatdroid-armv5/Makefile sed 's/^X//' >gnatdroid-armv5/Makefile << 'END-of-gnatdroid-armv5/Makefile' X# New ports collection makefile for: gnatdroid-armv5 X# Date created: 20 July 2011 X# Whom: John Marino X# X# $FreeBSD$ X# X XPORTNAME= armv5 XPORTVERSION= 20110627 XCATEGORIES= lang XMASTER_SITES= http://downloads.dragonlace.net/src/ \ X http://dragonlace.mirrors.ada.cx/src/ XPKGNAMEPREFIX= gnatdroid- XDISTNAME= arm-gnat-${PORTVERSION} X XMAINTAINER= draco@marino.st XCOMMENT= C/Ada cross-compiler, target: Android ARMv5 X XBUILD_DEPENDS= gnatdroid-sysroot>=9:${PORTSDIR}/lang/gnatdroid-sysroot \ X gnatdroid-binutils>=2.21:${PORTSDIR}/lang/gnatdroid-binutils \ X ${LOCALBASE}/lib/libgmp.so:${PORTSDIR}/math/gmp \ X ${LOCALBASE}/lib/libmpfr.so:${PORTSDIR}/math/mpfr \ X ${LOCALBASE}/lib/libmpc.so:${PORTSDIR}/math/mpc XRUN_DEPENDS:= ${BUILD_DEPENDS} XBUILD_DEPENDS+= gnat-aux>=20110325:${PORTSDIR}/lang/gnat-aux X XUSE_BZIP2= YES XUSE_GMAKE= YES XHAS_CONFIGURE= YES XUSE_ICONV= YES XUSE_BISON= build XALL_TARGET= default XNO_MTREE= YES XMAKE_JOBS_SAFE= YES X XDROID_TARGET= arm-android-eabi XDROID_ARCH= armv5te XARMVERSION= ARMv5 XFPU= vfp XGCC_BRANCH= 4.6 XGCC_VERSION= 4.6.1 XWRKSRC= ${WRKDIR}/gcc-${GCC_BRANCH}-${PORTVERSION} XBUILDDIR= ${WRKDIR}/build XCFG_SCRIPT= ${WRKSRC}/configure XREVFILE= ${WRKSRC}/gcc/REVISION XSRPREFIX= ${LOCALBASE}/android9 XPREFIX= ${SRPREFIX}/${ARMVERSION} XFULL_GNATGCC= ${LOCALBASE}/bin/gnatgcc XPLIST_SUB+= TARGET="${DROID_TARGET}" XPLIST_SUB+= GCCVERS="${GCC_VERSION}" X XADA_CONFIGURE_ENV= CC=${FULL_GNATGCC} X X.include X X.if ${ARCH} == "amd64" XOS_LABEL4VERS= "[FreeBSD64 x Android ${ARMVERSION}]" X.else XOS_LABEL4VERS= "[FreeBSD32 x Android ${ARMVERSION}]" X.endif X XCONFIGURE_ARGS= --enable-languages=c,ada XCONFIGURE_ARGS+= --target=${DROID_TARGET} XCONFIGURE_ARGS+= --program-prefix=${DROID_TARGET}- XCONFIGURE_ARGS+= --prefix=${PREFIX} XCONFIGURE_ARGS+= --with-arch=${DROID_ARCH} XCONFIGURE_ARGS+= --with-system-zlib XCONFIGURE_ARGS+= --with-gmp=${LOCALBASE} XCONFIGURE_ARGS+= --with-mpfr=${LOCALBASE} XCONFIGURE_ARGS+= --with-mpc=${LOCALBASE} XCONFIGURE_ARGS+= --with-libiconv-prefix=${LOCALBASE} XCONFIGURE_ARGS+= --with-sysroot=${SRPREFIX} XCONFIGURE_ARGS+= --with-float=soft XCONFIGURE_ARGS+= --with-fpu=${FPU} XCONFIGURE_ARGS+= --enable-target-optspace XCONFIGURE_ARGS+= --enable-threads=posix XCONFIGURE_ARGS+= --disable-bootstrap XCONFIGURE_ARGS+= --disable-shared XCONFIGURE_ARGS+= --disable-libssp XCONFIGURE_ARGS+= --disable-libgomp XCONFIGURE_ARGS+= --disable-libmudflap XCONFIGURE_ARGS+= --disable-libquadmath XCONFIGURE_ARGS+= --disable-libstdcxx-pch XCONFIGURE_ARGS+= --disable-tls XCONFIGURE_ARGS+= --disable-nls X Xpost-extract: X # Personalize GNAT for each different machine X @${ECHO} "-=> GNAT AUX ${OS_LABEL4VERS}" > ${REVFILE} X Xdo-configure: X ${MKDIR} ${BUILDDIR} X cd ${BUILDDIR} && ${SETENV} ${ADA_CONFIGURE_ENV} \ X ${CFG_SCRIPT} ${CONFIGURE_ARGS} X Xdo-build: X cd ${BUILDDIR} && ${GMAKE} ${_MAKE_JOBS} all X Xdo-install: X cd ${BUILDDIR} && ${GMAKE} install-strip DESTDIR=${DESTDIR} X mv ${PREFIX}/bin/${DROID_TARGET}-gcc \ X ${PREFIX}/bin/${DROID_TARGET}-gnatgcc X mv ${PREFIX}/${DROID_TARGET}/bin/gcc \ X ${PREFIX}/${DROID_TARGET}/bin/gnatgcc X Xpost-install: X.for d in lib/gcc libexec/gcc share X cd ${PREFIX}; ${FIND} $d \( -type f -or -type l \) | ${SORT} >> ${TMPPLIST} X cd ${PREFIX}; ${FIND} $d -type d | ${SORT} -dr | \ X ${SED} -e 's/^/@dirrm /g' >> ${TMPPLIST} X.endfor X @${ECHO} "@dirrm include" >> ${TMPPLIST} X @${ECHO} "@dirrm libexec" >> ${TMPPLIST} X @${ECHO} "@dirrm lib" >> ${TMPPLIST} X X @${ECHO} "============================================================" X @${ECHO} " Add to path: ${PREFIX}/bin" X @${ECHO} " All binaries have prefix of ${DROID_TARGET}-" X @${ECHO} " e.g. ${DROID_TARGET}-gnatgcc" X @${ECHO} " ${DROID_TARGET}-gnatmake" X @${ECHO} "============================================================" X X.include END-of-gnatdroid-armv5/Makefile echo x - gnatdroid-armv5/pkg-descr sed 's/^X//' >gnatdroid-armv5/pkg-descr << 'END-of-gnatdroid-armv5/pkg-descr' XThe gnatdroid-armv5 port builds a C/Ada cross-compiler based on GCC 4.6 that Xtargets the Android operating system (version 9) running on ARM architecture X(version 5). This produces binaries that run natively on Android devices as Xwell as the Android SDK emulator. X XWWW: http://www.dragonlace.net END-of-gnatdroid-armv5/pkg-descr echo x - gnatdroid-armv5/pkg-plist sed 's/^X//' >gnatdroid-armv5/pkg-plist << 'END-of-gnatdroid-armv5/pkg-plist' Xbin/%%TARGET%%-gnatbind Xbin/%%TARGET%%-gnatchop Xbin/%%TARGET%%-gnat Xbin/%%TARGET%%-gnatkr Xbin/%%TARGET%%-gnatlink Xbin/%%TARGET%%-gnatls Xbin/%%TARGET%%-gnatmake Xbin/%%TARGET%%-gnatname Xbin/%%TARGET%%-gnatprep Xbin/%%TARGET%%-gnatxref Xbin/%%TARGET%%-gnatfind Xbin/%%TARGET%%-gnatclean Xbin/%%TARGET%%-gcov Xbin/%%TARGET%%-cpp Xbin/%%TARGET%%-gnatgcc Xbin/%%TARGET%%-gcc-%%GCCVERS%% Xlib/libiberty.a X%%TARGET%%/bin/gnatbind X%%TARGET%%/bin/gnatchop X%%TARGET%%/bin/gnat X%%TARGET%%/bin/gnatkr X%%TARGET%%/bin/gnatlink X%%TARGET%%/bin/gnatls X%%TARGET%%/bin/gnatmake X%%TARGET%%/bin/gnatprep X%%TARGET%%/bin/gnatgcc X%%TARGET%%/lib/armv7-a/thumb/libiberty.a X%%TARGET%%/lib/armv7-a/libiberty.a X%%TARGET%%/lib/thumb/libiberty.a X%%TARGET%%/lib/libiberty.a X@dirrm %%TARGET%%/lib/armv7-a/thumb X@dirrm %%TARGET%%/lib/armv7-a X@dirrm %%TARGET%%/lib/thumb END-of-gnatdroid-armv5/pkg-plist exit >Release-Note: >Audit-Trail: >Unformatted: