diff options
Diffstat (limited to 'build/install.sh')
-rwxr-xr-x | build/install.sh | 491 |
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 + |