freebsd-ports/lang/fpc/Makefile
2004-02-07 00:20:53 +00:00

173 lines
5.1 KiB
Makefile

# New ports collection makefile for: Free Pascal Compiler
# Date created: 28 November 2001
# Whom: John Merryweather Cooper et al
#
# $FreeBSD$
#
PORTNAME= fpc
PORTVERSION= 1.0.10
PORTREVISION= 1
CATEGORIES= lang
MASTER_SITES= ftp://ftp.freepascal.org/pub/fpc/dist/FreeBSD/ \
http://planetmirror.com/pub/fpc/dist/FreeBSD/ \
ftp://ftp.jp.freepascal.org/mirror/fpc/dist/FreeBSD/ \
ftp://freepascal.stack.nl/pub/fpc/dist/FreeBSD/ \
ftp://ftp.no.freepascal.org/pub/fpc/dist/FreeBSD/ \
ftp://ftp.us.freepascal.org/pub/fpc/dist/FreeBSD/ \
${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= freepascal
DISTNAME= ${PORTNAME}-${PORTVERSION}.ELF
EXTRACT_SUFX= .tar
MAINTAINER= coop9211@uidaho.edu
COMMENT= Free Pascal compiler with Turbo, Delphi and other extensions
.include <bsd.port.pre.mk>
.if ${OSVERSION} >= 502000
BROKEN= "Install fails"
.endif
LIB_DEPENDS= gds.1:${PORTSDIR}/databases/firebird
.if ${OSVERSION} >= 500000
LIB_DEPENDS+= c.4:${PORTSDIR}/misc/compat4x
.endif
.if ${OSVERSION} < 470000
EXTRACT_DEPENDS= gtar:${PORTSDIR}/archivers/gtar
TAR= ${LOCALBASE}/bin/gtar
.endif
USE_MYSQL= yes
USE_GMAKE= yes
USE_REINPLACE= yes
ONLY_FOR_ARCHS= i386
PKGDEINSTALL= ${PKGINSTALL}
PLIST_SUB+= PORTVERSION=${PORTVERSION}
MAN1= delp.1 fpc.1 fpcmake.1 fpdoc.1 h2pas.1 plex.1 ppc386.1 ppdep.1 \
ppudump.1 ppufiles.1 ppumove.1 ptop.1 pyacc.1 rstconv.1
MAN5= fpc.cfg.5 fpcmake.5 ptop.cfg.5
# FreePascal is not self-bootstrapping. Hence, the need for a working
# pppc386. Check for ppc386 in a manner similar to lang/gnat.
#
# Look in PREFIX
.ifdef PREFIX
have_boot!= if [ -x ${PREFIX}/bin/ppc386 ]; then \
${ECHO_CMD} "${PREFIX}/bin"; \
else \
${ECHO_CMD} ""; \
fi
.else
have_boot=
.endif
# Then look in LOCALBASE
.if empty(have_boot)
have_boot!= if [ -x ${LOCALBASE}/bin/ppc386 ]; then \
${ECHO_CMD} "${LOCALBASE}/bin"; \
else \
${ECHO_CMD} ""; \
fi
.endif
.if empty(have_boot)
have_boot= ${WRKSRC}/boot
.endif
MAKE_ENV+= PATH=${have_boot}/bin:$$PATH \
FPC=${have_boot}/bin/ppc386 \
INSTALL_BASEDIR=${PREFIX}/lib/fpc/${PORTVERSION} \
INSTALL_BINDIR=${PREFIX}/bin \
GCCLIBDIR=/usr/lib \
RELEASE=1
do-extract:
# unpack distribution
@${MKDIR} ${WRKSRC}
@${TAR} xf ${DISTDIR}/${DISTNAME}.tar --directory ${WRKSRC}
# unpack pre-compiled binaries distribution
@${MKDIR} ${WRKSRC}/binary
@${TAR} xf ${WRKSRC}/binary.tar --directory ${WRKSRC}/binary
# unpack sources distribution
@${MKDIR} ${WRKSRC}/sources
@${TAR} xf ${WRKSRC}/sources.tar --directory ${WRKSRC}/sources
# create a local binary ppc386
@${MKDIR} ${WRKSRC}/boot
@${TAR} zxf ${WRKSRC}/binary/basefreebsd.tar.gz \
--directory ${WRKSRC}/boot
@${TAR} zxf ${WRKSRC}/binary/utilfreebsd.tar.gz \
--directory ${WRKSRC}/boot
@${LN} -sf ${WRKSRC}/boot/lib/fpc/${PORTVERSION}/ppc386 \
${WRKSRC}/boot/bin/ppc386
# further extract base sources
#
# mandatory sources
@${TAR} zxf ${WRKSRC}/sources/basesrc.tar.gz \
--directory ${WRKSRC}
@${TAR} zxf ${WRKSRC}/sources/compilersrc.tar.gz \
--directory ${WRKSRC}
@${TAR} zxf ${WRKSRC}/sources/rtlsrc.tar.gz \
--directory ${WRKSRC}
# dependencies of FCL
@${TAR} zxf ${WRKSRC}/sources/unitspaszlibsrc.tar.gz \
--directory ${WRKSRC}
@${TAR} zxf ${WRKSRC}/sources/unitsnetdbsrc.tar.gz \
--directory ${WRKSRC}
@${TAR} zxf ${WRKSRC}/sources/unitslibasyncsrc.tar.gz \
--directory ${WRKSRC}
@${TAR} zxf ${WRKSRC}/sources/unitsmysqlsrc.tar.gz \
--directory ${WRKSRC}
@${TAR} zxf ${WRKSRC}/sources/unitsibasesrc.tar.gz \
--directory ${WRKSRC}
# FCL is required for some of the compiler utilities
@${TAR} zxf ${WRKSRC}/sources/fclsrc.tar.gz \
--directory ${WRKSRC}
# compiler utilities
@${TAR} zxf ${WRKSRC}/sources/utilssrc.tar.gz \
--directory ${WRKSRC}
post-patch:
# change to alter amount of optimization
@${FIND} ${WRKSRC}/share/src/fpc-${PORTVERSION} -name \
"Makefile*" | ${XARGS} ${REINPLACE_CMD} 's|-OG2p3|-OG2p1|g'
do-build:
cd ${WRKSRC}/share/src/fpc-${PORTVERSION}/rtl && \
${GMAKE} ${MAKE_ENV} all
cd ${WRKSRC}/share/src/fpc-${PORTVERSION}/compiler && \
${GMAKE} ${MAKE_ENV} all
cd ${WRKSRC}/share/src/fpc-${PORTVERSION}/packages/base/libasync && \
${GMAKE} ${MAKE_ENV} all
cd ${WRKSRC}/share/src/fpc-${PORTVERSION}/fcl && \
${GMAKE} ${MAKE_ENV} all
# kludge so that bin2obj finds ZSTREAM and builds
cd ${WRKSRC}/share/src/fpc-${PORTVERSION} && \
${CP} fcl/inc/zstream.pp utils
cd ${WRKSRC}/share/src/fpc-${PORTVERSION}/utils && \
${GMAKE} ${MAKE_ENV} all
do-install:
cd ${WRKSRC}/share/src/fpc-${PORTVERSION}/rtl && \
${GMAKE} ${MAKE_ENV} install
cd ${WRKSRC}/share/src/fpc-${PORTVERSION}/compiler && \
${GMAKE} ${MAKE_ENV} install
cd ${WRKSRC}/share/src/fpc-${PORTVERSION}/packages/base/libasync && \
${GMAKE} ${MAKE_ENV} install
cd ${WRKSRC}/share/src/fpc-${PORTVERSION}/fcl && \
${GMAKE} ${MAKE_ENV} install
cd ${WRKSRC}/share/src/fpc-${PORTVERSION}/utils && \
${GMAKE} ${MAKE_ENV} install
@${MKDIR} ${PREFIX}/man/man1
cd ${WRKSRC}/boot/man/man1 && ${INSTALL_MAN} ${MAN1} \
${PREFIX}/man/man1
@${MKDIR} ${PREFIX}/man/man5
cd ${WRKSRC}/boot/man/man5 && ${INSTALL_MAN} ${MAN5} \
${PREFIX}/man/man5
post-install:
@${SETENV} PKG_PREFIX=${PREFIX} ${SH} \
${PKGINSTALL} ${PKGNAME} POST-INSTALL
.include <bsd.port.post.mk>