Stop panning once whole page can be visible
[llpp.git] / build.ml
blobaba4087dd7c84c0ab42f99c89b96d45ef647cf4a
1 let start = Unix.gettimeofday ();;
3 open List;;
4 open Typs;;
5 open Utils;;
6 open State;;
7 open Helpers;;
9 let jobs, targets, dodeplist, dotarlist = getopt ();;
11 let get key msg =
12 match getval key with | None -> failwith msg | Some s -> s
15 let getdef key def =
16 match getval key with | None -> def | Some s -> s
19 let srcdir = get "src" "no source dir";;
20 let cc = getdef "cc" "cc";;
21 let ccopt = getdef "ccopt" "";;
22 let mupdflibpath = get "mupdflibpath" "no mupdf libpath";;
23 let libs = getdef "libs" "";;
25 let boc flags src =
26 let o = src ^ ".o" in
27 let c = src ^ ".c" in
28 ocaml
29 "ocamlc.opt"
30 ("-cc '" ^ cc ^ "' -ccopt '" ^ flags ^ " " ^ ccopt ^ " -o " ^ o ^ "'")
32 (StrSet.singleton o)
33 [Filename.concat srcdir c]
34 StrSet.empty
38 let ocaml1 prog flags1 flags2 mainoutput outputs inputs deps f =
39 let flags = flags1 ^ " -o " ^ Filename.quote mainoutput in
40 let build =
41 let commands _ =
42 let s = String.concat " " (map Filename.quote (f ())) in
43 [Run (prog ^ " " ^ flags ^ " " ^ s ^ flags2)]
45 let cookie _ = prog ^ flags in
46 let presentation _ = "OCAMLC " ^ mainoutput in
47 { get_commands = commands
48 ; get_cookie = cookie
49 ; get_presentation = presentation
52 let inputs = fold_right StrSet.add inputs StrSet.empty in
53 let deps = StrSet.union inputs deps in
54 StrSet.iter (fun output ->
55 put_build_info output build;
56 let deps = StrSet.remove output deps in
57 add_target output inputs outputs deps
58 ) outputs;
61 let ocaml' prog flags1 flags2 mainoutput outputs inputs deps =
62 ocaml1 prog flags1 flags2 mainoutput outputs inputs deps (fun () -> inputs)
65 let bso name objs =
66 let so = name ^ ".so" in
67 let mupdf_libs =
68 " -L" ^ mupdflibpath ^ " " ^ libs
70 let o = List.map (fun s -> s ^ ".o") objs in
71 ocaml'
73 ("-shared -lpthread -o " ^ so ^ mupdf_libs)
74 (mupdf_libs)
76 (StrSet.singleton so)
78 (StrSet.add
79 (Filename.concat mupdflibpath "libfitz.a")
80 (StrSet.singleton (Filename.concat mupdflibpath "libmupdf.a")))
85 let () =
86 boc "-g" "link";
87 let so = bso "link" ["link"] in
88 let prog name cmos =
89 ocaml
90 "ocamlc.opt"
91 ("-g -I +lablGL lablgl.cma lablglut.cma str.cma unix.cma -dllpath "
92 ^ Sys.getcwd ())
93 name
94 (StrSet.singleton name)
95 (State.dep_sort cmos)
96 StrSet.empty
98 let main =
99 cmopp ~flags:"-g -w y -I +lablGL -thread" ~dirname:srcdir "main";
100 "main.cmo"
102 prog "llpp" [so; main];
105 let () =
106 let objs =
107 c cc "-c -Wall -Werror -Wextra -g" srcdir "test";
108 ["test.o"]
110 let objsgl =
111 c cc "-c -Wall -Werror -Wextra -g" srcdir "testgl";
112 ["testgl.o"]
114 let prog name objs =
117 ~doscan:false
118 ~flags1:""
119 ~flags2:"-lX11 -lXext"
120 ~output:name
121 objs
123 let proggl name objs =
126 ~doscan:false
127 ~flags1:""
128 ~flags2:"-lX11 -lXext -lGL"
129 ~output:name
130 objs
132 prog "test" objs;
133 proggl "testgl" objsgl;
136 let () =
137 run start jobs targets dodeplist dotarlist;