1 # Created by: John Marino <marino@FreeBSD.org>
5 PORTVERSION= ${SNAPSHOT}
6 PORTREVISION?= ${ARMV7_PR}
8 MASTER_SITES= GCC/releases/gcc-${GCC_VERSION}
9 PKGNAMEPREFIX= gnatdroid-
10 DISTFILES= ${IDENTIFICATION}.tar.bz2
12 MAINTAINER?= marino@FreeBSD.org
13 COMMENT?= C/Ada cross-compiler, target: Android ARMv7
15 LICENSE= GPLv3 GPLv3RLE
18 BUILD_DEPENDS= ${SYSROOT}>=19:lang/${SYSROOT} \
19 ${GDBINUTILS}>=2.21:lang/${GDBINUTILS}
20 RUN_DEPENDS:= ${BUILD_DEPENDS}
22 NO_LICENSES_INSTALL= yes
25 .include "${.CURDIR}/../${AUXPORT}/Makefile.common"
29 APPLY_DIFFS= core ada cxx ada-testsuite
31 DISTINFO_FILE= ${.CURDIR}/../${AUXPORT}/distinfo
33 OPTIONS_DEFINE= FORT OBJC
35 FORT_DESC= Also build Fortran language
36 OBJC_DESC= Also build Objective-C language
38 DROID_TARGET?= arm-aux-linux-androideabi
40 ARG_ARCH?= --with-arch=armv7-a
41 ARG_FPU?= --with-fpu=neon
42 ARG_FLOATSOFT?= --with-float=soft
44 GARCH= ${ARCH:S/amd64/x86_64/}
45 BITS= ${GARCH:S/x86_64/64/:S/i386/32/}
46 OS_LABEL4VERS= [${OPSYS}${BITS} x Android ${CPUVERSION}]
47 WRKSRC= ${WRKDIR}/${IDENTIFICATION}
48 BUILD_WRKSRC= ${WRKDIR}/build
49 PATCHDIR= ${.CURDIR}/../${AUXPORT}/files
50 CFG_SCRIPT= ${WRKSRC}/configure
51 REVFILE= ${WRKSRC}/gcc/REVISION
52 SRPREFIX?= ${LOCALBASE}/android
53 PREFIX= ${SRPREFIX}/${CPUVERSION}
54 SYSROOT?= gnatdroid-sysroot
55 GDBINUTILS?= gnatdroid-binutils
56 PLIST_SUB+= TARGET="${DROID_TARGET}"
57 PLIST_SUB+= GCCVERS="${GCC_VERSION}"
58 SUB_FILES= pkg-message
59 SUB_LIST= TARGET="${DROID_TARGET}"
60 EXTRA_PATCHES= ${FILESDIR}/acats.diff
61 CROSS= gnat gnatbind gnatchop gnatclean gnatfind gnatkr \
62 gnatlink gnatls gnatmake gnatprep gnatxref
64 .include <bsd.port.options.mk>
66 .if ${PORT_OPTIONS:MFORT}
71 .if ${PORT_OPTIONS:MOBJC}
75 INSTALL_ENV= ${MAKE_ENV:C/^PATH=/&${SRPREFIX}\/${CPUVERSION}\/bin:/}
77 ADA_CONFIG_ARGS= --enable-languages=${LANGS:Q}
78 ADA_CONFIG_ARGS+= --target=${DROID_TARGET}
79 ADA_CONFIG_ARGS+= --program-prefix=${DROID_TARGET}-
80 ADA_CONFIG_ARGS+= --prefix=${PREFIX}
81 ADA_CONFIG_ARGS+= ${ARG_ARCH}
82 ADA_CONFIG_ARGS+= --with-system-zlib
83 ADA_CONFIG_ARGS+= --with-gmp=${LOCALBASE}
84 ADA_CONFIG_ARGS+= --with-mpfr=${LOCALBASE}
85 ADA_CONFIG_ARGS+= --with-mpc=${LOCALBASE}
86 ADA_CONFIG_ARGS+= ${ICONV_CONFIGURE_ARG}
87 ADA_CONFIG_ARGS+= --with-sysroot=${SRPREFIX}
88 ADA_CONFIG_ARGS+= ${ARG_FLOATSOFT}
89 ADA_CONFIG_ARGS+= ${ARG_FPU}
90 ADA_CONFIG_ARGS+= --enable-target-optspace
91 ADA_CONFIG_ARGS+= --enable-threads=posix
92 ADA_CONFIG_ARGS+= --enable-cxx-flags=-frtti
93 ADA_CONFIG_ARGS+= --enable-checking=release
94 ADA_CONFIG_ARGS+= --disable-bootstrap
95 ADA_CONFIG_ARGS+= --disable-shared
96 ADA_CONFIG_ARGS+= --disable-libssp
97 ADA_CONFIG_ARGS+= --disable-libgomp
98 ADA_CONFIG_ARGS+= --disable-libmudflap
99 ADA_CONFIG_ARGS+= --disable-libquadmath
100 ADA_CONFIG_ARGS+= --disable-libsanitizer
101 ADA_CONFIG_ARGS+= --disable-libitm
102 ADA_CONFIG_ARGS+= --disable-sjlj-exceptions
103 ADA_CONFIG_ARGS+= --disable-tls
104 ADA_CONFIG_ARGS+= --disable-nls
107 # Personalize GNAT for each different machine
108 @${ECHO} "-=> GNAT AUX ${OS_LABEL4VERS}" > ${REVFILE}
109 ${MKDIR} ${WRKSRC}/libstdc++-v3/config/locale/dragonfly
110 ${MKDIR} ${WRKSRC}/libstdc++-v3/config/os/bsd/dragonfly
111 # Apply required composite diff files
112 .for suffix in ${APPLY_DIFFS}
113 @${ECHO} "Applying composite patch diff-${suffix}"
114 @${PATCH} -d ${WRKSRC} -s -E < ${PATCHDIR}/diff-${suffix}
116 @(cd ${WRKSRC}/gcc/testsuite/ada/acats && \
117 ${CP} run_remote.sh run_all.sh)
118 ${REINPLACE_CMD} -e 's|@REMOTE_TARGET@|${DROID_TARGET}|' \
119 ${WRKSRC}/gcc/testsuite/ada/acats/run_all.sh
120 ${REINPLACE_CMD} -e 's|<syscall.h>|<sys/syscall.h>|' \
121 ${WRKSRC}/libstdc++-v3/libsupc++/guard.cc
124 ${MKDIR} ${BUILD_WRKSRC}
125 (cd ${BUILD_WRKSRC} && ${SETENV} ${CONFIGURE_ENV} \
126 ${CFG_SCRIPT} ${ADA_CONFIG_ARGS})
129 # Buggy makefile; seems to have forgotten this is a cross compiler
130 # Manually rename products so it doesn't rebuild them with new name
132 . if !exists(${BUILD_WRKSRC}/gcc/${X})
133 ${CP} -a ${BUILD_WRKSRC}/gcc/${X}-cross ${BUILD_WRKSRC}/gcc/${X}
136 (cd ${BUILD_WRKSRC} && ${SETENV} ${INSTALL_ENV} \
137 ${MAKE_CMD} install-strip DESTDIR=${STAGEDIR})
138 ${MV} ${STAGEDIR}${PREFIX}/bin/ada \
139 ${STAGEDIR}${PREFIX}/bin/${DROID_TARGET}-ada
143 (cd ${STAGEDIR}${PREFIX}; ${FIND} * -type d -empty | \
144 ${SORT} -dr | ${XARGS} ${RMDIR})
146 (cd ${STAGEDIR}${PREFIX}; \
147 ${FIND} * \( -type f -or -type l \) | ${SORT} | \
148 ${SED} -e '/^bin\//d' -e '/^${DROID_TARGET}\/bin\//d' \
152 (cd ${BUILD_WRKSRC}/gcc && ${SETENV} \
153 PATH=${LOCALBASE}/${AUXPORT}/bin:${PATH}:${PREFIX}/bin \
154 ${GMAKE} -sk check-acats)
157 (cd ${BUILD_WRKSRC}/gcc && ${SETENV} \
158 PATH=${LOCALBASE}/${AUXPORT}/bin:${PATH}:${PREFIX}/bin \
159 ${GMAKE} -sk check-gnat RUNTESTFLAGS=--target_board=gnatdroid6)
161 .include <bsd.port.mk>