1PORTNAME=	lazarus
2DISTVERSION=	3.4.0
3PKGNAMESUFFIX?=  -gtk2
4PORTREVISION?=	0
5CATEGORIES=	editors devel
6DIST_SUBDIR=	freepascal
7
8MAINTAINER?=	ports@MidnightBSD.org
9COMMENT?=	Portable Delphi-like IDE for the FreePascal compiler (GTK2)
10WWW=		https://www.lazarus-ide.org/
11
12CONFLICTS?=	lazarus-gtk2-devel lazarus-qt5 lazarus-qt5-devel lazarus-qt6 \
13		lazarus-qt6-devel
14
15BUILD_DEPENDS?=	${LOCALBASE}/bin/as:devel/binutils
16RUN_DEPENDS?=	${LOCALBASE}/bin/as:devel/binutils \
17		gmake:devel/gmake \
18		${LOCALBASE}/share/fpc-source-${FPC_DEFAULT}/Makefile.fpc:lang/fpc${FPC_DEVELSUFFIX}-source
19
20ONLY_FOR_ARCHS=	i386 amd64
21
22USE_GITLAB=	yes
23GL_ACCOUNT=	freepascal.org/lazarus
24GL_PROJECT=	${PORTNAME}
25GL_COMMIT=	34295aa4240319e5179f0ceb7ed86de5104c152a
26
27USES=		desktop-file-utils fpc:run gettext gmake iconv shared-mime-info xorg
28USE_XORG=	x11
29OPT?=		"-Sgic "
30
31MAKE_ENV=	OPT=${OPT}
32PLIST=		${WRKDIR}/pkg-plist
33#WRKSRC?=	${WRKDIR}/${PORTNAME}
34DATADIR?=	${PREFIX}/share/${PORTNAME}-${LAZARUS_BASE}
35
36OPTIONS_DEFINE=		GDB
37GDB_DESC=		Install a newest version  of gdb
38OPTIONS_DEFAULT=	GDB
39
40.include <bsd.mport.options.mk>
41
42LAZARUS_ARCH=	${ARCH:S,amd64,x86_64,}
43LAZARUS_BASE=	3.4.0
44
45BUILDNAME=	${LAZARUS_ARCH}-${OPSYS:tl}
46LCL_PLATFORM?=	gtk2
47
48MAN1S=		lazarus-ide.1 lazbuild.1 startlazarus.1
49SUB_FILES=	pkg-message
50SUB_LIST+=	PORTSDIR="${PORTSDIR}"
51
52.if ${PORT_OPTIONS:MGDB}
53RUN_DEPENDS+=	${LOCALBASE}/bin/gdb:devel/gdb
54.endif
55
56.if ${PKGNAMESUFFIX} == "-gtk2"
57USES+=		gnome
58USE_GNOME=	cairo gtk20 gdkpixbuf
59.endif
60
61post-extract:
62	@${MKDIR} ${WRKDIR}/man1
63	@${MV} ${WRKSRC}/install/man/man1/lazarus-ide.1 ${WRKDIR}/man1/
64	@${MV} ${WRKSRC}/install/man/man1/lazbuild.1 ${WRKDIR}/man1/
65	@${MV} ${WRKSRC}/install/man/man1/startlazarus.1 ${WRKDIR}/man1/
66	@${MV} ${WRKSRC}/examples ${WRKDIR}/examples
67	@${MV} ${WRKSRC}/docs ${WRKDIR}/docs
68	@${RM} ${WRKSRC}/tools/.gitignore
69	@${RM} ${WRKSRC}/Dockerfile.buildenv
70	@${RM} ${WRKSRC}/buildenv.Dockerfile
71	@${RM} ${WRKSRC}/.git*
72
73post-patch:
74	@${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' -e 's|%%DATADIR%%|${DATADIR}|g' ${WRKSRC}/${MAKEFILE}
75	@${REINPLACE_CMD} -e 's|startlazarus|${PORTNAME}|g' ${WRKSRC}/install/${PORTNAME}.desktop
76
77do-build:
78	@cd ${WRKSRC} && \
79		${SETENV} ${MAKE_ENV} ${MAKE_CMD} bigide LCL_PLATFORM=${LCL_PLATFORM}
80
81post-build:
82	@cd ${WRKSRC} && \
83		${RM} -R COPYING* README* debian localize.bat test *.orig *.bak startlazarus.app \
84			ide/Makefile*.orig ide/Makefile*.bak lcl/interfaces/qt5/qtobjects.pas.orig \
85			.git*
86	@cd ${WRKSRC} && \
87		${FIND} . -name ".gitignore" -exec ${RM} "{}" \;
88
89pre-install:
90	@${ECHO} "#!/bin/sh" > ${WRKDIR}/lazarus-wrapper
91	@${ECHO} "cd ${DATADIR} || exit 1 " >> ${WRKDIR}/lazarus-wrapper
92	@${ECHO} "exec ./startlazarus" >> ${WRKDIR}/lazarus-wrapper
93
94	@${RM} ${PLIST}
95	@${RM} -r ${WRKSRC}/components/chmhelp/lhelp/lhelp.app/Contents/MacOS \
96		${WRKSRC}/lazarus.app/Contents/MacOS \
97		${WRKSRC}/lazarus.app/Contents/Resources/startlazarus.app/Contents/MacOS
98
99.	for FILE in bin/lazarus bin/lazbuild
100		@${ECHO_CMD} ${FILE} >> ${PLIST}
101.	endfor
102.	for m in ${MAN1S}
103		@${ECHO_CMD} share/man/man1/${m}.gz >> ${PLIST}
104.	endfor
105
106	@${ECHO_CMD} "%%DATADIR%%/docs" >> ${PLIST}
107	@cd ${WRKDIR}/docs && \
108		${FIND} * -type f | ${SORT} | ${SED} -e 's|^|%%DOCSDIR%%/|' >> ${PLIST}
109
110	@${ECHO_CMD} "%%DATADIR%%/examples" >> ${PLIST}
111	@cd ${WRKDIR}/examples && \
112		${FIND} * -type f | ${SORT} | ${SED} -e 's|^|%%EXAMPLESDIR%%/|' >> ${PLIST} && \
113		${FIND} * -type d -empty | ${SORT} | ${SED} -e 's|^|@dir %%EXAMPLESDIR%%/|' >> ${PLIST}
114
115	@cd ${WRKSRC} && \
116		${FIND} * -type f | ${SORT} | ${SED} -e 's|^|%%DATADIR%%/|' >> ${PLIST} && \
117		${FIND} * -type d -empty | ${SORT} | ${SED} -e 's|^|@dir %%DATADIR%%/|' >> ${PLIST}
118
119	@${ECHO_CMD} "share/applications/lazarus.desktop" >> ${PLIST}
120
121.	for RESO in 128 16 256 32 48 64
122		@${ECHO_CMD} share/icons/hicolor/${RESO}x${RESO}/apps/lazarus.png >> ${PLIST}
123.	endfor
124
125	@cd ${WRKSRC}/images/mimetypes && \
126		${FIND} * -type f -name "*.png" | ${SORT} | ${SED} -e 's|^|share/icons/hicolor/48x48/mimetypes/|' >> ${PLIST}
127
128	@${ECHO_CMD} "share/icons/hicolor/scalable/apps/lazarus.svg" >> ${PLIST}
129	@${ECHO_CMD} "share/mime/packages/lazarus.xml" >> ${PLIST}
130
131do-install:
132.for DIRE in components converter debugger designer doceditor ide images install languages lazarus.app lcl \
133	packager tools units
134		@${MKDIR} ${DATADIR}/${DIRE}
135		@cd ${WRKSRC}/${DIRE} && \
136			${FIND} * -type d -exec ${MKDIR} "${DATADIR}/${DIRE}/{}" \; && \
137				${FIND} * -type f -exec ${INSTALL_DATA} -p {} "${DATADIR}/${DIRE}/{}" \;
138.endfor
139	@${CHMOD} +x ${DATADIR}/tools/svn2revisioninc ${DATADIR}/tools/lazres ${DATADIR}/tools/lrstolfm \
140		${DATADIR}/tools/updatepofiles
141
142.for FILE in lazarus lazbuild startlazarus
143	${INSTALL_PROGRAM} ${WRKSRC}/${FILE} ${DATADIR}
144.endfor
145
146	@cd ${WRKDIR}/docs && \
147		${FIND} * -type d -exec ${MKDIR} "${DOCSDIR}/{}" \; && \
148			${FIND} * -type f -exec ${INSTALL_DATA} {} "${DOCSDIR}/{}" \;
149	@${LN} -sf ${DOCSDIR} ${DATADIR}/docs
150
151	@cd ${WRKDIR}/examples && \
152		${FIND} * -type d -exec ${MKDIR} "${EXAMPLESDIR}/{}" \; && \
153			${FIND} * -type f -exec ${INSTALL_DATA} {} "${EXAMPLESDIR}/{}" \;
154	@${LN} -sf ${EXAMPLESDIR} ${DATADIR}/examples
155
156.for RESO in 128 16 256 32 48 64
157	@${MKDIR} ${PREFIX}/share/icons/hicolor/${RESO}x${RESO}/apps
158	${INSTALL_DATA} ${WRKSRC}/images/icons/${PORTNAME}${RESO}x${RESO}.png ${PREFIX}/share/icons/hicolor/${RESO}x${RESO}/apps/${PORTNAME}.png
159.endfor
160
161	@${MKDIR} ${PREFIX}/share/icons/hicolor/48x48/mimetypes
162	@cd ${WRKSRC}/images/mimetypes && \
163		${FIND} * -type f -name "*.png" -exec ${INSTALL_DATA} {} ${PREFIX}/share/icons/hicolor/48x48/mimetypes/{} \;
164
165	@${INSTALL_DATA} ${WRKSRC}/install/${PORTNAME}.desktop ${PREFIX}/share/applications/${PORTNAME}.desktop
166
167	@${MKDIR} ${PREFIX}/share/icons/hicolor/scalable/apps
168	@${INSTALL_DATA} ${WRKSRC}/images/icons/${PORTNAME}.svg ${PREFIX}/share/icons/hicolor/scalable/apps/${PORTNAME}.svg
169
170	@${MKDIR} ${PREFIX}/share/mime/packages
171	@${INSTALL_DATA} ${WRKSRC}/install/${PORTNAME}-mime.xml ${PREFIX}/share/mime/packages/${PORTNAME}.xml
172
173	${INSTALL_SCRIPT} ${WRKSRC}/localize.sh ${DATADIR}
174	${INSTALL_SCRIPT} ${WRKDIR}/lazarus-wrapper ${PREFIX}/bin/${PORTNAME}
175	${INSTALL_DATA}	${WRKSRC}/Makefile* ${WRKSRC}/fpmake*  ${DATADIR}
176.for FILE in ${MAN1S}
177	${INSTALL_MAN} ${WRKDIR}/man1/${FILE} ${PREFIX}/share/man/man1
178.endfor
179	${LN} -sf ${DATADIR}/lazbuild ${PREFIX}/bin/lazbuild
180
181.include <bsd.port.mk>
182