1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-25 00:51:21 +00:00
freebsd-ports/lang/gnatdroid-armv7/Makefile
John Marino e58e7d33c5 lang/gnatdroid-armv(5,7): Use lang/gcc-aux as base, not lang/gnat-aux
After a few additional patches for gcc-aux, gnatdroid-armv5 (and -armv7)
build and execute well when built and based on gcc 4.7-based gcc-aux.
The previous version was based on gcc 4.6-based gnat-aux.  This was the
final port requiring gnat-aux, and now its part of the Ada framework.

Running acats using an ASUS Transformer XF101 (Android 4.0.3) as a target
results in a nearly perfect result.  Only test cb1010a fails, which is
a failure to detect running out of stack space (-fstack-check).  I intend
to investigate further, but as the only problem, gnatdroid remains a
highly capable compiler despite the small regression.  Potentially
zero-cost exceptions were gained as a trade-off.
2014-01-23 20:46:14 +00:00

180 lines
5.0 KiB
Makefile

# Created by: John Marino <marino@FreeBSD.org>
# $FreeBSD$
PORTNAME= armv7
PORTVERSION= ${SNAPSHOT}
CATEGORIES= lang
MASTER_SITES= ${MASTER_SITE_GCC}
MASTER_SITE_SUBDIR= releases/gcc-${GCC_VERSION}
PKGNAMEPREFIX= gnatdroid-
DISTNAME= arm-gnat-${PORTVERSION}
DISTFILES= gcc-${GCC_VERSION}.tar.bz2
MAINTAINER= marino@FreeBSD.org
COMMENT= C/Ada cross-compiler, target: Android ARMv7
LICENSE= GPLv3
BUILD_DEPENDS= gnatdroid-sysroot>=9:${PORTSDIR}/lang/gnatdroid-sysroot \
gnatdroid-binutils>=2.21:${PORTSDIR}/lang/gnatdroid-binutils
RUN_DEPENDS:= ${BUILD_DEPENDS}
NO_LICENSES_INSTALL= yes
.include "${.CURDIR}/../gcc-aux/Makefile.common"
# DELETE NEXT LINE AFTER NEXT UPDATE TO GCC-AUX 4.7 TO AVOID PORTEPOCH
# Without it, this port version regresses by a day
SNAPSHOT:= 20130413 # last portversion + 1
USES+= ada gmake
LANGS= c ada
APPLY_DIFFS= core ada ada-testsuite gcc-testsuite
NO_MTREE= YES
DISTINFO_FILE= ${.CURDIR}/../gcc-aux/distinfo
# Disable C++ until arm.cc/no-rtti issue resolved for libsupc++
OPTIONS_DEFINE= FORT OBJC #CXX
OPTIONS_DEFAULT=
OPTIONS_SUB= yes
CXX_DESC= Also build c++ language
FORT_DESC= Also build Fortran language
OBJC_DESC= Also build Objective-C language
DROID_TARGET= arm-android-eabi
DROID_ARCH= armv7-a
ARMVERSION= ARMv7
FPU= neon
WRKSRC= ${WRKDIR}/gcc-${GCC_VERSION}
BUILD_WRKSRC= ${WRKDIR}/build
PATCHDIR= ${.CURDIR}/../gcc-aux/files
CFG_SCRIPT= ${WRKSRC}/configure
REVFILE= ${WRKSRC}/gcc/REVISION
SRPREFIX= ${LOCALBASE}/android9
PREFIX= ${SRPREFIX}/${ARMVERSION}
INSTALLDIRS= lib libexec share
INSTALLDIRS+= ${DROID_TARGET}/lib
PLIST_SUB+= TARGET="${DROID_TARGET}"
PLIST_SUB+= GCCVERS="${GCC_VERSION}"
SUB_FILES= pkg-message
SUB_LIST= TARGET="${DROID_TARGET}"
ALL_TARGET= all
.include <bsd.port.pre.mk>
.if ${ARCH:S/amd64/x86_64/} == x86_64
OS_LABEL4VERS= "[${OPSYS}64 x Android ${ARMVERSION}]"
.else
OS_LABEL4VERS= "[${OPSYS}32 x Android ${ARMVERSION}]"
.endif
###########
## C++ ##
###########
.if ${PORT_OPTIONS:MCXX}
LANGS+= c++
APPLY_DIFFS+= cxx cxx-testsuite
INSTALLDIRS+= include/c++/${GCC_VERSION}
.endif
###############
## Fortran ##
###############
.if ${PORT_OPTIONS:MFORT}
LANGS+= fortran
APPLY_DIFFS+= fortran
.endif
###################
## Objective-C ##
###################
.if ${PORT_OPTIONS:MOBJC}
LANGS+= objc
.endif
CONFIGURE_ARGS= --enable-languages=${LANGS:Q}
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+= ${ICONV_CONFIGURE_ARG}
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-sjlj-exceptions
CONFIGURE_ARGS+= --disable-tls
CONFIGURE_ARGS+= --disable-nls
post-extract:
# Personalize GNAT for each different machine
@${ECHO} "-=> GNAT AUX ${OS_LABEL4VERS}" > ${REVFILE}
# Create new directories in preparation of applying diff files
.if ${PORT_OPTIONS:MCXX}
${MKDIR} ${WRKSRC}/libstdc++-v3/config/locale/dragonfly
${MKDIR} ${WRKSRC}/libstdc++-v3/config/os/bsd/dragonfly
.endif
# 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
do-configure:
${MKDIR} ${BUILD_WRKSRC}
cd ${BUILD_WRKSRC} && ${SETENV} ${CONFIGURE_ENV} \
${CFG_SCRIPT} ${CONFIGURE_ARGS}
pre-install:
# The "native tools" won't install unless a directory exists
${MKDIR} ${STAGEDIR}${PREFIX}/${DROID_TARGET}/bin
do-install:
cd ${BUILD_WRKSRC} && ${GMAKE} install-strip DESTDIR=${STAGEDIR}
${MV} ${STAGEDIR}${PREFIX}/bin/${DROID_TARGET}-gcc \
${STAGEDIR}${PREFIX}/bin/${DROID_TARGET}-gnatgcc
${MV} ${STAGEDIR}${PREFIX}/${DROID_TARGET}/bin/gcc \
${STAGEDIR}${PREFIX}/${DROID_TARGET}/bin/gnatgcc
.if ${PORT_OPTIONS:MFORT}
${MV} ${STAGEDIR}${PREFIX}/bin/${DROID_TARGET}-gfortran \
${STAGEDIR}${PREFIX}/bin/${DROID_TARGET}-gnatgfortran
${MV} ${STAGEDIR}${PREFIX}/${DROID_TARGET}/bin/gfortran \
${STAGEDIR}${PREFIX}/${DROID_TARGET}/bin/gnatgfortran
.endif
post-install:
.for d in ${INSTALLDIRS}
cd ${STAGEDIR}${PREFIX}; ${FIND} $d \( -type f -or -type l \) | \
${SORT} >> ${TMPPLIST}
.endfor
.for loop in A B
cd ${STAGEDIR}${PREFIX}; ${FIND} * -type d -empty | \
${SORT} -dr | ${XARGS} ${RMDIR}
.endfor
cd ${STAGEDIR}${PREFIX}; ${FIND} * -type d | ${SORT} -dr | \
${SED} -e '/^bin$$/d' \
-e '/^${DROID_TARGET}\/bin$$/d' \
-e '/^${DROID_TARGET}\/lib$$/d' \
-e '/^${DROID_TARGET}$$/d' \
-e 's/^/@dirrm /g' >> ${TMPPLIST}
.include <bsd.port.post.mk>