From owner-freebsd-ports-bugs@FreeBSD.ORG Sat Sep 3 14:30:12 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 7E7781065672 for ; Sat, 3 Sep 2011 14:30:12 +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 5ADF38FC1B for ; Sat, 3 Sep 2011 14:30:12 +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 p83EUCNC019395 for ; Sat, 3 Sep 2011 14:30:12 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id p83EUCRm019393; Sat, 3 Sep 2011 14:30:12 GMT (envelope-from gnats) Resent-Date: Sat, 3 Sep 2011 14:30:12 GMT Resent-Message-Id: <201109031430.p83EUCRm019393@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 B448F106566C for ; Sat, 3 Sep 2011 14:21:08 +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 9A5248FC0C for ; Sat, 3 Sep 2011 14:21:08 +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 p83EL8TH000320 for ; Sat, 3 Sep 2011 14:21:08 GMT (envelope-from nobody@red.freebsd.org) Received: (from nobody@localhost) by red.freebsd.org (8.14.4/8.14.4/Submit) id p83EL8w4000319; Sat, 3 Sep 2011 14:21:08 GMT (envelope-from nobody) Message-Id: <201109031421.p83EL8w4000319@red.freebsd.org> Date: Sat, 3 Sep 2011 14:21:08 GMT From: John Marino To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: ports/160427: [new port] gnatdroid cross compiler (Android ARM v7) 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:30:12 -0000 >Number: 160427 >Category: ports >Synopsis: [new port] gnatdroid cross compiler (Android ARM v7) >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:30:11 UTC 2011 >Closed-Date: >Last-Modified: >Originator: John Marino >Release: >Organization: >Environment: >Description: This port builds a FreeBSD to Android (ARMv7) cross-compiler, which supports Ada and C. ARMv7 is the version of the ARM architecture that is found in the most modern Android tables, phones, and other devices. >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-armv7 # gnatdroid-armv7/distinfo # gnatdroid-armv7/files # gnatdroid-armv7/files/patch-configure # gnatdroid-armv7/files/patch-gcc__ada__adaint.c # gnatdroid-armv7/files/patch-gcc__Makefile.in # gnatdroid-armv7/files/patch-libiberty__getpagesize.c # gnatdroid-armv7/files/patch-libiberty__setprotitle.c # gnatdroid-armv7/Makefile # gnatdroid-armv7/pkg-descr # gnatdroid-armv7/pkg-plist # echo c - gnatdroid-armv7 mkdir -p gnatdroid-armv7 > /dev/null 2>&1 echo x - gnatdroid-armv7/distinfo sed 's/^X//' >gnatdroid-armv7/distinfo << 'END-of-gnatdroid-armv7/distinfo' XSHA256 (arm-gnat-20110627.tar.bz2) = 3698806aabc63ab93a23e57c2fc4065f41f788e2ac9cff4a05ae501723e7499f XSIZE (arm-gnat-20110627.tar.bz2) = 19133878 END-of-gnatdroid-armv7/distinfo echo c - gnatdroid-armv7/files mkdir -p gnatdroid-armv7/files > /dev/null 2>&1 echo x - gnatdroid-armv7/files/patch-configure sed 's/^X//' >gnatdroid-armv7/files/patch-configure << 'END-of-gnatdroid-armv7/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-armv7/files/patch-configure echo x - gnatdroid-armv7/files/patch-gcc__ada__adaint.c sed 's/^X//' >gnatdroid-armv7/files/patch-gcc__ada__adaint.c << 'END-of-gnatdroid-armv7/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-armv7/files/patch-gcc__ada__adaint.c echo x - gnatdroid-armv7/files/patch-gcc__Makefile.in sed 's/^X//' >gnatdroid-armv7/files/patch-gcc__Makefile.in << 'END-of-gnatdroid-armv7/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-armv7/files/patch-gcc__Makefile.in echo x - gnatdroid-armv7/files/patch-libiberty__getpagesize.c sed 's/^X//' >gnatdroid-armv7/files/patch-libiberty__getpagesize.c << 'END-of-gnatdroid-armv7/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-armv7/files/patch-libiberty__getpagesize.c echo x - gnatdroid-armv7/files/patch-libiberty__setprotitle.c sed 's/^X//' >gnatdroid-armv7/files/patch-libiberty__setprotitle.c << 'END-of-gnatdroid-armv7/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-armv7/files/patch-libiberty__setprotitle.c echo x - gnatdroid-armv7/Makefile sed 's/^X//' >gnatdroid-armv7/Makefile << 'END-of-gnatdroid-armv7/Makefile' X# New ports collection makefile for: gnatdroid-armv7 X# Date created: 20 July 2011 X# Whom: John Marino X# X# $FreeBSD$ X# X XPORTNAME= armv7 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 ARMv7 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= armv7-a XARMVERSION= ARMv7 XFPU= neon 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-armv7/Makefile echo x - gnatdroid-armv7/pkg-descr sed 's/^X//' >gnatdroid-armv7/pkg-descr << 'END-of-gnatdroid-armv7/pkg-descr' XThe gnatdroid-armv7 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 7). 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-armv7/pkg-descr echo x - gnatdroid-armv7/pkg-plist sed 's/^X//' >gnatdroid-armv7/pkg-plist << 'END-of-gnatdroid-armv7/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@dirrm %%TARGET%%/lib/armv7-a/thumb X@dirrm %%TARGET%%/lib/armv7-a END-of-gnatdroid-armv7/pkg-plist exit >Release-Note: >Audit-Trail: >Unformatted: