1 # Created by: Kiriyama Kazuhiko <kiri@kiri.toba-cmt.ac.jp>
3 # for committer: bump PORTREVISION for math/facile whenever ocaml gets updated
9 MASTER_SITES= http://caml.inria.fr/pub/distrib/${DISTNAME:R}/ GENTOO \
10 http://caml.inria.fr/pub/distrib/${DISTNAME:R}/:docs
13 MAINTAINER= michipili@gmail.com
14 COMMENT= Objective Caml compiler and programming environment
18 LICENSE_NAME_QPL10= Q Public License, Version 1.0
19 LICENSE_FILE_QPL10= ${WRKSRC}/LICENSE
20 LICENSE_PERMS_QPL10= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
22 BROKEN_aarch64= Does not build: sh: as: not found
23 BROKEN_sparc64= No rule to make target 'none.o', needed by 'libasmrun.a'
24 BROKEN_mips64= No ASM support
25 BROKEN_mips= No ASM support
27 USES= cpe compiler:c11 gmake tar:xz
35 LDFLAGS_armv7= -Wl,-znotext
36 LDFLAGS_i386= -Wl,-znotext
38 CONFIGURE_ARGS= -verbose -prefix "${PREFIX}" \
43 OPTIONS_DEFINE= X11 THREADS DOCS EXAMPLES
44 OPTIONS_DEFAULT=X11 THREADS
45 CMP_LIB_DESC= Install compiler libraries
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 "
68 .if ${ARCH} == armv6 || ${ARCH} == armv7
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}
87 CONFLICTS+= ocaml-nox11-[0-9]*
88 CONFIGURE_ARGS+=-x11include ${LOCALBASE}/include -x11lib ${LOCALBASE}/lib
90 PLIST_SUB+= X11="@comment "
92 CONFLICTS+= ocaml-[0-9]*
93 CONFIGURE_ARGS+=-no-graph
96 .include <bsd.port.pre.mk>
98 .if defined(NO_PROFILE) || ${ARCH:Mpowerpc} || ${ARCH:Mx86_64}
99 PLIST_SUB+= PROF="@comment "
104 .if defined(PPC_ABI) && ${PPC_ABI} == ELFv2
105 EXTRA_PATCHES= ${PATCHDIR}/extra-patch-asmcomp_power_arch.ml
110 .if ${PORT_OPTIONS:MDOCS}
111 @if ! (cd ${WRKDIR} && \
112 ${TAR} xf ${_DISTDIR}${DOCSDISTNAME}-refman-html.tar.gz \
121 -e '\|MKLIB=|s|ar rc|${AR} rc|' \
122 -e '\|RANLIB|s|ranlib|${RANLIB}|' \
123 -e '\|bytecclinkopts=|s|""|"${LDFLAGS}"|' \
124 -e "\|nativecclinkopts=|s|''|\"${LDFLAGS:C/-Wl,//}\"|" \
126 @${REINPLACE_CMD} -e 's,$$(ARCH),$$(SYSTEM_ARCH),' \
127 ${WRKSRC}/Makefile ${WRKSRC}/Makefile.tools \
128 ${WRKSRC}/asmrun/Makefile \
129 ${WRKSRC}/otherlibs/systhreads/Makefile \
130 ${WRKSRC}/testsuite/makefiles/Makefile.common \
131 ${WRKSRC}/testsuite/tests/asmcomp/Makefile
134 @${REINPLACE_CMD} -E \
135 -e '/^PTHREAD_LINK/s,-pthread,${THR_LD},g' \
136 ${WRKSRC}/config/Makefile
137 # INSTALL* safeness (which preserves the correct permissions despite
139 @${FIND} ${WRKDIR} -type f -name Makefile -print0 | \
140 ${XARGS} -0 -n 5 -x ${REINPLACE_CMD} -E \
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} _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}
159 # Spacetime profiling is only available for native code on 64-bit targets
160 .if ${ARCH} == armv7 || ${ARCH} == i386 || ${ARCH} == powerpc
161 @${REINPLACE_CMD} -e '/raw_spacetime_lib/d' ${TMPPLIST}
164 .include <bsd.port.post.mk>