summaryrefslogtreecommitdiffstats
path: root/build/install.sh
diff options
context:
space:
mode:
Diffstat (limited to 'build/install.sh')
-rwxr-xr-xbuild/install.sh491
1 files changed, 491 insertions, 0 deletions
diff --git a/build/install.sh b/build/install.sh
new file mode 100755
index 000000000..673e35f3a
--- /dev/null
+++ b/build/install.sh
@@ -0,0 +1,491 @@
+#!/bin/sh
+set -e
+
+cd `dirname $0`/..
+
+source config/config.sh
+
+not_installed=$PWD/_build/not_installed
+
+rm -f $not_installed
+
+wontinstall() {
+ echo $1 >> $not_installed
+}
+
+installbin() {
+ if [ -f "$1" ]; then
+ echo " install binary $2"
+ cp -f $1 $2
+ [ -x $2 ] || chmod +x $2
+ else
+ wontinstall $1
+ fi
+}
+
+installbestbin() {
+ if [ -f "$1" ]; then
+ echo " install binary $3 (with `basename $1`)"
+ cp -f $1 $3
+ else
+ if [ -f "$2" ]; then
+ echo " install binary $3 (with `basename $2`)"
+ cp -f $2 $3
+ else
+ echo "None of $1, $2 exists"
+ exit 3
+ fi
+ fi
+ [ -x $3 ] || chmod +x $3
+}
+
+installlib() {
+ if [ -f "$1" ]; then
+ dest=$2/`basename $1`
+ echo " install library $dest"
+ cp -f $1 $2
+ ranlib $dest
+ else
+ wontinstall $1
+ fi
+}
+
+installdir() {
+ args=""
+ while [ $# -gt 1 ]; do
+ if [ -f "$1" ]; then
+ args="$args $1"
+ else
+ wontinstall $1
+ fi
+ shift
+ done
+ last=$1
+ for file in $args; do
+ echo " install $last/`basename $file`"
+ cp -f $file $last
+ done
+}
+
+installlibdir() {
+ args=""
+ while [ $# -gt 1 ]; do
+ args="$args $1"
+ shift
+ done
+ last=$1
+ for file in $args; do
+ installlib $file $last
+ done
+}
+
+mkdir -p $BINDIR
+mkdir -p $LIBDIR
+mkdir -p $LIBDIR/caml
+mkdir -p $LIBDIR/camlp4
+mkdir -p $LIBDIR/vmthreads
+mkdir -p $LIBDIR/threads
+mkdir -p $LIBDIR/labltk
+mkdir -p $LIBDIR/ocamlbuild
+mkdir -p $LIBDIR/ocamldoc
+mkdir -p $STUBLIBDIR
+mkdir -p $MANDIR/man3
+mkdir -p $MANDIR/man$MANEXT
+
+echo "Installing core libraries..."
+installlibdir byterun/libcamlrun.{$A,p.$A} \
+ asmrun/libasmrun.{$A,p.$A} \
+ asmrun/libasmrunp.{$A,p.$A} \
+ $LIBDIR
+
+PUBLIC_INCLUDES="\
+ alloc.h callback.h config.h custom.h fail.h intext.h \
+ memory.h misc.h mlvalues.h printexc.h signals.h compatibility.h"
+
+cd byterun
+for i in $PUBLIC_INCLUDES; do
+ echo " install caml/$i"
+ sed -f ../tools/cleanup-header $i > $LIBDIR/caml/$i
+done
+cd ..
+
+installdir byterun/ocamlrun.dll yacc/ocamlyacc byterun/ocamlrun $BINDIR
+
+installdir byterun/ld.conf $LIBDIR
+
+installbin win32caml/ocamlwin.exe $PREFIX/OCamlWin.exe
+
+cd _build
+
+echo "Installing the toplevel and compilers..."
+installbin ocaml$EXE $BINDIR/ocaml$EXE
+installbin ocamlc$EXE $BINDIR/ocamlc$EXE
+installbin ocamlopt$EXE $BINDIR/ocamlopt$EXE
+installbin ocamlc.opt$EXE $BINDIR/ocamlc.opt$EXE
+installbin ocamlopt.opt$EXE $BINDIR/ocamlopt.opt$EXE
+
+set=set # coloration workaround
+
+echo "Installing the standard library..."
+installdir \
+ stdlib/stdlib.cma \
+ stdlib/stdlib{,.p}.cmxa \
+ stdlib/camlheader \
+ stdlib/camlheader_ur \
+ stdlib/std_exit.cm[io] \
+ stdlib/arg.{cmi,mli} \
+ stdlib/array.{cmi,mli} \
+ stdlib/arrayLabels.{cmi,mli} \
+ stdlib/buffer.{cmi,mli} \
+ stdlib/callback.{cmi,mli} \
+ stdlib/camlinternalMod.{cmi,mli} \
+ stdlib/camlinternalOO.{cmi,mli} \
+ stdlib/char.{cmi,mli} \
+ stdlib/complex.{cmi,mli} \
+ stdlib/digest.{cmi,mli} \
+ stdlib/filename.{cmi,mli} \
+ stdlib/format.{cmi,mli} \
+ stdlib/gc.{cmi,mli} \
+ stdlib/genlex.{cmi,mli} \
+ stdlib/hashtbl.{cmi,mli} \
+ stdlib/int32.{cmi,mli} \
+ stdlib/int64.{cmi,mli} \
+ stdlib/lazy.{cmi,mli} \
+ stdlib/lexing.{cmi,mli} \
+ stdlib/list.{cmi,mli} \
+ stdlib/listLabels.{cmi,mli} \
+ stdlib/map.{cmi,mli} \
+ stdlib/marshal.{cmi,mli} \
+ stdlib/moreLabels.{cmi,mli} \
+ stdlib/nativeint.{cmi,mli} \
+ stdlib/obj.{cmi,mli} \
+ stdlib/oo.{cmi,mli} \
+ stdlib/parsing.{cmi,mli} \
+ stdlib/pervasives.{cmi,mli} \
+ stdlib/printexc.{cmi,mli} \
+ stdlib/printf.{cmi,mli} \
+ stdlib/queue.{cmi,mli} \
+ stdlib/random.{cmi,mli} \
+ stdlib/scanf.{cmi,mli} \
+ stdlib/sort.{cmi,mli} \
+ stdlib/stack.{cmi,mli} \
+ stdlib/stdLabels.{cmi,mli} \
+ stdlib/stream.{cmi,mli} \
+ stdlib/string.{cmi,mli} \
+ stdlib/stringLabels.{cmi,mli} \
+ stdlib/sys.{cmi,mli} \
+ stdlib/weak.{cmi,mli} \
+ stdlib/$set.{cmi,mli} \
+ stdlib/arg{,.p}.{cmx,$O} \
+ stdlib/array{,.p}.{cmx,$O} \
+ stdlib/arrayLabels{,.p}.{cmx,$O} \
+ stdlib/buffer{,.p}.{cmx,$O} \
+ stdlib/callback{,.p}.{cmx,$O} \
+ stdlib/camlinternalMod{,.p}.{cmx,$O} \
+ stdlib/camlinternalOO{,.p}.{cmx,$O} \
+ stdlib/char{,.p}.{cmx,$O} \
+ stdlib/complex{,.p}.{cmx,$O} \
+ stdlib/digest{,.p}.{cmx,$O} \
+ stdlib/filename{,.p}.{cmx,$O} \
+ stdlib/format{,.p}.{cmx,$O} \
+ stdlib/gc{,.p}.{cmx,$O} \
+ stdlib/genlex{,.p}.{cmx,$O} \
+ stdlib/hashtbl{,.p}.{cmx,$O} \
+ stdlib/int32{,.p}.{cmx,$O} \
+ stdlib/int64{,.p}.{cmx,$O} \
+ stdlib/lazy{,.p}.{cmx,$O} \
+ stdlib/lexing{,.p}.{cmx,$O} \
+ stdlib/list{,.p}.{cmx,$O} \
+ stdlib/listLabels{,.p}.{cmx,$O} \
+ stdlib/map{,.p}.{cmx,$O} \
+ stdlib/marshal{,.p}.{cmx,$O} \
+ stdlib/moreLabels{,.p}.{cmx,$O} \
+ stdlib/nativeint{,.p}.{cmx,$O} \
+ stdlib/obj{,.p}.{cmx,$O} \
+ stdlib/oo{,.p}.{cmx,$O} \
+ stdlib/parsing{,.p}.{cmx,$O} \
+ stdlib/pervasives{,.p}.{cmx,$O} \
+ stdlib/printexc{,.p}.{cmx,$O} \
+ stdlib/printf{,.p}.{cmx,$O} \
+ stdlib/queue{,.p}.{cmx,$O} \
+ stdlib/random{,.p}.{cmx,$O} \
+ stdlib/scanf{,.p}.{cmx,$O} \
+ stdlib/sort{,.p}.{cmx,$O} \
+ stdlib/stack{,.p}.{cmx,$O} \
+ stdlib/stdLabels{,.p}.{cmx,$O} \
+ stdlib/std_exit{,.p}.{cmx,$O} \
+ stdlib/stream{,.p}.{cmx,$O} \
+ stdlib/string{,.p}.{cmx,$O} \
+ stdlib/stringLabels{,.p}.{cmx,$O} \
+ stdlib/sys{,.p}.{cmx,$O} \
+ stdlib/weak{,.p}.{cmx,$O} \
+ stdlib/$set{,.p}.{cmx,$O} \
+ $LIBDIR
+
+installlibdir \
+ stdlib/stdlib.{$A,p.$A} \
+ $LIBDIR
+
+echo "Installing ocamllex, ocamldebug..."
+installbin lex/ocamllex$EXE $BINDIR/ocamllex$EXE
+installbin debugger/ocamldebug$EXE $BINDIR/ocamldebug$EXE
+installbin lex/ocamllex.opt$EXE $BINDIR/ocamllex.opt$EXE
+installbin tools/ocamldep.native$EXE $BINDIR/ocamldep.opt$EXE
+
+echo "Installing some tools..."
+installbin tools/ocamlcp.byte$EXE $BINDIR/ocamlcp$EXE
+installbin tools/ocamldep.byte$EXE $BINDIR/ocamldep$EXE
+installbin tools/ocamlmklib.byte$EXE $BINDIR/ocamlmklib$EXE
+installbin tools/ocamlmktop.byte$EXE $BINDIR/ocamlmktop$EXE
+installbin tools/ocamlprof.byte$EXE $BINDIR/ocamlprof$EXE
+installbin toplevel/expunge.byte$EXE $LIBDIR/expunge$EXE
+installbin tools/addlabels.byte $LIBDIR/addlabels
+installbin tools/scrapelabels.byte $LIBDIR/scrapelabels
+installbin otherlibs/dynlink/extract_crc.byte $LIBDIR/extract_crc
+installbin otherlibs/labltk/lib/labltk$EXE $BINDIR/labltk$EXE
+installbin otherlibs/labltk/compiler/tkcompiler$EXE $BINDIR/tkcompiler$EXE
+installbin otherlibs/labltk/browser/ocamlbrowser$EXE $BINDIR/ocamlbrowser$EXE
+installbin otherlibs/labltk/compiler/pp$EXE $LIBDIR/labltk/pp$EXE
+installbin otherlibs/labltk/lib/labltktop$EXE $LIBDIR/labltk/labltktop$EXE
+
+echo "Installing libraries..."
+installdir \
+ otherlibs/bigarray/bigarray.cma \
+ otherlibs/dbm/dbm.cma \
+ otherlibs/dynlink/dynlink.cma \
+ otherlibs/{,win32}graph/graphics.cma \
+ otherlibs/num/nums.cma \
+ otherlibs/str/str.cma \
+ otherlibs/{,win32}unix/unix.cma \
+ otherlibs/bigarray/bigarray{,.p}.cmxa \
+ otherlibs/dbm/dbm{,.p}.cmxa \
+ otherlibs/{,win32}graph/graphics{,.p}.cmxa \
+ otherlibs/num/nums{,.p}.cmxa \
+ otherlibs/str/str{,.p}.cmxa \
+ otherlibs/{,win32}unix/unix{,.p}.cmxa \
+ toplevel/toplevellib.cma \
+ otherlibs/systhreads/thread.mli \
+ otherlibs/systhreads/mutex.mli \
+ otherlibs/systhreads/condition.mli \
+ otherlibs/systhreads/event.mli \
+ otherlibs/systhreads/threadUnix.mli \
+ $LIBDIR
+
+installdir \
+ otherlibs/labltk/support/fileevent.{mli,cmi,cmx} \
+ otherlibs/labltk/support/protocol.{mli,cmi,cmx} \
+ otherlibs/labltk/support/textvariable.{mli,cmi,cmx} \
+ otherlibs/labltk/support/timer.{mli,cmi,cmx} \
+ otherlibs/labltk/support/rawwidget.{mli,cmi,cmx} \
+ otherlibs/labltk/support/widget.{mli,cmi,cmx} \
+ otherlibs/labltk/support/tkthread.{mli,cmi,cmo} \
+ otherlibs/labltk/support/tkthread.$O \
+ otherlibs/labltk/labltk/*.mli \
+ otherlibs/labltk/labltk/*.cmi \
+ otherlibs/labltk/labltk/*.cmx \
+ otherlibs/labltk/camltk/*.mli \
+ otherlibs/labltk/camltk/*.cmi \
+ otherlibs/labltk/camltk/*.cmx \
+ otherlibs/labltk/frx/frxlib.cma \
+ otherlibs/labltk/frx/frxlib.cmxa \
+ otherlibs/labltk/frx/*.mli \
+ otherlibs/labltk/frx/*.cmi \
+ otherlibs/labltk/frx/*.cmx \
+ otherlibs/labltk/jpf/jpflib.cma \
+ otherlibs/labltk/jpf/jpflib.cmxa \
+ otherlibs/labltk/jpf/*.mli \
+ otherlibs/labltk/jpf/*.cmi \
+ otherlibs/labltk/jpf/*.cmx \
+ otherlibs/labltk/lib/labltk.cma \
+ otherlibs/labltk/lib/labltk.cmxa \
+ otherlibs/labltk/tkanim/*.mli \
+ otherlibs/labltk/tkanim/*.cmi \
+ otherlibs/labltk/tkanim/tkanim.cma \
+ otherlibs/labltk/tkanim/tkanim.cmxa \
+ $LIBDIR/labltk
+
+installdir \
+ otherlibs/systhreads/threads.cma \
+ otherlibs/systhreads/threads{,.p}.cmxa \
+ otherlibs/systhreads/thread.cmi \
+ otherlibs/systhreads/mutex.cmi \
+ otherlibs/systhreads/condition.cmi \
+ otherlibs/systhreads/event.cmi \
+ otherlibs/systhreads/threadUnix.cmi \
+ $LIBDIR/threads
+
+installdir \
+ otherlibs/bigarray/dllbigarray$EXT_DLL \
+ otherlibs/dbm/dllmldbm$EXT_DLL \
+ otherlibs/{,win32}graph/dllgraphics$EXT_DLL \
+ otherlibs/num/dllnums$EXT_DLL \
+ otherlibs/str/dllstr$EXT_DLL \
+ otherlibs/systhreads/dllthreads$EXT_DLL \
+ otherlibs/{,win32}unix/dllunix$EXT_DLL \
+ otherlibs/threads/dllvmthreads$EXT_DLL \
+ otherlibs/labltk/support/dlllabltk$EXT_DLL \
+ otherlibs/labltk/tkanim/dlltkanim$EXT_DLL \
+ $STUBLIBDIR
+
+installlibdir \
+ otherlibs/threads/libvmthreads.$A \
+ $LIBDIR/vmthreads
+
+installdir \
+ otherlibs/threads/thread.{cmi,mli} \
+ otherlibs/threads/mutex.{cmi,mli} \
+ otherlibs/threads/condition.{cmi,mli} \
+ otherlibs/threads/event.{cmi,mli} \
+ otherlibs/threads/threadUnix.{cmi,mli} \
+ otherlibs/threads/threads.cma \
+ otherlibs/threads/stdlib.cma \
+ otherlibs/threads/unix.cma \
+ $LIBDIR/vmthreads
+
+installlibdir \
+ otherlibs/labltk/support/liblabltk.$A \
+ otherlibs/labltk/lib/labltk.$A \
+ otherlibs/labltk/jpf/jpflib.$A \
+ otherlibs/labltk/tkanim/libtkanim.$A \
+ otherlibs/labltk/tkanim/tkanim.$A \
+ otherlibs/labltk/frx/frxlib.$A \
+ $LIBDIR/labltk
+
+installlibdir \
+ otherlibs/bigarray/libbigarray.{$A,p.$A} \
+ otherlibs/dbm/libmldbm.{$A,p.$A} \
+ otherlibs/{,win32}graph/libgraphics.{$A,p.$A} \
+ otherlibs/num/libnums.{$A,p.$A} \
+ otherlibs/str/libstr.{$A,p.$A} \
+ otherlibs/systhreads/libthreads.{$A,p.$A} \
+ otherlibs/systhreads/libthreadsnat.{$A,p.$A} \
+ otherlibs/{,win32}unix/libunix.{$A,p.$A} \
+ $LIBDIR
+
+echo "Installing object files and interfaces..."
+installdir \
+ tools/profiling.cm{o,i} \
+ toplevel/topstart.cmo \
+ toplevel/toploop.cmi \
+ toplevel/topdirs.cmi \
+ toplevel/topmain.cmi \
+ typing/outcometree.cmi \
+ otherlibs/{,win32}graph/graphicsX11.cmi \
+ otherlibs/dynlink/dynlink.cmi \
+ otherlibs/num/arith_status.cmi \
+ otherlibs/num/big_int.cmi \
+ otherlibs/num/nat.cmi \
+ otherlibs/num/num.cmi \
+ otherlibs/num/ratio.cmi \
+ otherlibs/bigarray/bigarray.cmi \
+ otherlibs/dbm/dbm.cmi \
+ otherlibs/{,win32}graph/graphics.cmi \
+ otherlibs/str/str.cmi \
+ otherlibs/{,win32}unix/unix.cmi \
+ otherlibs/{,win32}unix/unixLabels.cmi \
+ otherlibs/num/arith_flags{,.p}.{cmx,$O} \
+ otherlibs/num/int_misc{,.p}.{cmx,$O} \
+ otherlibs/num/arith_status{,.p}.{cmx,$O} \
+ otherlibs/num/big_int{,.p}.{cmx,$O} \
+ otherlibs/num/nat{,.p}.{cmx,$O} \
+ otherlibs/num/num{,.p}.{cmx,$O} \
+ otherlibs/num/ratio{,.p}.{cmx,$O} \
+ otherlibs/bigarray/bigarray{,.p}.{cmx,$O} \
+ otherlibs/dbm/dbm{,.p}.{cmx,$O} \
+ otherlibs/{,win32}graph/graphics{,.p}.{cmx,$O} \
+ otherlibs/str/str{,.p}.{cmx,$O} \
+ otherlibs/{,win32}unix/unix{,.p}.{cmx,$O} \
+ otherlibs/{,win32}unix/unixLabels{,.p}.{cmx,$O} \
+ $LIBDIR
+
+installlibdir \
+ otherlibs/bigarray/bigarray.{$A,p.$A} \
+ otherlibs/dbm/dbm.{$A,p.$A} \
+ otherlibs/{,win32}graph/graphics.{$A,p.$A} \
+ otherlibs/num/nums.{$A,p.$A} \
+ otherlibs/str/str.{$A,p.$A} \
+ otherlibs/{,win32}unix/unix.{$A,p.$A} \
+ stdlib/stdlib.{$A,p.$A} \
+ $LIBDIR
+
+installlibdir \
+ otherlibs/systhreads/threads.{$A,p.$A} \
+ $LIBDIR/threads
+
+echo "Installing manuals..."
+(cd ../man && make install)
+
+echo "Installing ocamldoc..."
+installbin ocamldoc/ocamldoc$EXE $BINDIR/ocamldoc$EXE
+installbin ocamldoc/ocamldoc.opt$EXE $BINDIR/ocamldoc.opt$EXE
+
+installdir \
+ ../ocamldoc/ocamldoc.hva \
+ ocamldoc/*.cmi \
+ ocamldoc/odoc_info.{mli,cm[ia],cmxa,$A} \
+ $LIBDIR/ocamldoc
+
+installdir \
+ ocamldoc/stdlib_man/* \
+ $MANDIR/man3
+
+echo "Installing camlp4..."
+installbin camlp4/camlp4prof.byte$EXE $BINDIR/camlp4prof$EXE
+installbin camlp4/mkcamlp4.byte$EXE $BINDIR/mkcamlp4$EXE
+installbin camlp4/camlp4.byte$EXE $BINDIR/camlp4$EXE
+installbin camlp4/camlp4o.byte$EXE $BINDIR/camlp4o$EXE
+installbin camlp4/camlp4of.byte$EXE $BINDIR/camlp4of$EXE
+installbin camlp4/camlp4oof.byte$EXE $BINDIR/camlp4oof$EXE
+installbin camlp4/camlp4orf.byte$EXE $BINDIR/camlp4orf$EXE
+installbin camlp4/camlp4r.byte$EXE $BINDIR/camlp4r$EXE
+installbin camlp4/camlp4rf.byte$EXE $BINDIR/camlp4rf$EXE
+installbin camlp4/camlp4o.native$EXE $BINDIR/camlp4o.opt$EXE
+installbin camlp4/camlp4of.native$EXE $BINDIR/camlp4of.opt$EXE
+installbin camlp4/camlp4oof.native$EXE $BINDIR/camlp4oof.opt$EXE
+installbin camlp4/camlp4orf.native$EXE $BINDIR/camlp4orf.opt$EXE
+installbin camlp4/camlp4r.native$EXE $BINDIR/camlp4r.opt$EXE
+installbin camlp4/camlp4rf.native$EXE $BINDIR/camlp4rf.opt$EXE
+
+cd camlp4
+CAMLP4DIR=$LIBDIR/camlp4
+for dir in Camlp4Parsers Camlp4Printers Camlp4Filters Camlp4Top; do
+ echo "Installing $dir..."
+ mkdir -p $CAMLP4DIR/$dir
+ for file in $dir/*.cm*; do
+ echo " install $CAMLP4DIR/$file"
+ cp $file $CAMLP4DIR/$dir
+ done
+ for file in $dir/*.$O; do
+ echo " install $CAMLP4DIR/$file"
+ cp $file $CAMLP4DIR/$dir
+ base=`basename $file .$O`
+ installdir $dir/$base.p.$O $CAMLP4DIR/$dir
+ done
+done
+installdir \
+ camlp4lib.{cma,cmxa} Camlp4.cmi \
+ {camlp4o,camlp4of,camlp4oof,camlp4orf,camlp4r,camlp4rf}.cma \
+ Camlp4Bin.{cm[iox],$O,p.$O} Camlp4Top.cm[io] \
+ $CAMLP4DIR
+installlibdir camlp4lib.{$A,p.$A} $CAMLP4DIR
+cd ..
+
+echo "Installing ocamlbuild..."
+
+installbin ocamlbuild/ocamlbuild.byte$EXE $BINDIR/ocamlbuild.byte$EXE
+installbin ocamlbuild/ocamlbuild.native$EXE $BINDIR/ocamlbuild.native$EXE
+installbestbin ocamlbuild/ocamlbuild.native$EXE ocamlbuild/ocamlbuild.byte$EXE $BINDIR/ocamlbuild$EXE
+
+installlibdir \
+ ocamlbuild/ocamlbuildlib.{$A,p.$A} \
+ $LIBDIR/ocamlbuild
+
+installdir \
+ ocamlbuild/ocamlbuildlib{,.p}.cmxa \
+ ocamlbuild/ocamlbuildlib.cma \
+ ocamlbuild/ocamlbuild_plugin.cmi \
+ ocamlbuild/ocamlbuild_pack.cmi \
+ ocamlbuild/ocamlbuild.cmo \
+ ocamlbuild/ocamlbuild{,.p}.{cmx,$O} \
+ $LIBDIR/ocamlbuild
+