THRIFT-2364: use oasis to build thrift for ocaml
Client: OCaml
Patch: Spiros Eliopoulos <seliopou@gmail.com>
This closes #1193
diff --git a/lib/ocaml/.gitignore b/lib/ocaml/.gitignore
new file mode 100644
index 0000000..0d9a6af
--- /dev/null
+++ b/lib/ocaml/.gitignore
@@ -0,0 +1,11 @@
+_build/
+_tags
+configure
+setup.data
+setup.ml
+myocamlbuild.ml
+*/META
+*/*.mllib
+*/*.mldylib
+Makefile
+OCamlMakefile
diff --git a/lib/ocaml/DEVELOPMENT b/lib/ocaml/DEVELOPMENT
new file mode 100644
index 0000000..3d5a03c
--- /dev/null
+++ b/lib/ocaml/DEVELOPMENT
@@ -0,0 +1,76 @@
+Thrift OCaml Development
+========================
+
+Prerequisites
+-------------
+
+In order to build this library, you must have the following installed:
+
+ * The OCaml compiler, preferably >4.00
+ * The Oasis build tool
+
+In addition you may want to install OPAM, which will allow you to setup an
+OCaml development environment that's isolated from your system installation,
+much like virutalenv for Python or the myriad systems available for Ruby. If
+you have OPAM installed, then installing Oasis is as simple as running:
+
+ $ opam install oasis
+
+Building
+--------
+
+Once all the prerequisites have been installed, run the following commands:
+
+ $ oasis setup
+ $ ./configure
+ $ make
+
+The `oasis setup` command will generate the configure script and Makefile,
+along with other files that opam will use to create an installable library.
+The cofigure script will ensure that all build dependencies are installed, and
+make will actually build the library.
+
+To remove files that the compiler geneates, run:
+
+ $ make clean
+
+To remove those files _as well as_ files that the setup and configure process
+generates, run:
+
+ $ rm `cat .gitignore`
+
+Installing
+----------
+
+If you're using opam, simply run the following command:
+
+ $ make install
+
+While development, you may want to install your latest build on the system to
+test against other libraries or programs. To do this, use:
+
+ $ make reinstall
+
+Distribution
+------------
+
+The de facto preferred method for distributing OCaml libraries is through the
+OPAM package repository. To publish the latest package, issue a pull request
+against the following github repository:
+
+ https://github.com/ocaml/opam-repository
+
+The pull requestion should add the following directory structure and files:
+
+ package
+ |__thrift
+ |__thrift.<VERSION>
+ |__ descr
+ |__ opam
+ |__ url
+
+Templates for the following files can be found in the opam/ subdirectory of
+this library's root, with XXX(...) indicating fields that need to be filled
+out. You can find further documentation here:
+
+ http://opam.ocaml.org/doc/Packaging.html
diff --git a/lib/ocaml/Makefile b/lib/ocaml/Makefile
deleted file mode 100644
index 6abeee7..0000000
--- a/lib/ocaml/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-all:
- cd src; make; cd ..
-clean:
- cd src; make clean; cd ..
diff --git a/lib/ocaml/OCamlMakefile b/lib/ocaml/OCamlMakefile
deleted file mode 100644
index b0b9252..0000000
--- a/lib/ocaml/OCamlMakefile
+++ /dev/null
@@ -1,1231 +0,0 @@
-###########################################################################
-# OCamlMakefile
-# Copyright (C) 1999-2007 Markus Mottl
-#
-# For updates see:
-# http://www.ocaml.info/home/ocaml_sources.html
-#
-###########################################################################
-
-# Modified by damien for .glade.ml compilation
-
-# Set these variables to the names of the sources to be processed and
-# the result variable. Order matters during linkage!
-
-ifndef SOURCES
- SOURCES := foo.ml
-endif
-export SOURCES
-
-ifndef RES_CLIB_SUF
- RES_CLIB_SUF := _stubs
-endif
-export RES_CLIB_SUF
-
-ifndef RESULT
- RESULT := foo
-endif
-export RESULT := $(strip $(RESULT))
-
-export LIB_PACK_NAME
-
-ifndef DOC_FILES
- DOC_FILES := $(filter %.mli, $(SOURCES))
-endif
-export DOC_FILES
-FIRST_DOC_FILE := $(firstword $(DOC_FILES))
-
-export BCSUFFIX
-export NCSUFFIX
-
-ifndef TOPSUFFIX
- TOPSUFFIX := .top
-endif
-export TOPSUFFIX
-
-# Eventually set include- and library-paths, libraries to link,
-# additional compilation-, link- and ocamlyacc-flags
-# Path- and library information needs not be written with "-I" and such...
-# Define THREADS if you need it, otherwise leave it unset (same for
-# USE_CAMLP4)!
-
-export THREADS
-export VMTHREADS
-export ANNOTATE
-export USE_CAMLP4
-
-export INCDIRS
-export LIBDIRS
-export EXTLIBDIRS
-export RESULTDEPS
-export OCAML_DEFAULT_DIRS
-
-export LIBS
-export CLIBS
-export CFRAMEWORKS
-
-export OCAMLFLAGS
-export OCAMLNCFLAGS
-export OCAMLBCFLAGS
-
-export OCAMLLDFLAGS
-export OCAMLNLDFLAGS
-export OCAMLBLDFLAGS
-
-export OCAMLMKLIB_FLAGS
-
-ifndef OCAMLCPFLAGS
- OCAMLCPFLAGS := a
-endif
-export OCAMLCPFLAGS
-
-ifndef DOC_DIR
- DOC_DIR := doc
-endif
-export DOC_DIR
-
-export PPFLAGS
-
-export LFLAGS
-export YFLAGS
-export IDLFLAGS
-
-export OCAMLDOCFLAGS
-
-export OCAMLFIND_INSTFLAGS
-
-export DVIPSFLAGS
-
-export STATIC
-
-# Add a list of optional trash files that should be deleted by "make clean"
-export TRASH
-
-ECHO := echo
-
-ifdef REALLY_QUIET
- export REALLY_QUIET
- ECHO := true
- LFLAGS := $(LFLAGS) -q
- YFLAGS := $(YFLAGS) -q
-endif
-
-#################### variables depending on your OCaml-installation
-
-ifdef MINGW
- export MINGW
- WIN32 := 1
- CFLAGS_WIN32 := -mno-cygwin
-endif
-ifdef MSVC
- export MSVC
- WIN32 := 1
- ifndef STATIC
- CPPFLAGS_WIN32 := -DCAML_DLL
- endif
- CFLAGS_WIN32 += -nologo
- EXT_OBJ := obj
- EXT_LIB := lib
- ifeq ($(CC),gcc)
- # work around GNU Make default value
- ifdef THREADS
- CC := cl -MT
- else
- CC := cl
- endif
- endif
- ifeq ($(CXX),g++)
- # work around GNU Make default value
- CXX := $(CC)
- endif
- CFLAG_O := -Fo
-endif
-ifdef WIN32
- EXT_CXX := cpp
- EXE := .exe
-endif
-
-ifndef EXT_OBJ
- EXT_OBJ := o
-endif
-ifndef EXT_LIB
- EXT_LIB := a
-endif
-ifndef EXT_CXX
- EXT_CXX := cc
-endif
-ifndef EXE
- EXE := # empty
-endif
-ifndef CFLAG_O
- CFLAG_O := -o # do not delete this comment (preserves trailing whitespace)!
-endif
-
-export CC
-export CXX
-export CFLAGS
-export CXXFLAGS
-export LDFLAGS
-export CPPFLAGS
-
-ifndef RPATH_FLAG
- ifdef ELF_RPATH_FLAG
- RPATH_FLAG := $(ELF_RPATH_FLAG)
- else
- RPATH_FLAG := -R
- endif
-endif
-export RPATH_FLAG
-
-ifndef MSVC
-ifndef PIC_CFLAGS
- PIC_CFLAGS := -fPIC
-endif
-ifndef PIC_CPPFLAGS
- PIC_CPPFLAGS := -DPIC
-endif
-endif
-
-export PIC_CFLAGS
-export PIC_CPPFLAGS
-
-BCRESULT := $(addsuffix $(BCSUFFIX), $(RESULT))
-NCRESULT := $(addsuffix $(NCSUFFIX), $(RESULT))
-TOPRESULT := $(addsuffix $(TOPSUFFIX), $(RESULT))
-
-ifndef OCAMLFIND
- OCAMLFIND := ocamlfind
-endif
-export OCAMLFIND
-
-ifndef OCAMLC
- OCAMLC := ocamlc
-endif
-export OCAMLC
-
-ifndef OCAMLOPT
- OCAMLOPT := ocamlopt
-endif
-export OCAMLOPT
-
-ifndef OCAMLMKTOP
- OCAMLMKTOP := ocamlmktop
-endif
-export OCAMLMKTOP
-
-ifndef OCAMLCP
- OCAMLCP := ocamlcp
-endif
-export OCAMLCP
-
-ifndef OCAMLDEP
- OCAMLDEP := ocamldep
-endif
-export OCAMLDEP
-
-ifndef OCAMLLEX
- OCAMLLEX := ocamllex
-endif
-export OCAMLLEX
-
-ifndef OCAMLYACC
- OCAMLYACC := ocamlyacc
-endif
-export OCAMLYACC
-
-ifndef OCAMLMKLIB
- OCAMLMKLIB := ocamlmklib
-endif
-export OCAMLMKLIB
-
-ifndef OCAML_GLADECC
- OCAML_GLADECC := lablgladecc2
-endif
-export OCAML_GLADECC
-
-ifndef OCAML_GLADECC_FLAGS
- OCAML_GLADECC_FLAGS :=
-endif
-export OCAML_GLADECC_FLAGS
-
-ifndef CAMELEON_REPORT
- CAMELEON_REPORT := report
-endif
-export CAMELEON_REPORT
-
-ifndef CAMELEON_REPORT_FLAGS
- CAMELEON_REPORT_FLAGS :=
-endif
-export CAMELEON_REPORT_FLAGS
-
-ifndef CAMELEON_ZOGGY
- CAMELEON_ZOGGY := camlp4o pa_zog.cma pr_o.cmo
-endif
-export CAMELEON_ZOGGY
-
-ifndef CAMELEON_ZOGGY_FLAGS
- CAMELEON_ZOGGY_FLAGS :=
-endif
-export CAMELEON_ZOGGY_FLAGS
-
-ifndef OXRIDL
- OXRIDL := oxridl
-endif
-export OXRIDL
-
-ifndef CAMLIDL
- CAMLIDL := camlidl
-endif
-export CAMLIDL
-
-ifndef CAMLIDLDLL
- CAMLIDLDLL := camlidldll
-endif
-export CAMLIDLDLL
-
-ifndef NOIDLHEADER
- MAYBE_IDL_HEADER := -header
-endif
-export NOIDLHEADER
-
-export NO_CUSTOM
-
-ifndef CAMLP4
- CAMLP4 := camlp4
-endif
-export CAMLP4
-
-ifndef REAL_OCAMLFIND
- ifdef PACKS
- ifndef CREATE_LIB
- ifdef THREADS
- PACKS += threads
- endif
- endif
- empty :=
- space := $(empty) $(empty)
- comma := ,
- ifdef PREDS
- PRE_OCAML_FIND_PREDICATES := $(subst $(space),$(comma),$(PREDS))
- PRE_OCAML_FIND_PACKAGES := $(subst $(space),$(comma),$(PACKS))
- OCAML_FIND_PREDICATES := -predicates $(PRE_OCAML_FIND_PREDICATES)
- # OCAML_DEP_PREDICATES := -syntax $(PRE_OCAML_FIND_PREDICATES)
- OCAML_FIND_PACKAGES := $(OCAML_FIND_PREDICATES) -package $(PRE_OCAML_FIND_PACKAGES)
- OCAML_DEP_PACKAGES := $(OCAML_DEP_PREDICATES) -package $(PRE_OCAML_FIND_PACKAGES)
- else
- OCAML_FIND_PACKAGES := -package $(subst $(space),$(comma),$(PACKS))
- OCAML_DEP_PACKAGES :=
- endif
- OCAML_FIND_LINKPKG := -linkpkg
- REAL_OCAMLFIND := $(OCAMLFIND)
- endif
-endif
-
-export OCAML_FIND_PACKAGES
-export OCAML_DEP_PACKAGES
-export OCAML_FIND_LINKPKG
-export REAL_OCAMLFIND
-
-ifndef OCAMLDOC
- OCAMLDOC := ocamldoc
-endif
-export OCAMLDOC
-
-ifndef LATEX
- LATEX := latex
-endif
-export LATEX
-
-ifndef DVIPS
- DVIPS := dvips
-endif
-export DVIPS
-
-ifndef PS2PDF
- PS2PDF := ps2pdf
-endif
-export PS2PDF
-
-ifndef OCAMLMAKEFILE
- OCAMLMAKEFILE := OCamlMakefile
-endif
-export OCAMLMAKEFILE
-
-ifndef OCAMLLIBPATH
- OCAMLLIBPATH := \
- $(shell $(OCAMLC) 2>/dev/null -where || echo /usr/local/lib/ocaml)
-endif
-export OCAMLLIBPATH
-
-ifndef OCAML_LIB_INSTALL
- OCAML_LIB_INSTALL := $(OCAMLLIBPATH)/contrib
-endif
-export OCAML_LIB_INSTALL
-
-###########################################################################
-
-#################### change following sections only if
-#################### you know what you are doing!
-
-# delete target files when a build command fails
-.PHONY: .DELETE_ON_ERROR
-.DELETE_ON_ERROR:
-
-# for pedants using "--warn-undefined-variables"
-export MAYBE_IDL
-export REAL_RESULT
-export CAMLIDLFLAGS
-export THREAD_FLAG
-export RES_CLIB
-export MAKEDLL
-export ANNOT_FLAG
-export C_OXRIDL
-export SUBPROJS
-export CFLAGS_WIN32
-export CPPFLAGS_WIN32
-
-INCFLAGS :=
-
-SHELL := /bin/sh
-
-MLDEPDIR := ._d
-BCDIDIR := ._bcdi
-NCDIDIR := ._ncdi
-
-FILTER_EXTNS := %.mli %.ml %.mll %.mly %.idl %.oxridl %.c %.m %.$(EXT_CXX) %.rep %.zog %.glade
-
-FILTERED := $(filter $(FILTER_EXTNS), $(SOURCES))
-SOURCE_DIRS := $(filter-out ./, $(sort $(dir $(FILTERED))))
-
-FILTERED_REP := $(filter %.rep, $(FILTERED))
-DEP_REP := $(FILTERED_REP:%.rep=$(MLDEPDIR)/%.d)
-AUTO_REP := $(FILTERED_REP:.rep=.ml)
-
-FILTERED_ZOG := $(filter %.zog, $(FILTERED))
-DEP_ZOG := $(FILTERED_ZOG:%.zog=$(MLDEPDIR)/%.d)
-AUTO_ZOG := $(FILTERED_ZOG:.zog=.ml)
-
-FILTERED_GLADE := $(filter %.glade, $(FILTERED))
-DEP_GLADE := $(FILTERED_GLADE:%.glade=$(MLDEPDIR)/%.d)
-AUTO_GLADE := $(FILTERED_GLADE:.glade=.ml)
-
-FILTERED_ML := $(filter %.ml, $(FILTERED))
-DEP_ML := $(FILTERED_ML:%.ml=$(MLDEPDIR)/%.d)
-
-FILTERED_MLI := $(filter %.mli, $(FILTERED))
-DEP_MLI := $(FILTERED_MLI:.mli=.di)
-
-FILTERED_MLL := $(filter %.mll, $(FILTERED))
-DEP_MLL := $(FILTERED_MLL:%.mll=$(MLDEPDIR)/%.d)
-AUTO_MLL := $(FILTERED_MLL:.mll=.ml)
-
-FILTERED_MLY := $(filter %.mly, $(FILTERED))
-DEP_MLY := $(FILTERED_MLY:%.mly=$(MLDEPDIR)/%.d) $(FILTERED_MLY:.mly=.di)
-AUTO_MLY := $(FILTERED_MLY:.mly=.mli) $(FILTERED_MLY:.mly=.ml)
-
-FILTERED_IDL := $(filter %.idl, $(FILTERED))
-DEP_IDL := $(FILTERED_IDL:%.idl=$(MLDEPDIR)/%.d) $(FILTERED_IDL:.idl=.di)
-C_IDL := $(FILTERED_IDL:%.idl=%_stubs.c)
-ifndef NOIDLHEADER
- C_IDL += $(FILTERED_IDL:.idl=.h)
-endif
-OBJ_C_IDL := $(FILTERED_IDL:%.idl=%_stubs.$(EXT_OBJ))
-AUTO_IDL := $(FILTERED_IDL:.idl=.mli) $(FILTERED_IDL:.idl=.ml) $(C_IDL)
-
-FILTERED_OXRIDL := $(filter %.oxridl, $(FILTERED))
-DEP_OXRIDL := $(FILTERED_OXRIDL:%.oxridl=$(MLDEPDIR)/%.d) $(FILTERED_OXRIDL:.oxridl=.di)
-AUTO_OXRIDL := $(FILTERED_OXRIDL:.oxridl=.mli) $(FILTERED_OXRIDL:.oxridl=.ml) $(C_OXRIDL)
-
-FILTERED_C_CXX := $(filter %.c %.m %.$(EXT_CXX), $(FILTERED))
-OBJ_C_CXX := $(FILTERED_C_CXX:.c=.$(EXT_OBJ))
-OBJ_C_CXX := $(OBJ_C_CXX:.m=.$(EXT_OBJ))
-OBJ_C_CXX := $(OBJ_C_CXX:.$(EXT_CXX)=.$(EXT_OBJ))
-
-PRE_TARGETS += $(AUTO_MLL) $(AUTO_MLY) $(AUTO_IDL) $(AUTO_OXRIDL) $(AUTO_ZOG) $(AUTO_REP) $(AUTO_GLADE)
-
-ALL_DEPS := $(DEP_ML) $(DEP_MLI) $(DEP_MLL) $(DEP_MLY) $(DEP_IDL) $(DEP_OXRIDL) $(DEP_ZOG) $(DEP_REP) $(DEP_GLADE)
-
-MLDEPS := $(filter %.d, $(ALL_DEPS))
-MLIDEPS := $(filter %.di, $(ALL_DEPS))
-BCDEPIS := $(MLIDEPS:%.di=$(BCDIDIR)/%.di)
-NCDEPIS := $(MLIDEPS:%.di=$(NCDIDIR)/%.di)
-
-ALLML := $(filter %.mli %.ml %.mll %.mly %.idl %.oxridl %.rep %.zog %.glade, $(FILTERED))
-
-IMPLO_INTF := $(ALLML:%.mli=%.mli.__)
-IMPLO_INTF := $(foreach file, $(IMPLO_INTF), \
- $(basename $(file)).cmi $(basename $(file)).cmo)
-IMPLO_INTF := $(filter-out %.mli.cmo, $(IMPLO_INTF))
-IMPLO_INTF := $(IMPLO_INTF:%.mli.cmi=%.cmi)
-
-IMPLX_INTF := $(IMPLO_INTF:.cmo=.cmx)
-
-INTF := $(filter %.cmi, $(IMPLO_INTF))
-IMPL_CMO := $(filter %.cmo, $(IMPLO_INTF))
-IMPL_CMX := $(IMPL_CMO:.cmo=.cmx)
-IMPL_ASM := $(IMPL_CMO:.cmo=.asm)
-IMPL_S := $(IMPL_CMO:.cmo=.s)
-
-OBJ_LINK := $(OBJ_C_IDL) $(OBJ_C_CXX)
-OBJ_FILES := $(IMPL_CMO:.cmo=.$(EXT_OBJ)) $(OBJ_LINK)
-
-EXECS := $(addsuffix $(EXE), \
- $(sort $(TOPRESULT) $(BCRESULT) $(NCRESULT)))
-ifdef WIN32
- EXECS += $(BCRESULT).dll $(NCRESULT).dll
-endif
-
-CLIB_BASE := $(RESULT)$(RES_CLIB_SUF)
-ifneq ($(strip $(OBJ_LINK)),)
- RES_CLIB := lib$(CLIB_BASE).$(EXT_LIB)
-endif
-
-ifdef WIN32
-DLLSONAME := $(CLIB_BASE).dll
-else
-DLLSONAME := dll$(CLIB_BASE).so
-endif
-
-NONEXECS := $(INTF) $(IMPL_CMO) $(IMPL_CMX) $(IMPL_ASM) $(IMPL_S) \
- $(OBJ_FILES) $(PRE_TARGETS) $(BCRESULT).cma $(NCRESULT).cmxa \
- $(NCRESULT).$(EXT_LIB) $(BCRESULT).cmi $(BCRESULT).cmo \
- $(NCRESULT).cmi $(NCRESULT).cmx $(NCRESULT).o \
- $(RES_CLIB) $(IMPL_CMO:.cmo=.annot) \
- $(LIB_PACK_NAME).cmi $(LIB_PACK_NAME).cmo $(LIB_PACK_NAME).cmx $(LIB_PACK_NAME).o
-
-ifndef STATIC
- NONEXECS += $(DLLSONAME)
-endif
-
-ifndef LIBINSTALL_FILES
- LIBINSTALL_FILES := $(RESULT).mli $(RESULT).cmi $(RESULT).cma \
- $(RESULT).cmxa $(RESULT).$(EXT_LIB) $(RES_CLIB)
- ifndef STATIC
- ifneq ($(strip $(OBJ_LINK)),)
- LIBINSTALL_FILES += $(DLLSONAME)
- endif
- endif
-endif
-
-export LIBINSTALL_FILES
-
-ifdef WIN32
- # some extra stuff is created while linking DLLs
- NONEXECS += $(BCRESULT).$(EXT_LIB) $(BCRESULT).exp $(NCRESULT).exp $(CLIB_BASE).exp $(CLIB_BASE).lib
-endif
-
-TARGETS := $(EXECS) $(NONEXECS)
-
-# If there are IDL-files
-ifneq ($(strip $(FILTERED_IDL)),)
- MAYBE_IDL := -cclib -lcamlidl
-endif
-
-ifdef USE_CAMLP4
- CAMLP4PATH := \
- $(shell $(CAMLP4) -where 2>/dev/null || echo /usr/local/lib/camlp4)
- INCFLAGS := -I $(CAMLP4PATH)
- CINCFLAGS := -I$(CAMLP4PATH)
-endif
-
-DINCFLAGS := $(INCFLAGS) $(SOURCE_DIRS:%=-I %) $(OCAML_DEFAULT_DIRS:%=-I %)
-INCFLAGS := $(DINCFLAGS) $(INCDIRS:%=-I %)
-CINCFLAGS += $(SOURCE_DIRS:%=-I%) $(INCDIRS:%=-I%) $(OCAML_DEFAULT_DIRS:%=-I%)
-
-ifndef MSVC
- CLIBFLAGS += $(SOURCE_DIRS:%=-L%) $(LIBDIRS:%=-L%) \
- $(EXTLIBDIRS:%=-L%) $(OCAML_DEFAULT_DIRS:%=-L%)
-
- ifeq ($(ELF_RPATH), yes)
- CLIBFLAGS += $(EXTLIBDIRS:%=-Wl,$(RPATH_FLAG)%)
- endif
-endif
-
-ifndef PROFILING
- INTF_OCAMLC := $(OCAMLC)
-else
- ifndef THREADS
- INTF_OCAMLC := $(OCAMLCP) -p $(OCAMLCPFLAGS)
- else
- # OCaml does not support profiling byte code
- # with threads (yet), therefore we force an error.
- ifndef REAL_OCAMLC
- $(error Profiling of multithreaded byte code not yet supported by OCaml)
- endif
- INTF_OCAMLC := $(OCAMLC)
- endif
-endif
-
-ifndef MSVC
- COMMON_LDFLAGS := $(LDFLAGS:%=-ccopt %) $(SOURCE_DIRS:%=-ccopt -L%) \
- $(LIBDIRS:%=-ccopt -L%) $(EXTLIBDIRS:%=-ccopt -L%) \
- $(EXTLIBDIRS:%=-ccopt -Wl $(OCAML_DEFAULT_DIRS:%=-ccopt -L%))
-
- ifeq ($(ELF_RPATH),yes)
- COMMON_LDFLAGS += $(EXTLIBDIRS:%=-ccopt -Wl,$(RPATH_FLAG)%)
- endif
-else
- COMMON_LDFLAGS := -ccopt "/link -NODEFAULTLIB:LIBC $(LDFLAGS:%=%) $(SOURCE_DIRS:%=-LIBPATH:%) \
- $(LIBDIRS:%=-LIBPATH:%) $(EXTLIBDIRS:%=-LIBPATH:%) \
- $(OCAML_DEFAULT_DIRS:%=-LIBPATH:%) "
-endif
-
-CLIBS_OPTS := $(CLIBS:%=-cclib -l%) $(CFRAMEWORKS:%=-cclib '-framework %')
-ifdef MSVC
- ifndef STATIC
- # MSVC libraries do not have 'lib' prefix
- CLIBS_OPTS := $(CLIBS:%=-cclib %.lib)
- endif
-endif
-
-ifneq ($(strip $(OBJ_LINK)),)
- ifdef CREATE_LIB
- OBJS_LIBS := -cclib -l$(CLIB_BASE) $(CLIBS_OPTS) $(MAYBE_IDL)
- else
- OBJS_LIBS := $(OBJ_LINK) $(CLIBS_OPTS) $(MAYBE_IDL)
- endif
-else
- OBJS_LIBS := $(CLIBS_OPTS) $(MAYBE_IDL)
-endif
-
-# If we have to make byte-code
-ifndef REAL_OCAMLC
- BYTE_OCAML := y
-
- # EXTRADEPS is added dependencies we have to insert for all
- # executable files we generate. Ideally it should be all of the
- # libraries we use, but it's hard to find the ones that get searched on
- # the path since I don't know the paths built into the compiler, so
- # just include the ones with slashes in their names.
- EXTRADEPS := $(addsuffix .cma,$(foreach i,$(LIBS),$(if $(findstring /,$(i)),$(i))))
- SPECIAL_OCAMLFLAGS := $(OCAMLBCFLAGS)
-
- REAL_OCAMLC := $(INTF_OCAMLC)
-
- REAL_IMPL := $(IMPL_CMO)
- REAL_IMPL_INTF := $(IMPLO_INTF)
- IMPL_SUF := .cmo
-
- DEPFLAGS :=
- MAKE_DEPS := $(MLDEPS) $(BCDEPIS)
-
- ifdef CREATE_LIB
- override CFLAGS := $(PIC_CFLAGS) $(CFLAGS)
- override CPPFLAGS := $(PIC_CPPFLAGS) $(CPPFLAGS)
- ifndef STATIC
- ifneq ($(strip $(OBJ_LINK)),)
- MAKEDLL := $(DLLSONAME)
- ALL_LDFLAGS := -dllib $(DLLSONAME)
- endif
- endif
- endif
-
- ifndef NO_CUSTOM
- ifneq "$(strip $(OBJ_LINK) $(THREADS) $(MAYBE_IDL) $(CLIBS) $(CFRAMEWORKS))" ""
- ALL_LDFLAGS += -custom
- endif
- endif
-
- ALL_LDFLAGS += $(INCFLAGS) $(OCAMLLDFLAGS) $(OCAMLBLDFLAGS) \
- $(COMMON_LDFLAGS) $(LIBS:%=%.cma)
- CAMLIDLDLLFLAGS :=
-
- ifdef THREADS
- ifdef VMTHREADS
- THREAD_FLAG := -vmthread
- else
- THREAD_FLAG := -thread
- endif
- ALL_LDFLAGS := $(THREAD_FLAG) $(ALL_LDFLAGS)
- ifndef CREATE_LIB
- ifndef REAL_OCAMLFIND
- ALL_LDFLAGS := unix.cma threads.cma $(ALL_LDFLAGS)
- endif
- endif
- endif
-
-# we have to make native-code
-else
- EXTRADEPS := $(addsuffix .cmxa,$(foreach i,$(LIBS),$(if $(findstring /,$(i)),$(i))))
- ifndef PROFILING
- SPECIAL_OCAMLFLAGS := $(OCAMLNCFLAGS)
- PLDFLAGS :=
- else
- SPECIAL_OCAMLFLAGS := -p $(OCAMLNCFLAGS)
- PLDFLAGS := -p
- endif
-
- REAL_IMPL := $(IMPL_CMX)
- REAL_IMPL_INTF := $(IMPLX_INTF)
- IMPL_SUF := .cmx
-
- override CPPFLAGS := -DNATIVE_CODE $(CPPFLAGS)
-
- DEPFLAGS := -native
- MAKE_DEPS := $(MLDEPS) $(NCDEPIS)
-
- ALL_LDFLAGS := $(PLDFLAGS) $(INCFLAGS) $(OCAMLLDFLAGS) \
- $(OCAMLNLDFLAGS) $(COMMON_LDFLAGS)
- CAMLIDLDLLFLAGS := -opt
-
- ifndef CREATE_LIB
- ALL_LDFLAGS += $(LIBS:%=%.cmxa)
- else
- override CFLAGS := $(PIC_CFLAGS) $(CFLAGS)
- override CPPFLAGS := $(PIC_CPPFLAGS) $(CPPFLAGS)
- endif
-
- ifdef THREADS
- THREAD_FLAG := -thread
- ALL_LDFLAGS := $(THREAD_FLAG) $(ALL_LDFLAGS)
- ifndef CREATE_LIB
- ifndef REAL_OCAMLFIND
- ALL_LDFLAGS := unix.cmxa threads.cmxa $(ALL_LDFLAGS)
- endif
- endif
- endif
-endif
-
-export MAKE_DEPS
-
-ifdef ANNOTATE
- ANNOT_FLAG := -dtypes
-else
-endif
-
-ALL_OCAMLCFLAGS := $(THREAD_FLAG) $(ANNOT_FLAG) $(OCAMLFLAGS) \
- $(INCFLAGS) $(SPECIAL_OCAMLFLAGS)
-
-ifdef make_deps
- -include $(MAKE_DEPS)
- PRE_TARGETS :=
-endif
-
-###########################################################################
-# USER RULES
-
-# Call "OCamlMakefile QUIET=" to get rid of all of the @'s.
-QUIET=@
-
-# generates byte-code (default)
-byte-code: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(BCRESULT) \
- REAL_RESULT="$(BCRESULT)" make_deps=yes
-bc: byte-code
-
-byte-code-nolink: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) nolink \
- REAL_RESULT="$(BCRESULT)" make_deps=yes
-bcnl: byte-code-nolink
-
-top: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(TOPRESULT) \
- REAL_RESULT="$(BCRESULT)" make_deps=yes
-
-# generates native-code
-
-native-code: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(NCRESULT) \
- REAL_RESULT="$(NCRESULT)" \
- REAL_OCAMLC="$(OCAMLOPT)" \
- make_deps=yes
-nc: native-code
-
-native-code-nolink: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) nolink \
- REAL_RESULT="$(NCRESULT)" \
- REAL_OCAMLC="$(OCAMLOPT)" \
- make_deps=yes
-ncnl: native-code-nolink
-
-# generates byte-code libraries
-byte-code-library: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \
- $(RES_CLIB) $(BCRESULT).cma \
- REAL_RESULT="$(BCRESULT)" \
- CREATE_LIB=yes \
- make_deps=yes
-bcl: byte-code-library
-
-# generates native-code libraries
-native-code-library: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \
- $(RES_CLIB) $(NCRESULT).cmxa \
- REAL_RESULT="$(NCRESULT)" \
- REAL_OCAMLC="$(OCAMLOPT)" \
- CREATE_LIB=yes \
- make_deps=yes
-ncl: native-code-library
-
-ifdef WIN32
-# generates byte-code dll
-byte-code-dll: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \
- $(RES_CLIB) $(BCRESULT).dll \
- REAL_RESULT="$(BCRESULT)" \
- make_deps=yes
-bcd: byte-code-dll
-
-# generates native-code dll
-native-code-dll: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \
- $(RES_CLIB) $(NCRESULT).dll \
- REAL_RESULT="$(NCRESULT)" \
- REAL_OCAMLC="$(OCAMLOPT)" \
- make_deps=yes
-ncd: native-code-dll
-endif
-
-# generates byte-code with debugging information
-debug-code: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(BCRESULT) \
- REAL_RESULT="$(BCRESULT)" make_deps=yes \
- OCAMLFLAGS="-g $(OCAMLFLAGS)" \
- OCAMLLDFLAGS="-g $(OCAMLLDFLAGS)"
-dc: debug-code
-
-debug-code-nolink: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) nolink \
- REAL_RESULT="$(BCRESULT)" make_deps=yes \
- OCAMLFLAGS="-g $(OCAMLFLAGS)" \
- OCAMLLDFLAGS="-g $(OCAMLLDFLAGS)"
-dcnl: debug-code-nolink
-
-# generates byte-code with debugging information (native code)
-debug-native-code: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(NCRESULT) \
- REAL_RESULT="$(NCRESULT)" make_deps=yes \
- REAL_OCAMLC="$(OCAMLOPT)" \
- OCAMLFLAGS="-g $(OCAMLFLAGS)" \
- OCAMLLDFLAGS="-g $(OCAMLLDFLAGS)"
-dnc: debug-native-code
-
-debug-native-code-nolink: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) nolink \
- REAL_RESULT="$(NCRESULT)" make_deps=yes \
- REAL_OCAMLC="$(OCAMLOPT)" \
- OCAMLFLAGS="-g $(OCAMLFLAGS)" \
- OCAMLLDFLAGS="-g $(OCAMLLDFLAGS)"
-dncnl: debug-native-code-nolink
-
-# generates byte-code libraries with debugging information
-debug-code-library: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \
- $(RES_CLIB) $(BCRESULT).cma \
- REAL_RESULT="$(BCRESULT)" make_deps=yes \
- CREATE_LIB=yes \
- OCAMLFLAGS="-g $(OCAMLFLAGS)" \
- OCAMLLDFLAGS="-g $(OCAMLLDFLAGS)"
-dcl: debug-code-library
-
-# generates byte-code libraries with debugging information (native code)
-debug-native-code-library: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \
- $(RES_CLIB) $(NCRESULT).cma \
- REAL_RESULT="$(NCRESULT)" make_deps=yes \
- REAL_OCAMLC="$(OCAMLOPT)" \
- CREATE_LIB=yes \
- OCAMLFLAGS="-g $(OCAMLFLAGS)" \
- OCAMLLDFLAGS="-g $(OCAMLLDFLAGS)"
-dncl: debug-native-code-library
-
-# generates byte-code for profiling
-profiling-byte-code: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(BCRESULT) \
- REAL_RESULT="$(BCRESULT)" PROFILING="y" \
- make_deps=yes
-pbc: profiling-byte-code
-
-# generates native-code
-
-profiling-native-code: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(NCRESULT) \
- REAL_RESULT="$(NCRESULT)" \
- REAL_OCAMLC="$(OCAMLOPT)" \
- PROFILING="y" \
- make_deps=yes
-pnc: profiling-native-code
-
-# generates byte-code libraries
-profiling-byte-code-library: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \
- $(RES_CLIB) $(BCRESULT).cma \
- REAL_RESULT="$(BCRESULT)" PROFILING="y" \
- CREATE_LIB=yes \
- make_deps=yes
-pbcl: profiling-byte-code-library
-
-# generates native-code libraries
-profiling-native-code-library: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \
- $(RES_CLIB) $(NCRESULT).cmxa \
- REAL_RESULT="$(NCRESULT)" PROFILING="y" \
- REAL_OCAMLC="$(OCAMLOPT)" \
- CREATE_LIB=yes \
- make_deps=yes
-pncl: profiling-native-code-library
-
-# packs byte-code objects
-pack-byte-code: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(BCRESULT).cmo \
- REAL_RESULT="$(BCRESULT)" \
- PACK_LIB=yes make_deps=yes
-pabc: pack-byte-code
-
-# packs native-code objects
-pack-native-code: $(PRE_TARGETS)
- $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \
- $(NCRESULT).cmx $(NCRESULT).o \
- REAL_RESULT="$(NCRESULT)" \
- REAL_OCAMLC="$(OCAMLOPT)" \
- PACK_LIB=yes make_deps=yes
-panc: pack-native-code
-
-# generates HTML-documentation
-htdoc: $(DOC_DIR)/$(RESULT)/html/index.html
-
-# generates Latex-documentation
-ladoc: $(DOC_DIR)/$(RESULT)/latex/doc.tex
-
-# generates PostScript-documentation
-psdoc: $(DOC_DIR)/$(RESULT)/latex/doc.ps
-
-# generates PDF-documentation
-pdfdoc: $(DOC_DIR)/$(RESULT)/latex/doc.pdf
-
-# generates all supported forms of documentation
-doc: htdoc ladoc psdoc pdfdoc
-
-###########################################################################
-# LOW LEVEL RULES
-
-$(REAL_RESULT): $(REAL_IMPL_INTF) $(OBJ_LINK) $(EXTRADEPS) $(RESULTDEPS)
- $(REAL_OCAMLFIND) $(REAL_OCAMLC) \
- $(OCAML_FIND_PACKAGES) $(OCAML_FIND_LINKPKG) \
- $(ALL_LDFLAGS) $(OBJS_LIBS) -o $@$(EXE) \
- $(REAL_IMPL)
-
-nolink: $(REAL_IMPL_INTF) $(OBJ_LINK)
-
-ifdef WIN32
-$(REAL_RESULT).dll: $(REAL_IMPL_INTF) $(OBJ_LINK)
- $(CAMLIDLDLL) $(CAMLIDLDLLFLAGS) $(OBJ_LINK) $(CLIBS) \
- -o $@ $(REAL_IMPL)
-endif
-
-%$(TOPSUFFIX): $(REAL_IMPL_INTF) $(OBJ_LINK) $(EXTRADEPS)
- $(REAL_OCAMLFIND) $(OCAMLMKTOP) \
- $(OCAML_FIND_PACKAGES) $(OCAML_FIND_LINKPKG) \
- $(ALL_LDFLAGS) $(OBJS_LIBS) -o $@$(EXE) \
- $(REAL_IMPL)
-
-.SUFFIXES: .mli .ml .cmi .cmo .cmx .cma .cmxa .$(EXT_OBJ) \
- .mly .di .d .$(EXT_LIB) .idl %.oxridl .c .m .$(EXT_CXX) .h .so \
- .rep .zog .glade
-
-ifndef STATIC
-ifdef MINGW
-$(DLLSONAME): $(OBJ_LINK)
- $(CC) $(CFLAGS) $(CFLAGS_WIN32) $(OBJ_LINK) -shared -o $@ \
- -Wl,--whole-archive $(wildcard $(foreach dir,$(LIBDIRS),$(CLIBS:%=$(dir)/lib%.a))) \
- $(OCAMLLIBPATH)/ocamlrun.a \
- -Wl,--export-all-symbols \
- -Wl,--no-whole-archive
-else
-ifdef MSVC
-$(DLLSONAME): $(OBJ_LINK)
- link /NOLOGO /DLL /OUT:$@ $(OBJ_LINK) \
- $(wildcard $(foreach dir,$(LIBDIRS),$(CLIBS:%=$(dir)/%.lib))) \
- $(OCAMLLIBPATH)/ocamlrun.lib
-
-else
-$(DLLSONAME): $(OBJ_LINK)
- $(OCAMLMKLIB) $(INCFLAGS) $(CLIBFLAGS) \
- -o $(CLIB_BASE) $(OBJ_LINK) $(CLIBS:%=-l%) $(CFRAMEWORKS:%=-framework %) \
- $(OCAMLMKLIB_FLAGS)
-endif
-endif
-endif
-
-ifndef LIB_PACK_NAME
-$(RESULT).cma: $(REAL_IMPL_INTF) $(MAKEDLL) $(EXTRADEPS) $(RESULTDEPS)
- $(REAL_OCAMLFIND) $(REAL_OCAMLC) -a $(ALL_LDFLAGS) $(OBJS_LIBS) -o $@ $(REAL_IMPL)
-
-$(RESULT).cmxa $(RESULT).$(EXT_LIB): $(REAL_IMPL_INTF) $(EXTRADEPS) $(RESULTDEPS)
- $(REAL_OCAMLFIND) $(OCAMLOPT) -a $(ALL_LDFLAGS) $(OBJS_LIBS) -o $@ $(REAL_IMPL)
-else
-ifdef BYTE_OCAML
-$(LIB_PACK_NAME).cmi $(LIB_PACK_NAME).cmo: $(REAL_IMPL_INTF)
- $(REAL_OCAMLFIND) $(REAL_OCAMLC) -pack -o $(LIB_PACK_NAME).cmo $(OCAMLLDFLAGS) $(REAL_IMPL)
-else
-$(LIB_PACK_NAME).cmi $(LIB_PACK_NAME).cmx: $(REAL_IMPL_INTF)
- $(REAL_OCAMLFIND) $(OCAMLOPT) -pack -o $(LIB_PACK_NAME).cmx $(OCAMLLDFLAGS) $(REAL_IMPL)
-endif
-
-$(RESULT).cma: $(LIB_PACK_NAME).cmi $(LIB_PACK_NAME).cmo $(MAKEDLL) $(EXTRADEPS) $(RESULTDEPS)
- $(REAL_OCAMLFIND) $(REAL_OCAMLC) -a $(ALL_LDFLAGS) $(OBJS_LIBS) -o $@ $(LIB_PACK_NAME).cmo
-
-$(RESULT).cmxa $(RESULT).$(EXT_LIB): $(LIB_PACK_NAME).cmi $(LIB_PACK_NAME).cmx $(EXTRADEPS) $(RESULTDEPS)
- $(REAL_OCAMLFIND) $(OCAMLOPT) -a $(filter-out -custom, $(ALL_LDFLAGS)) $(OBJS_LIBS) -o $@ $(LIB_PACK_NAME).cmx
-endif
-
-$(RES_CLIB): $(OBJ_LINK)
-ifndef MSVC
- ifneq ($(strip $(OBJ_LINK)),)
- $(AR) rcs $@ $(OBJ_LINK)
- endif
-else
- ifneq ($(strip $(OBJ_LINK)),)
- lib -nologo -debugtype:cv -out:$(RES_CLIB) $(OBJ_LINK)
- endif
-endif
-
-.mli.cmi: $(EXTRADEPS)
- $(QUIET)pp=`sed -n -e '/^#/d' -e 's/(\*pp \([^*]*\) \*)/\1/p;q' $<`; \
- if [ -z "$$pp" ]; then \
- $(ECHO) $(REAL_OCAMLFIND) $(INTF_OCAMLC) $(OCAML_FIND_PACKAGES) \
- -c $(THREAD_FLAG) $(ANNOT_FLAG) \
- $(OCAMLFLAGS) $(INCFLAGS) $<; \
- $(REAL_OCAMLFIND) $(INTF_OCAMLC) $(OCAML_FIND_PACKAGES) \
- -c $(THREAD_FLAG) $(ANNOT_FLAG) \
- $(OCAMLFLAGS) $(INCFLAGS) $<; \
- else \
- $(ECHO) $(REAL_OCAMLFIND) $(INTF_OCAMLC) $(OCAML_FIND_PACKAGES) \
- -c -pp \"$$pp $(PPFLAGS)\" $(THREAD_FLAG) $(ANNOT_FLAG) \
- $(OCAMLFLAGS) $(INCFLAGS) $<; \
- $(REAL_OCAMLFIND) $(INTF_OCAMLC) $(OCAML_FIND_PACKAGES) \
- -c -pp "$$pp $(PPFLAGS)" $(THREAD_FLAG) $(ANNOT_FLAG) \
- $(OCAMLFLAGS) $(INCFLAGS) $<; \
- fi
-
-.ml.cmi .ml.$(EXT_OBJ) .ml.cmx .ml.cmo: $(EXTRADEPS)
- $(QUIET)pp=`sed -n -e '/^#/d' -e 's/(\*pp \([^*]*\) \*)/\1/p;q' $<`; \
- if [ -z "$$pp" ]; then \
- $(ECHO) $(REAL_OCAMLFIND) $(REAL_OCAMLC) $(OCAML_FIND_PACKAGES) \
- -c $(ALL_OCAMLCFLAGS) $<; \
- $(REAL_OCAMLFIND) $(REAL_OCAMLC) $(OCAML_FIND_PACKAGES) \
- -c $(ALL_OCAMLCFLAGS) $<; \
- else \
- $(ECHO) $(REAL_OCAMLFIND) $(REAL_OCAMLC) $(OCAML_FIND_PACKAGES) \
- -c -pp \"$$pp $(PPFLAGS)\" $(ALL_OCAMLCFLAGS) $<; \
- $(REAL_OCAMLFIND) $(REAL_OCAMLC) $(OCAML_FIND_PACKAGES) \
- -c -pp "$$pp $(PPFLAGS)" $(ALL_OCAMLCFLAGS) $<; \
- fi
-
-ifdef PACK_LIB
-$(REAL_RESULT).cmo $(REAL_RESULT).cmx $(REAL_RESULT).o: $(REAL_IMPL_INTF) $(OBJ_LINK) $(EXTRADEPS)
- $(REAL_OCAMLFIND) $(REAL_OCAMLC) -pack $(ALL_LDFLAGS) \
- $(OBJS_LIBS) -o $@ $(REAL_IMPL)
-endif
-
-.PRECIOUS: %.ml
-%.ml: %.mll
- $(OCAMLLEX) $(LFLAGS) $<
-
-.PRECIOUS: %.ml %.mli
-%.ml %.mli: %.mly
- $(OCAMLYACC) $(YFLAGS) $<
- $(QUIET)pp=`sed -n -e 's/.*(\*pp \([^*]*\) \*).*/\1/p;q' $<`; \
- if [ ! -z "$$pp" ]; then \
- mv $*.ml $*.ml.temporary; \
- echo "(*pp $$pp $(PPFLAGS)*)" > $*.ml; \
- cat $*.ml.temporary >> $*.ml; \
- rm $*.ml.temporary; \
- mv $*.mli $*.mli.temporary; \
- echo "(*pp $$pp $(PPFLAGS)*)" > $*.mli; \
- cat $*.mli.temporary >> $*.mli; \
- rm $*.mli.temporary; \
- fi
-
-
-.PRECIOUS: %.ml
-%.ml: %.rep
- $(CAMELEON_REPORT) $(CAMELEON_REPORT_FLAGS) -gen $<
-
-.PRECIOUS: %.ml
-%.ml: %.zog
- $(CAMELEON_ZOGGY) $(CAMELEON_ZOGGY_FLAGS) -impl $< > $@
-
-.PRECIOUS: %.ml
-%.ml: %.glade
- $(OCAML_GLADECC) $(OCAML_GLADECC_FLAGS) $< > $@
-
-.PRECIOUS: %.ml %.mli
-%.ml %.mli: %.oxridl
- $(OXRIDL) $<
-
-.PRECIOUS: %.ml %.mli %_stubs.c %.h
-%.ml %.mli %_stubs.c %.h: %.idl
- $(CAMLIDL) $(MAYBE_IDL_HEADER) $(IDLFLAGS) \
- $(CAMLIDLFLAGS) $<
- $(QUIET)if [ $(NOIDLHEADER) ]; then touch $*.h; fi
-
-.c.$(EXT_OBJ):
- $(OCAMLC) -c -cc "$(CC)" -ccopt "$(CFLAGS) \
- $(CPPFLAGS) $(CPPFLAGS_WIN32) \
- $(CFLAGS_WIN32) $(CINCFLAGS) $(CFLAG_O)$@ " $<
-
-.m.$(EXT_OBJ):
- $(CC) -c $(CFLAGS) $(CINCFLAGS) $(CPPFLAGS) \
- -I'$(OCAMLLIBPATH)' \
- $< $(CFLAG_O)$@
-
-.$(EXT_CXX).$(EXT_OBJ):
- $(CXX) -c $(CXXFLAGS) $(CINCFLAGS) $(CPPFLAGS) \
- -I'$(OCAMLLIBPATH)' \
- $< $(CFLAG_O)$@
-
-$(MLDEPDIR)/%.d: %.ml
- $(QUIET)if [ ! -d $(@D) ]; then mkdir -p $(@D); fi
- $(QUIET)pp=`sed -n -e '/^#/d' -e 's/(\*pp \([^*]*\) \*)/\1/p;q' $<`; \
- if [ -z "$$pp" ]; then \
- $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDEP) $(OCAML_DEP_PACKAGES) \
- $(DINCFLAGS) $< \> $@; \
- $(REAL_OCAMLFIND) $(OCAMLDEP) $(OCAML_DEP_PACKAGES) \
- $(DINCFLAGS) $< > $@; \
- else \
- $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDEP) $(OCAML_DEP_PACKAGES) \
- -pp \"$$pp $(PPFLAGS)\" $(DINCFLAGS) $< \> $@; \
- $(REAL_OCAMLFIND) $(OCAMLDEP) $(OCAML_DEP_PACKAGES) \
- -pp "$$pp $(PPFLAGS)" $(DINCFLAGS) $< > $@; \
- fi
-
-$(BCDIDIR)/%.di $(NCDIDIR)/%.di: %.mli
- $(QUIET)if [ ! -d $(@D) ]; then mkdir -p $(@D); fi
- $(QUIET)pp=`sed -n -e '/^#/d' -e 's/(\*pp \([^*]*\) \*)/\1/p;q' $<`; \
- if [ -z "$$pp" ]; then \
- $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDEP) $(DEPFLAGS) $(DINCFLAGS) $< \> $@; \
- $(REAL_OCAMLFIND) $(OCAMLDEP) $(DEPFLAGS) $(DINCFLAGS) $< > $@; \
- else \
- $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDEP) $(DEPFLAGS) \
- -pp \"$$pp $(PPFLAGS)\" $(DINCFLAGS) $< \> $@; \
- $(REAL_OCAMLFIND) $(OCAMLDEP) $(DEPFLAGS) \
- -pp "$$pp $(PPFLAGS)" $(DINCFLAGS) $< > $@; \
- fi
-
-$(DOC_DIR)/$(RESULT)/html:
- mkdir -p $@
-
-$(DOC_DIR)/$(RESULT)/html/index.html: $(DOC_DIR)/$(RESULT)/html $(DOC_FILES)
- rm -rf $</*
- $(QUIET)pp=`sed -n -e '/^#/d' -e 's/(\*pp \([^*]*\) \*)/\1/p;q' $(FIRST_DOC_FILE)`; \
- if [ -z "$$pp" ]; then \
- $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDOC) $(OCAML_FIND_PACKAGES) -html -d $< $(OCAMLDOCFLAGS) $(INCFLAGS) $(DOC_FILES); \
- $(REAL_OCAMLFIND) $(OCAMLDOC) $(OCAML_FIND_PACKAGES) -html -d $< $(OCAMLDOCFLAGS) $(INCFLAGS) $(DOC_FILES); \
- else \
- $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDOC) $(OCAML_FIND_PACKAGES) -pp \"$$pp $(PPFLAGS)\" -html -d $< $(OCAMLDOCFLAGS) \
- $(INCFLAGS) $(DOC_FILES); \
- $(REAL_OCAMLFIND) $(OCAMLDOC) $(OCAML_FIND_PACKAGES) -pp "$$pp $(PPFLAGS)" -html -d $< $(OCAMLDOCFLAGS) \
- $(INCFLAGS) $(DOC_FILES); \
- fi
-
-$(DOC_DIR)/$(RESULT)/latex:
- mkdir -p $@
-
-$(DOC_DIR)/$(RESULT)/latex/doc.tex: $(DOC_DIR)/$(RESULT)/latex $(DOC_FILES)
- rm -rf $</*
- $(QUIET)pp=`sed -n -e '/^#/d' -e 's/(\*pp \([^*]*\) \*)/\1/p;q' $(FIRST_DOC_FILE)`; \
- if [ -z "$$pp" ]; then \
- $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDOC) $(OCAML_FIND_PACKAGES) -latex $(OCAMLDOCFLAGS) $(INCFLAGS) \
- $(DOC_FILES) -o $@; \
- $(REAL_OCAMLFIND) $(OCAMLDOC) $(OCAML_FIND_PACKAGES) -latex $(OCAMLDOCFLAGS) $(INCFLAGS) $(DOC_FILES) \
- -o $@; \
- else \
- $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDOC) $(OCAML_FIND_PACKAGES) -pp \"$$pp $(PPFLAGS)\" -latex $(OCAMLDOCFLAGS) \
- $(INCFLAGS) $(DOC_FILES) -o $@; \
- $(REAL_OCAMLFIND) $(OCAMLDOC) $(OCAML_FIND_PACKAGES) -pp "$$pp $(PPFLAGS)" -latex $(OCAMLDOCFLAGS) \
- $(INCFLAGS) $(DOC_FILES) -o $@; \
- fi
-
-$(DOC_DIR)/$(RESULT)/latex/doc.ps: $(DOC_DIR)/$(RESULT)/latex/doc.tex
- cd $(DOC_DIR)/$(RESULT)/latex && \
- $(LATEX) doc.tex && \
- $(LATEX) doc.tex && \
- $(DVIPS) $(DVIPSFLAGS) doc.dvi -o $(@F)
-
-$(DOC_DIR)/$(RESULT)/latex/doc.pdf: $(DOC_DIR)/$(RESULT)/latex/doc.ps
- cd $(DOC_DIR)/$(RESULT)/latex && $(PS2PDF) $(<F)
-
-define make_subproj
-.PHONY:
-subproj_$(1):
- $$(eval $$(call PROJ_$(1)))
- $(QUIET)if [ "$(SUBTARGET)" != "all" ]; then \
- $(MAKE) -f $(OCAMLMAKEFILE) $(SUBTARGET); \
- fi
-endef
-
-$(foreach subproj,$(SUBPROJS),$(eval $(call make_subproj,$(subproj))))
-
-.PHONY:
-subprojs: $(SUBPROJS:%=subproj_%)
-
-###########################################################################
-# (UN)INSTALL RULES FOR LIBRARIES
-
-.PHONY: libinstall
-libinstall: all
- $(QUIET)printf "\nInstalling library with ocamlfind\n"
- $(OCAMLFIND) install $(OCAMLFIND_INSTFLAGS) $(RESULT) META $(LIBINSTALL_FILES)
- $(QUIET)printf "\nInstallation successful.\n"
-
-.PHONY: libinstall-byte-code
-libinstall-byte-code: all
- $(QUIET)printf "\nInstalling byte-code library with ocamlfind\n"
- $(OCAMLFIND) install $(OCAMLFIND_INSTFLAGS) $(RESULT) META \
- $(filter-out $(RESULT).$(EXT_LIB) $(RESULT).cmxa, $(LIBINSTALL_FILES))
- $(QUIET)printf "\nInstallation successful.\n"
-
-.PHONY: libinstall-native-code
-libinstall-native-code: all
- $(QUIET)printf "\nInstalling native-code library with ocamlfind\n"
- $(OCAMLFIND) install $(OCAMLFIND_INSTFLAGS) $(RESULT) META \
- $(filter-out $(DLLSONAME) $(RESULT).cma, $(LIBINSTALL_FILES))
- $(QUIET)printf "\nInstallation successful.\n"
-
-.PHONY: libuninstall
-libuninstall:
- $(QUIET)printf "\nUninstalling library with ocamlfind\n"
- $(OCAMLFIND) remove $(OCAMLFIND_INSTFLAGS) $(RESULT)
- $(QUIET)printf "\nUninstallation successful.\n"
-
-.PHONY: rawinstall
-rawinstall: all
- $(QUIET)printf "\nInstalling library to: $(OCAML_LIB_INSTALL)\n"
- -install -d $(OCAML_LIB_INSTALL)
- for i in $(LIBINSTALL_FILES); do \
- if [ -f $$i ]; then \
- install -c -m 0644 $$i $(OCAML_LIB_INSTALL); \
- fi; \
- done
- $(QUIET)printf "\nInstallation successful.\n"
-
-.PHONY: rawuninstall
-rawuninstall:
- $(QUIET)printf "\nUninstalling library from: $(OCAML_LIB_INSTALL)\n"
- cd $(OCAML_LIB_INSTALL) && rm $(notdir $(LIBINSTALL_FILES))
- $(QUIET)printf "\nUninstallation successful.\n"
-
-###########################################################################
-# MAINTENANCE RULES
-
-.PHONY: clean
-clean::
- rm -f $(TARGETS) $(TRASH)
- rm -rf $(BCDIDIR) $(NCDIDIR) $(MLDEPDIR)
-
-.PHONY: cleanup
-cleanup::
- rm -f $(NONEXECS) $(TRASH)
- rm -rf $(BCDIDIR) $(NCDIDIR) $(MLDEPDIR)
-
-.PHONY: clean-doc
-clean-doc::
- rm -rf $(DOC_DIR)/$(RESULT)
-
-.PHONY: clean-all
-clean-all:: clean clean-doc
-
-.PHONY: nobackup
-nobackup:
- rm -f *.bak *~ *.dup
diff --git a/lib/ocaml/README-OCamlMakefile b/lib/ocaml/README-OCamlMakefile
deleted file mode 100644
index 57ef019..0000000
--- a/lib/ocaml/README-OCamlMakefile
+++ /dev/null
@@ -1,643 +0,0 @@
-NOTE (bryanduxbury): OCamlMakefile is safe to include in the project after
-https://issues.apache.org/jira/browse/LEGAL-58.
-
----------------------------------------------------------------------------
-
- Distribution of "ocaml_make"
- Copyright (C) 1999 - 2006 Markus Mottl - free to copy and modify!
- USE AT YOUR OWN RISK!
-
----------------------------------------------------------------------------
-
- PREREQUISITES
-
- *** YOU WILL NEED GNU-MAKE VERSION >3.80 ***
-
----------------------------------------------------------------------------
-
- Contents of this distribution
-
-Changes - guess what? ;-)
-
-OCamlMakefile - Makefile for easy handling of compilation of not so easy
- OCaml-projects. It generates dependencies of OCaml-files
- automatically, is able to handle "ocamllex"-,
- "ocamlyacc"-, IDL- and C-files, knows how to run
- preprocessors and generates native- or byte-code, as
- executable or as library - with thread-support if you
- want! Profiling and debugging support can be added on
- the fly! There is also support for installing libraries.
- Ah, yes, and you can also create toplevels from any
- sources: this allows you immediate interactive testing.
- Automatic generation of documentation is easy due to
- integration of support for OCamldoc.
-
-README - this file
-
-calc/ - Directory containing a quite fully-featured example
- of what "OCamlMakefile" can do for you. This example
- makes use of "ocamllex", "ocamlyacc", IDL + C and
- threads.
-
-camlp4/ - This simple example demonstrates how to automatically
- preprocess files with the camlp4-preprocessor.
-
-gtk/ - Demonstration of how to use OCamlMakefile with GTK
- and threads. Courtesy of Tim Freeman <tim@fungible.com>.
-
-idl/ - Contains a very small example of how to use
- "camlidl" together with "OCamlMakefile". Also intended
- to show, how easy it is to interface OCaml and C.
-
-threads/ - Two examples of how to use threads (originally
- posted by Xavier Leroy some time ago). Shows the use of
- "OCamlMakefile" in an environment of multiple compilation
- targets.
-
----------------------------------------------------------------------------
-
- Why should you use it?
-
-For several reasons:
-
- * It is well-tested (I use it in all of my projects).
-
- * In contrast to most other approaches it generates dependencies
- correctly by ensuring that all automatically generated OCaml-files
- exist before dependency calculation. This is the only way to
- guarantee that "ocamldep" works correctly.
-
- * It is extremely convenient (at least I think so ;-).
- Even quite complex compilation processes (see example "calc.ml")
- need very little information to work correctly - actually just about
- the minimum (file names of sources).
-
----------------------------------------------------------------------------
-
- When you shouldn't use it...
-
-In projects where every compilation unit needs different flags - but
-in such complicated cases you will be on your own anyway. Luckily,
-this doesn't happen too frequently...
-
----------------------------------------------------------------------------
-
- How to use "OCamlMakefile" in your own project
- (Take a look at the examples for a quick introduction!)
-
-Create your project-specific "Makefile" in the appropriate directory.
-
-Now there are two ways of making use of "OCamlMakefile":
-
- 1) Have a look at the default settings in "OCamlMakefile" and set
- them to the values that are vaild on your system - whether the
- path to the standard libraries is ok, what executables shall be
- used, etc...
-
- 2) Copy it into the directory of the project to be compiled.
- Add "-include OCamlMakefile" as a last line of your "Makefile".
-
- 3) Put it somewhere else on the system. In this case you will have to
- set a variable "OCAMLMAKEFILE" in your project-specific "Makefile".
- This is the way in which the examples are written: so you need
- only one version of "OCamlMakefile" to manage all your projects!
- See the examples for details.
-
-You should usually specify two further variables for your project:
-
- * SOURCES (default: foo.ml)
- * RESULT (default: foo)
-
-Put all the sources necessary for a target into variable "SOURCES".
-Then set "RESULT" to the name of the target. If you want to generate
-libraries, you should *not* specify the suffix (".cma", ".cmxa", ".a")
-- it will be added automatically if you specify that you want to build
-a library.
-
- ** Don't forget to add the ".mli"-files, too! **
- ** Don't forget that order of the source files matters! **
-
-The order is important, because it matters during linking anyway
-due to potential side effects caused at program startup. This is
-why OCamlMakefile does not attempt to partially order dependencies by
-itself, which might confuse users even more. It just compiles and links
-OCaml-sources in the order specified by the user, even if it could
-determine automatically that the order cannot be correct.
-
-The minimum of your "Makefile" looks like this (assuming that
-"OCamlMakefile" is in the search path of "make"):
-
- -include OCamlMakefile
-
-This will assume that you want to compile a file "foo.ml" to a binary
-"foo".
-
-Otherwise, your Makefile will probably contain something like this:
-
- SOURCES = foo.ml
- RESULT = foo
- -include OCamlMakefile
-
-Be careful with the names you put into these variables: if they are wrong,
-a "make clean" might erase the wrong files - but I know you will not do
-that ;-)
-
-A simple "make" will generate a byte-code executable. If you want to
-change this, you may add an "all"-rule that generates something else.
-
-E.g.:
-
- SOURCES = foo.ml
- RESULT = foo
- all: native-code-library
- -include OCamlMakefile
-
-This will build a native-code library "foo.cmxa" (+ "foo.a") from file
-"foo.ml".
-
-You may even build several targets at once. To produce byte- and native-code
-executables with one "make", add the following rule:
-
- all: byte-code native-code
-
-You will probably want to use a different suffix for each of these targets
-so that the result will not be overwritten (see optional variables below
-for details).
-
-You may also tell "make" at the command-line what kind of target to
-produce (e.g. "make nc"). Here all the possibilities with shortcuts
-between parenthesis:
-
- * byte-code (bc)
- * byte-code-nolink (bcnl) - no linking stage
- * byte-code-library (bcl)
- * native-code (nc)
- * native-code-nolink (ncnl) - no linking stage
- * native-code-library (ncl)
- * debug-code (dc)
- * debug-code-nolink (dcnl) - no linking stage
- * debug-code-library (dcl)
- * profiling-byte-code (pbc)
- * profiling-byte-code-library (pbcl)
- * profiling-native-code (pnc)
- * profiling-native-code-library (pncl)
- * byte-code-dll (bcd)
- * native-code-dll (ncd)
- * pack-byte-code (pabc)
- * pack-native-code (panc)
- * toplevel interpreter (top)
- * subprojs
-
-Here a short note concerning building and linking byte code libraries
-with C-files:
-
- OCaml links C-object files only when they are used in an executable.
- After compilation they should be placed in some directory that is in
- your include path if you link your library against an executable.
-
- It is sometimes more convenient to link all C-object files into a
- single C-library. Then you have to override the automatic link flags
- of your library using "-noautolink" and add another linkflag that
- links in your C-library explicitly.
-
-What concerns maintenance:
-
- "make clean" removes all (all!) automatically generated files - so
- again: make sure your variables are ok!
-
- "make cleanup" is similar to "make clean" but leaves executables.
-
-Another way to destroy some important files is by having "OCamlMakefile"
-automatically generate files with the same name. Read the documentation
-about the tools in the OCaml-distribution to see what kind of files are
-generated. "OCamlMakefile" additionally generates ('%' is basename of
-source file):
-
- %_idl.c - "camlidl" generates a file "%.c" from "%.idl", but this is
- not such a good idea, because when generating native-code,
- both the file "%.c" and "%.ml" would generate files "%.o"
- which would overwrite each other. Thus, "OCamlMakefile"
- renames "%.c" to "%_idl.c" to work around this problem.
-
-The dependencies are stored in three different subdirectories (dot dirs):
-
- ._d - contains dependencies for .ml-files
- ._bcdi - contains byte code dependencies for .mli-files
- ._ncdi - contains native code dependencies for .mli-files
-
-The endings of the dependency files are: "%.d" for those generated from
-"%.ml"-files, "%.di" for ones derived from "%.mli"-files.
-
----------------------------------------------------------------------------
-
- Debugging
-
- This is easy: if you discover a bug, just do a "make clean; make dc"
- to recompile your project with debugging information. Then you can
- immediately apply "ocamldebug" to the executable.
-
----------------------------------------------------------------------------
-
- Profiling
-
- For generating code that can be profiled with "ocamlprof" (byte code)
- or "gprof" (native code), compile your project with one of the profiling
- targets (see targets above). E.g.:
-
- * "make pbc" will build byte code that can be profiled with
- "ocamlprof".
-
- * "make pnc" will build native code that can be profiled with
- "gprof".
-
- Please note that it is not currently possible to profile byte code with
- threads. OCamlMakefile will force an error if you try to do this.
-
- A short hint for DEC Alpha-users (under Digital Unix): you may also
- compile your sources to native code without any further profiling
- options/targets. Then call "pixie my_exec", "my_exec" being your
- executable. This will produce (among other files) an executable
- "my_exec.pixie". Call it and it will produce profiling information which
- can be analysed using "prof -pixie my_exec". The resulting information
- is extremely detailed and allows analysis up to the clock cycle level...
-
----------------------------------------------------------------------------
-
- Using Preprocessors
-
- Because one could employ any kind of program that reads from standard
- input and prints to standard output as preprocessor, there cannot be any
- default way to handle all of them correctly without further knowledge.
-
- Therefore you have to cooperate a bit with OCamlMakefile to let
- preprocessing happen automatically. Basically, this only requires
- that you put a comment into the first line of files that should be
- preprocessed, e.g.:
-
- (*pp cat *)
- ... rest of program ...
-
- OCamlMakefile looks at the first line of your files, and if it finds
- a comment that starts with "(*pp", then it will assume that the
- rest of the comment tells it how to correctly call the appropriate
- preprocessor. In this case the program "cat" will be called, which will,
- of course, just output the source text again without changing it.
-
- If you are, for example, an advocate of the new "revised syntax",
- which is supported by the camlp4 preprocessor, you could simply write:
-
- (*pp camlp4r *)
- ... rest of program in revised syntax ...
-
- Simple, isn't it?
-
- If you want to write your own syntax extensions, just take a look at the
- example in the directory "camlp4": it implements the "repeat ... until"
- extension as described in the camlp4-tutorial.
-
----------------------------------------------------------------------------
-
- Library (Un-)Installation Support
-
- OCamlMakefile contains two targets using "ocamlfind" for this purpose:
-
- * libinstall
- * libuninstall
-
- These two targets require the existence of the variable
- "LIBINSTALL_FILES", which should be set to all the files that you
- want to install in the library directory (usually %.mli, %.cmi, %.cma,
- %.cmxa, %.a and possibly further C-libraries). The target "libinstall"
- has the dependency "all" to force compilation of the library so make
- sure you define target "all" in your Makefile appropriately.
-
- The targets inform the user about the configured install path and ask
- for confirmation to (un)install there. If you want to use them, it
- is often a good idea to just alias them in your Makefile to "install"
- and "uninstall" respectively.
-
- Two other targets allow installation of files into a particular
- directory (without using ocamlfind):
-
- * rawinstall
- * rawuninstall
-
----------------------------------------------------------------------------
-
- Building toplevels
-
- There is just one target for this:
-
- * top
-
- The generated file can be used immediately for interactive sessions -
- even with scanners, parsers, C-files, etc.!
-
----------------------------------------------------------------------------
-
- Generating documentation
-
- The following targets are supported:
-
- * htdoc - generates HTML-documentation
- * ladoc - generates Latex-documentation
- * psdoc - generates PostScript-documentation
- * pdfdoc - generates PDF-documentation
- * doc - generates all supported forms of documentation
- * clean-doc - generates all supported forms of documentation
-
- All of them generate a sub-directory "doc". More precisely, for HTML it
- is "doc/$(RESULT)/html" and for Latex, PostScript and PDF the directory
- "doc/$(RESULT)/latex". See the OCamldoc-manual for details and the
- optional variables below for settings you can control.
-
----------------------------------------------------------------------------
-
- Handling subprojects
-
- You can have several targets in the same directory and manage them
- from within an single Makefile.
-
- Give each subproject a name, e.g. "p1", "p2", etc. Then you export
- settings specific to each project by using variables of the form
- "PROJ_p1", "PROJ_p2", etc. E.g.:
-
- define PROJ_p1
- SOURCES="foo.ml main.ml"
- RESULT="p1"
- OCAMLFLAGS="-unsafe"
- endef
- export PROJ_p1
-
- define PROJ_p2
- ...
- endef
- export PROJ_p2
-
- You may also export common settings used by all projects directly, e.g.
- "export THREADS = y".
-
- Now it is a good idea to define, which projects should be affected by
- commands by default. E.g.:
-
- ifndef SUBPROJS
- export SUBPROJS = p1 p2
- endif
-
- This will automatically generate a given target for all those
- subprojects if this variable has not been defined in the shell
- environment or in the command line of the make-invocation by the user.
- E.g., "make dc" will generate debug code for all subprojects.
-
- Then you need to define a default action for your subprojects if "make"
- has been called without arguments:
-
- all: bc
-
- This will build byte code by default for all subprojects.
-
- Finally, you'll have to define a catch-all target that uses the target
- provided by the user for all subprojects. Just add (assuming that
- OCAMLMAKEFILE has been defined appropriately):
-
- %:
- @make -f $(OCAMLMAKEFILE) subprojs SUBTARGET=$@
-
- See the "threads"-directory in the distribution for a short example!
-
----------------------------------------------------------------------------
-
- Optional variables that may be passed to "OCamlMakefile"
-
- * LIB_PACK_NAME - packs all modules of a library into a module whose
- name is given in variable "LIB_PACK_NAME".
-
- * RES_CLIB_SUF - when building a library that contains C-stubs, this
- variable controls the suffix appended to the name
- of the C-library (default: "_stubs").
-
- * THREADS - say "THREADS = yes" if you need thread support compiled in,
- otherwise leave it away.
-
- * VMTHREADS - say "VMTHREADS = yes" if you want to force VM-level
- scheduling of threads (byte-code only).
-
- * ANNOTATE - say "ANNOTATE = yes" to generate type annotation files
- (.annot) to support displaying of type information
- in editors.
-
- * USE_CAMLP4 - say "USE_CAMLP4 = yes" in your "Makefile" if you
- want to include the camlp4 directory during the
- build process, otherwise leave it away.
-
- * INCDIRS - directories that should be searched for ".cmi"- and
- ".cmo"-files. You need not write "-I ..." - just the
- plain names.
- * LIBDIRS - directories that should be searched for libraries
- Also just put the plain paths into this variable
- * EXTLIBDIRS - Same as "LIBDIRS", but paths in this variable are
- also added to the binary via the "-R"-flag so that
- dynamic libraries in non-standard places can be found.
- * RESULTDEPS - Targets on which results (executables or libraries)
- should additionally depend.
-
- * PACKS - adds packages under control of "findlib".
-
- * PREDS - specifies "findlib"-predicates.
-
- * LIBS - OCaml-libraries that should be linked (just plain names).
- E.g. if you want to link the Str-library, just write
- "str" (without quotes).
- The new OCaml-compiler handles libraries in such
- a way that they "remember" whether they have to
- be linked against a C-library and it gets linked
- in automatically.
- If there is a slash in the library name (such as
- "./str" or "lib/foo") then make is told that the
- generated files depend on the library. This
- helps to ensure that changes to your libraries are
- taken into account, which is important if you are
- regenerating your libraries frequently.
- * CLIBS - C-libraries that should be linked (just plain names).
-
- * PRE_TARGETS - set this to a list of target files that you want
- to have buildt before dependency calculation actually
- takes place. E.g. use this to automatically compile
- modules needed by camlp4, which have to be available
- before other modules can be parsed at all.
-
- ** WARNING **: the files mentioned in this variable
- will be removed when "make clean" is executed!
-
- * LIBINSTALL_FILES - the files of a library that should be installed
- using "findlib". Default:
-
- $(RESULT).mli $(RESULT).cmi $(RESULT).cma
- $(RESULT).cmxa $(RESULT).a lib$(RESULT).a
-
- * OCAML_LIB_INSTALL - target directory for "rawinstall/rawuninstall".
- (default: $(OCAMLLIBPATH)/contrib)
-
- * DOC_FILES - names of files from which documentation is generated.
- (default: all .mli-files in your $(SOURCES)).
-
- * DOC_DIR - name of directory where documentation should be stored.
-
- * OCAMLFLAGS - flags passed to the compilers
- * OCAMLBCFLAGS - flags passed to the byte code compiler only
- * OCAMLNCFLAGS - flags passed to the native code compiler only
-
- * OCAMLLDFLAGS - flags passed to the OCaml-linker
- * OCAMLBLDFLAGS - flags passed to the OCaml-linker when linking byte code
- * OCAMLNLDFLAGS - flags passed to the OCaml-linker when linking
- native code
-
- * OCAMLMKLIB_FLAGS - flags passed to the OCaml library tool
-
- * OCAMLCPFLAGS - profiling flags passed to "ocamlcp" (default: "a")
-
- * PPFLAGS - additional flags passed to the preprocessor (default: none)
-
- * LFLAGS - flags passed to "ocamllex"
- * YFLAGS - flags passed to "ocamlyacc"
- * IDLFLAGS - flags passed to "camlidl"
-
- * OCAMLDOCFLAGS - flags passed to "ocamldoc"
-
- * OCAMLFIND_INSTFLAGS - flags passed to "ocamlfind" during installation
- (default: none)
-
- * DVIPSFLAGS - flags passed to dvips
- (when generating documentation in PostScript).
-
- * STATIC - set this variable if you want to force creation
- of static libraries
-
- * CC - the C-compiler to be used
- * CXX - the C++-compiler to be used
-
- * CFLAGS - additional flags passed to the C-compiler.
- The flag "-DNATIVE_CODE" will be passed automatically
- if you choose to build native code. This allows you
- to compile your C-files conditionally. But please
- note: You should do a "make clean" or remove the
- object files manually or touch the %.c-files:
- otherwise, they may not be correctly recompiled
- between different builds.
-
- * CXXFLAGS - additional flags passed to the C++-compiler.
-
- * CPPFLAGS - additional flags passed to the C-preprocessor.
-
- * CFRAMEWORKS - Objective-C framework to pass to linker on MacOS X.
-
- * LDFLAGS - additional flags passed to the C-linker
-
- * RPATH_FLAG - flag passed through to the C-linker to set a path for
- dynamic libraries. May need to be set by user on
- exotic platforms. (default: "-R").
-
- * ELF_RPATH_FLAG - this flag is used to set the rpath on ELF-platforms.
- (default: "-R")
-
- * ELF_RPATH - if this flag is "yes", then the RPATH_FLAG will be
- passed by "-Wl" to the linker as normal on
- ELF-platforms.
-
- * OCAMLLIBPATH - path to the OCaml-standard-libraries
- (first default: `$(OCAMLC) -where`)
- (second default: "/usr/local/lib/ocaml")
-
- * OCAML_DEFAULT_DIRS - additional path in which the user can supply
- default directories to his own collection of
- libraries. The idea is to pass this as an environment
- variable so that the Makefiles do not have to contain
- this path all the time.
-
- * OCAMLFIND - ocamlfind from findlib (default: "ocamlfind")
- * OCAMLC - byte-code compiler (default: "ocamlc")
- * OCAMLOPT - native-code compiler (default: "ocamlopt")
- * OCAMLMKTOP - top-level compiler (default: "ocamlmktop")
- * OCAMLCP - profiling byte-code compiler (default: "ocamlcp")
- * OCAMLDEP - dependency generator (default: "ocamldep")
- * OCAMLLEX - scanner generator (default: "ocamllex")
- * OCAMLYACC - parser generator (default: "ocamlyacc")
- * OCAMLMKLIB - tool to create libraries (default: "ocamlmklib")
- * CAMLIDL - IDL-code generator (default: "camlidl")
- * CAMLIDLDLL - IDL-utility (default: "camlidldll")
- * CAMLP4 - camlp4 preprocessor (default: "camlp4")
- * OCAMLDOC - OCamldoc-command (default: "ocamldoc")
-
- * LATEX - Latex-processor (default: "latex")
- * DVIPS - dvips-command (default: "dvips")
- * PS2PDF - PostScript-to-PDF converter (default: "ps2pdf")
-
- * CAMELEON_REPORT - report tool of Cameleon (default: "report")
- * CAMELEON_REPORT_FLAGS - flags for the report tool of Cameleon
-
- * CAMELEON_ZOGGY - zoggy tool of Cameleon
- (default: "camlp4o pa_zog.cma pr_o.cmo")
- * CAMELEON_ZOGGY_FLAGS - flags for the zoggy tool of Cameleon
-
- * OCAML_GLADECC - Glade compiler for OCaml (default: "lablgladecc2")
- * OCAML_GLADECC_FLAGS - flags for the Glade compiler
-
- * OXRIDL - OXRIDL-generator (default: "oxridl")
-
- * NOIDLHEADER - set to "yes" to prohibit "OCamlMakefile" from using
- the default camlidl-flag "-header".
-
- * NO_CUSTOM - Prevent linking in custom mode.
-
- * QUIET - unsetting this variable (e.g. "make QUIET=")
- will print all executed commands, including
- intermediate ones. This allows more comfortable
- debugging when things go wrong during a build.
-
- * REALLY_QUIET - when set this flag turns off output from some commands.
-
- * OCAMLMAKEFILE - location of (=path to) this "OCamlMakefile".
- Because it calles itself recursively, it has to
- know where it is. (default: "OCamlMakefile" =
- local directory)
-
- * BCSUFFIX - Suffix for all byte-code files. E.g.:
-
- RESULT = foo
- BCSUFFIX = _bc
-
- This will produce byte-code executables/libraries
- with basename "foo_bc".
-
- * NCSUFFIX - Similar to "BCSUFFIX", but for native-code files.
- * TOPSUFFIX - Suffix added to toplevel interpreters (default: ".top")
-
- * SUBPROJS - variable containing the names of subprojects to be
- compiled.
-
- * SUBTARGET - target to be built for all projects in variable
- SUBPROJS.
-
----------------------------------------------------------------------------
-
- Optional variables for Windows users
-
- * MINGW - variable to detect the MINGW-environment
- * MSVC - variable to detect the MSVC-compiler
-
----------------------------------------------------------------------------
-
-Up-to-date information (newest release of distribution) can always be
-found at:
-
- http://www.ocaml.info/home/ocaml_sources.html
-
----------------------------------------------------------------------------
-
-Enjoy!
-
-New York, 2007-04-22
-Markus Mottl
-
-e-mail: markus.mottl@gmail.com
-WWW: http://www.ocaml.info
diff --git a/lib/ocaml/descr b/lib/ocaml/descr
new file mode 100644
index 0000000..a41749d
--- /dev/null
+++ b/lib/ocaml/descr
@@ -0,0 +1 @@
+OCaml bindings for the Apache Thrift RPC system
diff --git a/lib/ocaml/opam b/lib/ocaml/opam
new file mode 100644
index 0000000..9dbc3d9
--- /dev/null
+++ b/lib/ocaml/opam
@@ -0,0 +1,8 @@
+opam-version: "1"
+maintainer: "XXX(FILL ME IN WITH EMAIL)"
+build: [
+ [make]
+ [make "install"]
+]
+remove: [["ocamlfind" "remove" "thrift"]]
+depends: ["ocamlfind"]
diff --git a/lib/ocaml/url b/lib/ocaml/url
new file mode 100644
index 0000000..fe4d604
--- /dev/null
+++ b/lib/ocaml/url
@@ -0,0 +1,2 @@
+archive: "XXX(FILL ME IN WITH URL)"
+checksum: "XXX(FILL ME IN WITH MD5)"