summaryrefslogblamecommitdiff
path: root/lang/fpc/Makefile
blob: cb1d35814a26107f5c720809cfca9e8f08fe43dc (plain) (tree)
1
2
3
4
5
6
7
                                            
           

                   
                     
                 
                    





                                                                                           
                                                            



                                                                     
                                                              
                          
 
                               
                                                          
 
                           
                           
                          
 
                                                                 
 
             
        
                                          
 
                   
                          
 











                                      
                           

                           

                                            
                                      



                                                                              
                                        
                                  
                              

                         
                   

                  


                     
              
               
                        
                   
                    

                 


                    
                     















                    
                    

                   

                                      
           

                            



                                                                                                


                            
                                                                                     


                                                                                                 
 
           






                                                                                                                    





                                                                                                              
 

                    
                                                                         
                
                                                                     


                                                                               

           
                               
                                                                      
                              
                                                                           

                                                                                 
                         
                                                                             
                           

                                                                   

             

                                                                                        
                                                                                                             
                                                                                                                                 


                                                                           
                             
 


                                      
                           
# Created by: John Merryweather Cooper et al
# $FreeBSD$

PORTNAME=	fpc
PORTVERSION=	2.6.2
PORTREVISION?=	2
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 \
		SF/freepascal/Source/${PORTVERSION}:source \
		${MASTER_SITE_GOOGLE_CODE}:bootstrap \
		${MASTER_SITE_LOCAL:S|$|acm/freepascal/:bootstrap|} \
		${MASTER_SITE_GOOGLE_CODE}:man \
		${MASTER_SITE_LOCAL:S|$|acm/freepascal/:man|}
DISTFILES=	${DISTNAME:S/$/.source/}${EXTRACT_SUFX}:source
DIST_SUBDIR=	freepascal

MAINTAINER?=	acm@FreeBSD.org
COMMENT?=	Free Pascal compiler with Turbo and Delphi

PROJECTHOST=	bsdistfiles
USES=		gmake iconv
ONLY_FOR_ARCHS=	i386 amd64

OPTIONSFILE=	${PORT_DBDIR}/${PORTNAME}${PKGNAMESUFFIX}/options

#OPT?=-Ur -CX
OPT?=-CX
FPCSRCDIR=	${PORTNAME}-${PORTVERSION}

NO_STAGE=	yes
.include <bsd.port.pre.mk>

.if ${ARCH} == "i386"
PPNAME=		ppc386
FPC_ARCH=	i386
PLIST_SUB=	FPC_I386="" \
		FPC_AMD64="@comment "
.elif ${ARCH} == "amd64"
PPNAME=		ppcx64
FPC_ARCH=	x86_64
PLIST_SUB=	FPC_I386="@comment " \
		FPC_AMD64=""
.endif

.if !defined(PKGNAMESUFFIX)
SUB_FILES=	pkg-message

BUILDNAME=	${FPC_ARCH}-freebsd
PLIST_SUB+=	PORTVERSION=${PORTVERSION} \
		BUILDNAME=${BUILDNAME}
DISTFILES+=	${PPNAME}-${PORTVERSION}-${OPSYS:L}${EXTRACT_SUFX}:bootstrap \
		${DISTNAME:S/$/.man/}${EXTRACT_SUFX}:man
MAKE_ENV+=	PP=${WRKDIR}/${PPNAME}-${PORTVERSION}-${OPSYS:L} \
		FPCMAKE=${WRKDIR}/${FPCSRCDIR}/utils/fpcm/fpcmake \
		FPCTARGET=${BUILDNAME} \
		ARCH=${FPC_ARCH} \
		OPT="${OPT}" \
		BSDHIER=1

MAN1=	bin2obj.1 \
	chmcmd.1 \
	chmls.1 \
	data2inc.1 \
	delp.1 \
	fd2pascal.1 \
	fp.1 \
	fpc.1 \
	fpclasschart.1 \
	fpcmake.1 \
	fpcmkcfg.1 \
	fpdoc.1 \
	fprcp.1 \
	fpcres.1 \
	fpcsubst.1 \
	fppkg.1 \
	grab_vcsa.1 \
	h2pas.1 \
	h2paspp.1 \
	makeskel.1 \
	plex.1 \
	postw32.1 \
	ppc386.1 \
	ppcarm.1 \
	ppcppc.1 \
	ppcsparc.1 \
	ppcx64.1 \
	ppdep.1 \
	ppudump.1 \
	ppufiles.1 \
	ppumove.1 \
	ptop.1 \
	pyacc.1 \
	rmcvsdir.1 \
	rstconv.1 \
	unitdiff.1
MAN5=	fpc.cfg.5 fpcmake.5 ptop.cfg.5

do-extract:
# unpack binary distribution
	@${MKDIR} ${WRKDIR}
	@${TAR} xfz ${_DISTDIR}/${PPNAME}-${PORTVERSION}-${OPSYS:L}${EXTRACT_SUFX} --directory \
		${WRKDIR} && ${CHMOD} +x ${WRKDIR}/${PPNAME}-${PORTVERSION}-${OPSYS:L}
# unpack man files
	@${TAR} xfz ${_DISTDIR}/${DISTNAME:S/$/.man/}${EXTRACT_SUFX} --directory \
		${WRKDIR}
# unpack source distribution
	@cd ${WRKDIR} && \
		${GZIP_CMD} -dc ${_DISTDIR}/${DISTNAME:S/$/.source/}${EXTRACT_SUFX} \
			| ${TAR} xf - ${FPCSRCDIR}/compiler ${FPCSRCDIR}/rtl \
				${FPCSRCDIR}/utils/fpcmkcfg ${FPCSRCDIR}/packages/fcl-base \
					${FPCSRCDIR}/packages/fcl-process ${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"
	@${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
.endif
.if empty(ICONV_LIB)
	@${REINPLACE_CMD} -e "s|if (s<>'c') or reorder then|if ((s<>'c') and (s<>'iconv')) or reorder then|" \
		${WRKDIR}/${FPCSRCDIR}/compiler/systems/t_bsd.pas
	@${REINPLACE_CMD} -e 's|defined(bsd) and not ||' \
		${WRKDIR}/${FPCSRCDIR}/rtl/unix/cwstring.pp
.endif

do-build:
# build fpc compiler
	@cd ${WRKDIR}/${FPCSRCDIR}/compiler && ${GMAKE} cycle ${MAKE_ENV}
# build fpcmkcfg
	@cd ${WRKDIR}/${FPCSRCDIR}/utils/fpcm && ${GMAKE} ${MAKE_ENV}
	@cd ${WRKDIR}/${FPCSRCDIR}/packages/fcl-base && ${GMAKE} ${MAKE_ENV}
	@cd ${WRKDIR}/${FPCSRCDIR}/packages/fcl-process && ${GMAKE} ${MAKE_ENV}
	@cd ${WRKDIR}/${FPCSRCDIR}/utils/fpcmkcfg && ${GMAKE} ${MAKE_ENV}

do-install:
# 	Installing fpc compiler
	@cd ${WRKDIR}/${FPCSRCDIR}/rtl && ${GMAKE} install ${MAKE_ENV}
# 	Installing fpc runtime
	@cd ${WRKDIR}/${FPCSRCDIR}/compiler && ${GMAKE} install ${MAKE_ENV}
# 	Installng fpcmkcfg
	@cd ${WRKDIR}/${FPCSRCDIR}/utils/fpcmkcfg && ${GMAKE} install ${MAKE_ENV}
# 	Installng fpcmake
	@cd ${WRKDIR}/${FPCSRCDIR}/utils/fpcm && ${GMAKE} install ${MAKE_ENV}
# 	Installing manpages
	${INSTALL_DATA} ${WRKDIR}/man/man1/* ${MAN1PREFIX}/man/man1
	${INSTALL_DATA} ${WRKDIR}/man/man5/* ${MAN1PREFIX}/man/man5

post-install:
	if [ -e "${PREFIX}/bin/${PPNAME}" ]; then ${RM} -f "${PREFIX}/bin/${PPNAME}"; fi
	${LN} -s "${PREFIX}/lib/fpc/${PORTVERSION}/${PPNAME}" "${PREFIX}/bin"
	${SH} "${PREFIX}/lib/fpc/${PORTVERSION}/samplecfg" "${PREFIX}/lib/fpc/${PORTVERSION}" "${PREFIX}/etc"
	@${REINPLACE_CMD} -i "" -e 's|^-Fl/usr/local/lib|-Fl${LOCALBASE}/lib;${LOCALBASE}/lib/qt4|g' ${PREFIX}/etc/fpc.cfg.sample
	@if [ ! -f ${PREFIX}/etc/fpc.cfg ]; then \
		${CP} ${PREFIX}/etc/fpc.cfg.sample ${PREFIX}/etc/fpc.cfg; \
	fi
	@${CAT} ${PKGMESSAGE}

.else
.include "${MASTERDIR}/Makefile.units"
.endif
.include <bsd.port.post.mk>