1 # Created by: Kiriyama Kazuhiko <kiri@kiri.toba-cmt.ac.jp>
3 # for committer: bump PORTREVISION for math/facile whenever ocaml gets updated
8 MASTER_SITES= http://caml.inria.fr/pub/distrib/${DISTNAME:R}/ GENTOO \
9 http://caml.inria.fr/pub/distrib/${DISTNAME:R}/:docs
12 MAINTAINER= michipili@gmail.com
13 COMMENT= Objective Caml compiler and programming environment
17 LICENSE_NAME_QPL10= Q Public License, Version 1.0
18 LICENSE_FILE_QPL10= ${WRKSRC}/LICENSE
19 LICENSE_PERMS_QPL10= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
21 BROKEN_sparc64= ocamlc.opt seg-faults, please try to fix
22 BROKEN_mips64= No ASM support
23 BROKEN_mips= No ASM support
25 USES= cpe gmake tar:xz
34 MAKE_ENV+= STAGEDIR="${STAGEDIR}"
35 CONFIGURE_ARGS= -verbose -prefix "${PREFIX}" \
36 -cc "${CC} ${CFLAGS}" \
37 -as "${AS} ${ASFLAGS}" \
41 OPTIONS_DEFINE= X11 THREADS DOCS EXAMPLES
42 OPTIONS_DEFAULT=X11 THREADS
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:= ${DISTNAME}${EXTRACT_SUFX} \
57 ${DOCSDISTNAME}-refman-html.tar.gz:docs \
58 ${DOCSDISTNAME}-refman.ps.gz:docs \
59 ${DOCSDISTNAME}-refman.pdf:docs
60 EXTRACT_ONLY:= ${DISTNAME}${EXTRACT_SUFX} \
61 ${DOCSDISTNAME}-refman-html.tar.gz
63 PORTDOCS= htmlman ${DOCSDISTNAME}-refman.ps.gz ${DOCSDISTNAME}-refman.pdf
65 PLIST_SUB+= DOC="@comment "
69 CONFIGURE_ARGS+= -as "${AS} ${ASFLAGS} -meabi=5"
71 CONFIGURE_ARGS+= -as "${AS} ${ASFLAGS}"
74 .if ${PORT_OPTIONS:MTHREADS}
75 PLIST_SUB+= THREADS=""
78 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 .include <bsd.port.pre.mk>
96 .include "${FILESDIR}/manfiles"
98 OCAML_ARCH= ${ARCH:S/x86_64/amd64/:S/powerpc/power/:S/armv6/arm/}
100 .if defined(NO_PROFILE) || ${OCAML_ARCH:Mpower} || ${OCAML_ARCH:Mamd64} \
101 || ${OCAML_ARCH:Marm}
102 PLIST_SUB+= PROF="@comment "
108 .if ${PORT_OPTIONS:MDOCS}
109 @if ! (cd ${WRKDIR} && \
110 ${TAR} xf ${_DISTDIR}${DOCSDISTNAME}-refman-html.tar.gz \
119 -e '\|MKLIB=|s|ar rc|${AR} rc|' \
120 -e '\|RANLIB|s|ranlib|${RANLIB}|' \
121 -e '\|bytecclinkopts=|s|""|"${LDFLAGS}"|' \
122 -e "\|nativecclinkopts=|s|''|\"${LDFLAGS:C/-Wl,//}\"|" \
123 -e '\|mksharedlib=|s|$$bytecc|& $$bytecclinkopts|' \
124 -e 's|-lbfd -ldl|-lbfd $$dllib|' \
126 # don't hardcode gcc for depend target
130 @${REINPLACE_CMD} -E \
131 -e 's|(BYTECCCOMPOPTS[ \t]*=.*)|\1 ${CFLAGS}|' \
132 -e 's|(NATIVECCCOMPOPTS[ \t]*=.*)|\1 ${CFLAGS}|' \
133 -e '/^PTHREAD_LINK/s,-pthread,${THR_LD},g' \
134 ${WRKSRC}/config/Makefile
136 # INSTALL* safeness (which preserves the correct permissions despite
138 @${FIND} ${WRKDIR} -type f -name Makefile -print0 | \
139 ${XARGS} -0 -n 5 -x ${REINPLACE_CMD} -E \
140 -e 's,\$$\(ARCH\),${OCAML_ARCH},g' \
141 -e 's,^(${PATTERN}+.*INSTALLDIR),\1\$${BSD_INSTALL_DATA} \4,' \
142 -e 's,^(${PATTERN}+.*BINDIR),\1\$${BSD_INSTALL_PROGRAM} \4,' \
143 -e 's,^(${PATTERN}+.*LIBDIR),\1\$${BSD_INSTALL_DATA} \4,' \
144 -e 's,(${PATTERN}+.*(MANDIR|MANODIR|MANEXT)),\1\$${BSD_INSTALL_MAN} \4,'
146 check-test: do-install
147 @cd ${WRKSRC}/testsuite; ${RM} -f _log; for d in tests/* ; do \
148 ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} one DIR=$${d} \
149 2>&1 | tee -a _log || ${TRUE} ; done ; \
150 ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} report
153 .if ${PORT_OPTIONS:MDOCS}
154 ${MKDIR} ${STAGEDIR}${DOCSDIR}
155 (cd ${WRKDIR} && ${COPYTREE_SHARE} htmlman ${STAGEDIR}${DOCSDIR})
156 ${INSTALL_DATA} ${_DISTDIR}${DOCSDISTNAME}-refman.ps.gz ${STAGEDIR}${DOCSDIR}
157 ${INSTALL_DATA} ${_DISTDIR}${DOCSDISTNAME}-refman.pdf ${STAGEDIR}${DOCSDIR}
160 # Fix permissions for ld.conf
161 @${CHMOD} 644 ${STAGEDIR}${PREFIX}/lib/ocaml/ld.conf
163 .include <bsd.port.post.mk>