From nobody@FreeBSD.org  Sat Sep  3 14:21:08 2011
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id B448F106566C
	for <freebsd-gnats-submit@FreeBSD.org>; 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 <freebsd-gnats-submit@FreeBSD.org>; 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 <freebsd-gnats-submit@FreeBSD.org>; 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 <freebsdml@marino.st>
To: freebsd-gnats-submit@FreeBSD.org
Subject: [new port] gnatdroid cross compiler (Android ARM v7)
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         160427
>Category:       ports
>Synopsis:       [new port] gnatdroid cross compiler (Android ARM v7)
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    culot
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sat Sep 03 14:30:11 UTC 2011
>Closed-Date:    Wed Sep 07 11:09:27 UTC 2011
>Last-Modified:  Wed Sep  7 11:10:07 UTC 2011
>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 <draco@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 <bsd.port.pre.mk>
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 <bsd.port.post.mk>
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:
Responsible-Changed-From-To: freebsd-ports-bugs->culot 
Responsible-Changed-By: culot 
Responsible-Changed-When: Sat Sep 3 18:22:26 UTC 2011 
Responsible-Changed-Why:  
I'll take it. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=160427 
State-Changed-From-To: open->closed 
State-Changed-By: culot 
State-Changed-When: Wed Sep 7 11:09:26 UTC 2011 
State-Changed-Why:  
New port added, with minor changes. Thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=160427 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: ports/160427: commit references a PR
Date: Wed,  7 Sep 2011 11:09:22 +0000 (UTC)

 culot       2011-09-07 11:09:10 UTC
 
   FreeBSD ports repository
 
   Modified files:
     lang                 Makefile 
   Added files:
     lang/gnatdroid-armv7 Makefile distinfo pkg-descr pkg-plist 
     lang/gnatdroid-armv7/files patch-configure 
                                patch-gcc__Makefile.in 
                                patch-gcc__ada__adaint.c 
                                patch-libiberty__getpagesize.c 
                                patch-libiberty__setprotitle.c 
   Log:
   The gnatdroid-armv7 port builds a C/Ada cross-compiler based on GCC 4.6 that
   targets the Android operating system (version 2.3, API level 9) running on
   ARM architecture (version 7).  This produces binaries that run natively on
   Android devices as well as the Android SDK emulator.
   
   WWW: http://www.dragonlace.net
   
   PR:             ports/160427
   Submitted by:   John Marino <freebsdml@marino.st>
   
   Revision  Changes    Path
   1.743     +1 -0      ports/lang/Makefile
   1.1       +123 -0    ports/lang/gnatdroid-armv7/Makefile (new)
   1.1       +2 -0      ports/lang/gnatdroid-armv7/distinfo (new)
   1.1       +11 -0     ports/lang/gnatdroid-armv7/files/patch-configure (new)
   1.1       +27 -0     ports/lang/gnatdroid-armv7/files/patch-gcc__Makefile.in (new)
   1.1       +50 -0     ports/lang/gnatdroid-armv7/files/patch-gcc__ada__adaint.c (new)
   1.1       +15 -0     ports/lang/gnatdroid-armv7/files/patch-libiberty__getpagesize.c (new)
   1.1       +14 -0     ports/lang/gnatdroid-armv7/files/patch-libiberty__setprotitle.c (new)
   1.1       +6 -0      ports/lang/gnatdroid-armv7/pkg-descr (new)
   1.1       +30 -0     ports/lang/gnatdroid-armv7/pkg-plist (new)
 _______________________________________________
 cvs-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/cvs-all
 To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
 
>Unformatted:
