Update lang/seed7 to version 05.20160430
[dports.git] / lang / gcc6-aux / Makefile
1 # Created by: John Marino <marino@FreeBSD.org>
2 # $FreeBSD$
3
4 PORTNAME=       gcc6-aux
5 PORTVERSION=    ${SNAPSHOT}
6 PORTREVISION=   ${MAIN_PR}
7 CATEGORIES=     lang
8 MASTER_SITES=   http://downloads.dragonlace.net/src/:boot \
9                 LOCAL/marino:boot GCC/${MS_SUBDIR}
10 DISTFILES=      ${IDENTIFICATION}.tar.bz2
11
12 MAINTAINER=     marino@FreeBSD.org
13 COMMENT=        Version of GCC ${GCC_BRANCH} with full Ada support
14
15 LICENSE=        GPLv3 GPLv3RLE
16 LICENSE_COMB=   multi
17
18 .include "${.CURDIR}/Makefile.common"
19
20 LANGS=                  c c++ ada
21 APPLY_DIFFS=            core cxx ada
22 INTENDED_COMPILER=      NATIVE
23 GARCH=                  ${ARCH:S/amd64/x86_64/}
24 BOOTSTRAP_COMPILER=     gnat-bootstrap.${GARCH}.${OPSYS:tl}.tar.bz2
25 BLD_TARGET=             ${GARCH}-aux-${OPSYS:tl}${OSREL}
26 FULL_GNATGCC=           NOT_SET
27 OS_LABEL4VERS=          [${OPSYS}${GARCH:M*64:S/amd_//:S/x86_//}]
28 NO_MTREE=               yes
29 CPPFLAGS+=              -I${LOCALBASE}/include
30 LDFLAGS+=               -L${LOCALBASE}/lib
31
32 OPTIONS_GROUP=          Standard Bootstrap
33 OPTIONS_GROUP_Standard= FORT OBJC NLS TESTSUITE ALLSTAGES STATIC
34 OPTIONS_GROUP_Bootstrap=BOOTSTRAP
35 OPTIONS_DEFAULT=        FORT OBJC
36 NO_OPTIONS_SORT=        yes
37
38 FORT_DESC=              Fortran language support
39 OBJC_DESC=              Objective-C language support
40 TESTSUITE_DESC=         Activate test support
41 ALLSTAGES_DESC=         Build compiler with itself (twice, brings in libcc1)
42 STATIC_DESC=            Link compilers and drivers statically
43 BOOTSTRAP_DESC=         Create bootstrap compiler (overrides other options)
44
45 # The BOOTSTRAP option overrides all the others.  "make stage" will build a
46 # static compiler that supports C, C++, and Ada languages and then create
47 # a new distfile in $WRKDIR/newbsd with the name following the pattern:
48 # ada-bootstrap.$ARCH.$OPSYS.XY.tar.bz2.  There is no need to "make install"
49
50 .include <bsd.port.options.mk>
51
52 .if ${OPSYS} == FreeBSD
53 ONLY_FOR_ARCHS=         amd64 i386
54 MODERN_BINUTILS=        yes
55 BOOTSTRAP_COMPILER=     ada-bootstrap.${GARCH}.freebsd.100B.tar.bz2
56 .endif
57 .if ${OPSYS} == DragonFly
58 ONLY_FOR_ARCHS=         x86_64
59 BOOTSTRAP_COMPILER=     ada-bootstrap.${GARCH}.dragonfly.41.tar.bz2
60 .endif
61
62 .if defined(MODERN_BINUTILS)
63 # Apparently gcc 4.9 needs binutils 2.23 or greater to link Ada correctly
64 USE_BINUTILS=   yes
65 RUN_DEPENDS+=   ${LOCALBASE}/bin/as:devel/binutils
66 EXTRA_CONFIG+=  --with-ld=${LOCALBASE}/bin/ld
67 EXTRA_CONFIG+=  --with-as=${LOCALBASE}/bin/as
68 .else
69 EXTRA_CONFIG+=  --with-ld=/usr/bin/ld
70 EXTRA_CONFIG+=  --with-as=/usr/bin/as
71 .endif
72
73 WRKSRC=                 ${WRKDIR}/${IDENTIFICATION}
74 BUILDDIR=               ${WRKDIR}/build
75 NEWBSDIR=               ${WRKDIR}/newbs/bootstrap
76 CFG_SCRIPT=             ${WRKSRC}/configure
77 REVFILE=                ${WRKSRC}/gcc/REVISION
78 PHASEFILE=              ${WRKSRC}/gcc/DEV-PHASE
79 BOOTSTRAP_PREFIX=       ${WRKDIR}/bootstrap
80 PKG_PREFIX=             ${PREFIX}/${PORTNAME}
81 MANPREFIX=              ${PREFIX}/${PORTNAME}/share
82 BSFILENAME=             ada-bootstrap.${GARCH}.${OPSYS:tl}.${OSREL:S/.//}.tar.bz2
83
84 # If we find gnatmake and friends in a standard location, then we'll use this
85 # compiler instead of downloading the bootstrap.
86 .if exists (${LOCALBASE}/${PORTNAME}/bin/ada)
87 .if exists (${LOCALBASE}/${PORTNAME}/bin/gnatbind)
88 .if exists (${LOCALBASE}/${PORTNAME}/bin/gnatlink)
89 .if exists (${LOCALBASE}/${PORTNAME}/bin/gnatmake)
90 FULL_GNATGCC=${LOCALBASE}/${PORTNAME}/bin/ada
91 FULL_GNATGXX=${LOCALBASE}/${PORTNAME}/bin/g++
92 FULL_PATH=/sbin:/bin:/usr/sbin:/usr/bin:${PREFIX}/${PORTNAME}/bin:${PREFIX}/bin
93 .endif
94 .endif
95 .endif
96 .endif
97
98 # If FULL_GNATGCC is not set, we'll request the bootstrap compiler
99 .if ${FULL_GNATGCC} == NOT_SET
100 INTENDED_COMPILER=BOOTSTRAP
101 FULL_GNATGCC=${BOOTSTRAP_PREFIX}/bin/gcc
102 FULL_GNATGXX=${BOOTSTRAP_PREFIX}/bin/g++
103 FULL_PATH=${BOOTSTRAP_PREFIX}/bin:/sbin:/bin:/usr/sbin:/usr/bin:${PREFIX}/bin
104 DISTFILES+=     ${BOOTSTRAP_COMPILER}:boot
105 .endif
106
107 # for port maintenance, invoke "make makesum PLUS_BOOTSTRAPS=1"
108 .if defined(PLUS_BOOTSTRAPS)
109 DISTFILES=      \
110    ${IDENTIFICATION}.tar.bz2 \
111    ada-bootstrap.i386.freebsd.100B.tar.bz2:boot \
112    ada-bootstrap.x86_64.dragonfly.41.tar.bz2:boot \
113    ada-bootstrap.x86_64.freebsd.100B.tar.bz2:boot
114 .endif
115
116 .if ${PORT_OPTIONS:MFORT} && !${PORT_OPTIONS:MBOOTSTRAP}
117 LANGS+=         fortran
118 EXTRA_CONFIG+=  --enable-libquadmath
119 .else
120 EXTRA_CONFIG+=  --disable-libquadmath
121 .endif
122
123 .if ${PORT_OPTIONS:MOBJC} && !${PORT_OPTIONS:MBOOTSTRAP}
124 LANGS+=         objc
125 .endif
126
127 .if ${PORT_OPTIONS:MTESTSUITE} && !${PORT_OPTIONS:MBOOTSTRAP}
128 BUILD_DEPENDS+= dejagnu>=1.4:misc/dejagnu
129 APPLY_DIFFS+=   ada-testsuite
130 APPLY_DIFFS+=   gcc-testsuite
131 .endif
132
133 .if ${PORT_OPTIONS:MNLS} && !${PORT_OPTIONS:MBOOTSTRAP}
134 USES+=          gettext
135 EXTRA_CONFIG+=  --enable-nls
136 .else
137 EXTRA_CONFIG+=  --disable-nls
138 .endif
139
140 .if ${PORT_OPTIONS:MSTATIC} && !${PORT_OPTIONS:MBOOTSTRAP}
141 EXTRA_CONFIG+=          --with-stage1-ldflags=-static
142 .endif
143
144 .if ${PORT_OPTIONS:MBOOTSTRAP}
145 EXTRA_CONFIG+=          --disable-shared --disable-lto
146 EXTRA_CONFIG+=          --with-boot-ldflags=-static
147 .else
148 .  if !${PORT_OPTIONS:MALLSTAGES}
149 #  For reasons unknown, build fails at libcc1 when the compiler is not
150 #  not bootstrapping.  It appears to be an upstream error.  LibCC1 is used
151 #  for gdb 7.9 exclusively, so it's not really needed.  Let's disable it
152 #  by default, but let people that want it suffer a 3-stage build.
153 EXTRA_CONFIG+=          --disable-bootstrap --disable-libcc1
154 .  endif
155 USES+=                  iconv
156 .endif
157
158 # Establish Ada-aware compiler for use
159 ADA_CONFIGURE_ENV+=     CC=${FULL_GNATGCC}
160 ADA_CONFIGURE_ENV+=     CXX=${FULL_GNATGXX}
161 ADA_CONFIGURE_ENV+=     CFLAGS="${CFLAGS}"
162 ADA_CONFIGURE_ENV+=     CPPFLAGS="${CPPFLAGS}"
163 ADA_CONFIGURE_ENV+=     CXXFLAGS="${CXXFLAGS}"
164 ADA_CONFIGURE_ENV+=     LDFLAGS="${LDFLAGS}"
165 ADA_CONFIGURE_ENV+=     build_configargs="CPPFLAGS=\"${CPPFLAGS}\""
166 ADA_CONFIGURE_ENV+=     host_configargs="CPPFLAGS=\"${CPPFLAGS}\""
167 ADA_CONFIGURE_ENV+=     PATH=${FULL_PATH}
168 ADA_MAKE_ENV+=          PATH=${FULL_PATH}
169
170 # The standard configuration options
171 ADA_CONFIG_ARGS=        --enable-languages=${LANGS:Q}
172 ADA_CONFIG_ARGS+=       --build=${BLD_TARGET}
173 ADA_CONFIG_ARGS+=       --prefix=${PKG_PREFIX:Q}
174 ADA_CONFIG_ARGS+=       --with-system-zlib
175 ADA_CONFIG_ARGS+=       --with-gmp=${PREFIX}
176 ADA_CONFIG_ARGS+=       --with-mpfr=${PREFIX}
177 ADA_CONFIG_ARGS+=       --with-mpc=${PREFIX}
178 ADA_CONFIG_ARGS+=       ${ICONV_CONFIGURE_ARG}
179 ADA_CONFIG_ARGS+=       --enable-shared
180 ADA_CONFIG_ARGS+=       --enable-threads=posix
181 ADA_CONFIG_ARGS+=       --enable-checking=release
182 ADA_CONFIG_ARGS+=       --disable-libmudflap
183 ADA_CONFIG_ARGS+=       --disable-libgomp
184 ADA_CONFIG_ARGS+=       --disable-libssp
185 ADA_CONFIG_ARGS+=       ${EXTRA_CONFIG}
186
187 post-extract:
188         # Personalize GNAT for each different machine
189         @${ECHO} "-=> GNAT AUX ${OS_LABEL4VERS}" > ${REVFILE}
190         @${ECHO} ${PHASE} > ${PHASEFILE}
191
192         # Apply required composite diff files
193 .for suffix in ${APPLY_DIFFS}
194         @${ECHO} "Applying composite patch diff-${suffix}"
195         @${PATCH} -d ${WRKSRC} -s -E < ${FILESDIR}/diff-${suffix}
196 .endfor
197 .if ${PORT_OPTIONS:MSTATIC} || ${PORT_OPTIONS:MBOOTSTRAP}
198         # Ensure GNAT tools are built statically
199         ${REINPLACE_CMD} -e 's/^GCC_LINK_FLAGS=.*/GCC_LINK_FLAGS=-static/' \
200                 ${WRKSRC}/gcc/ada/gcc-interface/Makefile.in
201 .endif
202         # Update LINK_SPEC to add gcc-aux lib runpath in every binary
203         @${ECHO} "Configuring LINK_SPEC runpath"
204         @${REINPLACE_CMD} -e 's;\@PREFIX\@;${PREFIX};' \
205                 -e 's;\@GCCAUX\@;${PORTNAME};' \
206                 ${WRKSRC}/gcc/config/dragonfly.h \
207                 ${WRKSRC}/gcc/config/i386/freebsd64.h \
208                 ${WRKSRC}/gcc/config/i386/freebsd.h
209 .if defined(MODERN_BINUTILS)
210         # Use dwarf4-compatible addr2line (affects FreeBSD only)
211         ${REINPLACE_CMD} -e 's|/usr/bin/addr2line|${PREFIX}/bin/addr2line|g' \
212           ${WRKSRC}/gcc/ada/traceback_symbolic.c
213 .endif
214
215 do-configure:
216         ${MKDIR} ${BUILDDIR}
217         cd ${BUILDDIR} && ${SETENV} ${ADA_CONFIGURE_ENV} \
218                 ${CFG_SCRIPT} ${ADA_CONFIG_ARGS}
219
220 do-build:
221         cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} \
222                 ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} ${MAKE_ARGS} all
223
224 .if ${PORT_OPTIONS:MTESTSUITE} && !${PORT_OPTIONS:MBOOTSTRAP}
225 test: build test-ada test-fortran test-objc test-cxx test-c
226
227 test-ada:
228         cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} \
229                 ${MAKE_CMD} -sk check-ada
230
231 test-cxx:
232         # libstdc++ testsuite will break every time, for TRUE to continue
233         cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} \
234                 ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -sk check-c++ || true
235
236 test-c:
237         cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} \
238                 ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -sk check-c
239
240 test-fortran:
241 .  if ${PORT_OPTIONS:MFORT}
242         cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} \
243                 ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -sk check-fortran
244 .  endif
245
246 test-objc:
247 .  if ${PORT_OPTIONS:MOBJC}
248         cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} \
249                 ${MAKE_CMD} -j${MAKE_JOBS_NUMBER} -sk check-objc
250 .  endif
251 .endif
252
253 do-install:
254         cd ${BUILDDIR} && ${SETENV} ${ADA_MAKE_ENV} \
255                 ${MAKE_CMD} install-strip ${MAKE_ARGS}
256         ${MV} ${STAGEDIR}${PKG_PREFIX}/share ${WRKDIR}/moved_share
257         ${MKDIR} ${STAGEDIR}${PREFIX}/share/dejagnu/baseboards \
258                 ${STAGEDIR}${PREFIX}/share/dejagnu/config
259         ${INSTALL_DATA} ${FILESDIR}/android6.exp \
260                 ${STAGEDIR}${PREFIX}/share/dejagnu/config
261         ${INSTALL_DATA} ${FILESDIR}/gnatdroid6.exp \
262                 ${STAGEDIR}${PREFIX}/share/dejagnu/baseboards
263
264 post-stage:
265         (cd ${STAGEDIR}${PKG_PREFIX}; ${FIND} * -type d -empty | \
266                 ${SORT} -dr | ${XARGS} ${RMDIR})
267         (cd ${STAGEDIR}${PREFIX}; ${FIND} ${PORTNAME} share \
268                 \( -type f -or -type l \) | ${SORT} | ${SED} \
269                 -e 's/\/man\/man[1578]\/.*[1578]$$/&.gz/' >> ${TMPPLIST})
270 .if ${PORT_OPTIONS:MBOOTSTRAP}
271         ${MKDIR} ${NEWBSDIR}
272         ${CP} -a ${STAGEDIR}${PKG_PREFIX}/bin ${NEWBSDIR}/
273         ${CP} -a ${STAGEDIR}${PKG_PREFIX}/lib ${NEWBSDIR}/
274         ${CP} -a ${STAGEDIR}${PKG_PREFIX}/include ${NEWBSDIR}/
275         ${CP} -a ${STAGEDIR}${PKG_PREFIX}/libexec ${NEWBSDIR}/
276         ${RM} ${NEWBSDIR}/bin/${GARCH}*
277         ${RM} -rf ${NEWBSDIR}/lib/gcc/${BLD_TARGET}/${GCC_VERSION}/include-fixed
278         (cd ${NEWBSDIR}/.. ; ${TAR} -cyf ${BSFILENAME} bootstrap)
279 .endif
280
281 .include <bsd.port.mk>