aboutsummaryrefslogtreecommitdiffstats
path: root/lang
diff options
context:
space:
mode:
authorculot <culot@FreeBSD.org>2011-09-07 13:22:05 +0800
committerculot <culot@FreeBSD.org>2011-09-07 13:22:05 +0800
commita6962a53520bca17c80fbcb6d87aef438cb1a1d1 (patch)
tree6c5b2963e3a60592156d238cbbcc7332e44a6e2a /lang
parent76cdeeeb9ffc14376d7725d1cfa0b690a55a873e (diff)
downloadfreebsd-ports-gnome-a6962a53520bca17c80fbcb6d87aef438cb1a1d1.tar.gz
freebsd-ports-gnome-a6962a53520bca17c80fbcb6d87aef438cb1a1d1.tar.zst
freebsd-ports-gnome-a6962a53520bca17c80fbcb6d87aef438cb1a1d1.zip
The gnatdroid-armv5 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 5). This produces binaries that run natively on Android devices as well as the Android SDK emulator. WWW: http://www.dragonlace.net PR: ports/160426 Submitted by: John Marino <freebsdml@marino.st>
Diffstat (limited to 'lang')
-rw-r--r--lang/Makefile1
-rw-r--r--lang/gnatdroid-armv5/Makefile123
-rw-r--r--lang/gnatdroid-armv5/distinfo2
-rw-r--r--lang/gnatdroid-armv5/files/patch-configure11
-rw-r--r--lang/gnatdroid-armv5/files/patch-gcc__Makefile.in27
-rw-r--r--lang/gnatdroid-armv5/files/patch-gcc__ada__adaint.c50
-rw-r--r--lang/gnatdroid-armv5/files/patch-libiberty__getpagesize.c15
-rw-r--r--lang/gnatdroid-armv5/files/patch-libiberty__setprotitle.c14
-rw-r--r--lang/gnatdroid-armv5/pkg-descr6
-rw-r--r--lang/gnatdroid-armv5/pkg-plist33
10 files changed, 282 insertions, 0 deletions
diff --git a/lang/Makefile b/lang/Makefile
index 1b7ea1e7fe2a..e711ca51777e 100644
--- a/lang/Makefile
+++ b/lang/Makefile
@@ -103,6 +103,7 @@
SUBDIR += gjs
SUBDIR += gnat
SUBDIR += gnat-aux
+ SUBDIR += gnatdroid-armv5
SUBDIR += gnatdroid-binutils
SUBDIR += gnatdroid-sysroot
SUBDIR += gnustep-base
diff --git a/lang/gnatdroid-armv5/Makefile b/lang/gnatdroid-armv5/Makefile
new file mode 100644
index 000000000000..190e4b121e54
--- /dev/null
+++ b/lang/gnatdroid-armv5/Makefile
@@ -0,0 +1,123 @@
+# New ports collection makefile for: gnatdroid-armv5
+# Date created: 2011-07-20
+# Whom: John Marino <draco@marino>
+#
+# $FreeBSD$
+#
+
+PORTNAME= armv5
+PORTVERSION= 20110627
+CATEGORIES= lang
+MASTER_SITES= http://downloads.dragonlace.net/src/ \
+ http://dragonlace.mirrors.ada.cx/src/
+PKGNAMEPREFIX= gnatdroid-
+DISTNAME= arm-gnat-${PORTVERSION}
+
+MAINTAINER= draco@marino.st
+COMMENT= C/Ada cross-compiler, target: Android ARMv5
+
+BUILD_DEPENDS= gnatdroid-sysroot>=9:${PORTSDIR}/lang/gnatdroid-sysroot \
+ gnatdroid-binutils>=2.21:${PORTSDIR}/lang/gnatdroid-binutils \
+ ${LOCALBASE}/lib/libgmp.so:${PORTSDIR}/math/gmp \
+ ${LOCALBASE}/lib/libmpfr.so:${PORTSDIR}/math/mpfr \
+ ${LOCALBASE}/lib/libmpc.so:${PORTSDIR}/math/mpc
+RUN_DEPENDS:= ${BUILD_DEPENDS}
+BUILD_DEPENDS+= gnat-aux>=20110325:${PORTSDIR}/lang/gnat-aux
+
+USE_BZIP2= YES
+USE_GMAKE= YES
+HAS_CONFIGURE= YES
+USE_ICONV= YES
+USE_BISON= build
+ALL_TARGET= default
+NO_MTREE= YES
+MAKE_JOBS_SAFE= YES
+
+DROID_TARGET= arm-android-eabi
+DROID_ARCH= armv5te
+ARMVERSION= ARMv5
+FPU= vfp
+GCC_BRANCH= 4.6
+GCC_VERSION= 4.6.1
+WRKSRC= ${WRKDIR}/gcc-${GCC_BRANCH}-${PORTVERSION}
+BUILDDIR= ${WRKDIR}/build
+CFG_SCRIPT= ${WRKSRC}/configure
+REVFILE= ${WRKSRC}/gcc/REVISION
+SRPREFIX= ${LOCALBASE}/android9
+PREFIX= ${SRPREFIX}/${ARMVERSION}
+FULL_GNATGCC= ${LOCALBASE}/bin/gnatgcc
+PLIST_SUB+= TARGET="${DROID_TARGET}"
+PLIST_SUB+= GCCVERS="${GCC_VERSION}"
+
+ADA_CONFIGURE_ENV= CC=${FULL_GNATGCC}
+
+.include <bsd.port.pre.mk>
+
+.if ${ARCH} == "amd64"
+OS_LABEL4VERS= "[FreeBSD64 x Android ${ARMVERSION}]"
+.else
+OS_LABEL4VERS= "[FreeBSD32 x Android ${ARMVERSION}]"
+.endif
+
+CONFIGURE_ARGS= --enable-languages=c,ada
+CONFIGURE_ARGS+= --target=${DROID_TARGET}
+CONFIGURE_ARGS+= --program-prefix=${DROID_TARGET}-
+CONFIGURE_ARGS+= --prefix=${PREFIX}
+CONFIGURE_ARGS+= --with-arch=${DROID_ARCH}
+CONFIGURE_ARGS+= --with-system-zlib
+CONFIGURE_ARGS+= --with-gmp=${LOCALBASE}
+CONFIGURE_ARGS+= --with-mpfr=${LOCALBASE}
+CONFIGURE_ARGS+= --with-mpc=${LOCALBASE}
+CONFIGURE_ARGS+= --with-libiconv-prefix=${LOCALBASE}
+CONFIGURE_ARGS+= --with-sysroot=${SRPREFIX}
+CONFIGURE_ARGS+= --with-float=soft
+CONFIGURE_ARGS+= --with-fpu=${FPU}
+CONFIGURE_ARGS+= --enable-target-optspace
+CONFIGURE_ARGS+= --enable-threads=posix
+CONFIGURE_ARGS+= --disable-bootstrap
+CONFIGURE_ARGS+= --disable-shared
+CONFIGURE_ARGS+= --disable-libssp
+CONFIGURE_ARGS+= --disable-libgomp
+CONFIGURE_ARGS+= --disable-libmudflap
+CONFIGURE_ARGS+= --disable-libquadmath
+CONFIGURE_ARGS+= --disable-libstdcxx-pch
+CONFIGURE_ARGS+= --disable-tls
+CONFIGURE_ARGS+= --disable-nls
+
+post-extract:
+ # Personalize GNAT for each different machine
+ @${ECHO} "-=> GNAT AUX ${OS_LABEL4VERS}" > ${REVFILE}
+
+do-configure:
+ ${MKDIR} ${BUILDDIR}
+ cd ${BUILDDIR} && ${SETENV} ${ADA_CONFIGURE_ENV} \
+ ${CFG_SCRIPT} ${CONFIGURE_ARGS}
+
+do-build:
+ cd ${BUILDDIR} && ${GMAKE} ${_MAKE_JOBS} all
+
+do-install:
+ cd ${BUILDDIR} && ${GMAKE} install-strip DESTDIR=${DESTDIR}
+ ${MV} ${PREFIX}/bin/${DROID_TARGET}-gcc \
+ ${PREFIX}/bin/${DROID_TARGET}-gnatgcc
+ ${MV} ${PREFIX}/${DROID_TARGET}/bin/gcc \
+ ${PREFIX}/${DROID_TARGET}/bin/gnatgcc
+
+post-install:
+.for d in lib/gcc libexec/gcc share
+ cd ${PREFIX}; ${FIND} $d \( -type f -or -type l \) | ${SORT} >> ${TMPPLIST}
+ cd ${PREFIX}; ${FIND} $d -type d | ${SORT} -dr | \
+ ${SED} -e 's/^/@dirrm /g' >> ${TMPPLIST}
+.endfor
+ @${ECHO} "@dirrm include" >> ${TMPPLIST}
+ @${ECHO} "@dirrm libexec" >> ${TMPPLIST}
+ @${ECHO} "@dirrm lib" >> ${TMPPLIST}
+
+ @${ECHO} "============================================================"
+ @${ECHO} " Add to path: ${PREFIX}/bin"
+ @${ECHO} " All binaries have prefix of ${DROID_TARGET}-"
+ @${ECHO} " e.g. ${DROID_TARGET}-gnatgcc"
+ @${ECHO} " ${DROID_TARGET}-gnatmake"
+ @${ECHO} "============================================================"
+
+.include <bsd.port.post.mk>
diff --git a/lang/gnatdroid-armv5/distinfo b/lang/gnatdroid-armv5/distinfo
new file mode 100644
index 000000000000..77a11f8a6504
--- /dev/null
+++ b/lang/gnatdroid-armv5/distinfo
@@ -0,0 +1,2 @@
+SHA256 (arm-gnat-20110627.tar.bz2) = 3698806aabc63ab93a23e57c2fc4065f41f788e2ac9cff4a05ae501723e7499f
+SIZE (arm-gnat-20110627.tar.bz2) = 19133878
diff --git a/lang/gnatdroid-armv5/files/patch-configure b/lang/gnatdroid-armv5/files/patch-configure
new file mode 100644
index 000000000000..4b5aed1b474a
--- /dev/null
+++ b/lang/gnatdroid-armv5/files/patch-configure
@@ -0,0 +1,11 @@
+--- configure.orig 2011-07-18 00:12:43.000000000 +0200
++++ configure 2011-07-18 00:13:35.000000000 +0200
+@@ -3233,7 +3233,7 @@
+ libgloss_dir=arm
+ ;;
+ arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
+- noconfigdirs="$noconfigdirs target-libffi target-qthreads"
++ noconfigdirs="$noconfigdirs target-libffi target-qthreads target-libstdc++-v3"
+ libgloss_dir=arm
+ ;;
+ arm*-*-linux-gnueabi)
diff --git a/lang/gnatdroid-armv5/files/patch-gcc__Makefile.in b/lang/gnatdroid-armv5/files/patch-gcc__Makefile.in
new file mode 100644
index 000000000000..5665dd51464c
--- /dev/null
+++ b/lang/gnatdroid-armv5/files/patch-gcc__Makefile.in
@@ -0,0 +1,27 @@
+--- gcc/Makefile.in.orig 2011-01-09 00:44:20.000000000 +0100
++++ gcc/Makefile.in 2011-01-09 00:53:28.000000000 +0100
+@@ -306,11 +306,11 @@
+ # This is where we get zlib from. zlibdir is -L../zlib and zlibinc is
+ # -I../zlib, unless we were configured with --with-system-zlib, in which
+ # case both are empty.
+-ZLIB = @zlibdir@ -lz
++ZLIB = -Wl,-Bstatic @zlibdir@ -lz -Wl,-Bdynamic
+ ZLIBINC = @zlibinc@
+
+ # How to find GMP
+-GMPLIBS = @GMPLIBS@
++GMPLIBS = -Wl,-Bstatic @GMPLIBS@ -Wl,-Bdynamic
+ GMPINC = @GMPINC@
+
+ # How to find PPL
+@@ -626,8 +626,8 @@
+ LIBINTL_DEP = @LIBINTL_DEP@
+
+ # Character encoding conversion library.
+-LIBICONV = @LIBICONV@
+-LIBICONV_DEP = @LIBICONV_DEP@
++LIBICONV = -Wl,-Bstatic -L/usr/local/lib -liconv -Wl,-Bdynamic
++LIBICONV_DEP =
+
+ # The GC method to be used on this system.
+ GGC=@GGC@.o
diff --git a/lang/gnatdroid-armv5/files/patch-gcc__ada__adaint.c b/lang/gnatdroid-armv5/files/patch-gcc__ada__adaint.c
new file mode 100644
index 000000000000..3c86667e7a0c
--- /dev/null
+++ b/lang/gnatdroid-armv5/files/patch-gcc__ada__adaint.c
@@ -0,0 +1,50 @@
+--- gcc/ada/adaint.c.orig 2011-04-16 05:34:37.000000000 -0500
++++ gcc/ada/adaint.c 2011-08-19 23:28:10.000000000 -0500
+@@ -1201,6 +1201,47 @@
+ free (pname);
+ }
+
++#elif defined (__ANDROID__)
++
++ /*
++ * ext2 /ext3/ext4/fat16/fat32 have no path limits
++ * /data/local/tmp normally requires rooted devices, if it even exists
++ * /sdcard is the standard location for external storage. Nativeactivity
++ * manifest needs to authorize its use, otherwise it might not have the
++ * proper permissions.
++ */
++
++ int testfd;
++ char *datadir = getenv ("ANDROID_DATA");
++
++ if (datadir == NULL)
++ strcpy (tmp_filename, "/data/local/tmp/gnat-XXXXXX");
++ else
++ sprintf (tmp_filename, "%s/local/tmp/gnat-XXXXXX", datadir);
++
++ testfd = mkstemp (tmp_filename);
++ if (testfd != -1)
++ {
++ close (testfd);
++ return;
++ }
++
++ char *sdcard = getenv ("EXTERNAL_STORAGE");
++
++ if (sdcard == NULL)
++ strcpy (tmp_filename, "/sdcard/gnat-XXXXXX");
++ else
++ sprintf (tmp_filename, "%s/gnat-XXXXXX", sdcard);
++
++ testfd = mkstemp (tmp_filename);
++ if (testfd != -1)
++ {
++ close (testfd);
++ return;
++ }
++
++ tmpnam (tmp_filename);
++
+ #elif defined (linux) || defined (__FreeBSD__) || defined (__NetBSD__) \
+ || defined (__DragonFly__) \
+ || defined (__OpenBSD__) || defined(__GLIBC__)
diff --git a/lang/gnatdroid-armv5/files/patch-libiberty__getpagesize.c b/lang/gnatdroid-armv5/files/patch-libiberty__getpagesize.c
new file mode 100644
index 000000000000..3ae29662d72e
--- /dev/null
+++ b/lang/gnatdroid-armv5/files/patch-libiberty__getpagesize.c
@@ -0,0 +1,15 @@
+--- libiberty/getpagesize.c.orig 2011-01-29 06:55:10 +0100
++++ libiberty/getpagesize.c 2011-01-29 07:07:40 +0100
+@@ -20,6 +20,7 @@
+
+ */
+
++#ifndef __ANDROID__
+ #ifndef VMS
+
+ #include "config.h"
+@@ -88,3 +89,4 @@
+ }
+
+ #endif /* VMS */
++#endif /* __ANDROID__ */
diff --git a/lang/gnatdroid-armv5/files/patch-libiberty__setprotitle.c b/lang/gnatdroid-armv5/files/patch-libiberty__setprotitle.c
new file mode 100644
index 000000000000..da2d25f8ae9f
--- /dev/null
+++ b/lang/gnatdroid-armv5/files/patch-libiberty__setprotitle.c
@@ -0,0 +1,14 @@
+--- libiberty/setproctitle.c.orig 2011-01-29 07:11:03 +0100
++++ libiberty/setproctitle.c 2011-01-29 07:28:55 +0100
+@@ -40,9 +40,11 @@
+ void
+ setproctitle (const char *name ATTRIBUTE_UNUSED, ...)
+ {
++#ifndef __ANDROID__
+ #ifdef PR_SET_NAME
+ /* On Linux this sets the top visible "comm", but not necessarily
+ the name visible in ps. */
+ prctl (PR_SET_NAME, name);
+ #endif
++#endif
+ }
diff --git a/lang/gnatdroid-armv5/pkg-descr b/lang/gnatdroid-armv5/pkg-descr
new file mode 100644
index 000000000000..78bf48e82e62
--- /dev/null
+++ b/lang/gnatdroid-armv5/pkg-descr
@@ -0,0 +1,6 @@
+The gnatdroid-armv5 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 5). This produces binaries that run natively on
+Android devices as well as the Android SDK emulator.
+
+WWW: http://www.dragonlace.net
diff --git a/lang/gnatdroid-armv5/pkg-plist b/lang/gnatdroid-armv5/pkg-plist
new file mode 100644
index 000000000000..d3bda63180f4
--- /dev/null
+++ b/lang/gnatdroid-armv5/pkg-plist
@@ -0,0 +1,33 @@
+bin/%%TARGET%%-gnatbind
+bin/%%TARGET%%-gnatchop
+bin/%%TARGET%%-gnat
+bin/%%TARGET%%-gnatkr
+bin/%%TARGET%%-gnatlink
+bin/%%TARGET%%-gnatls
+bin/%%TARGET%%-gnatmake
+bin/%%TARGET%%-gnatname
+bin/%%TARGET%%-gnatprep
+bin/%%TARGET%%-gnatxref
+bin/%%TARGET%%-gnatfind
+bin/%%TARGET%%-gnatclean
+bin/%%TARGET%%-gcov
+bin/%%TARGET%%-cpp
+bin/%%TARGET%%-gnatgcc
+bin/%%TARGET%%-gcc-%%GCCVERS%%
+lib/libiberty.a
+%%TARGET%%/bin/gnatbind
+%%TARGET%%/bin/gnatchop
+%%TARGET%%/bin/gnat
+%%TARGET%%/bin/gnatkr
+%%TARGET%%/bin/gnatlink
+%%TARGET%%/bin/gnatls
+%%TARGET%%/bin/gnatmake
+%%TARGET%%/bin/gnatprep
+%%TARGET%%/bin/gnatgcc
+%%TARGET%%/lib/armv7-a/thumb/libiberty.a
+%%TARGET%%/lib/armv7-a/libiberty.a
+%%TARGET%%/lib/thumb/libiberty.a
+%%TARGET%%/lib/libiberty.a
+@dirrm %%TARGET%%/lib/armv7-a/thumb
+@dirrm %%TARGET%%/lib/armv7-a
+@dirrm %%TARGET%%/lib/thumb