aboutsummaryrefslogtreecommitdiff
path: root/Mk/bsd.ocaml.mk
diff options
context:
space:
mode:
authorMark Linimon <linimon@FreeBSD.org>2007-03-14 04:05:25 +0000
committerMark Linimon <linimon@FreeBSD.org>2007-03-14 04:05:25 +0000
commit75ea0e3bcc9b9d99c1a5d395184a923fdfd555a0 (patch)
tree70a45c1e5a376bbb0c982bad23e094b221f981b8 /Mk/bsd.ocaml.mk
parent4f1b4d8d049a70d6bdea0b77c504fbc7a4536f16 (diff)
downloadports-75ea0e3bcc9b9d99c1a5d395184a923fdfd555a0.tar.gz
ports-75ea0e3bcc9b9d99c1a5d395184a923fdfd555a0.zip
Add bsd.ocaml.mk to support OCaml packages.
PR: ports/101029 Submitted by: Stanislav Sedov <ssedov at mbsd dot msk dot ru>
Notes
Notes: svn path=/head/; revision=187347
Diffstat (limited to 'Mk/bsd.ocaml.mk')
-rw-r--r--Mk/bsd.ocaml.mk195
1 files changed, 195 insertions, 0 deletions
diff --git a/Mk/bsd.ocaml.mk b/Mk/bsd.ocaml.mk
new file mode 100644
index 000000000000..4d9a8fbf715e
--- /dev/null
+++ b/Mk/bsd.ocaml.mk
@@ -0,0 +1,195 @@
+# ex:ts=4
+#
+# $MBSDlabs: portmk/bsd.ocaml.mk,v 1.18 2006/08/06 18:47:23 stas Exp $
+# $FreeBSD: /tmp/pcvs/ports/Mk/bsd.ocaml.mk,v 1.1 2007-03-14 04:05:25 linimon Exp $
+#
+# bsd.ocaml.mk - Support for the Objective Caml language packages
+#
+# Author: Stanislav Sedov <ssedov@mbsd.msk.ru>
+#
+# Feel free to send any comments and suggestions to maintainer.
+#
+# Currently recognised variables are:
+#
+# USE_OCAML - Set if your port uses OCaml to build/install.
+# NO_OCAML_BUILDDEPENDS - Don't add ocamlc to BUILD|EXTRACT|PATCH_DEPENDS.
+# NO_OCAML_RUNDEPENDS - Don't add ocamlc to RUN_DEPENDS.
+# USE_OCAML_FINDLIB - Set if your port uses ocamlfind to install
+# packages. Package direcories will be
+# automatically deleted.
+# USE_OCAML_LDCONFIG - Set if your port installs shared libraries
+# into ocaml site-lib dir. OCaml ld.conf file
+# will be automatically processed.
+# USE_OCAML_WASH - Set if your port wants to automatically
+# purge shared Ocaml dirs on uninstall. It's
+# useful when installing to non-standard PREFIX
+# OCAML_PKGDIRS - Directories under site-lib to be processed
+# if USE_OCAML_FINDLIB specified.
+# Default: ${PORTNAME}
+# OCAML_LDLIBS - Directories under PREFIX to be automatically
+# added/removed from ld.conf
+# Default: ${OCAML_SITELIBDIR}/${PORTNAME}
+
+.if !defined(OCAML_include)
+
+OCAML_MAINTAINER= stas@FreeBSD.org
+OCAML_include= bsd.ocaml.mk
+
+#
+# OCaml programs location
+#
+OCAMLC?= ${LOCALBASE}/bin/ocamlc
+OCAMLC_OPT?= ${LOCALBASE}/bin/ocamlc.opt
+OCAMLCP?= ${LOCALBASE}/bin/ocamlcp
+OCAMLFIND?= ${LOCALBASE}/bin/ocamlfind
+
+#
+# OCaml library directory
+#
+OCAML_LIBDIR?= lib/ocaml
+
+#
+# Where to install site libraries
+#
+OCAML_SITELIBDIR?= ${OCAML_LIBDIR}/site-lib
+
+#
+# OCaml compiler port dependency
+#
+OCAMLC_PORT?= ${PORTSDIR}/lang/ocaml
+OCAMLC_DEPEND?= ${OCAMLC}:${OCAMLC_PORT}
+
+#
+# OCaml package manager port dependency
+#
+OCAMLFIND_PORT?= ${PORTSDIR}/devel/ocaml-findlib
+OCAMLFIND_DEPEND?= ${OCAMLFIND}:${OCAMLFIND_PORT}
+
+#
+# Common OCaml examples and documents location
+#
+OCAML_DOCSDIR= ${PREFIX}/share/doc/ocaml
+OCAML_EXAMPLESDIR= ${PREFIX}/share/examples/ocaml
+
+#
+# Location of OCaml ld.conf file
+#
+OCAML_LDCONF?= ${OCAML_LIBDIR}/ld.conf
+
+OCAMLFIND_DESTDIR?= ${PREFIX}/${OCAML_SITELIBDIR}
+OCAMLFIND_LDCONF?= ${PREFIX}/${OCAML_LDCONF}
+
+.if defined(USE_OCAML)
+. if !defined(NO_OCAML_BUILDDEPENDS)
+EXTRACT_DEPENDS+= ${OCAMLC_DEPEND}
+PATCH_DEPENDS+= ${OCAMLC_DEPEND}
+BUILD_DEPENDS+= ${OCAMLC_DEPEND}
+. endif
+. if !defined(NO_OCAML_RUNDEPENDS)
+RUN_DEPENDS+= ${OCAMLC_DEPEND}
+. endif
+PLIST_SUB+= OCAML_SITELIBDIR="${OCAML_SITELIBDIR}"
+.endif
+
+.if defined(USE_OCAML_FINDLIB) || defined(USE_OCAML_LDCONFIG)
+. if !target(post-install-script)
+post-install-script: ocaml-findlib ocaml-ldconfig ocaml-wash
+. endif
+.endif
+
+.if defined(USE_OCAML_FINDLIB)
+#
+# We'll additionally add ocamlfind to RUN_DEPENDS, since
+# if the port requires ocamlfind to install - it requires
+# some ocaml libraries and these libraries RUN_DEPENDS on
+# ocamlfind
+#
+BUILD_DEPENDS+= ${OCAMLFIND_DEPEND}
+RUN_DEPENDS+= ${OCAMLFIND_DEPEND}
+MAKE_ENV+= OCAMLFIND_DESTDIR="${OCAMLFIND_DESTDIR}" \
+ OCAMLFIND_LDCONF="${OCAMLFIND_LDCONF}"
+
+#
+# Directories under site-lib to process automatically
+#
+OCAML_PKGDIRS?= ${PORTNAME}
+. if !target(pre-install-script)
+pre-install-script:
+.if !exists(${OCAMLFIND_DESTDIR})
+ @${MKDIR} "${PREFIX}/${OCAML_SITELIBDIR}"
+.endif
+. endif
+. if !target(ocaml-findlib)
+ocaml-findlib:
+. for DIR in ${OCAML_PKGDIRS}
+ @${ECHO_CMD} "@unexec rmdir %D/${OCAML_SITELIBDIR}/${DIR} 2>/dev/null || true" >> ${TMPPLIST}
+ @${ECHO_CMD} "@unexec ${OCAMLFIND} remove ${DIR} 2>/dev/null" \
+ >> ${TMPPLIST}
+. endfor
+. endif
+.endif
+
+.if defined(USE_OCAML_LDCONFIG)
+#
+# Directories under PREFIX for appending to ld.conf
+#
+OCAML_LDLIBS?= ${OCAML_SITELIBDIR}/${PORTNAME}
+. if !target(ocaml-ldconfig)
+ocaml-ldconfig:
+. for LIB in ${OCAML_LDLIBS}
+ @${ECHO_CMD} "${PREFIX}/${LIB}" >> "${PREFIX}/${OCAML_LDCONF}"
+ @${ECHO_CMD} "@exec ${ECHO_CMD} "%D/${LIB}" >> %D/${OCAML_LDCONF}" \
+ >> ${TMPPLIST}
+ @${ECHO_CMD} "@unexec ${SED} -i \"\" -e '/${LIB:S#/#\/#g}/d' %D/${OCAML_LDCONF}" >> ${TMPPLIST}
+. endfor
+. endif
+.endif
+
+.if defined(USE_OCAML_WASH)
+. if !target(ocaml-wash)
+ocaml-wash:
+ @${ECHO_CMD} "@unexec rmdir %D/${OCAML_SITELIBDIR} 2>/dev/null || true"\
+ >> ${TMPPLIST}
+# If ld.conf is empty
+ @${ECHO_CMD} "@unexec if [ ! -s %D/${OCAML_LDCONF} ]; then ${RM} -f %D/${OCAML_LDCONF}; fi || true" >> ${TMPPLIST}
+ @${ECHO_CMD} "@unexec rmdir %D/${OCAML_LIBDIR} 2>/dev/null || true" \
+ >> ${TMPPLIST}
+. endif
+.endif
+
+.if !target(ocaml-findlib)
+ocaml-findlib:
+ @${DO_NADA}
+.endif
+
+.if !target(ocaml-ldconfig)
+ocaml-ldconfig:
+ @${DO_NADA}
+.endif
+
+.if !target(ocaml-wash)
+ocaml-wash:
+ @${DO_NADA}
+.endif
+
+#
+# XXX: temporary workaround for non-standard PREFIX
+#
+.if !target(add-plist-post)
+add-plist-post:
+. if (${PREFIX} != ${LOCALBASE} && ${PREFIX} != ${X11BASE} && \
+ ${PREFIX} != ${LINUXBASE} && ${PREFIX} != "/usr")
+ @${ECHO_CMD} "@unexec rmdir %D 2> /dev/null || true" >> ${TMPPLIST}
+. else
+ @${DO_NADA}
+. endif
+
+# If we are using PORTDOCS macro port cannot delete OCAML_DOCSDIR, so
+# we shoud try to accomodate it
+. if defined(PORTDOCS)
+ @${ECHO_CMD} "@unexec rmdir ${OCAML_DOCSDIR} 2>/dev/null || true" \
+ >> ${TMPPLIST}
+. endif
+.endif
+
+.endif #!defined(OCAML_include)