Commits

camlspotter committed b9ea160

findlib-1.2.8 with ocaml 4 fix

Comments (0)

Files changed (157)

findlib/findlib-1.2.8/INSTALL

+The installation procedure consists of the steps:
+
+1) configure the "findlib" library
+2) compile "findlib" and the "ocamlfind" frontend of "findlib"
+3) install "findlib" and the core library configuration
+
+Optionally, you can run ./itest after step 2 to check the
+configuration. Problems with the configuration are unlikely, however.
+
+At the end of this file you find notes about MacOS and Windows.
+
+
+----------------------------------------------------------------------
+
+STEP 1: DEFAULT CONFIGURATION
+
+The findlib module and its ocamlfind frontend come with a "configure"
+script that should almost always be able to figure out a good
+configuration.
+
+Just type:
+
+	./configure
+
+First the linker options for the various core libraries are figured
+out, then reasonable installation paths are checked.
+
+If the results are not ok, you can modify them using the following
+options:
+
+	-bindir <path>
+
+		set the location where the ocamlfind command should be
+		installed.
+		Default: same location as "ocamlc"
+
+	-mandir <path>
+
+		set the location where the man page should be installed.
+		Default: a heuristics, and "/usr/local/man" as fallback.
+
+	-sitelib <path>
+
+		set the default "site-lib" directory.
+		Default: For installations in the /usr hierarchy,
+		"$stdlib/site-lib", where $stdlib is the location of
+		Ocaml's  standard library.
+
+		For installations in the /opt hierarchy,
+		"$stdlib/../site-lib", i.e. parallel to $stdlib.
+
+	-config <file>
+
+		set the location of the configuration file.
+		Default: <bindir>/../etc/findlib.conf
+
+	-no-topfind
+
+		the "topfind" script is not installed in the standard
+		library directory. (This is not a good idea in general,
+		because #use "topfind" will not work when this option
+		is enabled.)
+
+	-with-toolbox
+		also compile and install the "toolbox". This requires
+		that labltk is available. The toolbox contains the
+		"make_wizard" to easily create findlib-enabled Makefiles.
+
+	-cygpath
+		Cygwin environment only: If "ocamlc -where" does not
+		output a Unix-style path, this option can be used
+		to apply the "cygpath" command to it. Use this option
+		if you see backslashes or drive letters in Makefile.config.
+
+ALTERNATIVES:
+
+If the "configure" script does not work properly (very unlikely), do
+
+	cp Makefile.config.pattern Makefile.config
+
+and edit Makefile.config by hand.
+
+If the generated META files do not work, edit them (this is very very unlikely).
+
+Note: The META files are generated from the META.in files in the same
+directories by m4:
+
+	m4 -Dos=<os> <more parameters...> site-lib/<name>/META.in
+		>site-lib/<name>/META
+
+You may invoke m4 manually to create different META files, but this
+is currently not documented.
+
+
+
+----------------------------------------------------------------------
+
+STEP 2: COMPILATION
+
+After configuration has been done, compile with
+
+	make all
+
+This creates findlib.cma, findlib_mt.cma (the thread-safe version),
+and ocamlfind.
+
+If you have ocamlopt, do also
+
+	make opt
+
+This creates findlib.cmxa, findlib_mt.cmxa, and ocamlfind_opt.
+
+----------------------------------------------------------------------
+
+STEP 3: INSTALLATION
+
+Install the findlib library, the ocamlfind frontend, and the core library
+configurations with:
+
+	make install
+
+(A "make uninstall" removes them.)
+
+With
+	make clean
+
+the build directory is cleaned up.
+
+
+OPTIONAL (BUT RECOMMENDED):
+
+If you want a separate directory for DLLs, create this directory
+now: 
+
+mkdir `ocamlfind printconf destdir`/stublibs
+
+If you do this, you must also tell O'Caml that DLLs can be found in
+this directory: Add the absolute path of this directory to
+the ld.conf file (type "ocamlfind printconf ldconf" to get the
+location of the ld.conf file). Every line of this text file lists
+one possible directory for DLLs.
+
+----------------------------------------------------------------------
+
+MACOS X:
+
+Findlib can be installed as described. There is even a script to
+create a MacOS X package, use "make package-macosx" to invoke it. As I
+do not have access to a Mac box, I cannot test this script, but I
+fully trust the author that it works.
+
+----------------------------------------------------------------------
+
+WINDOWS:
+
+Ocaml for Windows exists in three flavours:
+
+(1) Ocaml as Cygwin program
+(2) Ocaml as Mingw program (i.e. the gcc toolchain is used but
+    Ocaml is a native Windows program)
+(3) Ocaml as VC program
+
+In all three cases you need Cygwin to build and install findlib,
+because "configure" and the Makefile are both Cygwin scripts. The
+golden rule to make everything work is this:
+
+PASS CYGWIN-STYLE PATHS TO CONFIGURE!
+
+Even in cases (2) and (3)! That means use something like
+/cygdrive/c/path and not c:\path when you specify where -bindir,
+-config etc. are. The point is that "configure" itself is a Cygwin
+script, and therefore expects Cygwin input. At the right moment, the
+paths are back-translated to their Windows counterparts.
+
+Until O'Caml 3.08 you must specify whether you have (2) or (3) by
+the configure switches
+
+- "-system mingw" for (2)
+- "-system win32" for (3)
+- nothing for (1)
+
+Since O'Caml 3.09 this is no longer necessary because "ocamlc -config"
+outputs the required information.
+
+In previous versions of Findlib there was a single switch -cygpath 
+for both (2) and (3). It is now interpreted as -system mingw (as
+it was meant as that).

findlib/findlib-1.2.8/LICENSE

+Copyright 1999 by Gerd Stolpmann
+
+The package "findlib" is copyright by Gerd Stolpmann. 
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this document and the "findlib" software (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+The Software is provided ``as is'', without warranty of any kind, express
+or implied, including but not limited to the warranties of
+merchantability, fitness for a particular purpose and noninfringement.
+In no event shall Gerd Stolpmann be liable for any claim, damages or
+other liability, whether in an action of contract, tort or otherwise,
+arising from, out of or in connection with the Software or the use or
+other dealings in the software.

findlib/findlib-1.2.8/Makefile

+# make all: compile to bytecode
+# make opt: compile to native code
+# make install: install bytecode and/or native code
+#----------------------------------------------------------------------
+
+include Makefile.config
+
+TOP=.
+
+.PHONY: all opt install uninstall clean
+
+all:
+	for p in $(PARTS); do ( cd src/$$p; $(MAKE) all ); done
+	$(MAKE) all-config
+
+opt:
+	for p in $(PARTS); do ( cd src/$$p; $(MAKE) opt ); done
+
+install:
+	mkdir -p "$(prefix)$(OCAMLFIND_BIN)"
+	mkdir -p "$(prefix)$(OCAMLFIND_MAN)"
+	for p in $(PARTS); do ( cd src/$$p; $(MAKE) install ); done
+	$(MAKE) install-meta
+	cd src/findlib; $(MAKE) install-num-top
+	$(MAKE) install-config
+	cp tools/safe_camlp4 "$(prefix)$(OCAMLFIND_BIN)"
+	$(MAKE) install-doc
+
+uninstall:
+	$(MAKE) uninstall-doc
+	$(MAKE) uninstall-meta
+	for p in `cd src; echo *`; do ( cd src/$$p; $(MAKE) uninstall ); done
+	$(MAKE) uninstall-config
+
+clean:
+	for p in `cd src; echo *`; do ( cd src/$$p; $(MAKE) clean ); done
+	(cd itest-aux; $(MAKE) clean)
+	(cd tools/extract_args; $(MAKE) clean)
+	rm -f findlib.conf
+
+.PHONY: release
+release: README
+	./release
+
+README: doc/README
+	ln -s doc/README .
+
+
+.PHONY: all-config
+all-config: findlib.conf
+
+findlib.conf: findlib.conf.in 
+	USE_CYGPATH="$(USE_CYGPATH)"; \
+	export USE_CYGPATH; \
+	cat findlib.conf.in | \
+		tools/patch '@SITELIB@' '$(OCAML_SITELIB)' >findlib.conf
+	if ocamlc.opt >/dev/null 2>&1; then \
+		echo 'ocamlc="ocamlc.opt"' >>findlib.conf; \
+	fi
+	if ocamlopt.opt >/dev/null 2>&1; then \
+		echo 'ocamlopt="ocamlopt.opt"' >>findlib.conf; \
+	fi
+	if ocamldep.opt >/dev/null 2>&1; then \
+		echo 'ocamldep="ocamldep.opt"' >>findlib.conf; \
+	fi
+
+.PHONY: install-doc
+install-doc:
+	mkdir -p $(prefix)$(OCAMLFIND_MAN)/man1 $(prefix)$(OCAMLFIND_MAN)/man3 $(prefix)$(OCAMLFIND_MAN)/man5
+	-cp doc/ref-man/ocamlfind.1 $(prefix)$(OCAMLFIND_MAN)/man1
+	-cp doc/ref-man/META.5 doc/ref-man/site-lib.5 doc/ref-man/findlib.conf.5 $(prefix)$(OCAMLFIND_MAN)/man5
+
+.PHONY: uninstall-doc
+uninstall-doc:
+	rm -f $(prefix)$(OCAMLFIND_MAN)/man1/ocamlfind.1
+	rm -f $(prefix)$(OCAMLFIND_MAN)/man3/Findlib.3
+	rm -f $(prefix)$(OCAMLFIND_MAN)/man3/Topfind.3
+	rm -f $(prefix)$(OCAMLFIND_MAN)/man5/META.5
+	rm -f $(prefix)$(OCAMLFIND_MAN)/man5/site-lib.5
+
+
+.PHONY: install-meta
+install-meta:
+	for x in `ls site-lib-src`; do if [ "$$x" != "CVS" -a -f "site-lib-src/$$x/META" ]; then mkdir -p "$(prefix)$(OCAML_SITELIB)/$$x"; cp site-lib-src/$$x/META "$(prefix)$(OCAML_SITELIB)/$$x"; fi; done
+
+.PHONY: uninstall-meta
+uninstall-meta:
+	for x in `ls site-lib-src`; do if [ "$$x" != "CVS" ]; then rm -rf "$(prefix)$(OCAML_SITELIB)/$$x"; fi; done
+
+.PHONY: install-config
+install-config:
+	mkdir -p "`dirname \"$(prefix)$(OCAMLFIND_CONF)\"`"
+	@if [ -f "$(prefix)$(OCAMLFIND_CONF)" ]; then echo "!!! Keeping old $(prefix)$(OCAMLFIND_CONF) !!!"; fi
+	test -f "$(prefix)$(OCAMLFIND_CONF)" || cp findlib.conf "$(prefix)$(OCAMLFIND_CONF)"
+
+.PHONY: uninstall-config
+uninstall-config:
+	@echo Leaving "$(OCAMLFIND_CONF)" installed, consider manual removal
+
+.PHONY: interface-lists
+interface-lists:
+	d=`ocamlc -where`;                              \
+	for x in `ls site-lib-src`; do                  \
+	    iflist="";                                  \
+            if [ ! -f "site-lib-src/$$x/interfaces.in" ]; then continue; fi; \
+	    cma_spec=`cat site-lib-src/$$x/interfaces.in`;  \
+	    for cma in $$d/$$cma_spec; do               \
+		intf=`ocamlobjinfo $$cma |                   \
+		      grep 'Unit name:' |               \
+		      sed -e 's/^  Unit name: //' |     \
+		      sort |                            \
+		      tr '\n' ' '`;                     \
+		iflist="$$iflist $$intf";               \
+	    done;                                       \
+	    echo "$$iflist" >"site-lib-src/$$x/interfaces.out"; \
+	done
+
+######################################################################
+# The following is from Pietro Abata <pietro.abate@anu.edu.au>
+# to create MacOS X packages. I did not test it, just include it.
+
+.PHONY: package-macosx
+
+package-macosx: all opt
+	mkdir -p package-macosx/root
+	export prefix=`pwd`/package-macosx/root && make install 
+	export VERSION=1.1.2 && tools/make-package-macosx
+
+clean-macosx:
+	sudo rm -rf package-macosx

findlib/findlib-1.2.8/Makefile.config.pattern

+# You can manually set up your configuration using this
+# pattern. The final name of the file must be "Makefile.config".
+# Note that there are other files containing parts of the 
+# configuration, especially the site-lib/*/META files.
+# 
+#----------------------------------------------------------------------
+# Where the OCAML core is installed:
+#----------------------------------------------------------------------
+OCAML_CORE_STDLIB=/usr/local/lib/ocaml
+OCAML_CORE_BIN=/usr/local/bin
+OCAML_CORE_MAN=/usr/local/man
+
+#----------------------------------------------------------------------
+# Type of multi-threading support: either vm or posix
+# (Note: Since O'Caml 3.07, "posix" includes "vm", because a build
+# supporting posix also supports vm.)
+#----------------------------------------------------------------------
+OCAML_THREADS=vm
+#OCAML_THREADS=posix
+
+#----------------------------------------------------------------------
+# Where the site-lib directory will be
+#----------------------------------------------------------------------
+OCAML_SITELIB=/usr/local/lib/ocaml/site-lib
+
+#----------------------------------------------------------------------
+# Where binaries and manual pages will be installed
+#----------------------------------------------------------------------
+OCAMLFIND_BIN=/usr/local/bin
+OCAMLFIND_MAN=/usr/local/man
+
+#----------------------------------------------------------------------
+# The absolute location of the configuration file
+#----------------------------------------------------------------------
+OCAMLFIND_CONF=/usr/local/etc/ocamlfind.conf
+
+#----------------------------------------------------------------------
+# Autolinking is usually on
+#----------------------------------------------------------------------
+OCAML_AUTOLINK=true
+
+#----------------------------------------------------------------------
+# Windows only: set this to .exe
+#----------------------------------------------------------------------
+EXEC_SUFFIX=
+
+#----------------------------------------------------------------------
+# Which parts are to be built: findlib, findlib-toolbox (space-separated
+# list)
+#----------------------------------------------------------------------
+PARTS=findlib findlib-toolbox
+
+#----------------------------------------------------------------------
+# Whether the "topfind" script is installed in $(OCAML_CORE_STDLIB):
+#----------------------------------------------------------------------
+INSTALL_TOPFIND=1

findlib/findlib-1.2.8/configure

+#! /bin/sh
+# $Id: configure 148 2012-02-24 19:10:59Z gerd $
+# ----------------------------------------------------------------------
+#
+
+# Some functions
+
+#set -x
+
+version="1.2.8"
+
+# Remember the old IFS value:
+oldifs="$IFS"
+
+
+in_path () {
+    # Does $1 exist in $PATH?
+    IFS=":"
+    for d in $PATH; do
+	if test -x "$d/$1"; then
+	    IFS="$oldifs"
+	    return 0
+	fi
+    done
+    IFS="$oldifs"
+    return 1
+#--- The following is not portable enough:
+#    if test -x `type -p ls`; then
+#	# type -p works!
+#        type -p $1 >/dev/null
+#    else
+#        # use 'which' instead
+#        p=`which $1`
+#	test -x "$p"
+#    fi
+}
+
+
+get_path () {
+    IFS=":"
+    for d in $PATH; do
+	if test -x "$d/$1"; then
+	    IFS="$oldifs"
+	    echo "$d/$1"
+	    return
+	fi
+    done
+    IFS="$oldifs"
+#--- The following is not portable enough:
+#    if test -x `type -p ls`; then
+#	# type -p works!
+#        type -p $1
+#    else
+#        # use 'which' instead
+#        p=`which $1`
+#	test -x "$p" && echo $p
+#    fi
+}
+
+
+get_stdlib () {
+    # Older versions of ocamlc do not accept -where, so there is a fallback
+    # method:
+    ocamlc -where 2>/dev/null | tr -d '\015' || {
+	ocamlc -v | sed -n -e "/Standard library directory/s/.*: \(.*\)/\1/p"; }
+}
+
+
+get_lib () {
+    # $1: name of a library to search for
+    # $2...: places to test
+    libname="$1"
+    while [ "$#" != "0" ]; do
+	if [ -f "$1/lib${libname}.so" -o -f "$1/lib${libname}.a" ]; then
+	    echo "$1"
+	    return 0
+	fi
+	shift
+    done
+    return 1
+}
+
+
+get_lib_file () {
+    # $1: name of library without "lib" and suffix
+    # $2: directory
+    # returns full path of library
+    if [ -f "$2/lib$1.so" ]; then
+	echo "$2/lib$1.so"
+    elif [ -f "$2/lib$1.a" ]; then
+	echo "$2/lib$1.a"
+    else
+	echo ""
+    fi
+}
+
+
+cygpath_to_unix () {
+    v=$1
+    eval "p=\"\$$v\""
+    p="`cygpath -w -s \"$p\"`"
+    p="`cygpath -u \"$p\"`"
+    eval "$v=\"$p\""
+}
+
+
+######################################################################
+# Here the main program begins:
+
+######################################################################
+# Interpret the command line
+
+ocamlfind_bin=""
+ocamlfind_man=""
+ocaml_sitelib=""
+ocamlfind_config=""
+with_toolbox=0
+with_topfind=1
+system=""
+
+while [ "$#" != "0" ]; do
+    case "$1" in
+        -bindir) ocamlfind_bin=$2
+	         shift 2
+		 ;;
+        -mandir) ocamlfind_man=$2
+	         shift 2
+		 ;;
+        -sitelib) ocaml_sitelib=$2
+	          shift 2
+		  ;;
+        -config) ocamlfind_config=$2
+	         shift 2
+		 ;;
+	-cygpath) system=mingw
+	         shift
+		 ;;
+	-system) system=$2
+	         shift 2
+		 ;;
+	-with-toolbox) with_toolbox=1
+	         shift
+		 ;;
+	-no-topfind) with_topfind=0
+	         shift
+		 ;;
+	-version)
+	         echo "$version"
+		 exit 0
+		 ;;
+        -h|-help|--help) echo "usage: configure [options]" 1>&2
+		  echo "  -bindir path         where binaries are installed" 1>&2
+		  echo "  -mandir path         where manual pages are installed" 1>&2
+		  echo "  -sitelib path        set the location of the site-specific packages" 1>&2
+                  echo "  -config path         set the location of the configuration file" 1>&2
+		  echo "  -system <systype>    override system type (esp. mingw and win32)" 1>&2
+		  echo "  -with-toolbox        also build the toolbox" 1>&2
+		  echo "  -no-topfind          don't install topfind script into stdlib directory" 1>&2
+		  exit
+		  ;;
+         *)       echo "configure: run 'configure -h' to get help" 1>&2
+		  exit 1
+		  ;;
+    esac
+done
+
+echo "Welcome to findlib version $version"
+echo "Configuring core..."
+
+
+#######################################################################
+# inspect the system
+
+# Some standard Unix tools must be available:
+
+for tool in sed awk ocaml ocamlc uname rm make cat m4 dirname basename; do
+    if in_path $tool; then true; else
+	echo "configure: $tool not in PATH; this is required" 1>&2
+	exit 1
+    fi
+done
+
+# Check for Cygwin:
+
+exec_suffix=
+pure_mingw="no"
+mingw_lib=
+case `uname` in
+  CYGWIN*)
+    exec_suffix=.exe
+    echo "Cygwin build environment found; using .exe as suffix for binaries"
+    ;;
+  MINGW*)
+    exec_suffix=.exe
+    pure_mingw="yes"
+    echo "MinGW build environment found; using .exe as suffix for binaries"
+    mingw_lib=`get_path gcc`
+    mingw_lib=`dirname "$mingw_lib"`/../lib
+    ;;
+  *)
+    true ;;
+esac
+
+######################################################################
+# Is the target Win32?
+
+use_cygpath=0
+# Whether we have to translate Unix paths to/from Windows paths.
+
+if [ -z "$system" ]; then
+    system=`ocamlc -config 2>/dev/null|grep system|sed 's/system: //'`
+    # This may be
+    # - mingw
+    # - win32
+    # - win64
+    # - cygwin
+    # - some other string means Unix
+    # - empty means ocamlc does not support -config
+fi
+
+case "$system" in
+    mingw)
+	if [ "$pure_mingw" = "no" ];  then
+	    # CYGWIN
+	    use_cygpath=1
+	fi
+	;;
+    win32) use_cygpath=1;;
+    win64) use_cygpath=1;;
+esac
+
+######################################################################
+# Find out standard library location
+
+ocaml_core_stdlib=`get_stdlib`
+if [ ! -d "$ocaml_core_stdlib" ]; then
+   echo "configure: cannot determine ocaml's standard library directory" 1>&2
+    exit 1
+fi
+
+if [ ${use_cygpath} -gt 0 ]; then
+    cygpath_to_unix ocaml_core_stdlib
+    # This makes ocaml_core_stdlib a Unix-type path
+fi
+
+# Set site-lib directory:
+
+if [ -z "$ocaml_sitelib" ]; then
+    case "$ocaml_core_stdlib" in
+	/opt/*)		ocaml_sitelib=`dirname "${ocaml_core_stdlib}"`/site-lib
+			;;
+	*)		ocaml_sitelib="${ocaml_core_stdlib}/site-lib"
+			;;
+    esac
+fi
+
+# Find out the directory where ocamlc is:
+
+ocamlc=`get_path ocamlc`
+ocaml_core_bin=`dirname "${ocamlc}"`
+
+# Set the directory of ocamlfind:
+
+test -n "$ocamlfind_bin" || ocamlfind_bin="$ocaml_core_bin"
+
+# Find the directory for the manual:
+
+# Fallback:
+ocaml_core_man=/usr/local/man
+
+d="$ocaml_core_bin"
+while [ "$d" != '/' ]; do
+    f=0
+    if [ -d "$d/man/man1" ]; then
+	if [ -f "$d/man/man1/ocamlc.1" -o \
+	     -f "$d/man/man1/ocamlc.1.gz" -o \
+	     -f "$d/man/man1/ocamlc.1.Z" ]; then
+	     f=1
+	fi
+    else
+	if [ -d "$d/man/mann" ]; then
+	    if [ -f "$d/man/mann/ocamlc.n" -o \
+		 -f "$d/man/mann/ocamlc.n.gz" -o \
+		 -f "$d/man/mann/ocamlc.n.Z" ]; then
+		f=1
+	    fi
+	fi
+    fi
+    if [ "$f" = "1" ]; then
+	ocaml_core_man="$d/man"
+	d="/"
+    else
+	d=`dirname "$d"`
+    fi
+done
+
+# Set the directory for ocamlfind's manuals:
+
+test -n "$ocamlfind_man" || ocamlfind_man="$ocaml_core_man"
+
+# Guess the right directory for the configuration file:
+
+if [ -z "${ocamlfind_config}" ]; then
+    d="$ocaml_core_bin"
+    case "$d" in
+        */bin)
+	    ocamlfind_config=`dirname "$d"`/etc/findlib.conf
+	    ;;
+	*)
+	    ocamlfind_config=/usr/local/etc/findlib.conf
+	    # Fallback value
+	    ;;
+    esac
+fi
+
+######################################################################
+# Test the threading model
+
+echo "Testing threading model..."
+
+if ocamlc -vmthread >/dev/null 2>/dev/null; then
+    :
+else
+    echo "The -vmthread switch is not supported: Your ocaml version is too old!"
+    exit 1
+fi
+
+if ocamlc -config >/dev/null 2>/dev/null; then
+    # Good. ocamlc tells us the threading model.
+    if ocamlc -config | grep 'systhread_supported: true'; then
+	ocaml_threads="posix"
+    else
+	ocaml_threads="vm"
+    fi
+else
+    # Old ocamlc do not have -config. 
+    rm -f itest-aux/simple
+    ocamlc -w a -custom -thread -o itest-aux/simple unix.cma threads.cma itest-aux/simple_threads.ml \
+	>itest-aux/err.out 2>&1
+    output=`cat itest-aux/err.out`
+
+    if [ -z "$output" ]; then
+	ocaml_threads="posix"
+    else
+	ocaml_threads="vm"
+    fi
+fi
+
+######################################################################
+# Does this version of OCaml support autolinking?
+
+# Works for O'Caml >= 3.00 on. Because findlib can only be compiled
+# with these O'Caml versions, we can safely assume that autolinking
+# is enabled.
+
+ocaml_autolink="true"
+
+######################################################################
+# Does this version of OCaml support DLLs?
+
+echo "Testing DLLs..."
+
+have_dlls="yes"
+
+ocaml unix.cma itest-aux/simple.ml >/dev/null || have_dlls="no"
+
+######################################################################
+# Configure libraries
+
+echo "Configuring libraries..."
+
+# Check whether Bigarray is present.
+
+lbigarray=bigarray
+# always
+
+# Dynlink check.
+
+have_natdynlink=0
+natdynlink=""
+camlp4_dynlink=""
+if [ -f "${ocaml_core_stdlib}/dynlink.cmxa" ]; then
+    have_natdynlink=1
+    natdynlink="archive(native) = \"dynlink.cmxa\""
+    camlp4_dynlink="dynlink"
+    echo "native dynlink: found"
+else
+    natdynlink="archive(native) = \"\""
+    echo "native dynlink: not found"
+fi
+
+# Check whether labltk is present.
+
+if [ -f "${ocaml_core_stdlib}/labltk/labltk.cma" ]; then
+    llabltk=labltk
+    echo "labltk: found"
+else
+    llabltk=''
+    echo "labltk: not present"
+    if [ $with_toolbox -gt 0 ]; then
+	echo "Sorry, toolbox requires labltk - omitting toolbox."
+    fi
+    with_toolbox=0
+fi
+
+# Check whether ocamlbuild is present
+
+if [ -f "${ocaml_core_stdlib}/ocamlbuild/ocamlbuildlib.cma" ]; then
+    lobuild=ocamlbuild
+    echo "ocamlbuild: found"
+else
+    lobuild=""
+    echo "ocamlbuild: not present"
+fi
+
+# Check on camlp4:
+
+if in_path camlp4; then
+    camlp4_dir=`camlp4 -where | tr -d '\015'`
+    if [ ${use_cygpath} -gt 0 ]; then
+	camlp4_dir=`echo x | env USE_CYGPATH=1 tools/patch x "$camlp4_dir"`
+        # This makes camlp4_dir a windows path
+    elif [ "${pure_mingw}" = "yes" ]; then
+	# Must double the backslahes
+	camlp4_dir="$(echo "${camlp4_dir}" | sed -e 's;\\;\\\\;g')"
+    fi
+    camlp4_version=`camlp4 -v 2>&1`
+    if [ "$have_dlls" = "yes" ]; then
+	camlp4_cmd="camlp4"
+    else
+	camlp4_cmd="safe_camlp4"
+    fi
+    # Check whether 3.09 or 3.10 style:
+    if camlp4 -loaded-modules >/dev/null 2>/dev/null; then
+	camlp4style=310
+    else
+	camlp4style=309
+    fi
+    lcamlp4="camlp4"
+    rm -rf "site-lib-src/camlp4"
+    mkdir "site-lib-src/camlp4"
+    cp "site-lib-src/camlp4.$camlp4style/META.in" "site-lib-src/camlp4/"
+    echo "camlp4: using $camlp4_cmd, style $camlp4style"
+else
+    lcamlp4=''
+    echo "camlp4: not present"
+fi
+
+# Generate the META files now.
+
+l="dbm dynlink graphics num num-top str threads unix stdlib bigarray $llabltk $lcamlp4 $lobuild"
+
+for dir in site-lib-src/*; do
+    # We do not really know if $dir is a directory.
+    rm -f $dir/META
+done
+
+for lib in $l; do
+    if=""
+    if [ -f site-lib-src/$lib/interfaces.out ]; then
+	if=`cat site-lib-src/$lib/interfaces.out`
+    fi
+    m4 -Dos=$os \
+	"-Dtype_of_threads=${ocaml_threads}" \
+	"-Dcamlp4_dir=${camlp4_dir}" \
+	"-Dcamlp4_version=${camlp4_version}" \
+	"-Dcamlp4_cmd=${camlp4_cmd}" \
+	"-Dcamlp4_dynlink=${camlp4_dynlink}" \
+	"-Dinterfaces=${if}" \
+	"-Dfindlib_version=${version}" \
+	"-Dnatdynlink=${natdynlink}" \
+	site-lib-src/$lib/META.in >site-lib-src/$lib/META
+    echo "Configuration for $lib written to site-lib-src/$lib/META"
+done
+
+for part in `cd src; echo *`; do
+    if [ -f "src/$part/META.in" ]; then
+	sed -e "s/@VERSION@/$version/g" src/$part/META.in >src/$part/META
+    fi
+done
+
+######################################################################
+
+printf "Detecting compiler arguments: "
+
+( cd tools/extract_args && make ) >ocargs.log 2>&1
+if [ "$?" -eq 0 ]; then
+    printf "(extractor built) "
+    tools/extract_args/extract_args -o src/findlib/ocaml_args.ml ocamlc ocamlcp ocamlmklib ocamlmktop ocamlopt ocamldep ocamldoc >>ocargs.log 2>&1
+    # ocamlbrowser does not work!
+    if [ $? -eq 0 ]; then
+	echo "ok"
+    else
+	echo "FAILED (see the file ocargs.log for details)"
+	exit 1
+    fi
+else
+    echo "FAILED (see the file ocargs.log for details)"
+    exit 1
+fi
+
+######################################################################
+# Write Makefile.config
+
+parts="findlib"
+if [ $with_toolbox -gt 0 ]; then
+    parts="$parts findlib-toolbox"
+fi
+
+echo "# Makefile.config written by configure" >Makefile.config
+echo "OCAML_CORE_STDLIB=${ocaml_core_stdlib}" >>Makefile.config
+echo "OCAML_CORE_BIN=${ocaml_core_bin}" >>Makefile.config
+echo "OCAML_CORE_MAN=${ocaml_core_man}" >>Makefile.config
+echo "OCAML_SITELIB=${ocaml_sitelib}" >>Makefile.config
+echo "OCAML_THREADS=${ocaml_threads}" >>Makefile.config
+echo "OCAMLFIND_BIN=${ocamlfind_bin}" >>Makefile.config
+echo "OCAMLFIND_MAN=${ocamlfind_man}" >>Makefile.config
+echo "OCAMLFIND_CONF=${ocamlfind_config}" >>Makefile.config
+echo "OCAML_AUTOLINK=${ocaml_autolink}" >>Makefile.config
+echo "EXEC_SUFFIX=${exec_suffix}" >>Makefile.config
+echo "PARTS=${parts}" >>Makefile.config
+echo "INSTALL_TOPFIND=${with_topfind}" >>Makefile.config
+echo "USE_CYGPATH=${use_cygpath}" >>Makefile.config
+echo "VERSION=${version}" >>Makefile.config
+echo "SYSTEM=${system}" >>Makefile.config
+if [ "$mingw_lib" != "" ]; then
+    echo "OCAMLC_FLAGS=-I \"${mingw_lib}\"" >>Makefile.config
+    echo "OCAMLOPT_FLAGS=-I \"${mingw_lib}\"" >>Makefile.config
+fi
+
+# All OK
+
+echo
+echo "About the OCAML core installation:"
+echo "    Standard library:      ${ocaml_core_stdlib}"
+echo "    Binaries:              ${ocaml_core_bin}"
+echo "    Manual pages:          ${ocaml_core_man}"
+echo "    Multi-threading type:  ${ocaml_threads}"
+echo "The directory of site-specific packages will be"
+echo "    site-lib:              ${ocaml_sitelib}"
+echo "The configuration file is written to:"
+echo "    findlib config file:   ${ocamlfind_config}"
+echo "Software will be installed:"
+echo "    Libraries:             in <site-lib>/findlib"
+echo "    Binaries:              ${ocamlfind_bin}"
+echo "    Manual pages:          ${ocamlfind_man}"
+if [ $with_topfind -gt 0 ]; then
+    echo "    topfind script:        ${ocaml_core_stdlib}"
+else
+    echo "    topfind script:        omitted"
+fi
+
+if [ $with_toolbox -gt 0 ]; then
+    echo "Toolbox:                   yes"
+else
+    echo "Toolbox:                   no"
+fi
+
+echo
+echo "Configuration has been written to Makefile.config"
+echo
+echo "You can now do 'make all', and optionally 'make opt', to build ocamlfind."

findlib/findlib-1.2.8/doc/DOCINFO

+To build the html and manual pages from the SGML sources, you need the 
+following tools:
+
+- The DocBook DTD
+  (http://www.davenport.com)
+- James Clark's SGML tools (jade, sx suffice)
+  (http://www.jclark.com)
+- Normal Walsh's DSSSL stylesheets to make the HTML pages
+  (http://nwalsh.com/docbook/dsssl)
+- My db2man tool to make the manual pages
+  (http://www.ocaml-programming.de/packages)
+
+The latter also requires Christian Lindig's XML parser
+(//http://www.cs.tu-bs.de/softech/people/lindig/software/tony.html).
+

findlib/findlib-1.2.8/doc/QUICKSTART

+******************************************************************************
+QUICKSTART - The most important ways to use findlib
+******************************************************************************
+
+
+==============================================================================
+Intro
+==============================================================================
+
+See the file INSTALL for instructions how to build and install findlib.
+
+==============================================================================
+Findlib and the toploop
+==============================================================================
+
+For a number of platforms, O'Caml can load bytecode-compiled libraries 
+dynamically. For these platforms, findlib is very simple to use as explained in 
+the following. For other platforms, see the paragraph below about "custom 
+toploops".
+
+After the toploop has been started, it is possible to load the special findlib 
+support: [1] 
+
+$ ocaml
+        Objective Caml version 3.07
+
+# #use "topfind";;
+Findlib has been successfully loaded. Additional directives:
+  #require "package";;      to load a package
+  #list;;                   to list the available packages
+  #camlp4o;;                to load camlp4 (standard syntax)
+  #camlp4r;;                to load camlp4 (revised syntax)
+  #predicates "p,q,...";;   to set these predicates
+  Topfind.reset();;         to force that packages will be reloaded
+  #thread;;                 to enable threads
+
+- : unit = ()
+
+You can now list the available packages: 
+
+# #list;;
+bigarray            (version: [distributed with Ocaml])
+camlp4              (version: Camlp4 version 3.03 ALPHA)
+dbm                 (version: [distributed with Ocaml])
+dynlink             (version: [distributed with Ocaml])
+findlib             (version: 0.6)
+graphics            (version: [distributed with Ocaml])
+labltk              (version: [distributed with Ocaml])
+netstring           (version: 0.10)
+num                 (version: [distributed with Ocaml])
+stdlib              (version: [distributed with Ocaml])
+str                 (version: [distributed with Ocaml])
+threads             (version: [distributed with Ocaml])
+unix                (version: [distributed with Ocaml])
+xstrp4              (version: 1.1)
+
+and load packages by simply typing: 
+
+# #require "netstring";;
+Loading /opt/ocaml/lib/unix.cma
+Loading /opt/ocaml/lib/str.cma
+Loading /opt/ocaml/site-lib/netstring/netstring.cma
+Loading /opt/ocaml/site-lib/netstring/netstring_top.cmo
+
+Findlib takes care to load packages that are required by loaded packages first. 
+For example, "netstring" uses "unix" and "str" internally, but you do not need 
+to load them because findlib does it for you. In this example you can also see 
+that findlib loads netstring_top.cmo containing printers for the toploop.
+
+You can also enable the Camlp4 parsers by simply typing 
+
+# #camlp4o;;
+Loading /opt/ocaml-3.03a/lib/camlp4/camlp4o.cma
+        Camlp4 Parsing version 3.03 ALPHA
+
+for the standard syntax or 
+
+# #camlp4r;;
+Loading /opt/ocaml-3.03a/lib/camlp4/camlp4r.cma
+        Camlp4 Parsing version 3.03 ALPHA
+
+for the revised syntax. (But you cannot switch between the syntaxes.) 
+
+==============================================================================
+Custom Toploops
+==============================================================================
+
+For some platforms, O'Caml does not implement loading external libraries (e.g. 
+Cygwin). One has to create a so-called custom toploop that statically links 
+with these libraries. Example: 
+
+$ ocamlfind ocamlmktop -o mytop -package findlib,unix -linkpkg
+$ ./mytop
+        Objective Caml version 3.07
+ 
+# #use "topfind";;
+Findlib has been successfully loaded. Additional directives:
+  #require "package";;      to load a package
+  #list;;                   to list the available packages
+  #camlp4o;;                to load camlp4 (standard syntax)
+  #camlp4r;;                to load camlp4 (revised syntax)
+  #predicates "p,q,...";;   to set these predicates
+  Topfind.reset();;         to force that packages will be reloaded
+  #thread;;                 to enable threads
+
+- : unit = ()
+
+Now "#require" works for all libraries referring to the special "unix" 
+functions. 
+
+==============================================================================
+Findlib and scripts
+==============================================================================
+
+The #require directive can also be used in scripts. Example: 
+
+#use "topfind";;
+#require "netstring";;
+
+open Cgi;;
+...
+
+This makes it possible to write scripts that do not contain #directory 
+directives that are specific for certain installations.
+
+For Unix environments, you can start scripts directly if you apply the 
+following trick: 
+
+#! /bin/sh
+# (*
+exec ocaml "$0" "$@"
+*) use "topfind";;
+#require "netstring";;
+
+open Cgi;;
+...
+
+This works wherever O'Caml is installed.
+
+==============================================================================
+Compiling programs
+==============================================================================
+
+Assumed you want to compile a program that uses the Netstring package. Do it 
+the following way: 
+
+$ ocamlfind ocamlc -package netstring -c myprogram.ml
+
+This way you do not need to add "-I" options to locate Netstring.
+
+If you want to create an executable, do not forget to add the -linkpkg switch: 
+
+$ ocamlfind ocamlc -o myprogram -package netstring -linkpkg myprogram.cmo
+
+This switch causes that the mentioned packages are added to the resulting 
+executable.
+
+If you want to include several packages, you can either add several "-package" 
+options, or you can enumerate the packages separated by commas: -package 
+netstring,labltk.
+
+==============================================================================
+Camlp4
+==============================================================================
+
+If you add a -syntax option, the compiler will be told to parse the source file 
+using camlp4: 
+
+$ ocamlfind ocamlc -package netstring -syntax camlp4o -c myprogram.ml
+
+Use -syntax camlp4o for the standard syntax or -syntax camlp4r for the revised 
+syntax.
+
+Additionally, you can mention packages that add new syntax features. The 
+package xstrp4 is an example of this: 
+
+$ ocamlfind ocamlc -package xstrp4,netstring -syntax camlp4o -c myprogram.ml
+
+Now you can use the $ notation that is implemented by xstrp4 in the source file 
+myprogram.ml.
+
+Note that you can also invoke ocamldep from ocamlfind: 
+
+$ ocamlfind ocamldep -package xstrp4 -syntax camlp4o *.ml *.mli >.depend
+
+This enables the syntax extensions, too.
+
+==============================================================================
+ocamlbrowser
+==============================================================================
+
+Since findlib-0.7, it is also possible to start ocamlbrowser from ocamlfind. 
+For example, 
+
+$ ocamlfind browser -package xstrp4
+
+adds the correct path specification such that the modules contained in the 
+package xstrp4 are also displayed. With 
+
+$ ocamlfind browser -all
+
+all package are added to the path spec. 
+
+==============================================================================
+The Makefile wizard
+==============================================================================
+
+There is a wizard that makes it very easy to write Makefiles. Call the wizard 
+by 
+
+$ ocamlfind findlib/make_wizard
+
+(the wizard requires that the labltk library is available). A new window pops 
+up, and by very few clicks you can describe your own library. Finally, a 
+Makefile is written. 
+
+==============================================================================
+There is no magic!
+==============================================================================
+
+Findlib is neither a patch of O'Caml nor uses it internal features of the 
+O'Caml programming environment. It is only a convention to install software 
+components in filesystem hierarchies, a library interpreting this convention, 
+and some frontend applications making the library useable for you.
+
+One important consequence is that you can only refer to those software 
+components that have previously been installed in a way findlib understands. 
+This convention is beyond the scope of this QUICKSTART guide, see the reference 
+manual for details. You can always check whether findlib accepts a component as 
+"findlib package" by the command 
+
+$ ocamlfind list
+
+(this is the same as the #list directive in the toploop). If the package occurs 
+in the list, it is found, otherwise not.
+
+
+--------------------------
+
+[1]   In previous versions, #use "findlib" loaded the library. However, this 
+      caused a name conflict for a certain type of installation. Because of 
+      this, the name of the loader script has been changed to "topfind", but 
+      "findlib", and "ocamlfind" (Debian) are also available for backwards 
+      compatibility.
+
+
+

findlib/findlib-1.2.8/doc/README

+******************************************************************************
+README - The findlib library manager
+******************************************************************************
+
+
+==============================================================================
+Introduction
+==============================================================================
+
+The "findlib" software provides a scheme to manage reusable software components 
+in the form of libraries, and includes tools that support this scheme. A 
+library installed as a findlib component is also called a package. The point is 
+that the findlib scheme allows it to store metainformation about the library, 
+especially how it can be used in programs. The packages are kept in the 
+filesystem hierarchy, but the directory structure is defined by findlib, and 
+there is no way to deviate from this standard. The library contains functions 
+to look the directory up that stores a package, to query metainformation about 
+a package, and to retrieve dependency information about multiple packages. 
+There is also a tool that allows the user to enter queries on the command-line. 
+In order to simplify compilation and linkage, there are new frontends of the 
+various OCaml compilers that can directly deal with packages.  
+
+It is important to understand that findlib is not a general-purpose package 
+manager (like rpm for Linux), and does not support the management of arbitrary 
+files, but only O'Caml libraries. However, there are lots of special functions 
+for libraries. findlib is more comparable with Gnome's pkg-config and Perl's 
+MakeMaker, but of course there are language-specific differences.
+
+The metainformation includes:
+
+-  The necessary command-line arguments to use a library.
+   
+-  Dependencies on other packages.
+   
+-  Version strings.
+   
+These data can be conditional. Possible conditions are certain environmental 
+settings, such as whether the bytecode or the native code compiler is used, or 
+whether the application is multi-threaded. It is also possible that a package 
+behaves differently when a certain other package is selected.
+
+There is special support for scripts. It is possible to load libraries into 
+toploops, including all dependent libraries, with only one command.
+
+Findlib has been developed since March 1999, and has matured for more than four 
+years until the release of version 1.0. One of the important questions during 
+this long period of development was which features are necessary and which not. 
+The result is a utility that follows still simple concepts, but is flexible 
+enough to allow even the description of complex libraries and complex 
+interdependencies.  
+
+==============================================================================
+Documentation
+==============================================================================
+
+See the file QUICKSTART for the most important findlib commands.
+
+There is a User's Guide introducing into the concepts of findlib, especially 
+explaining how to create packages.
+
+The Reference Manual describes commands, directory structure, configuration 
+files, and library routines in detail.
+
+==============================================================================
+Installation
+==============================================================================
+
+See the file INSTALL.
+
+==============================================================================
+Download
+==============================================================================
+
+The current version is announced in the  Objective Caml Link Database [1].  
+
+==============================================================================
+Copyright and License Conditions
+==============================================================================
+
+Findlib is copyright 2003 by Gerd Stolpmann. See the file LICENSE  for the 
+MIT/X11 style license conditions.  Contact me at gerd@gerd-stolpmann.de in case 
+of questions.  
+
+==============================================================================
+List of Changes
+==============================================================================
+
+-  1.2.8: Adding support for ocamlmklib (B. Meurer's patches)
+   Fix for win32 in the configure script.
+   
+-  1.2.7: Fix: if a META file defines several packages, and one of the packages 
+   has a broken dependency, ocamlfind used to report all errors even if the 
+   broken packages were not used. This is now changed - broken subpackages are 
+   ignored when they are not needed, in the same way as broken top-level 
+   packages are ignored when not needed. (Thanks to Sylvain Le Gall for 
+   reporting the problem.)
+   Added -thread and -vmthread switches to "ocamlfind ocamldoc". These actually 
+   only add the right predicates. (Thanks to Vladimir Ivanov for pointing this 
+   problem out.)
+   Package warnings can be emitted by "ocamlfind ocamldoc".
+   
+-  1.2.6: adding META for ocamlbuild
+   Fixes for MinGW/MSYS platform
+   Improved messages
+   
+-  1.2.5: Fix: Again CR deletion... Turns out some OS do not  understand '\r' 
+   but only '\015' (thanks to Isaiah Weiner)
+   Support for Win64 (untested; thanks to David Allsopp)
+   ocamlfind no longer emits auto-generated -ccopt options. These  tend to 
+   accumulate, and it is possible that for large projects  the maximum command 
+   line length is exceeded. Current versions of  the O'Caml compilers do not 
+   need these extra -ccopt anyway, so  this code is completely dropped.
+   
+-  1.2.4: Fix: Bigarray needs unix (Thanks to Markus Mottl)
+   Fix: In the version of camlp4 provided by O'Caml 3.11 various  libraries do 
+   not contain dynlink anymore. Because of this, dynlink  becomes a 
+   prerequisite of camlp4. (Thanks to Martin Jambon)
+   Attempt: Fixing the space issue for paths (Win32). It is unclear  whether it 
+   is solved. (Thanks to Christophe Troestler)
+   
+-  1.2.3: Solving the CR deletion differently, to  make OS X happy.
+   
+-  1.2.2: Fix: Problem with CR character (Cygwin)  (Thanks to David Allsopp)  
+   Fix: Case-insensitive filesystems (partially solved)  (Thanks to David 
+   Allsopp)  
+   Fix: File name with backslashes at the end (Win32; thanks to Dmitry 
+   Grebeniuk)
+   
+-  1.2.1: Fix: Camlp4 rules now activate the stream parser extension
+   
+-  1.2: Fix in build scripts: Prepending $(prefix) when installing safe_camlp4 
+   (thanks to Daniel Janus)
+   Non-existing -I directories are ignored (thanks to Nicolas Pouillard)
+   A script to create a MacOS X package (thanks to Pietro Abate)
+   Better support for Windows (with help from Robert Roessler and David 
+   Allsopp)
+   Support for camlp4 on O'Caml 3.10
+   Fix: "ocamlfind install" with "-patch" option writes now correct META file 
+   for the case that subpackages occur
+   Adding environment variable OCAMLFIND_IGNORE_DUPS_IN to reduce the number of 
+   warnings ocamlfind emits
+   
+-  1.1.2: Bugfix in the META parser: Backslashes are now correctly parsed. 
+   (Thanks to Martin Jambon for finding this problem.)
+   Fixes for platforms that do not support dynamic loading of DLLs.
+   Fixed extraction of camlp4 parameters from packages.
+   
+-  1.1.1: Bugfixes only: Fixed detection of threading model for O'Caml 3.09. 
+   Fixed alternate configuration files.
+   
+-  1.1: Automatic detection of standard compiler options.
+   Liberated the checks whether a package is already installed.
+   The .opt compilers are entered into findlib.conf if available.
+   New: "install" has -optional switch for optional files.
+   New: "install" has -patch-version to patch the version into the installed 
+   META file.
+   New: "install" has -patch-rmpkg to remove subpackages from the installed 
+   META file.
+   New: "install" has -patch-archives which removes non-existing files from 
+   "archive" variables. This is experimental.
+   New: subpackages can be disabled by exists_if.
+   New: Support for toolchains.
+   Fix for "remove": -destdir works again.
+   Fix for "call": CTRL-C works when calling interactive commands.
+   Fix for preprocessor packages: Dependencies on normal packages are resolved.
+   
+-  1.0.4: Fix: In previous versions, "ocamlmktop" set the "toploop" predicate. 
+   It turned out, however, that the toploops generated in this way did not work 
+   properly. For this reason, "ocamlmktop" does not set "toploop" any more for 
+   link time, but instead a new predicate "create_toploop". When the toploop is 
+   executed, the predicate "toploop" is again added.
+   
+-  1.0.3: Fix: The relative position of "-cclib -l"  options on the command 
+   line is preserved. In previous versions, these options were moved to the 
+   beginning of the argument list. This did not work for static link editing; 
+   dynamic link editing was not affected.
+   Fix: The automatic fixup of "threads" dependencies works again. In the 
+   previous version, this was broken.
+   Addition: -format '%(name)' for ocamlfind query.
+   Some minor improvements of the documentation.
+   
+-  1.0.2: Fix: The alternate package layout did not fully work. This is 
+   repaired now, and there are some clarifications about relative directory 
+   paths in the documentation.
+   
+-  1.0.1: Fix: Forgot to install some .cmi files
+   
+-  1.0: It is now possible to divide the description of a package into 
+   subpackages (but there is still only one META file, but with enhanced 
+   syntax). This allows it to describe intra-package dependencies.
+   Predicates in META files can be negated.
+   The "error" variable allows you to detect conditions under which the library 
+   would not work, and to generate error messages.
+   It is possible to refer to archive files installed in other packages.
+   The set of predicates is extended by "package predicates" after the 
+   dependency analysis, making conditions expressable that depend on whether 
+   other packages are selected.
+   The "+=" operator in META files adds words to variables rather than setting 
+   them.
+   The "#thread" directive enables multi-threading in toploops and scripts, if 
+   possible.
+   The "#predicates" directive simplifies the addition of predicates.  
+   Queries: The format specifier %D prints the description of the package. 
+   -long-format includes the description. Short options -r, -l, -d.
+   ocamlfind list -describe prints package descriptions.
+   Support for "ocamlfind ocamldoc". However, the implementation is quite 
+   sloppy.
+   The configuration file is called "findlib.conf" by default, not 
+   "ocamlfind.conf".
+   Removal of "ocamlfind guess".
+   Support for #use "findlib" and #use "ocamlfind" has been removed. The only 
+   remaining way to load findlib is by #use "topfind".
+   There is no longer a thread-safe version of findlib. The user has to ensure 
+   that only one thread uses findlib (which is usually trivial to achieve).
+   ocamlmktop: Directories are no longer automatically added to the search 
+   path. This did not work anyway, and this change forces scripts to always 
+   invoke "#require" to load/enable libraries, for better uniformity.
+   Fixes: num-top works. "ocamlfind ocamlopt -thread" generates a better error 
+   message on non-POSIX systems. "ocamlfind query -descendants" takes 
+   predicates into account (it did not do that in previous versions of 
+   findlib).
+   
+-  0.9: Changes for O'Caml 3.07 (-thread,  -vmthread). Includes Zack's toploop 
+   printers for bigints.
+   
+-  0.8 - 0.8.1: Renamed a lot of modules to avoid name  clashes with O'Caml 
+   core modules. Cygwin: Additional option  -cygpath for "configure". The man 
+   pages have a NAME  section. Bugfix in Makefile wizard.
+   
+-  0.7 - 0.7.2: DLLs: There are now two styles of  installation: DLLs can be 
+   installed in the package  directories (like before), or in a shared 
+   directory  "stublibs". For the first style, there is now an option  "ldconf" 
+   that determines whether the ld.conf file is to be  updated, and if so, which 
+   file. The latter style is enabled  by simply creating a directory "stublibs" 
+   in the site-lib  directory. (In the first version the directory was called  
+   "libexec". By user request, the name of the DLL directory  has been changed 
+   to "stublibs".)
+   "ocamlfind install" preserves now the mtime of the files.
+   "ocamlfind printconf" is more flexible, and easier to call  from scripts.
+   "ocamlfind browser" calls ocamlbrowser with the right -I  options.
+   "ocamlfind query": -descendants implies now -recursive.
+   "ocamlfind ocamldep": -native-filter and -bytecode-filter for more  exact 
+   dependency generation.
+   There may be now postinstall and postremove scripts.
+   "ocamlfind pkg/cmd": This syntax can be used to call the program cmd  that 
+   is installed in the package directory for pkg. Intended to  simplify the 
+   invocation of programs that are installed in package  directories and not in 
+   XXX/bin, which may be useful for package-  related tools.
+   Findlib has now a toolbox containing helpful programs besides  ocamlfind. 
+   For the beginning, there is a Makefile wizard that  can be called by 
+   "ocamlfind findlib/make_wizard".
+   #use "topfind" instead of #use "findlib" to avoid name clashes  in a certain 
+   configuration. #use "findlib" and #use "ocamlfind"  are still supported for 
+   backward compatibility if the name clash  does not occur.
+   Fix: bytecode threads work again. (The wrong unix library was  linked for 
+   recent O'Caml versions.)
+   Many smaller improvements; the docs have been updated.
+   
+-  0.6 - 0.6.2: Minor changes for Ocaml-3.03-alpha  (and later for 3.04). New 
+   #list directive. New: #use  "findlib" loads the findlib directives into 
+   every toploop  (Ocaml-3.03-alpha).
+   The file ld.conf is automatically updated when DLLs are  installed or 
+   removed.
+   Fix: /tmp/findlib_initf* no longer overflows. The thread  library is now 
+   always the first linked library.
+   
+-  0.5 - 0.5.4: Findlib has now a configuration  file (see documentation under 
+   findlib.conf). Much more  environment variables. The location of the 
+   standard library is  now configurable at runtime.  
+   The package search path can now be selected independently  of the package 
+   installation directory.
+   New commands: ocamlfind list, ocamlfind printconf, ocamlfind guess  (See 
+   documentation under ocamlfind)
+   Optional alternate directory layout: All META files go into  a separate 
+   directory (see documentation under site-lib).
+   Findlib works now only for O'Caml 3; support for O'Caml 2 has been  dropped. 
+   As a consequence, the "configure" script could be  simplified; it is no 
+   longer necessary to figure out the  linker options.
+   Improved support for camlp4: New directives #camlp4o and  #camlp4r for the 
+   toploop.
+   ocamlfind now detects whether two selected packages have  equally named 
+   toplevel modules, and prints a warning in this case.
+   There is a downstripped version ocamlfind-mini (see directory  "mini"). This 
+   is a one-file script that can be easily  distributed with any software. 
+   ocamlfind-mini has reduced  functionality, but it is sufficient to compile 
+   and install a  library. (But it does not support using a library.)
+   Support for the Cygwin port of O'Caml.
+   Installation of packages: The file permissions are  preserved when files are 
+   installed. However, the umask is  applied. The "install" and "remove" 
+   subcommands have better  diagnostics.
+   ocamlfind ocamlmktop: Generates now initialization code for the  include 
+   path. You don't need to call your toploop with -I  options any more. 
+   Furthermore, this fixes some problems with  packages that add printers to 
+   the toploop.
+   New: ocamlfind ocamldep. ocamlfind is now prepared for the new  -pp option 
+   of ocamldep (upcoming Ocaml 3.03).
+   Installation of findlib: New PREFIX variable in Makefile to  install 
+   locally.
+   Fixes: itest. ocamlfind query -descendants works again.
+   
+-  0.4: Experimental support for camlp4 (see FAQ  section in the manual). New 
+   environment variable  OCAMLFIND_COMMANDS (see ocamlfind(1)).  
+   
+-  0.3 - 0.3.1: Necessary updates for O'Caml 3. Bugfix: Findlib did not work 
+   for bytecode threads. The reason was that findlib added the directory of the 
+   stdlib to the search path. Works now.  
+   
+Older changes are no longer documented.
+
+
+--------------------------
+
+[1]   see http://links.camlcity.org
+
+
+

findlib/findlib-1.2.8/doc/guide-html/TIMESTAMP

Empty file added.

findlib/findlib-1.2.8/doc/guide-html/c157.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>Dependency analysis of packages</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="HOME"
+TITLE="The findlib User's Guide"
+HREF="index.html"><LINK
+REL="UP"
+TITLE="User's Guide"
+HREF="p35.html"><LINK
+REL="PREVIOUS"
+TITLE="Linker options"
+HREF="x145.html"><LINK
+REL="NEXT"
+TITLE="Querying descendants"
+HREF="x176.html"></HEAD
+><BODY
+CLASS="CHAPTER"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>The findlib User's Guide</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="x145.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="x176.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="CHAPTER"
+><H1
+><A
+NAME="AEN157"
+></A
+>Chapter 3. Dependency analysis of packages</H1
+><DIV
+CLASS="TOC"
+><DL
+><DT
+><B
+>Table of Contents</B
+></DT
+><DT
+><A
+HREF="c157.html#AEN159"
+>Querying ancestors</A
+></DT
+><DT
+><A
+HREF="x176.html"
+>Querying descendants</A
+></DT
+></DL
+></DIV
+><DIV
+CLASS="SECT1"
+><H1
+CLASS="SECT1"
+><A
+NAME="AEN159"
+>Querying ancestors</A
+></H1
+><P
+>Every package denotes in its META file only the list of direct
+ancestors. The theoretical model of the dependency relation is a
+directed acyclic graph (DAG), with the packages as vertices and edges
+from packages to their direct ancestors. The graph must be acyclic
+because OCaml does not allow cyclic dependencies between modules.</P
+><P
+>What happens if you query something like</P
+><PRE
+CLASS="PROGRAMLISTING"
+>ocamlfind query -recursive p1 p2 ... pN</PRE
+><P
+>is that the named packages p1 to pN are marked in the graph, and that
+repeatedly all direct ancestors of marked packages are marked, too,
+until there is not any marked package remaining with an unmarked
+ancestor. All marked packages are then printed in topological
+order. This simply means that for the printed packages p1 to pM holds
+that if pI is printed before pJ then pI is a (possibly indirect)
+ancestor of pJ.</P
+><P
+>The topological order plays a role when the link command is
+constructed by "ocamlfind ocamlc", as Ocaml requires that archives
+must be linked in topological order. For example, the link statement</P
+><PRE
+CLASS="PROGRAMLISTING"
+>ocamlfind ocamlc -o another -package q -linkpkg another.ml</PRE
+><P
+>must be turned into the effective command</P
+><PRE
+CLASS="PROGRAMLISTING"
+>ocamlc -o another [...more options...] p.cma q.cma another.ml</PRE
+><P
+>and <SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>not</I
+></SPAN
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+>ocamlc -o another [...more options...] q.cma p.cma another.ml</PRE
+><P
+>because there are references from q.cma to p.cma.</P
+><P
+>In C, there is a similar requirement when linking static archives. The
+linker backend ld wants the archives in <SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>reversed</I
+></SPAN
+>
+topological order, i.e. the deepest ancestor must come last in the
+list of linked archives. Because of this, the additional linker
+options specified in the "linkopts" variable are passed in reversed
+order to the underlying linker. This means that you can refer to C
+libraries of ancestor packages of p in C libraries provided in p.</P
+><P
+>Note that most operating systems do not require any specific order for
+dynamically linked C libraries (the exception is, surprise!, AIX).</P
+></DIV
+></DIV
+><DIV
+CLASS="NAVFOOTER"
+><HR
+ALIGN="LEFT"
+WIDTH="100%"><TABLE
+SUMMARY="Footer navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+><A
+HREF="x145.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="index.html"
+ACCESSKEY="H"
+>Home</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+><A
+HREF="x176.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+><TR
+><TD
+WIDTH="33%"
+ALIGN="left"
+VALIGN="top"
+>Linker options</TD
+><TD
+WIDTH="34%"
+ALIGN="center"
+VALIGN="top"
+><A
+HREF="p35.html"
+ACCESSKEY="U"
+>Up</A
+></TD
+><TD
+WIDTH="33%"
+ALIGN="right"
+VALIGN="top"
+>Querying descendants</TD
+></TR
+></TABLE
+></DIV
+></BODY
+></HTML
+>

findlib/findlib-1.2.8/doc/guide-html/c188.html

+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+>A new frontend for ocamlc</TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
+REL="HOME"
+TITLE="The findlib User's Guide"
+HREF="index.html"><LINK
+REL="UP"
+TITLE="User's Guide"
+HREF="p35.html"><LINK
+REL="PREVIOUS"
+TITLE="Querying descendants"
+HREF="x176.html"><LINK
+REL="NEXT"
+TITLE="Toploops and runtime systems"
+HREF="x227.html"></HEAD
+><BODY
+CLASS="CHAPTER"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="NAVHEADER"
+><TABLE
+SUMMARY="Header navigation table"
+WIDTH="100%"
+BORDER="0"
+CELLPADDING="0"
+CELLSPACING="0"
+><TR
+><TH
+COLSPAN="3"
+ALIGN="center"
+>The findlib User's Guide</TH
+></TR
+><TR
+><TD
+WIDTH="10%"
+ALIGN="left"
+VALIGN="bottom"
+><A
+HREF="x176.html"
+ACCESSKEY="P"
+>Prev</A
+></TD
+><TD
+WIDTH="80%"
+ALIGN="center"
+VALIGN="bottom"
+></TD
+><TD
+WIDTH="10%"
+ALIGN="right"
+VALIGN="bottom"
+><A
+HREF="x227.html"
+ACCESSKEY="N"
+>Next</A
+></TD
+></TR
+></TABLE
+><HR
+ALIGN="LEFT"
+WIDTH="100%"></DIV
+><DIV
+CLASS="CHAPTER"
+><H1
+><A
+NAME="AEN188"
+></A
+>Chapter 4. A new frontend for ocamlc</H1
+><DIV
+CLASS="TOC"
+><DL
+><DT
+><B
+>Table of Contents</B
+></DT
+><DT
+><A
+HREF="c188.html#AEN190"
+>Compiling and linking</A
+></DT
+><DT
<