6 test "$unameN" = Darwin
&& {
15 if $
(expr >/dev
/null
"$(date --version 2>/dev/null)" : ".*GNU"); then
21 command -v md5sum >/dev
/null ||
{
22 alias sum='sum 2>/dev/null'
23 } && alias sum='md5sum 2>/dev/null'
26 test $?
-eq 0 && msg
="ok" || msg
="ko"
27 echo "$msg $(echo "scale
=3; ($
(now
) - $tstart)/1" | bc -l) sec"
37 test -n "$1" || die
"usage: $0 build-directory"
42 muinc
="-I $mudir/include -I $mudir/thirdparty/freetype/include"
45 test -e "$1" && test -r "$1.past" && {
53 main.cmo|utils.cmo|config.cmo|parser.cmo|wsi.cmi|
$wsi/wsi.cmo
)
54 f
="-g -strict-sequence -strict-formats -warn-error a";;
57 echo "-I lablGL -I $outd/lablGL -I $wsi -I $outd/$wsi -I $outd $f"
63 f
="-g -std=c99 -O2 $muinc -Wall -Werror -pedantic-errors"
64 $darwin && echo "$f -D__COCOA__" ||
echo $f;;
65 */ml_gl.o
) echo "-g -Wno-pointer-sign -O2";;
70 mflags
() { echo "-I $(ocamlc -where) -g -O2"; }
73 eval ocamlc
-depend -bytecode -one-line $incs $s |
{
75 for d
in $
(eval echo $depl); do
76 bocaml
${d#$srcd/} $
((n
+1))
79 cmd
="ocamlc $(oflags $o) -c -o $o $s"
81 grep -q "$o" $outd/ordered ||
{
82 echo "$o" >>$outd/ordered
83 isfresh
"$o" "$cmd$(eval $keycmd)" ||
{
84 printf "%*.s%s -> %s\n" $n '' "${s#$srcd/}" "$o"
86 echo "k='$cmd$(eval $keycmd)'" >$o.past
87 } && $vecho "fresh '$o'"
95 test ${wocmi%help.cmo} != $wocmi && {
99 test "$o" = "$wocmi" && s
=$srcd/${o%.cmo}.ml || s
=$srcd/$wocmi.mli
102 incs
="-I lablGL -I $outd/lablGL -I $wsi -I $outd/$wsi -I $outd"
109 cmd
="ocamlc -ccopt \"$(cflags $o) -MMD -MF $o.dep -MT_ -o $o\" $s"
110 test -r $o.dep
&& read _ d
<$o.dep || d
=
112 isfresh
"$o" "$cmd$(eval $keycmd)" ||
{
113 printf "%s -> %s\n" "${s#$srcd/}" "$o"
116 echo "k='$cmd$(eval $keycmd)'" >$o.past
123 cmd
="$mcomp $(mflags $o) -MMD -MF $o.dep -MT_ -c -o $o $s"
124 test -r $o.dep
&& read _ d
<$o.dep || d
=
126 isfresh
"$o" "$cmd$(eval $keycmd)" ||
{
127 printf "%s -> %s\n" "${s#$srcd/}" "$o"
130 echo "k='$cmd$(eval $keycmd)'" >$o.past
135 mkdir
-p $outd/lablGL
139 ocaml str.cma
-stdin $srcd/KEYS
<<EOF
140 let fixup = let open Str in
141 let dash = regexp {|\([^ ]*\) +- +\(.*\)|}
142 and head = regexp {|-----\(.*\)-----|} in fun s ->
143 String.escaped s |> global_replace dash {|\1\t\2|}
144 |> global_replace head {|\xc2\xb7\1|};;
145 let rec iter ic = match input_line ic with
146 | s -> Printf.printf "\"%s\";\\n" @@ fixup s; iter ic
147 | exception End_of_file -> ();;
148 Printf.printf "let keys = [\\n";
149 iter @@ open_in Sys.argv.(1);;
150 Printf.printf "] and version = \"$ver\";;"
154 ver
=$
(cd $srcd && git describe
--tags) ||
echo unknown
155 cmd
="mkhelp >$outd/help.ml"
156 keycmd
="sum $srcd/KEYS; echo $ver"
157 isfresh
"$outd/help.ml" '$cmd$(eval keycmd)$ver' ||
{
159 echo "k='$cmd$(eval $keycmd)$ver'" >$outd/help.ml.past
162 for m
in lablGL
/glMisc.cmo lablGL
/glTex.cmo
$wsi/wsi.cmo main.cmo
; do
168 libs
="str.cma unix.cma"
169 clibs
="-L$mudir/build/native -lmupdf -lmupdfthird -lpthread"
171 mcomp
=$
(ocamlc
-config |
grep bytecomp_c_co |
{ read _ c
; echo $c; })
172 clibs
="$clibs -framework Cocoa -framework OpenGL"
174 cobjs
="$cobjs $outd/main_osx.o"
176 clibs
="$clibs -lGL -lX11"
180 for f
in ml_gl ml_glarray ml_raw
; do
182 globjs
="$globjs $outd/lablGL/$f.o"
185 ord
=$
(echo $
(eval grep -v \.cmi
$outd/ordered
))
186 cmd
="ocamlc -custom $libs -o $outd/llpp $cobjs $ord"
187 cmd
="$cmd $globjs -cclib \"$clibs\""
188 keycmd
="sum $outd/llpp $outd/link.o $ord"
189 isfresh
"$outd/llpp" "$cmd$(eval $keycmd)" ||
{
190 echo linking
$outd/llpp
191 eval $cmd ||
echo "$cmd failed"
192 echo "k='$cmd$(eval $keycmd)'" >$outd/llpp.past