freebsd-ports/lang/gnatdroid-armv7/Makefile
John Marino 82cfb486dc Add gnatdroid-x86 (3 new ports), X-compiler to Android-x86
Similar to lang/gnatdroid-armv7, lang/gnatdroid-x86 is a cross-compiler
targetting Android. The former targets ARMv7 processors while the latter
targets Android on x86 (32-bit).  The latter also runs on Virtualbox as
a bonus.  The new ports are implemented as slaves to the ARMv7 versions.

The GNAT ACATS were run, and it passed every test except CXG2024,
"accuracy of multiplication and division of mixed decimal and binary
fixed point numbers".
subtest 13: expected -51.00 got 50.0
subtest 14: expected 51.0 got 50.0

This is probably a rounding error unique to 32-bit x86.  Overall this
version passed better than gnatdroid-armv7 because unwind is supported,
enabling check check support.

Also added:
lang/gnatdroid-sysroot-x86 (KitKat and Lollipop API)
lang/gnatdroid-binutils-x86

Despite the desciption, C++, Fortran and Objective-C should also work
well (in addition to advertised C and Ada frontends).

===

The gnatdroid-x86 port builds a C/Ada cross-compiler based on GCC 4.9
that targets the Android operating system (up to version 5.0, API level
21) running on x86 or x86_64 architecture (version 7).  This produces
binaries that run natively on x86-based Android devices.
2015-11-30 00:15:39 +00:00

159 lines
4.9 KiB
Makefile

# Created by: John Marino <marino@FreeBSD.org>
# $FreeBSD$
PORTNAME?= armv7
PORTVERSION= ${SNAPSHOT}
PORTREVISION?= ${ARMV7_PR}
CATEGORIES= lang
MASTER_SITES= GCC/releases/gcc-${GCC_VERSION}
PKGNAMEPREFIX= gnatdroid-
DISTFILES= ${IDENTIFICATION}.tar.bz2
MAINTAINER?= marino@FreeBSD.org
COMMENT?= C/Ada cross-compiler, target: Android ARMv7
LICENSE= GPLv3 GPLv3RLE
LICENSE_COMB= multi
BUILD_DEPENDS= ${SYSROOT}>=19:${PORTSDIR}/lang/${SYSROOT} \
${GDBINUTILS}>=2.21:${PORTSDIR}/lang/${GDBINUTILS}
RUN_DEPENDS:= ${BUILD_DEPENDS}
NO_LICENSES_INSTALL= yes
.include "${.CURDIR}/../gcc-aux/Makefile.common"
USES+= ada:49 gmake
LANGS= c c++ ada
APPLY_DIFFS= core ada cxx ada-testsuite
NO_MTREE= YES
DISTINFO_FILE= ${.CURDIR}/../gcc-aux/distinfo
OPTIONS_DEFINE= FORT OBJC
OPTIONS_SUB= yes
FORT_DESC= Also build Fortran language
OBJC_DESC= Also build Objective-C language
DROID_TARGET?= arm-aux-linux-androideabi
CPUVERSION?= ARMv7
ARG_ARCH?= --with-arch=armv7-a
ARG_FPU?= --with-fpu=neon
ARG_FLOATSOFT?= --with-float=soft
ALL_TARGET= all
GARCH= ${ARCH:S/amd64/x86_64/}
BITS= ${GARCH:S/x86_64/64/:S/i386/32/}
OS_LABEL4VERS= [${OPSYS}${BITS} x Android ${CPUVERSION}]
WRKSRC= ${WRKDIR}/${IDENTIFICATION}
BUILD_WRKSRC= ${WRKDIR}/build
PATCHDIR= ${.CURDIR}/../gcc-aux/files
CFG_SCRIPT= ${WRKSRC}/configure
REVFILE= ${WRKSRC}/gcc/REVISION
SRPREFIX?= ${LOCALBASE}/android
PREFIX= ${SRPREFIX}/${CPUVERSION}
SYSROOT?= gnatdroid-sysroot
GDBINUTILS?= gnatdroid-binutils
PLIST_SUB+= TARGET="${DROID_TARGET}"
PLIST_SUB+= GCCVERS="${GCC_VERSION}"
SUB_FILES= pkg-message
SUB_LIST= TARGET="${DROID_TARGET}"
EXTRA_PATCHES= ${FILESDIR}/acats.diff
CROSS= gnat gnatbind gnatchop gnatclean gnatfind gnatkr \
gnatlink gnatls gnatmake gnatprep gnatxref
.include <bsd.port.options.mk>
.if ${PORT_OPTIONS:MFORT}
LANGS+= fortran
APPLY_DIFFS+= fortran
.endif
.if ${PORT_OPTIONS:MOBJC}
LANGS+= objc
.endif
INSTALL_ENV= ${MAKE_ENV:C/^PATH=/&${SRPREFIX}\/${CPUVERSION}\/bin:/}
ADA_CONFIG_ARGS= --enable-languages=${LANGS:Q}
ADA_CONFIG_ARGS+= --target=${DROID_TARGET}
ADA_CONFIG_ARGS+= --program-prefix=${DROID_TARGET}-
ADA_CONFIG_ARGS+= --prefix=${PREFIX}
ADA_CONFIG_ARGS+= ${ARG_ARCH}
ADA_CONFIG_ARGS+= --with-system-zlib
ADA_CONFIG_ARGS+= --with-gmp=${LOCALBASE}
ADA_CONFIG_ARGS+= --with-mpfr=${LOCALBASE}
ADA_CONFIG_ARGS+= --with-mpc=${LOCALBASE}
ADA_CONFIG_ARGS+= ${ICONV_CONFIGURE_ARG}
ADA_CONFIG_ARGS+= --with-sysroot=${SRPREFIX}
ADA_CONFIG_ARGS+= ${ARG_FLOATSOFT}
ADA_CONFIG_ARGS+= ${ARG_FPU}
ADA_CONFIG_ARGS+= --enable-target-optspace
ADA_CONFIG_ARGS+= --enable-threads=posix
ADA_CONFIG_ARGS+= --enable-cxx-flags=-frtti
ADA_CONFIG_ARGS+= --disable-bootstrap
ADA_CONFIG_ARGS+= --disable-shared
ADA_CONFIG_ARGS+= --disable-libssp
ADA_CONFIG_ARGS+= --disable-libgomp
ADA_CONFIG_ARGS+= --disable-libmudflap
ADA_CONFIG_ARGS+= --disable-libquadmath
ADA_CONFIG_ARGS+= --disable-libsanitizer
ADA_CONFIG_ARGS+= --disable-libitm
ADA_CONFIG_ARGS+= --disable-sjlj-exceptions
ADA_CONFIG_ARGS+= --disable-tls
ADA_CONFIG_ARGS+= --disable-nls
post-extract:
# Personalize GNAT for each different machine
@${ECHO} "-=> GNAT AUX ${OS_LABEL4VERS}" > ${REVFILE}
${MKDIR} ${WRKSRC}/libstdc++-v3/config/locale/dragonfly
${MKDIR} ${WRKSRC}/libstdc++-v3/config/os/bsd/dragonfly
# Apply required composite diff files
.for suffix in ${APPLY_DIFFS}
@${ECHO} "Applying composite patch diff-${suffix}"
@${PATCH} -d ${WRKSRC} -s -E < ${PATCHDIR}/diff-${suffix}
.endfor
@(cd ${WRKSRC}/gcc/testsuite/ada/acats && \
${CP} run_remote.sh run_all.sh)
${REINPLACE_CMD} -e 's|@REMOTE_TARGET@|${DROID_TARGET}|' \
${WRKSRC}/gcc/testsuite/ada/acats/run_all.sh
${REINPLACE_CMD} -e 's|<syscall.h>|<sys/syscall.h>|' \
${WRKSRC}/libstdc++-v3/libsupc++/guard.cc
do-configure:
${MKDIR} ${BUILD_WRKSRC}
(cd ${BUILD_WRKSRC} && ${SETENV} ${CONFIGURE_ENV} \
${CFG_SCRIPT} ${ADA_CONFIG_ARGS})
do-install:
# Buggy makefile; seems to have forgotten this is a cross compiler
# Manually rename products so it doesn't rebuild them with new name
.for X in ${CROSS}
. if !exists(${BUILD_WRKSRC}/gcc/${X})
${CP} -a ${BUILD_WRKSRC}/gcc/${X}-cross ${BUILD_WRKSRC}/gcc/${X}
. endif
.endfor
(cd ${BUILD_WRKSRC} && ${SETENV} ${INSTALL_ENV} \
${MAKE_CMD} install-strip DESTDIR=${STAGEDIR})
${MV} ${STAGEDIR}${PREFIX}/bin/ada \
${STAGEDIR}${PREFIX}/bin/${DROID_TARGET}-ada
post-stage:
.for loop in A B
(cd ${STAGEDIR}${PREFIX}; ${FIND} * -type d -empty | \
${SORT} -dr | ${XARGS} ${RMDIR})
.endfor
(cd ${STAGEDIR}${PREFIX}; \
${FIND} * \( -type f -or -type l \) | ${SORT} | \
${SED} -e '/^bin\//d' -e '/^${DROID_TARGET}\/bin\//d' \
>> ${TMPPLIST})
acats: build
(cd ${BUILD_WRKSRC}/gcc && ${SETENV} \
PATH=${LOCALBASE}/gcc-aux/bin:${PATH}:${PREFIX}/bin \
${GMAKE} -sk check-acats)
gnatdg: build
(cd ${BUILD_WRKSRC}/gcc && ${SETENV} \
PATH=${LOCALBASE}/gcc-aux/bin:${PATH}:${PREFIX}/bin \
${GMAKE} -sk check-gnat RUNTESTFLAGS=--target_board=gnatdroid)
.include <bsd.port.mk>