###########################################################################
#                              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
