aboutsummaryrefslogtreecommitdiff
path: root/lang/fpc/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'lang/fpc/Makefile')
-rw-r--r--lang/fpc/Makefile140
1 files changed, 81 insertions, 59 deletions
diff --git a/lang/fpc/Makefile b/lang/fpc/Makefile
index 2edffbfe9e46..de6640f54b66 100644
--- a/lang/fpc/Makefile
+++ b/lang/fpc/Makefile
@@ -2,32 +2,28 @@
# $FreeBSD$
PORTNAME= fpc
-PORTVERSION= 2.6.4
+PORTVERSION= 3.0.0
PORTREVISION?= 0
CATEGORIES?= lang
-MASTER_SITES= ftp://ftp.freepascal.org/pub/fpc/dist/${PORTVERSION}/source/:source \
- ftp://planetmirror.com/pub/fpc/dist/${PORTVERSION}/source/:source \
- ftp://ftp.jp.freepascal.org/mirror/fpc/dist/${PORTVERSION}/source/:source \
- ftp://freepascal.stack.nl/pub/fpc/dist/${PORTVERSION}/source/:source \
- ftp://ftp.no.freepascal.org/pub/fpc/dist/${PORTVERSION}/source/:source \
- ftp://ftp.us.freepascal.org/pub/fpc/dist/${PORTVERSION}/source/:source \
- http://leaf.dragonflybsd.org/~marino/dports-src/:DragonFlybootstrap \
- SF/freepascal/Source/${PORTVERSION}:source \
+MASTER_SITES= http://leaf.dragonflybsd.org/~marino/dports-src/:DragonFlybootstrap \
LOCAL/acm/freepascal/:bootstrap \
- LOCAL/acm/freepascal/:man
-DISTFILES= ${DISTNAME}.source.tar.gz:source
+ LOCAL/marino:man
+DISTFILES= ${DISTNAME}${EXTRACT_SUFX}
DIST_SUBDIR= freepascal
MAINTAINER?= freebsd-fpc@FreeBSD.org
COMMENT?= Free Pascal compiler with Turbo and Delphi
-PROJECTHOST= bsdistfiles
USES= gmake iconv
ONLY_FOR_ARCHS= i386 amd64
BOOTVER= 2.6.4
+MANVER= 3.0.0
-OPT?=-CX
-FPCSRCDIR= ${PORTNAME}-${PORTVERSION}
+USE_GITHUB= yes
+GH_ACCOUNT= fpc-svn
+GH_PROJECT= fpc
+GH_TAGNAME= release_${DISTVERSION:S/./_/g}
+FPCSRCDIR= ${GH_PROJECT}-${GH_TAGNAME}
.include <bsd.port.pre.mk>
@@ -56,12 +52,16 @@ BUILDNAME= ${FPC_ARCH}-${OPSYS:tl}
PLIST_SUB+= PORTVERSION=${PORTVERSION} \
BUILDNAME=${BUILDNAME}
DISTFILES+= ${BOOTDIR}.tar.gz:${OPSYS:MDragonFly}bootstrap \
- ${DISTNAME}.man.tar.gz:man
-MAKE_ARGS+= FPCMAKE=${WRKDIR}/${FPCSRCDIR}/utils/fpcm/fpcmake \
+ fpc-${MANVER}.man.tar.gz:man
+NEWFPCMAKE= ${WRKDIR}/${FPCSRCDIR}/utils/fpcm/bin/${BUILDNAME}/fpcmake
+MAKE_ARGS+= FPCMAKE=${NEWFPCMAKE} \
FPCTARGET=${BUILDNAME} \
ARCH=${FPC_ARCH} \
OPT="${OPT}" \
BSDHIER=1 \
+ INSTALL="${INSTALL_DATA}" \
+ INSTALLEXE="${INSTALL_PROGRAM}" \
+ INSTALLSCR="${INSTALL_SCRIPT}" \
INSTALL_PREFIX=${STAGEDIR}${PREFIX}
NEWPPC= PP=${WRKSRC}/compiler/${PPNAME}
NEWFPC= FPC=${WRKSRC}/compiler/${PPNAME}
@@ -74,83 +74,105 @@ do-extract:
@${TAR} -xzf ${_DISTDIR}/${BOOTDIR}.tar.gz \
--directory ${WRKDIR} && ${CHMOD} +x ${WRKDIR}/${BOOTDIR}
# unpack man files
- @${TAR} -xzf ${_DISTDIR}/${DISTNAME}.man.tar.gz --directory ${WRKDIR}
+ @${TAR} -xzf ${_DISTDIR}/fpc-${MANVER}.man.tar.gz --directory ${WRKDIR}
# unpack source distribution
- @(cd ${WRKDIR} && \
- ${GZIP_CMD} -dc ${_DISTDIR}/${DISTNAME}.source.tar.gz | \
+ @(cd ${WRKDIR} && ${GZIP_CMD} -dc \
+ ${_DISTDIR}/${DISTNAME}${EXTRACT_SUFX} | \
${TAR} -xf - \
${FPCSRCDIR}/compiler \
${FPCSRCDIR}/rtl \
${FPCSRCDIR}/utils/fpcmkcfg \
${FPCSRCDIR}/packages/fcl-base \
${FPCSRCDIR}/packages/fcl-process \
+ ${FPCSRCDIR}/packages/fcl-res \
+ ${FPCSRCDIR}/packages/fpmkunit \
+ ${FPCSRCDIR}/packages/hash \
+ ${FPCSRCDIR}/packages/libtar \
+ ${FPCSRCDIR}/packages/paszlib \
+ ${FPCSRCDIR}/packages/rtl-objpas \
${FPCSRCDIR}/utils/fpcm)
post-patch:
-.if ${ARCH} == "i386"
- @${REINPLACE_CMD} -i "" -e 's|504000|${OSVERSION}|g' \
- ${WRKDIR}/${FPCSRCDIR}/rtl/freebsd/${FPC_ARCH}/cprt0.as
-.elif ${ARCH} == "amd64"
-. if ${OPSYS} == FreeBSD
- @${REINPLACE_CMD} -i "" -e 's|700055|${OSVERSION}|g' \
- ${WRKDIR}/${FPCSRCDIR}/rtl/freebsd/${FPC_ARCH}/cprt0.as
- @${REINPLACE_CMD} -i "" -e 's|502110|${OSVERSION}|g' \
- ${WRKDIR}/${FPCSRCDIR}/rtl/freebsd/${FPC_ARCH}/gprt0.as
- @${REINPLACE_CMD} -i "" -e 's|700055|${OSVERSION}|g' \
- ${WRKDIR}/${FPCSRCDIR}/rtl/freebsd/${FPC_ARCH}/prt0.as
-. else
+.if ${OPSYS} == FreeBSD
+ @${REINPLACE_CMD} -i "" -e 's|900044|${OSVERSION}|g' \
+ ${WRKSRC}/rtl/freebsd/${FPC_ARCH}/*.as
+.else
@${REINPLACE_CMD} -i "" -e 's|400000|${DFLYVERSION}|g' \
- ${WRKSRC}/${FPCSRCDIR}/rtl/dragonfly/${FPC_ARCH}/*.as
-. endif
+ ${WRKSRC}/rtl/dragonfly/${FPC_ARCH}/*.as
.endif
.if empty(ICONV_LIB)
- @${REINPLACE_CMD} -e "s|if (s<>'c') or reorder then|if ((s<>'c') and (s<>'iconv')) or reorder then|" \
+ @${REINPLACE_CMD} -e "s|s<>'c'|(s<>'c') and (s<>'iconv')|" \
${WRKDIR}/${FPCSRCDIR}/compiler/systems/t_bsd.pas
@${REINPLACE_CMD} -e 's|defined(bsd) and not ||' \
${WRKDIR}/${FPCSRCDIR}/rtl/unix/cwstring.pp
.endif
+ @${REINPLACE_CMD} -e '/samplecfg/ {s/INSTALLEXE/INSTALLSCR/;}' \
+ ${WRKDIR}/${FPCSRCDIR}/compiler/Makefile
+ @${REINPLACE_CMD} -e 's|/usr/local|${PREFIX}|g' \
+ ${WRKDIR}/${FPCSRCDIR}/packages/fpmkunit/src/fpmkunit.pp
do-build:
# build fpc compiler
+ @${ECHO_MSG} "##### STARTING COMPILER #####"
(cd ${WRKDIR}/${FPCSRCDIR}/compiler && ${SETENV} ${MAKE_ENV} \
${MAKE_CMD} cycle ${MAKE_ARGS} ${BOOTPPC})
+ @${ECHO_MSG} "##### COMPLETE COMPILER #####"
+
# build fpcmkcfg
- (cd ${WRKDIR}/${FPCSRCDIR}/utils/fpcm && ${SETENV} ${MAKE_ENV} \
- ${MAKE_CMD} ${MAKE_ARGS} ${NEWPPC})
- (cd ${WRKDIR}/${FPCSRCDIR}/packages/fcl-base && ${SETENV} ${MAKE_ENV} \
- ${MAKE_CMD} ${MAKE_ARGS} ${NEWPPC})
- (cd ${WRKDIR}/${FPCSRCDIR}/packages/fcl-process && \
- ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} ${NEWPPC})
- (cd ${WRKDIR}/${FPCSRCDIR}/utils/fpcmkcfg && \
+ @${ECHO_MSG} "##### STARTING BOOTSTRAP FPMKUNIT #####"
+ (cd ${WRKDIR}/${FPCSRCDIR}/packages/fpmkunit && ${SETENV} \
+ ${MAKE_ENV} ${MAKE_CMD} bootstrap ${MAKE_ARGS} ${NEWPPC})
+ @${ECHO_MSG} "##### COMPLETE BOOTSTRAP FPMKUNIT #####"
+.for component in fcl-res rtl-objpas fcl-base
+ @${ECHO_MSG} "##### STARTING ${component:tu} #####"
+ (cd ${WRKDIR}/${FPCSRCDIR}/packages/${component} && \
${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} ${NEWPPC})
+ @${ECHO_MSG} "##### COMPLETE ${component:tu} #####"
+.endfor
+ @${ECHO_MSG} "##### STARTING FPMAKE #####"
+ (cd ${WRKDIR}/${FPCSRCDIR}/utils/fpcm && ${SETENV} \
+ ${MAKE_ENV} ${MAKE_CMD} release ${MAKE_ARGS} ${NEWPPC})
+ @${ECHO_MSG} "##### COMPLETE FPMAKE #####"
+.for component in hash paszlib libtar fcl-process fpmkunit
+ @${ECHO_MSG} "##### STARTING ${component:tu} #####"
+ (cd ${WRKDIR}/${FPCSRCDIR}/packages/${component} && ${SETENV} \
+ ${MAKE_ENV} ${MAKE_CMD} release ${MAKE_ARGS} ${NEWPPC})
+ @${ECHO_MSG} "##### COMPLETE ${component:tu} #####"
+.endfor
+ @${ECHO_MSG} "##### STARTING FPCMKCFG #####"
+ (cd ${WRKDIR}/${FPCSRCDIR}/utils/fpcmkcfg && ${SETENV} \
+ ${MAKE_ENV} ${MAKE_CMD} release ${MAKE_ARGS} ${NEWPPC})
+ @${ECHO_MSG} "##### COMPLETE FPCMKCFG #####"
do-install:
-# Installing fpc compiler
+ # Installing fpc compiler
(cd ${WRKDIR}/${FPCSRCDIR}/rtl && ${SETENV} ${MAKE_ENV} \
${MAKE_CMD} install ${MAKE_ARGS} ${NEWFPC})
-# Installing fpc runtime
+ # Installing fpc runtime
(cd ${WRKDIR}/${FPCSRCDIR}/compiler && ${SETENV} ${MAKE_ENV} \
${MAKE_CMD} install ${MAKE_ARGS} ${NEWFPC})
-# Installng fpcmkcfg
- (cd ${WRKDIR}/${FPCSRCDIR}/utils/fpcmkcfg && ${SETENV} ${MAKE_ENV} \
- ${MAKE_CMD} install ${MAKE_ARGS} ${NEWFPC})
-# Installng fpcmake
- ${INSTALL_PROGRAM} ${WRKDIR}/${FPCSRCDIR}/utils/fpcm/fpcmake \
+ # Installing fpmkunit and its dependencies
+.for component in hash paszlib libtar fcl-process fpmkunit
+ (cd ${WRKDIR}/${FPCSRCDIR}/packages/${component} && ${SETENV} \
+ ${MAKE_ENV} ${MAKE_CMD} install ${MAKE_ARGS} ${NEWPPC})
+.endfor
+ # Installing fpcmkcfg
+ ${INSTALL_PROGRAM} ${WRKDIR}/${FPCSRCDIR}/utils/fpcmkcfg/bin/${BUILDNAME}/fpcmkcfg \
${STAGEDIR}${PREFIX}/bin
-# Installing manpages
+ # Installing fpcmake
+ ${INSTALL_PROGRAM} ${NEWFPCMAKE} ${STAGEDIR}${PREFIX}/bin
+ # Installing manpages
${INSTALL_MAN} ${WRKDIR}/man/man1/* ${STAGEDIR}${MAN1PREFIX}/man/man1
${INSTALL_MAN} ${WRKDIR}/man/man5/* ${STAGEDIR}${MAN1PREFIX}/man/man5
-
-post-install:
- if [ -e "${STAGEDIR}${PREFIX}/bin/${PPNAME}" ]; then ${RM} -f "${STAGEDIR}${PREFIX}/bin/${PPNAME}"; fi
- ${LN} -sf "${PREFIX}/lib/fpc/${PORTVERSION}/${PPNAME}" "${STAGEDIR}${PREFIX}/bin"
- ${SH} "${STAGEDIR}${PREFIX}/lib/fpc/${PORTVERSION}/samplecfg" "${STAGEDIR}${PREFIX}/lib/fpc/${PORTVERSION}" "${STAGEDIR}${PREFIX}/etc"
+ # symlinking compiler
+ (cd ${STAGEDIR}${PREFIX}/bin && ${LN} -s ../lib/fpc/${PORTVERSION}/${PPNAME})
+ # creating sample configuration file
+ ${SH} "${STAGEDIR}${PREFIX}/lib/fpc/${PORTVERSION}/samplecfg" \
+ "${STAGEDIR}${PREFIX}/lib/fpc/${PORTVERSION}" \
+ "${STAGEDIR}${PREFIX}/etc"
@${REINPLACE_CMD} -i "" -e 's|${STAGEDIR}||' \
- -e 's|^-Fl/usr/local/lib|-Fl${LOCALBASE}/lib;${LOCALBASE}/lib/qt4|g' ${STAGEDIR}${PREFIX}/etc/fpc.cfg.sample
- ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/fpc*
- ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/mk*ins
- ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/ppu*
- ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/fpc/${PORTVERSION}/ppc*
+ -e 's|^-Fl/usr/local/lib|-Fl${LOCALBASE}/lib;${LOCALBASE}/lib/qt4|g' \
+ ${STAGEDIR}${PREFIX}/etc/fpc.cfg.sample
.else
.include "${MASTERDIR}/Makefile.units"