6 command -v shasum
>/dev
/null
&& alias sum=shasum
8 date --version |
grep -q "GNU" && {
15 now
() { date +$dfmt; }
20 test $?
-eq 0 && msg
="ok" || msg
="ko"
21 echo "$msg $(echo "scale
=3; ($
(now
) - $tstart) / $scle" | bc -l) sec"
31 test -n "$1" || die
"usage: $0 build-directory"
37 test -e "$1" && test -r "$1.past" && {
44 eval ocamlc
-depend -bytecode -one-line $incs $s |
{
47 for d
in $
(eval echo $depl); do
53 cmd
="ocamlc $incs -c -o $o $s"
55 grep -q "$o" $outd/ordered ||
echo "$o" >>$outd/ordered
56 isfresh
"$o" '$cmd$keymd' ||
{
57 printf "%*.s%s -> %s\n" $n '' "${s#$srcd/}" "$o"
59 echo "k='$cmd$(eval $keycmd)'" >$o.past
60 } && $vecho "fresh '$o'"
67 test ${wocmi%help.cmo} != $wocmi && {
71 test "$o" = "$wocmi" && s
=${o%.cmo}.ml || s
=$wocmi.mli
75 incs
="-I lablGL -I $outd/lablGL -I wsi/x11 -I $outd/wsi/x11 -I $outd"
83 muinc
="-I $mudir/include -I $mudir/thirdparty/freetype/include"
84 cmd
="ocamlc -ccopt \"-O2 $muinc -o $o\" $s"
85 keycmd
="sum $o $s 2>/dev/null"
86 isfresh
"$o" '$cmd$keycmd' ||
{
87 printf "%s -> %s\n" "${s#$srcd/}" "$o"
89 echo "k='$cmd$(eval $keycmd)'" >$o.past
93 mkdir
-p $outd/wsi
/x11
98 ocaml str.cma
-stdin $srcd/KEYS
<<EOF
99 let fixup = let open Str in
100 let dash = regexp {|\([^ ]*\) +- +\(.*\)|}
101 and head = regexp {|-----\(.*\)-----|} in fun s ->
102 String.escaped s |> global_replace dash {|\1\t\2|}
103 |> global_replace head {|\xc2\xb7\1|};;
104 let rec iter ic = match input_line ic with
105 | s -> Printf.printf "\"%s\";\\n" @@ fixup s; iter ic
106 | exception End_of_file -> ();;
107 Printf.printf "let keys = [\\n";
108 iter @@ open_in Sys.argv.(1);;
109 Printf.printf "] and version = \"$ver\"";;
113 ver
=$
(cd $srcd && git describe
--tags) ||
echo unknown
114 cmd
="mkhelp >$outd/help.ml"
115 keycmd
="sum $srcd/KEYS"
116 isfresh
"$outd/help.ml" '$cmd$keycmd$ver' ||
{
118 echo "k='$cmd$(eval $keycmd)$ver'" >$outd/help.ml.past
121 for m
in lablGL
/glMisc.cmo lablGL
/glTex.cmo wsi
/x11
/wsi.cmo main.cmo
; do
126 libs
="str.cma unix.cma"
127 clibs
="-lGL -lX11 -L$mudir/build/native -lmupdf -lmupdfthird -lpthread"
129 for f
in ml_gl ml_glarray ml_raw
; do
131 globjs
="$globjs $outd/lablGL/$f.o"
134 ord
=$
(echo $
(eval grep -v \.cmi
$outd/ordered
))
135 cmd
="ocamlc -custom $libs -o $outd/llpp $ord"
136 cmd
="$cmd $globjs $outd/link.o -cclib \"$clibs\""
137 keycmd
='sum $outd/llpp $ord'
138 isfresh
"$outd/llpp" '$cmd$keycmd' ||
{
139 echo linking
$outd/llpp
141 echo "k='$cmd$(eval $keycmd)'" >$outd/llpp.past