2002-02-07: Fixed a small problem with the passing of "-o" to the
            C-compiler: some compilers are a bit picky on this.

2002-02-05: Added two new targets:

              * byte-code-nolink    (bcnl)
              * native-code-nolink  (ncnl)

            These targets drop the linking stage, i.e. they compile only.

2001-11-20: Merged in a large patch (thanks to Dmitry Bely!):

              * allows OcamlMakefile to work in Windows environments
                with MinGW and also MSVC.

              * support for C++-files (variables: CXX, CXXFLAGS)

              * allows building of DLLs (targets: bcd, ncd)

            Read the README for details!

2001-11-19: Updated contact address.

2001-11-17: Added default for LIBINSTALL_FILES (see README).

2001-10-30: Fixed camlp4-example to work with upcoming OCaml-release.

2001-10-03: Added a patch that makes OcamlMakefile work better with
            MSVC under Windows (thanks to Eugene Kotlyaro!).

2001-10-01: Added the flag "-c" to the install program to prevent
            files from being moved instead of copied on MacOS X (thanks
            to Hideo Bannai for the hint!).

2001-09-07: Improved building of libraries (thanks to Hideo Bannai!):

            OcamlMakefile now links all object files into a file
            "lib$(RESULT).a". This makes it easier to use libraries that
            interface to C (e.g. no passing of "-noautolink" and of object
            files when linking against the generated library when it is
            in a different directory, only "-cclib -l$(RESULT)").

            New variable: BASE_CLIB (see README for documentation)

            Better error message when user tries to build multi-threaded
            byte code for profiling (impossible with the current
            OCaml-release).

            Improved preprocessor detection (thanks to Olivier Andrieu!)

2001-09-06: Fixed portability problem (Digital Unix) and a tiny bug
            (empty files wouldn't get compiled).

2001-09-05: MAJOR CHANGE: added support for preprocessing! You'll need
            OCaml-3.03 or higher for this (currently not yet released
            but also works with current CVS-version).

            Added new variables (see README for documentation):

              CAMLP4
              USE_CAMLP4
              PRE_TARGETS

2001-07-12: Added new target: "make cleanup". It is similar to "make
            clean" but leaves executables in the directory.

2001-06-30: Removed "Printexc.catch" from calc-example: is going to be
            deprecated in upcoming OCaml-release.

2001-03-19: Added GNU-license.

2001-01-24: If not set in the environment, the variable "OCAMLLIBPATH"
            is now initialised using "$(OCAMLC) -where" by default:
            this takes the path as known by the byte code compiler.

            If this failes (e.g. if you use an earlier version of OCaml
            that does not support this feature), the default path is
            "/usr/local/lib/ocaml".

2000-12-23: The variable "OCAMLLIBPATH" is now initialised using
            "$(OCAMLC) -where" by default: this takes the path as known
            by the byte code compiler.

2000-11-21: Added default values:

            SOURCES := foo.ml
            RESULT  := foo

            This is quite useful if you want to test something quickly
            without having to enter these variables (only the directive
            "-include" for "make").

            Changed linking order of object files and library files. Some
            linkers seem to be picky about this.

2000-09-15: Patched IDL-demo:

            The new IDL-compiler (camlidl) always maps pointers to
            optional values now. This required a minor update.

2000-06-24: Improved portability:

            Used "printf" instead of "echo" to print some messages for
            library installation: "echo" just does not behave portably
            enough.

2000-06-13: And another small change:

            OcamlMakefile did not compile C-object files when building
            byte-code libraries that use them. The new linking semantics
            links them only when they are used in an executable,
            anyway. But still: this is inconvenient, because this would
            require the user to compile them extra.

            Now OcamlMakefile will guarantee that all the object files
            exist.

            Updated the README with more details on how OCaml links
            C-object files.

2000-06-11: Phew! A major internal cleanup - now it really shines ;-)

            Fixed a few bugs that do not appear in "normal" projects (e.g.
            profiling of libraries + threads, sources in subdirectories).

            New (implicit) feature: if you have sources in subdirectories,
            OcamlMakefile will add their paths automatically to all
            compilers to ensure that they find everything they need. Again
            less work for you - more for me ;-)

            Added a bit more documentation to the README.

            Is there still any missing feature? - Oh, yes, it should
            write the code for you...

2000-06-08: Added routines for automatic (un)installation of libraries:

            See the README for details on this new feature!

            Small fix:

            Changed order in which include- and library directories are
            searched during compilation and linking: the default paths
            (OCAML_DEFAULT_DIRS and OCAMLLIBPATH) come last now. This
            prevents that new packages accidently link against already
            existing libraries instead of using their own.

2000-06-07: Greatly improved dependency handling:

            The newest OCaml-release (3.00) introduces a new flag for
            "ocamldep" that allows to correctly build dependencies for
            native code projects. OcamlMakefile uses it and handles
            dependencies now as follows (instead of using a dirty
            sed-hack):

            Instead of writing them all into the directory of the sources,
            three subdirectories are created (dot dirs):

              ._d    - contains dependencies for .ml-files
              ._bcdi - contains byte code dependencies for .mli-files
              ._ncdi - contains native code dependencies for .mli-files

            Additionally, the endings of the dependency files have
            changed: ".d" for those generated from ".ml"-files, ".di"
            for ones derived from ".mli"-files.

            This cleans up the main directory and makes the whole
            dependency handling more transparent. Additionally, no matter
            whether you use byte- or native code, it should now always
            build things 100% ok.

            ---------------------------------------------------------------

            Removed variable "PLIBS" again: the new compiler remembers
            C-libraries that have to be linked with OCaml-libraries. This
            greatly simplifies handling of libraries.

2000-06-05: New feature (thanks to Chris Quinn!):

            When compiling to native code, OcamlMakefile will
            automatically add the flag "-DNATIVE_CODE" to your CFLAGS.
            You can exploit this in your C-files by adding preprocessor
            directives. This might be necessary if you want your C-code
            to behave differently when used with a specific binary format.

2000-05-03: Nice new feature: compilation with debugging information

            New targets:

              debug-code         (dc)
              debug-code-library (dcl)

            This allows you immediate application of "ocamldebug" to
            generated binaries.

            Updated README.

2000-04-21: Pedantry:

            Initialized some variables that actually get set on recursive
            calls. This should satisfy users of the make-flag
            "--warn-undefined-variables".

2000-04-20: New feature (thanks to Julian Assange for the contribution):

            Can build toplevels now - adds two variables:

              TOPSUFFIX  - the suffix added to the name of the toplevel
                           (default: ".top")

              OCAMLMKTOP - name of the toplevel compiler 
                           (default: "ocamlmktop")

            New target for this functionality: top

            So "make top" will build a new toplevel for you...

2000-02-29: Small fix (thanks to Patrick Goldbronn for the bug report):

            Setting the flag "NOIDLHEADER" suppresses generation of
            the C-header-file. Since there is are dependencies on this
            file, OcamlMakefile will try to build it (using camlidl) and
            rebuilds everything that depends on the IDL-file: this should
            not happen.  When "NOIDLHEADER" is set, OcamlMakefile will
            now simply create (touch) an empty header file to prevent
            unwanted recompilations.

2000-02-28: Small fix (thanks to Dana Harrington):

            If you compiled C-files in subdirectories with OcamlMakefile,
            the object files would be wrongly written into the
            directory where "make" was issued, leading to problems
            during linking. They will be written to the corresponding
            subdirectory now.

1999-12-25: Small fix that allows using .mli-files without .ml-files.

1999-12-13: Order of compilation changed:

            Until now all interface files were compiled first, then all the
            implementations. Now, both the interfaces and the implementations
            are compiled in exactly the same order as specified in the
            Makefile.
            
            This change prevents superfluous recompilation of some native code
            files.

	    Squeezed a bug when compiling interfaces for profiling.

1999-12-07: Workaround for a problem with ocamldep when applying it to
            interface files (would only appear under rare circumstances
            when compiling to native code): now, the output of ocamldep
            is rewritten to something more general.

1999-11-17: New variable (yes, the number of features is always n+1!):

            OCAML_DEFAULT_DIRS -
              variable containing paths to the user's default libraries.  The
              intention is to pass this as an environment variable rather than
              through the Makefile - quite convenient.

1999-10-21: Lots of changes:

            Profiling is now supported - for all kinds of targets!

            Additional variables:

              OCAMLBLDFLAGS - flags passed to the OCaml-linker when linking
                              byte code
              OCAMLNLDFLAGS - flags passed to the OCaml-linker when linking
                              native code

              OCAMLCP       - name (location) of profiling byte code compiler
              OCAMLCPFLAGS  - flags passed to the profiling byte code compiler

            Added target names for profiling support:

              profiling-byte-code           (pbc)
              profiling-native-code         (pnc)
              profiling-byte-code-library   (pbcl)
              profiling-native-code-library (pncl)

            Fixed small bug: OCAMLLIBPATH was not exported
            
            Updated documentation with information on profiling.

1999-10-20: Further variable:

            CC - The compiler to be used on C-files.

1999-10-13: Further variable:

            PLIBS - Plain libraries.
            Useful if you want to link against libraries that
            consist of the *.cma/*.cmxa file (no C-library) only.

1999-09-11: Added two further variables:

            BCSUFFIX - is added to the basename of byte-code executables
                       and libraries
            NCSUFFIX - as above, but for native-code files

1999-09-10: Small bugfix: interfaces were not compiled with correct flags.

1999-09-09: Added two further flags:

            OCAMLBCFLAGS - special flags for byte code compilation only
            OCAMLNCFLAGS - special flags for native code compilation only

1999-09-01: Added CVS-info in OcamlMakefile

1999-08-29: Bugfix:

            Now and for all times: dependency calculation should be
            correct (I hope so ;-). The output of "ocamldep" is not
            modified anymore.

            Recompilation of *native code* will take somewhat longer
            than before, because cross-module inlining is respected now.
            Byte code will still compile in optimum time.

1999-08-26: Small bugfixes:

            Handles .mli-files without corresponding .ml-files correctly.
            Long dependency lists will not be wrongly truncated anymore.

            Updated README.

1999-07-29: Small bugfix: the C-compiler gets it's include-path
            now as "-Ipath", not as "-I path". Strictly standard
            conforming compilers obviously need this.

1999-07-27: Pass C-files directly to the C-compiler found in "$(CC)".

            Added variables:

            * CFLAGS
              Will be passed to the C-compiler as usual.

            * OCAMLLIBPATH
              Needed to tell the C-compiler, where it can find
              include-files and libraries of the OCaml-system.
              Default: "/usr/local/lib/ocaml"

            Renamed a variable:

            * LDFLAGS -> OCAMLLDFLAGS
              OCAMLLDFLAGS is equivalent to the former LDFLAGS.
              LDFLAGS is now used to pass options to the C-linker.

              Eg.: LDFLAGS = -Xlinker -verbose

              These flags will be correctly passed by the OCaml-linker
              to the C-linker (via -ccopt).

            Updated documentation on these changes.

1999-06-05: Nearly completely rewritten distribution
            Now correct (!) handling of dependencies of automatically
            generated sources.

            Can handle IDL-files with associated C-files now, too!
            Much more user-friendly!


1999-03-04: Better interface handling in SubMakefile (still not fully
            correct).
            GNU-make is a real beast!


1999-01-07: Added variable for linking in thread-support


1998-09-06: Small change to circumvent a bug which can appear
            when a user forgets to put or places a wrong file into the
            source variable: Infinite recursion due to not solvable
            dependencies.
