aboutsummaryrefslogtreecommitdiff
path: root/cad/zcad/Makefile
blob: 9d24b6e7ca57d06b75d2b40f3996a50f3ef8566a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
PORTNAME=	zcad
PORTVERSION=	0.9.8.5
PORTREVISION=	7
CATEGORIES=	cad
PKGNAMESUFFIX=	${LAZARUS_PKGNAMESUFFIX}

MAINTAINER=	danfe@FreeBSD.org
COMMENT=	Simple CAD program

USES=		dos2unix fpc lazarus:flavors tar:xz
USE_GITHUB=	yes
GH_ACCOUNT=	zamtmn
GH_TAGNAME=	8b8a693
USE_FPC=	cairo chm fcl-base fcl-image fcl-json fcl-stl fcl-xml opengl \
		pasjpeg rtl-extra rtl-generics rtl-objpas x11

MAKE_ENV=	LAZBUILD_CMD="${LAZBUILD_CMD}" \
		LAZBUILD_ARGS="${LAZBUILD_ARGS}" \
		LCL_PLATFORM="${LCL_PLATFORM}" \
		LAZARUS_DIR="${LAZARUS_DIR}" \
		INSTANTFPCCACHE="${WRKSRC}/.cache"

DOS2UNIX_GLOB=	*.pas *.lpi
BUILD_WRKSRC=	${WRKSRC}/cad_source
INSTALL_WRKSRC=	${WRKSRC}/cad

LAZARUS_PROJECT_FILES=	anchordocking/anchordocking.lpk \
			fpvectorial/fpvectorialpkg.lpk \
			lclextensions/lclextensions_package.lpk \
			other/laz.virtualtreeview_package/laz.virtualtreeview_package.lpk \
			components/zmacros/zmacros.lpk \
			components/zebase/zebase.lpk \
			components/zcontainers/zcontainers.lpk \
			components/zcontrols/zcontrols.lpk \
			components/zmath/zmath.lpk \
			components/zscriptbase/zscriptbase.lpk \
			components/zscript/zscript.lpk \
			components/zundostack/zundostack.lpk \
			components/zobjectinspector/zobjectinspector.lpk \
			components/ztoolbars/ztoolbars.lpk \
			other/AGraphLaz/lazarus/ag_vectors.lpk \
			other/AGraphLaz/lazarus/ag_attr.lpk \
			other/AGraphLaz/lazarus/ag_math.lpk \
			other/AGraphLaz/lazarus/ag_graph.lpk \
			other/uniqueinstance/uniqueinstance_package.lpk \
			utils/typeexporter.lpi

LAZBUILD_ARGS=	-d --pcp=${WRKSRC}/tmppcp

gtk2_CONFLICTS_INSTALL=	${PORTNAME}-qt5
qt5_CONFLICTS_INSTALL=	${PORTNAME}-gtk2

PORTDOCS=	UserGuide.odt UserGuide.pdf

OPTIONS_DEFINE=		DOCS

.if ${FLAVOR:Ugtk2:Mgtk2}
MAKE_ENV+=	GUI=gtk2
.elif ${FLAVOR:Ugtk2:Mqt5}
BROKEN=		fails to build
.endif

post-patch:
	@${EGREP} -lR 'IFN?DEF LINUX' ${WRKSRC} | ${XARGS} \
		${REINPLACE_CMD} -E '/IFN?DEF LINUX/s,LINUX,UNIX,g'
	@${REINPLACE_CMD} -e '/}Linux{/d' \
		${BUILD_WRKSRC}/other/AGraphLaz/Vectors/VStream.pas \
		${BUILD_WRKSRC}/other/AGraphLaz/Vectors/VFStream.pas \
		${BUILD_WRKSRC}/other/AGraphLaz/Vectors/VFileSys.pas \
		${BUILD_WRKSRC}/other/AGraphLaz/Vectors/VStrm64.pas
	@${REINPLACE_CMD} -e 's|LazOpenGLContext|openglcontext.pas|g' \
		${BUILD_WRKSRC}/zcad.lpi
	@${REINPLACE_CMD} -e "s|'|'|g" \
		${BUILD_WRKSRC}/other/laz.virtualtreeview_package/laz.virtualtreeview_package.lpk
	@${REINPLACE_CMD} '1,6d' ${WRKSRC}/environment/makeenv_zcad.sh

post-configure:
# OpenGL component must be fixed and rebuilt locally (to avoid touching
# filesystem outside working directory)
	${SED} -e 's,Linux,${OPSYS},' \
		${LAZARUS_DIR}/components/opengl/openglcontext.pas \
		> ${BUILD_WRKSRC}/openglcontext.pas
	${CP} ${LAZARUS_DIR}/components/opengl/glgtkglxcontext.pas \
		${LAZARUS_DIR}/components/opengl/glqtcontext.pas \
		${LAZARUS_DIR}/components/opengl/openglcontext.res \
		${BUILD_WRKSRC}
	${CP} -a ${LAZARUS_DIR}/components/fpvectorial \
		${LAZARUS_DIR}/components/anchordocking \
		${LAZARUS_DIR}/components/lclextensions ${BUILD_WRKSRC}

post-build:
	@${MKDIR} ${WRKSRC}/cad
	@${MKDIR} ${WRKSRC}/cad_source/autogenerated
	@${CP} -a ${WRKSRC}/environment/runtimefiles/common/* ${WRKSRC}/cad
	@${CP} -a ${WRKSRC}/environment/runtimefiles/zcad/* ${WRKSRC}/cad
	@cd ${WRKSRC}/environment && ${SH} makeenv_zcad.sh
	@cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} ${LAZBUILD_CMD} \
		${LAZBUILD_ARGS} --ws=${LCL_PLATFORM} \
		--lazarusdir=${LAZARUS_DIR} zcad.lpi

do-install:
# Not ready for hier(7)-conforming installation yet
	@${MKDIR} ${STAGEDIR}${PREFIX}/${PORTNAME}
	${INSTALL_PROGRAM} ${INSTALL_WRKSRC}/bin/${BUILDNAME}/${PORTNAME} \
		${STAGEDIR}${PREFIX}/${PORTNAME}
	cd ${INSTALL_WRKSRC} && ${COPYTREE_SHARE} "autosave components \
		fonts images languages log menu plugins rtl sample \
		template" ${STAGEDIR}${PREFIX}/${PORTNAME}

do-install-DOCS-on:
	@${MKDIR} ${STAGEDIR}${DOCSDIR}
	${INSTALL_DATA} ${BUILD_WRKSRC}/userguide/UserGuide.odt \
		${INSTALL_WRKSRC}/UserGuide.pdf ${STAGEDIR}${DOCSDIR}

.include <bsd.port.mk>

PATCH_ARGS+=	-l