1 # Created by: Kiriyama Kazuhiko <kiri@kiri.toba-cmt.ac.jp>
4 # for committer: bump PORTREVISION for math/facile whenever ocaml gets updated
9 MASTER_SITES= http://caml.inria.fr/pub/distrib/${DISTNAME:R}/ \
11 MASTER_SITE_SUBDIR= distfiles
13 DISTFILES= ${DISTNAME}${EXTRACT_SUFX}
14 EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
16 MAINTAINER= michipili@gmail.com
17 COMMENT= The Objective Caml compiler and programming environment
21 LICENSE_NAME_QPL10= Q Public License, Version 1.0
22 LICENSE_FILE_QPL10= ${WRKSRC}/LICENSE
23 LICENSE_PERMS_QPL10= auto-accept dist-mirror dist-sell pkg-mirror pkg-sell
33 MAKE_ENV+= STAGEDIR="${STAGEDIR}"
34 CONFIGURE_ARGS= -verbose -prefix "${PREFIX}" \
35 -cc "${CC} ${CFLAGS}" \
36 -as "${AS} ${ASFLAGS}" \
40 OPTIONS_DEFINE= X11 TK THREADS DOCS EXAMPLES
41 OPTIONS_DEFAULT=X11 TK THREADS
42 TK_DESC= LablTk library (requires X11 support)
43 CMP_LIB_DESC= Install compiler libraries
44 PORTDOCS= htmlman ${DOCSDISTNAME}-refman.ps.gz \
45 ${DOCSDISTNAME}-refman.pdf
47 MODOPT= camlp4o camlp4r ocamlc ocamldep ocamldoc ocamllex ocamlopt
48 PATTERN= [[:space:]]*(do|then)?[[:space:]]*)(\$$\(CP\)|cp)([[:space:]]
49 DOCSDISTNAME= ${DISTNAME:C/([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/\1.\2/}
51 CONFLICTS= metaocaml-[0-9]*
53 .include <bsd.port.options.mk>
55 .if ${PORT_OPTIONS:MDOCS}
56 DISTFILES+= ${DOCSDISTNAME}-refman-html.tar.gz \
57 ${DOCSDISTNAME}-refman.ps.gz \
58 ${DOCSDISTNAME}-refman.pdf
59 EXTRACT_ONLY+= ${DOCSDISTNAME}-refman-html.tar.gz
61 PORTDOCS= htmlman ${DOCSDISTNAME}-refman.ps.gz ${DOCSDISTNAME}-refman.pdf
63 PLIST_SUB+= DOC="@comment "
67 CONFIGURE_ARGS+= -as "${AS} ${ASFLAGS} -mfpu=softvfp -meabi=5"
69 CONFIGURE_ARGS+= -as "${AS} ${ASFLAGS}"
72 .if ${PORT_OPTIONS:MTHREADS}
73 PLIST_SUB+= THREADS=""
74 THR_CPP= ${PTHREAD_CFLAGS}
75 THR_LD= ${PTHREAD_LIBS}
77 PLIST_SUB+= THREADS="@comment "
80 CONFIGURE_ARGS+=-no-pthread
83 .if ${PORT_OPTIONS:MX11}
86 CONFLICTS+= ocaml-nox11-[0-9]*
87 CONFIGURE_ARGS+=-x11include ${LOCALBASE}/include -x11lib ${LOCALBASE}/lib
89 PLIST_SUB+= X11="@comment "
91 CONFLICTS+= ocaml-[0-9]*
92 CONFIGURE_ARGS+=-no-graph
95 .if ${PORT_OPTIONS:MTK}
96 . if ${PORT_OPTIONS:MEXAMPLES}
97 PORTEXAMPLES= examples_camltk examples_labltk
99 . if ! ${PORT_OPTIONS:MX11}
100 IGNORE=requires X11 support to build TK bindings
104 CONFIGURE_ARGS+= -tkdefs \
105 "-I${TCL_INCLUDEDIR} -I${TK_INCLUDEDIR} ${THR_CPP}" \
106 -tklibs "-L${LOCALBASE}/lib -ltk${TK_VER:S|.||} \
107 -ltcl${TCL_VER:S|.||} ${THR_LD}"
109 PLIST_SUB+= TK="@comment "
110 CONFIGURE_ARGS+=-no-tk
113 .include <bsd.port.pre.mk>
114 .include "${FILESDIR}/manfiles"
116 OCAML_ARCH= ${ARCH:S/x86_64/amd64/:S/powerpc/power/:S/armv6/arm/}
118 .if defined(NO_PROFILE) || ${OCAML_ARCH} == power || ${OPSYS} == DragonFly
119 PLIST_SUB+= PROF="@comment "
124 .if ${OCAML_ARCH} == sparc64
125 BROKEN= ocamlc.opt seg-faults on ${ARCH}, please try to fix
129 .if ${PORT_OPTIONS:MDOCS}
130 @if ! (cd ${WRKDIR} && \
131 ${TAR} xf ${_DISTDIR}${DOCSDISTNAME}-refman-html.tar.gz \
140 -e '\|MKLIB=|s|ar rc|${AR} rc|' \
141 -e '\|RANLIB|s|ranlib|${RANLIB}|' \
142 -e '\|bytecclinkopts=|s|""|"${LDFLAGS}"|' \
143 -e "\|nativecclinkopts=|s|''|\"${LDFLAGS:C/-Wl,//}\"|" \
144 -e '\|mksharedlib=|s|$$bytecc|& $$bytecclinkopts|' \
145 -e 's|-lbfd -ldl|-lbfd $$dllib|' \
147 # don't hardcode gcc for depend target
148 # be aware of staging
149 @${REINPLACE_CMD} -E \
151 -e '/^install/,/^$$/s@\$$\(((INSTALL_)?(BIN|LIB|STUBLIB|COMPLIB|MANO?|INSTALL|INSTALL_CUSTOM)DIR)\)@$$(STAGEDIR)$$(\1)@g' \
152 `find ${WRKSRC} -name 'Makefile*'`
153 @${REINPLACE_CMD} -E -e 's/^DIR=/DIR=$$(STAGEDIR)/' ${WRKSRC}/man/Makefile
154 .if ${PORT_OPTIONS:MTK}
155 @${REINPLACE_CMD} -e 's|/usr/bin/wish|${WISH}|' \
156 ${WRKSRC}/otherlibs/labltk/examples_labltk/hello.tcl
161 @${REINPLACE_CMD} -E \
162 -e 's|(BYTECCCOMPOPTS[ \t]*=.*)|\1 ${CFLAGS} ${THR_CPP}|' \
163 -e 's|(NATIVECCCOMPOPTS[ \t]*=.*)|\1 ${CFLAGS} ${THR_CPP}|' \
164 -e '/^PTHREAD_LINK/s,-pthread,${THR_LD},g' \
165 ${WRKSRC}/config/Makefile
167 # INSTALL* safeness (which preserves the correct permissions despite
169 @${FIND} ${WRKDIR} -type f -name Makefile -print0 | \
170 ${XARGS} -0 -n 5 -x ${REINPLACE_CMD} -E \
171 -e 's,\$$\(ARCH\),${OCAML_ARCH},g' \
172 -e 's,^(${PATTERN}+.*INSTALLDIR),\1\$${BSD_INSTALL_DATA} \4,' \
173 -e 's,^(${PATTERN}+.*BINDIR),\1\$${BSD_INSTALL_PROGRAM} \4,' \
174 -e 's,^(${PATTERN}+.*LIBDIR),\1\$${BSD_INSTALL_DATA} \4,' \
175 -e 's,(${PATTERN}+.*(MANDIR|MANODIR|MANEXT)),\1\$${BSD_INSTALL_MAN} \4,'
178 @cd ${WRKSRC}/testsuite; ${RM} -f _log; for d in tests/* ; do \
179 ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} one DIR=$${d} \
180 2>&1 | tee -a _log || ${TRUE} ; done ; \
181 ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} report
184 ${RMDIR} ${STAGEDIR}${PREFIX}/lib/ocaml/ocamldoc/custom
185 @${CHMOD} 755 ${STAGEDIR}${PREFIX}/lib/ocaml/expunge
186 .if ${PORT_OPTIONS:MTK}
187 @${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
188 (cd ${WRKSRC}/otherlibs/labltk && \
189 ${COPYTREE_SHARE} examples_labltk ${STAGEDIR}${EXAMPLESDIR} \
190 "! -name .ignore" && \
191 ${COPYTREE_SHARE} examples_camltk ${STAGEDIR}${EXAMPLESDIR} \
194 .if ${PORT_OPTIONS:MDOCS}
195 ${MKDIR} ${STAGEDIR}${DOCSDIR}
196 (cd ${WRKDIR} && ${COPYTREE_SHARE} htmlman ${STAGEDIR}${DOCSDIR})
197 ${INSTALL_DATA} ${_DISTDIR}${DOCSDISTNAME}-refman.ps.gz ${STAGEDIR}${DOCSDIR}
198 ${INSTALL_DATA} ${_DISTDIR}${DOCSDISTNAME}-refman.pdf ${STAGEDIR}${DOCSDIR}
201 # Fix permissions for ld.conf
202 @${CHMOD} 644 ${STAGEDIR}${PREFIX}/lib/ocaml/ld.conf
204 .include <bsd.port.post.mk>