camlspotter avatar camlspotter committed 4183f48

findlib-1.3.2

Comments (0)

Files changed (179)

Add a comment to this file

findlib/findlib-1.3.2.tar.gz

Binary file added.

findlib/findlib-1.3.2/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.3.2/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.3.2/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.3.2/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.3.2/configure

+#! /bin/sh
+# $Id: configure 175 2012-06-08 12:12:40Z gerd $
+# ----------------------------------------------------------------------
+#
+
+# Some functions
+
+#set -x
+
+version="1.3.2"
+
+# 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
+
+# compiler-libs?
+if [ -d "${ocaml_core_stdlib}/compiler-libs" ]; then
+    echo "compiler-libs: found"
+    lcomplibs="compiler-libs"
+else
+    echo "compiler-libs: not present"
+    lcomplibs=""
+fi
+
+
+# Generate the META files now.
+
+l="dbm dynlink graphics num num-top str threads unix stdlib bigarray $llabltk $lcamlp4 $lobuild $lcomplibs"
+
+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.3.2/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.3.2/doc/Makefile

+DOCBOOK_HTML  = /usr/share/sgml/docbook/stylesheet/dsssl/modular/html
+DOCBOOK_PRINT = /usr/share/sgml/docbook/stylesheet/dsssl/modular/print
+SRC = $(PWD)/src
+
+EXPORTED = findlib.mli fl_package_base.mli fl_metascanner.mli topfind.mli
+
+.PHONY: guide-html ref-html ref-man
+
+default: guide-html ref-html ref-man README QUICKSTART
+
+guide-html: guide-html/TIMESTAMP
+ref-html: ref-html/TIMESTAMP
+ref-man: ref-man/TIMESTAMP
+
+guide-html/TIMESTAMP: src/*.sgml src/*.mod QUICKSTART.xml common.xml config.xml
+	mkdir -p guide-html
+	cd guide-html; \
+	rm -f *.htm*; \
+	jade -t sgml -D$(DOCBOOK_HTML) -D$(SRC) findlib.sgml; \
+	true
+	readme -html QUICKSTART.xml >guide-html/quickstart.html
+	touch guide-html/TIMESTAMP
+
+ref-html/TIMESTAMP: src/*.sgml src/*.mod common.xml config.xml $(EXPORTED:%=../src/findlib/%)
+	mkdir -p ref-html
+	cd ref-html; \
+	rm -f *.htm*; \
+	jade -t sgml -D$(DOCBOOK_HTML) -D$(SRC) findlib_ref.sgml; \
+	true
+	mkdir -p ref-html/lib
+	cd ../src/findlib && \
+	ocamldoc -html -d $(PWD)/ref-html/lib -stars -t "The Findlib Library" $(EXPORTED)
+	touch ref-html/TIMESTAMP
+
+src/findlib_reference.xml: src/*.sgml src/*.mod
+	sgml2xml -D$(DOCBOOK_HTML) -D$(SRC) \
+		findlib_reference.sgml >src/findlib_reference.xml ; \
+	true
+
+ref-man/TIMESTAMP: src/findlib_reference.xml
+	mkdir -p ref-man
+	cd ref-man; \
+	rm -f *.[0-9] TIMESTAMP; \
+	db2man <../src/findlib_reference.xml
+	touch ref-man/TIMESTAMP
+
+# Unfortunately, output of ocamldoc -man is too bad to be useful.
+#	cd ../src/findlib && \
+#	ocamldoc -man -man-mini -d $(PWD)/ref-man -man-suffix 3 -stars -t "The Findlib Library" $(EXPORTED)
+
+.SUFFIXES: .xml .sgml
+
+.sgml.xml: 
+	sx -xndata $< >$@; true
+
+
+
+clean:
+	rm -rf guide-html guide-man
+	rm -f src/*.xml
+
+distclean:
+	rm -f src/*.xml
+	rm -f src/*~
+	rm -f *~
+
+QUICKSTART: QUICKSTART.xml
+	readme -text QUICKSTART.xml >QUICKSTART
+
+README: README.xml
+	readme -text README.xml >README
+

findlib/findlib-1.3.2/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.3.2/doc/QUICKSTART.xml

+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE readme SYSTEM "readme.dtd" [
+
+<!ENTITY % common SYSTEM "common.xml">
+%common;
+
+<!-- Special HTML config: -->
+<!ENTITY % readme:html:up '<a href="../..">up</a>'>
+
+<!ENTITY % config SYSTEM "config.xml">
+%config;
+
+]>
+
+<readme title="QUICKSTART - The most important ways to use findlib">
+  <sect1>
+    <title>Intro</title>
+    <p>See the file INSTALL for instructions how to build and install
+findlib.</p>
+  </sect1>
+
+  <sect1>
+    <title>Findlib and the toploop</title> 
+
+<p>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".</p>
+
+    <p>After the toploop has been started, it is possible to load the special
+findlib support:<footnote>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.</footnote>
+
+<code>
+$ 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 = ()
+</code>
+
+You can now list the available packages:
+
+<code>
+# #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)
+</code>
+
+and load packages by simply typing:
+
+<code>
+# #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
+</code>
+
+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.</p>
+
+    <p>You can also enable the Camlp4 parsers by simply typing
+
+<code>
+# #camlp4o;;
+Loading /opt/ocaml-3.03a/lib/camlp4/camlp4o.cma
+        Camlp4 Parsing version 3.03 ALPHA
+</code>
+
+for the standard syntax or
+
+<code>
+# #camlp4r;;
+Loading /opt/ocaml-3.03a/lib/camlp4/camlp4r.cma
+        Camlp4 Parsing version 3.03 ALPHA
+</code>
+
+for the revised syntax. (But you cannot switch between the syntaxes.)
+</p>
+  </sect1>
+
+  <sect1>
+    <title>Custom Toploops</title>
+
+    <p>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:
+
+<code>
+$ 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 = ()
+</code>
+
+Now "#require" works for all libraries referring to the special "unix"
+functions.
+</p>
+  </sect1>
+
+  <sect1>
+    <title>Findlib and scripts</title>
+
+    <p>The #require directive can also be used in scripts. Example:
+
+<code>
+#use "topfind";;
+#require "netstring";;
+
+open Cgi;;
+...
+</code>
+
+This makes it possible to write scripts that do not contain #directory
+directives that are specific for certain installations.</p>
+
+    <p>For Unix environments, you can start scripts directly if you
+apply the following trick:
+
+<code>
+#! /bin/sh
+# (*
+exec ocaml "$0" "$@"
+*) use "topfind";;
+#require "netstring";;
+
+open Cgi;;
+...
+</code>
+
+This works wherever O'Caml is installed.</p>
+  </sect1>
+
+  <sect1>
+    <title>Compiling programs</title>
+
+    <p>Assumed you want to compile a program that uses the Netstring package.
+Do it the following way:
+
+<code>
+$ ocamlfind ocamlc -package netstring -c myprogram.ml
+</code>
+
+This way you do not need to add "-I" options to locate Netstring.</p>
+
+    <p>If you want to create an executable, do not forget to add the
+-linkpkg switch:
+
+<code>
+$ ocamlfind ocamlc -o myprogram -package netstring -linkpkg myprogram.cmo
+</code>
+
+This switch causes that the mentioned packages are added to the resulting
+executable.</p>
+
+    <p>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.</p>
+  </sect1>
+
+  <sect1>
+    <title>Camlp4</title>
+
+    <p>If you add a -syntax option, the compiler will be told to parse the
+source file using camlp4:
+
+<code>
+$ ocamlfind ocamlc -package netstring -syntax camlp4o -c myprogram.ml
+</code>
+
+Use -syntax camlp4o for the standard syntax or -syntax camlp4r for the
+revised syntax.</p>
+
+    <p>Additionally, you can mention packages that add new syntax features.
+The package xstrp4 is an example of this:
+
+<code>
+$ ocamlfind ocamlc -package xstrp4,netstring -syntax camlp4o -c myprogram.ml
+</code>
+
+Now you can use the $ notation that is implemented by xstrp4 in the
+source file myprogram.ml.</p>
+
+    <p>Note that you can also invoke ocamldep from ocamlfind:
+
+<code>
+$ ocamlfind ocamldep -package xstrp4 -syntax camlp4o *.ml *.mli &gt;.depend
+</code>
+
+This enables the syntax extensions, too.</p>
+  </sect1>
+
+  <sect1>
+    <title>ocamlbrowser</title>
+    <p>Since findlib-0.7, it is also possible to start ocamlbrowser from
+ocamlfind. For example,
+
+<code>
+$ ocamlfind browser -package xstrp4
+</code>
+
+adds the correct path specification such that the modules contained in the
+package xstrp4 are also displayed. With
+
+<code>
+$ ocamlfind browser -all
+</code>
+
+all package are added to the path spec.
+</p>
+  </sect1>
+
+  <sect1>
+    <title>The Makefile wizard</title>
+    <p>There is a wizard that makes it very easy to write Makefiles. Call the
+wizard by
+<code>
+$ ocamlfind findlib/make_wizard
+</code>
+(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.
+</p>
+  </sect1>
+
+  <sect1>
+    <title>There is no magic!</title>
+
+    <p>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.</p>
+
+    <p>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
+
+<code>
+$ ocamlfind list
+</code>
+
+(this is the same as the #list directive in the toploop). If the package
+occurs in the list, it is found, otherwise not.</p>
+  </sect1>
+</readme>
+

findlib/findlib-1.3.2/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 1999-2012 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.3.2: Handling of empty arguments (Wojciech Meyer).
+   Added entry for camlp4.fulllib.
+   New switch -add for "ocamlfind install" (Hans Ole Rafaelsen).
+   Further fixes for ocaml-4.00.
+   Fixing the recognition of double .cmi interface files.
+   Fixing -dontlink (it is now deeply interpreted).
+   
+-  1.3.1: Fixing a bug with ocamlmklib that slipped through in 1.3.0
+   
+-  1.3.0: Fixes for ocaml-4.00 (especially topfind).
+   Emitting an error if the configuration file does not exist.
+   Emitting a warning if the selected toolchain does not exist.
+   camlp4 is referenced by "+camlp4" in META.
+   Including the sources for the documentation in the tarball.
+   License change (simplification) for num_top_printers.mli.
+   Fix ocamlmklib wrapper: processing contracted args (like -L/dir) correctly.
+   Many wrappers get a new option -passrest instructing to pass all remaining 
+   options on the command-line unchanged to the invoked tool.
+   Prettified -help output.
+   
+-  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.
+