1# New ports collection makefile for:	lazarus
2# Date Created:				2006-02-09
3# Whom:					Shaun Amott <shaun@inerd.com>
4#
5# $FreeBSD: ports/editors/lazarus/Makefile,v 1.15 2007/09/18 07:12:58 acm Exp $
6#
7
8PORTNAME=	lazarus
9PORTVERSION=	0.9.24
10PORTREVISION=	3
11CATEGORIES=	editors devel
12MASTER_SITES=	SF
13DISTNAME=	${PORTNAME}-${PORTVERSION:S/$/-0/}
14DIST_SUBDIR=	freepascal
15
16MAINTAINER=	acm@FreeBSD.org
17COMMENT=	A portable Delphi-like IDE for the FreePascal compiler
18
19BUILD_DEPENDS=	ppc386:${PORTSDIR}/lang/fpc \
20		fpcmake:${PORTSDIR}/lang/fpc-utils
21
22ONLY_FOR_ARCHS=	i386
23
24USE_ICONV=	yes
25USE_GETTEXT=	yes
26USE_GMAKE=	yes
27USE_GNOME=	#
28
29MAKE_ENV=	OPT="-Sgic -Fu${UNITSDIR}/* -Fl${LOCALBASE}/lib -Fl${X11BASE}/lib" LCL_PLATFORM=${LCL_PLATFORM}
30MAN1=		lazbuild.1
31PLIST=		${WRKDIR}/pkg-plist
32WRKSRC=		${WRKDIR}/${PORTNAME}
33
34BUILDNAME=	${ARCH}-freebsd
35FPC_MINVER=	2.2.0
36UNITSDIR=	${LOCALBASE}/lib/fpc/${FPC_MINVER}/units/${BUILDNAME}
37BASE_UNITS=	GDBINT GRAPH IBASE LIBASYNC HASH HTTPD MYSQL NETDB ODBC ORACLE \
38		PASJPEG PASZLIB PTHREADS POSTGRES REGEXPR SQLITE
39ALL_UNITS=	${BASE_UNITS} BFD CAIRO FCL-BASE FCL-DB FCL-FPCUNIT FCL-IMAGE \
40		FCL-NET FCL-PASSRC FCL-REGISTRY FCL-WEB FCL-XML FFTW FPMKUNIT \
41		FORMS FPGTK FV GCONF GDBM GGI GNOME GTK GTK2 IMLIB LIBCURL \
42		LIBGD LIBPNG NCURSES OPENGL OPENSSL PCAP SVGALIB SYSLOG TCL \
43		UNZIP UTMP X11 ZLIB ZVT
44
45# Base units
46GDBINT_UNIT=	devel/fpc-gdbint
47GRAPH_UNIT=	graphics/fpc-graph
48IBASE_UNIT=	databases/fpc-ibase
49LIBASYNC_UNIT=	net/fpc-libasync
50HASH_UNIT=	security/fpc-hash
51HTTPD_UNIT=	www/fpc-httpd
52MYSQL_UNIT=	databases/fpc-mysql
53NETDB_UNIT=	net/fpc-netdb
54ODBC_UNIT=	databases/fpc-odbc
55ORACLE_UNIT=	databases/fpc-oracle
56PASJPEG_UNIT=	graphics/fpc-pasjpeg
57PASZLIB_UNIT=	archivers/fpc-paszlib
58PTHREADS_UNIT=	devel/fpc-pthreads
59POSTGRES_UNIT=	databases/fpc-postgres
60REGEXPR_UNIT=	devel/fpc-regexpr
61SQLITE_UNIT=	databases/fpc-sqlite
62
63# Extra units
64BFD_UNIT=	devel/fpc-bfd
65CAIRO_UNIT=	graphics/fpc-cairo
66FCL_BASE_UNIT=	devel/fpc-fcl-base
67FCL_DB_UNIT=	devel/fpc-fcl-db
68FCL_FPCUNIT_UNIT=	devel/fpc-fcl-fpcunit
69FCL_IMAGE_UNIT=	devel/fpc-fcl-image
70FCL_NET_UNIT=	devel/fpc-fcl-net
71FCL_PASSRC_UNIT=	devel/fpc-fcl-passrc
72FCL_REGISTRY_UNIT=	devel/fpc-fcl-registry
73FCL_WEB_UNIT=	devel/fpc-fcl-web
74FCL_XML_UNIT=	devel/fpc-fcl-xml
75FFTW_UNIT=	math/fpc-fftw
76FPMKUNIT_UNIT=	devel/fpc-fpmkunit
77FORMS_UNIT=	x11-toolkits/fpc-forms
78FPGTK_UNIT=	graphics/fpc-fpgtk
79FV_UNIT=	devel/fpc-fv
80GCONF_UNIT=	devel/fpc-gconf
81GDBM_UNIT=	databases/fpc-gdbm
82GGI_UNIT=	graphics/fpc-ggi
83GNOME_UNIT=	x11-toolkits/fpc-gnome
84GTK_UNIT=	x11-toolkits/fpc-gtk
85GTK2_UNIT=	x11-toolkits/fpc-gtk2
86HTTPD_UNIT=	www/fpc-httpd
87IMLIB_UNIT=	graphics/fpc-imlib
88LIBCURL_UNIT=	ftp/fpc-libcurl
89LIBGD_UNIT=	graphics/fpc-libgd
90LIBPNG_UNIT=	graphics/fpc-libpng
91NCURSES_UNIT=	graphics/fpc-ncurses
92OPENGL_UNIT=	graphics/fpc-opengl
93OPENSSL_UNIT=	security/fpc-openssl
94PCAP_UNIT=	net/fpc-pcap
95SVGALIB_UNIT=	graphics/fpc-svgalib
96SYSLOG_UNIT=	sysutils/fpc-syslog
97TCL_UNIT=	lang/fpc-tcl
98UNZIP_UNIT=	archivers/fpc-unzip
99UTMP_UNIT=	sysutils/fpc-utmp
100X11_UNIT=	x11/fpc-x11
101ZLIB_UNIT=	devel/fpc-zlib
102ZVT_UNIT=	x11-toolkits/fpc-zvt
103
104OPTIONS=	GTK2	"Use gtk20 interface instead of gtk12"	off \
105		BIGIDE	"Compile additional components"	off
106
107.include <bsd.port.pre.mk>
108
109.if defined(WITH_GTK2)
110USE_GNOME=	gtk20
111LCL_PLATFORM=	gtk2
112.else
113USE_GNOME=	gtk12 gdkpixbuf
114LCL_PLATFORM=	gtk
115.endif
116
117.if defined(WITH_BIGIDE)
118LAZARUS_TARGET=	bigide lazbuild
119.endif
120
121.for OPT in ${ALL_UNITS}
122BUILD_DEPENDS+=	${UNITSDIR}/${OPT:L:S/httpd/httpd-1.3/}/Package.fpc:${PORTSDIR}/${${OPT:S/-/_/}_UNIT}
123.endfor
124
125post-depends:
126.if exists(${LOCALBASE}/bin/fpc)
127FPC_VER!=	${LOCALBASE}/bin/fpc -i -v | ${SED} -n -e 's/^Free Pascal Compiler version //' -e '1p'
128FPC_DIR=	${LOCALBASE}/lib/fpc/${FPC_VER}
129FPC_REQVER!=	${ECHO_CMD} $$(expr ${FPC_VER:C/^[^\.]*\.//} \>= ${FPC_MINVER:C/^[^\.]*\.//})
130
131.if (${FPC_REQVER} != 1)
132IGNORE=	requires fpc ${FPC_MINVER} or above. Please upgrade
133.endif
134.endif
135
136post-extract:
137	@${MKDIR} ${WRKDIR}/man1
138	@${MV} ${WRKSRC}/install/man/man1/lazbuild.1 ${WRKDIR}/man1
139	@${MV} ${WRKSRC}/examples ${WRKDIR}/examples
140	@${MV} ${WRKSRC}/docs ${WRKDIR}/docs
141
142post-patch:
143	@${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' -e 's|%%DATADIR%%|${DATADIR}|g' \
144		${WRKSRC}/${MAKEFILE}
145
146do-build:
147	@cd ${WRKSRC} && \
148		${GMAKE} ${MAKE_ENV} ${LAZARUS_TARGET}
149
150post-build:
151	@cd ${WRKSRC} && \
152		${RM} -Rf COPYING* README* debian localize.bat test *.orig *.bak
153
154pre-install:
155	@${ECHO} "#!/bin/sh" > ${WRKDIR}/lazarus-wrapper
156	@${ECHO} "cd ${DATADIR} || exit 1 " >> ${WRKDIR}/lazarus-wrapper
157	@${ECHO} "exec ./startlazarus" >> ${WRKDIR}/lazarus-wrapper
158
159	@${RM} -f ${PLIST}
160
161.	for FILE in bin/lazarus bin/lazbuild
162		@${ECHO_CMD} ${FILE} >> ${PLIST}
163.	endfor
164
165.if !defined(NOPORTDOCS)
166	@${ECHO_CMD} "%%DATADIR%%/docs" >> ${PLIST}
167	@cd ${WRKDIR}/docs && \
168		${FIND} * -type f | ${SORT} | ${SED} -e 's|^|%%DOCSDIR%%/|' >> ${PLIST} && \
169			${FIND} * -type d | ${SORT} -r | ${SED} -e 's|^|@dirrm %%DOCSDIR%%/|' >> ${PLIST}
170	@${ECHO_CMD} "@dirrm %%DOCSDIR%%" >> ${PLIST}
171.endif
172
173.if !defined(NOPORTEXAMPLES)
174	@${ECHO_CMD} "%%DATADIR%%/examples" >> ${PLIST}
175	@cd ${WRKDIR}/examples && \
176		${FIND} * -type f | ${SORT} | ${SED} -e 's|^|%%EXAMPLESDIR%%/|' >> ${PLIST} && \
177			${FIND} * -type d | ${SORT} -r | ${SED} -e 's|^|@dirrm %%EXAMPLESDIR%%/|' >> ${PLIST}
178	@${ECHO_CMD} "@dirrm %%EXAMPLESDIR%%" >> ${PLIST}
179.endif
180
181	@cd ${WRKSRC} && \
182		${FIND} * -type f | ${SORT} | ${SED} -e 's|^|%%DATADIR%%/|' >> ${PLIST} && \
183			${FIND} * -type d | ${SORT} -r | ${SED} -e 's|^|@dirrm %%DATADIR%%/|' >> ${PLIST}
184	@${ECHO_CMD} "@dirrm %%DATADIR%%" >> ${PLIST}
185
186do-install:
187.for DIRE in components converter debugger designer doceditor ide images install languages lcl lazarus.app \
188	packager tools units
189		@${MKDIR} ${DATADIR}/${DIRE}
190		@cd ${WRKSRC}/${DIRE} && \
191			${FIND} * -type d -exec ${MKDIR} "${DATADIR}/${DIRE}/{}" \; && \
192				${FIND} * -type f -exec ${INSTALL_DATA} "{}" "${DATADIR}/${DIRE}/{}" \;
193.endfor
194
195.for FILE in lazarus startlazarus lazbuild
196	${INSTALL_PROGRAM} ${WRKSRC}/${FILE} ${DATADIR}
197.endfor
198
199.if !defined(NOPORTDOCS)
200	@cd ${WRKDIR}/docs && \
201		${FIND} * -type d -exec ${MKDIR} "${DOCSDIR}/{}" \; && \
202			${FIND} * -type f -exec ${INSTALL_DATA} "{}" "${DOCSDIR}/{}" \;
203	@${LN} -s ${DOCSDIR} ${DATADIR}/docs
204.endif
205
206.if !defined(NOPORTEXAMPLES)
207	@cd ${WRKDIR}/examples && \
208		${FIND} * -type d -exec ${MKDIR} "${EXAMPLESDIR}/{}" \; && \
209			${FIND} * -type f -exec ${INSTALL_DATA} "{}" "${EXAMPLESDIR}/{}" \;
210	@${LN} -s ${EXAMPLESDIR} ${DATADIR}/examples
211.endif
212
213	${INSTALL_SCRIPT} ${WRKSRC}/localize.sh ${DATADIR}
214	${INSTALL_SCRIPT} ${WRKDIR}/lazarus-wrapper ${PREFIX}/bin/${PORTNAME}
215	${INSTALL_DATA}	${WRKSRC}/Makefile* ${DATADIR}
216	${INSTALL_MAN} ${WRKDIR}/man1/${MAN1} ${MAN1PREFIX}/man/man1
217	${LN} -s ${DATADIR}/lazbuild ${PREFIX}/bin/lazbuild
218
219.include <bsd.port.post.mk>
220