main build.ninja
 1# i know this is a ninja file, but you're allowed to edit it.
 2# you can also pass things on the command line if you like, eg
 3#
 4#     CC=clang ninja
 5
 6cc = $${CC:-cc}
 7ar = $${AR:-ar}
 8ranlib = $${RANLIB:-ranlib}
 9base_cflags = $${CFLAGS:--O2 -std=c99}
10ldflags = $${LDFLAGS:-}
11default_libs = $${LIBS:-}
12proto_libs = $${PROTO_LIBS:--lexpat}
13prefix = $${PREFIX:-/usr/local}
14destdir = $${DESTDIR:-}
15bindir = $${BINDIR:-$${DESTDIR:-}$${PREFIX:-/usr/local}/bin}
16mandir = $${MANDIR:-$${DESTDIR:-}$${PREFIX:-/usr/local}/man/man1}
17
18rule cc
19  command = $cc $cflags -MMD -MF $out.d -c -o $out $in
20  deps = gcc
21  depfile = $out.d
22  description = cc $out
23
24rule link
25  command = $cc $ldflags -o $out $in $libs
26  description = link $out
27
28rule ar
29  command = rm -f $out && $ar rcs $out $in && $ranlib $out
30  description = ar $out
31
32rule install_bin
33  command = mkdir -p $bindir && cp $in $bindir/$name
34  description = install $name
35
36rule install_man
37  command = mkdir -p $mandir && cp $in $mandir/$name
38  description = man $name
39
40subninja shared/top.ninja
41subninja peek/top.ninja
42subninja proto/top.ninja
43subninja shar/top.ninja
44subninja randomart/top.ninja
45subninja nviz/top.ninja
46
47build _always_build_: phony
48
49build all: phony shared-all peek-all proto-all shar-all randomart-all nviz-all
50
51build install-deps: install_bin deps | _always_build_
52  name = deps
53build install-drudge: install_bin drudge | _always_build_
54  name = drudge
55build install-fine: install_bin fine | _always_build_
56  name = fine
57build install-flick: install_bin flick | _always_build_
58  name = flick
59build install-gen: install_bin gen | _always_build_
60  name = gen
61build install-life: install_bin life | _always_build_
62  name = life
63build install-lint: install_bin lint | _always_build_
64  name = lint
65build install-pinkie: install_bin pinkie | _always_build_
66  name = pinkie
67build install-tlsver: install_bin tlsver | _always_build_
68  name = tlsver
69
70build install-peek: install_bin peek/peek | _always_build_ peek-all
71  name = peek
72build install-proto: install_bin proto/proto | _always_build_ proto-all
73  name = proto
74build install-shar: install_bin shar/shar | _always_build_ shar-all
75  name = shar
76build install-randomart: install_bin randomart/randomart | _always_build_ randomart-all
77  name = randomart
78build install-nviz: install_bin nviz/nviz | _always_build_ nviz-all
79  name = nviz
80build install-shar.1: install_man shar/shar.1 | _always_build_ shar-all
81  name = shar.1
82
83build install-scripts: phony install-deps install-drudge install-fine install-flick install-gen install-life install-lint install-pinkie install-tlsver
84build install-bins: phony install-peek install-proto install-shar install-randomart install-nviz install-shar.1
85build install: phony install-scripts install-bins
86
87default all