1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-16 03:24:07 +00:00
freebsd-ports/lang/gnat/Makefile
2006-12-26 16:56:14 +00:00

232 lines
6.8 KiB
Makefile

# New ports collection makefile for: GNU Ada gnat
# Date created: Sat Mar 18 02:16:45 1995
# Whom: hsu
# Porter (original): nils@guru.ims.uni-stuttgart.de
# Porter (version 3): maurice@serc.rmit.edu.au
#
# $FreeBSD$
#
# Note:
# - FreeBSD tasking libraries created by Dan Eischen have been incorporated
# into this edition
# - The default names of a number of binaries have been altered to avoid
# conflict with other gcc based products. Standard names can be provided
# using symbolic links.
PORTNAME= gnat
PORTVERSION= 2006
CATEGORIES= lang
MASTER_SITES= ${MASTER_SITE_LOCAL}:boot
MASTER_SITE_SUBDIR= deischen/gcc/:boot
DISTFILES= ${GCC_SRCFILE}:gcc ${GNAT_SRCFILE}:gnat
MAINTAINER= eischen@vigrid.com
COMMENT= The GNU Ada Compiler system
CONFLICTS= gcc-3.4.*
USE_GMAKE= yes
USE_BISON= yes
USE_PERL5_RUN= yes
.include <bsd.port.pre.mk>
WRKSRC= ${WRKDIR}/gcc-34
GNATNAME= gnat-gpl-2006-src
GNUHOST= ${ARCH}-portbld-freebsd${OSREL}
GCC_VERSION= 3.4.6
# http://libre.adacore.com/:gcc
# http://libre.adacore.com/:gnat
GCC_SRCFILE= gcc-3.4.6-src.tgz
GNAT_SRCFILE= gnat-gpl-2006-src.tgz
PLIST_SUB= GNUHOST=${GNUHOST} GCC_VERSION=${GCC_VERSION} \
LIBRARY_VERSION=${LIBRARY_VERSION}
# Make no mistake about what host/target we are building on/for.
# This package does not support cross-compiling, and this fixes
# problems with bsd.port.mk files from earlier FreeBSD 3.x releases.
CONFIGURE_TARGET= ${GNUHOST}
CONFIGURE_ARGS= --enable-languages="c,ada" \
--program-prefix=gnat \
--disable-nls \
--with-system-zlib \
--with-libiconv-prefix=${LOCALBASE}
TARGLIB= ${PREFIX}/lib/gcc/${GNUHOST}/${GCC_VERSION}
GNU_CONFIGURE= yes
MAN1= gnatgcc.1 gnatcpp.1 gnatgcov.1
MAN7= fsf-funding.7 gfdl.7 gpl.7
NO_PACKAGE= This version of GNAT produces GPL-tainted executables
# You need a compiler who calls an existing GNAT compiler (3.15 or greater).
# If you have one, point GNATGCC at it. By default, we'll look for one in
# the path. If we can't find one, we'll fetch a distfile containing
# a minimum (still pretty large) compiler toolset and use that to build.
GNATGCC!= if ${WHICH} adagcc > /dev/null 2>&1; then \
${ECHO_CMD} "`${WHICH} adagcc`"; \
else \
${ECHO_CMD} ""; \
fi
GNATBIND!= if ${WHICH} gnatbind > /dev/null 2>&1; then \
${ECHO_CMD} "`${WHICH} gnatbind`"; \
else \
${ECHO_CMD} ""; \
fi
.if empty(GNATGCC)
GNATGCC!= if ${WHICH} gnatgcc > /dev/null 2>&1; then \
${ECHO_CMD} "`${WHICH} gnatgcc`"; \
else \
${ECHO_CMD} ""; \
fi
.endif
.if !empty(GNATGCC) && !empty(GNATBIND)
have_boot!= if [ -x ${GNATGCC} -a -x ${GNATBIND} ]; then \
${ECHO_CMD} "$$PATH"; \
else \
${ECHO_CMD} ""; \
fi
.else
have_boot=
.endif
.if empty(have_boot)
ONLY_FOR_ARCHS= i386
DISTFILES+= gnat-3.15p-boot.tar.gz:boot
.if ${OSVERSION} >= 500000
BUILD_DEPENDS+= ${LOCALBASE}/lib/compat/libc.so.4:${PORTSDIR}/misc/compat4x
.endif
# Warning! You need the trailing slash on GCC_EXEC_PREFIX.
COMPILEDATA= GCC_EXEC_PREFIX=${WRKDIR}/adaboot/lib/gcc-lib/ \
ADA_INCLUDE_PATH=${WRKDIR}/adaboot/lib/gcc-lib/adainclude \
ADA_OBJECTS_PATH=${WRKDIR}/adaboot/lib/gcc-lib/adalib
have_boot= ${WRKDIR}/adaboot/bin:${PATH}
GNATGCC= adagcc
.endif
# Make sure we use the Ada-aware gcc compiler.
CC= ${GNATGCC}
CONFIGURE_ENV= ${COMPILE_DATA} PATH=${have_boot}
# Shared library handling
.if defined(WANT_SHAREDLIBS)
CONFIGURE_ARGS+= --enable-shared
INSTALLS_SHLIB= yes
LDCONFIG_DIRS= %%PREFIX%%/lib ${TARGLIB}
LIBRARY_VERSION= 2006
PLIST_SUB+= SHAREDLIB=""
.else
CONFIGURE_ARGS+= --disable-shared
PLIST_SUB+= SHAREDLIB="@comment "
.endif
# Check for GNAT sources.
.if !exists(${DISTDIR}/${GNAT_SRCFILE}) && !defined(PACKAGE_BUILDING)
ECHO_MSG=/usr/bin/printf
IGNORE= :\n\
Because of licensing and registration restrictions, you must fetch the\n\
source distribution manually. Please access http://libre.adacore.com/\n\
with a web browser, register (it's free), and log in. Download the source\n\
files:\n\
\t${GNAT_SRCFILE}\n\
\t${GCC_SRCFILE}\n\
and place them in ${DISTDIR}.\n
.endif
pre-patch:
@${ECHO} "===> Applying FreeBSD ports tree patches for gcc34."
@( cd ${WRKSRC}; \
for i in ${PORTSDIR}/lang/gcc34/files/patch-*; do \
${PATCH} ${PATCH_ARGS} < $$i; \
done )
@${ECHO} "===> Applying GNAT supplied patches for gcc34."
@( cd ${WRKSRC}; \
${PATCH} ${PATCH_ARGS} < ${WRKDIR}/${GNATNAME}/src/gcc-34.dif )
@${ECHO} "===> Moving GNAT compiler sources into GCC tree."
@( ${MV} ${WRKDIR}/${GNATNAME}/src/ada ${WRKDIR}/gcc-34/gcc )
# Copy any additional files required into the correct locations, and also
# remove .orig files leftover from patching so they won't get installed.
post-patch:
@(cd ${FILESDIR}; \
for i in *.adb *.ads ; do \
${CP} $$i ${WRKSRC}/gcc/ada; \
done )
pre-configure:
@${TOUCH} ${TOUCH_FLAGS} ${WRKSRC}/gcc/cstamp-h.in
#
# Can't get this to work with default bsd.port.mk do-configure target.
#
do-configure:
@(cd ${WRKSRC} && \
${SETENV} ${CONFIGURE_ENV} ./${CONFIGURE_SCRIPT} ${CONFIGURE_ARGS})
#
# We intentionally override CFLAGS because the build procedure is explicitly
# spelled out in gnat-3.13p-src/src/README.BUILD. Remove CFLAGS from the
# do-build target at your own risk.
#
do-build:
(cd ${WRKSRC}; \
PATH=${have_boot} \
${SETENV} ${COMPILEDATA} ${GMAKE} CC=${CC} )
(cd ${WRKSRC}; \
${SETENV} ${MAKE_ENV} \
${GMAKE} PTHREAD_LIBS=${PTHREAD_LIBS} bootstrap )
(cd ${WRKSRC}; \
${SETENV} ${MAKE_ENV} \
${GMAKE} -C gcc PTHREAD_LIBS=${PTHREAD_LIBS} gnatlib )
.if defined(WANT_SHAREDLIBS)
(cd ${WRKSRC}; \
${SETENV} ${MAKE_ENV} \
${GMAKE} -C gcc PTHREAD_LIBS=${PTHREAD_LIBS} gnatlib-shared )
.endif
(cd ${WRKSRC}; \
${SETENV} ${MAKE_ENV} \
${GMAKE} -C gcc PTHREAD_LIBS=${PTHREAD_LIBS} gnattools )
do-install:
(cd ${WRKSRC}; \
${SETENV} ${MAKE_ENV} ${GMAKE} ${INSTALL_TARGET} )
${INSTALL_SCRIPT} ${WRKSRC}/gcc/ada/gnathtml.pl ${PREFIX}/bin
post-install:
@(for prog in \
${PREFIX}/bin/gnat \
${PREFIX}/bin/gnatbind \
${PREFIX}/bin/gnatbl \
${PREFIX}/bin/gnatchop \
${PREFIX}/bin/gnatclean \
${PREFIX}/bin/gnatcpp \
${PREFIX}/bin/gnatfind \
${PREFIX}/bin/gnatgcc \
${PREFIX}/bin/gnatgcov \
${PREFIX}/bin/gnatkr \
${PREFIX}/bin/gnatlink \
${PREFIX}/bin/gnatls \
${PREFIX}/bin/gnatmake \
${PREFIX}/bin/gnatname \
${PREFIX}/bin/gnatprep \
${PREFIX}/bin/gnatxref \
${PREFIX}/bin/${GNUHOST}-gcc-${GCC_VERSION} \
${PREFIX}/bin/${GNUHOST}-gnatgcc \
${PREFIX}/libexec/gcc/${GNUHOST}/${GCC_VERSION}/cc1 \
${PREFIX}/libexec/gcc/${GNUHOST}/${GCC_VERSION}/gnat1 \
${PREFIX}/libexec/gcc/${GNUHOST}/${GCC_VERSION}/collect2 ; \
do \
if [ -x $$prog ]; then \
${STRIP_CMD} $$prog ; \
fi \
done)
@(chown -R root:wheel ${TARGLIB})
.if defined(WANT_SHAREDLIBS)
${MV} -f ${PREFIX}/lib/libgcc_s.* ${TARGLIB}
.endif
${RM} -f ${PREFIX}/lib/libiberty.a
.include <bsd.port.post.mk>