1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
|
#!/bin/sh
# Should be included by a script. The includer should set the variable
# $NATIVE to "false" if it doesn't want native code compilation.
OCAMLBUILD=${OCAMLBUILD:="ocamlbuild -use-ocamlfind -classic-display"}
B="_build"
NL="
"
LIBS=""; ILIBS=""
BINS=""; IBINS=""
SBIS=""; ISBIS=""
TOPS=""; ITOPS=""
SHRS=""; ISHRS=""
ETCS=""; IETCS=""
DOCS=""; IDOCS=""
MISC=""; IMISC=""
STBS=""; ISTBS=""
MANS=""; IMANS=""
add_lib () { LIBS="$LIBS $1"; ILIBS="$ILIBS$NL \"$B/$1\" {\"$2\"}"; }
add_lib_nobuild () { ILIBS="$ILIBS$NL \"?$B/$1\" {\"$2\"}"; }
add_bin () { BINS="$BINS $1"; IBINS="$IBINS$NL \"$B/$1\" {\"$2\"}"; }
add_sbin () { SBIS="$SBIS $1"; ISBIS="$ISBIS$NL \"$B/$1\" {\"$2\"}"; }
add_toplevel () { TOPS="$TOPS $1"; ITOPS="$ITOPS$NL \"$B/$1\" {\"$2\"}"; }
add_share () { SHRS="$SHRS $1"; ISHRS="$ISHRS$NL \"$B/$1\" {\"$2\"}"; }
add_etc () { ETCS="$ETCS $1"; IETCS="$IETCS$NL \"$B/$1\" {\"$2\"}"; }
add_doc () { DOCS="$DOCS $1"; IDOCS="$IDOCS$NL \"$B/$1\" {\"$2\"}"; }
add_misc () { MISC="$MISC $1"; IMISC="$IMISC$NL \"$B/$1\" {\"$2\"}"; }
add_stublibs () { STBS="$STBS $1"; ISTBS="$ISTBS$NL \"$B/$1\" {\"$2\"}"; }
add_man () { MANS="$MANS $1"; IMANS="$IMANS$NL \"$B/$1\" {\"$2\"}"; }
add ()
{
SRC=$2
DST=$3
if [ "$DST" = "" ]; then
DST=`basename $SRC`
fi
case $1 in
lib)
if [ "$NATIVE" != "false" ]; then
case $2 in
*.cmti | *.cmt) add_lib_nobuild $SRC $DST ;;
*) add_lib $SRC $DST ;;
esac
else
case $2 in
*.a | *.cmx | *.cmxa | *.cmxs) ;;
*.cmti | *.cmt) add_lib_nobuild $SRC $DST ;;
*) add_lib $SRC $DST ;;
esac
fi
;;
bin)
if [ "$NATIVE" != "false" ]; then
add_bin $SRC.native $DST
else
add_bin $SRC.byte $DST
fi
;;
sbin)
if [ "$NATIVE" != "false" ]; then
add_sbin $SRC.native $DST
else
add_sbin $SRC.byte $DST
fi
;;
share) add_share $SRC $DST ;;
etc) add_etc $SRC $DST ;;
toplevel) add_top $SRC.top $DST ;;
doc) add_doc $SRC $DST ;;
misc) add_misc $SRC $DST ;;
stublibs) add_stublibs $SRC $DST ;;
man) add_man $SRC $DST ;;
esac
}
build ()
{
$OCAMLBUILD $LIBS $BINS $SBIS $DOCS $TOPS $SHRS $ETCS $MISC $STBS $MANS;
}
install ()
{
cat > $1.install <<EOF
lib: [$ILIBS
]
bin: [$IBINS
]
sbin: [$ISBIS
]
toplevel: [$ITOPS
]
share: [$ISHRS
]
etc: [$IETCS
]
doc: [$IDOCS
]
misc: [$IMISC
]
stublibs: [$ISTBS
]
man: [$IMANS
]
EOF
}
|