master
Makefile
1CC ?= cc -static
2CFLAGS ?= -std=c99 -Wall -Wextra -pedantic
3
4BACKEND ?= auto
5
6CPPFLAGS ?= -Ishared -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200809L \
7 -DFEATURE_NOFORK=0 -DFEATURE_NOEXEC=0
8# NOEXEC cannot be on the bootstrap compile, but it can
9# be on when one compiles aruu-box with ninqu included
10
11NINQU_LIB_SRC =\
12 shared/libutil/ealloc.c\
13 shared/libutil/eprintf.c\
14 shared/libutil/strlcpy.c\
15 shared/libutil/strlcat.c\
16 shared/libutil/strtonum.c\
17 shared/libutil/fshut.c\
18 shared/libutil/mkdirp.c\
19 shared/libutil/recurse_dir.c\
20 shared/libutil/wexec.c
21
22NINQU_SRC =\
23 cmd/dev/ninqu/main.c\
24 cmd/dev/ninqu/strlist.c\
25 cmd/dev/ninqu/kv.c\
26 cmd/dev/ninqu/sexpr.c\
27 cmd/dev/ninqu/gate.c\
28 cmd/dev/ninqu/registry.c\
29 cmd/dev/ninqu/fs.c\
30 cmd/dev/ninqu/exec.c\
31 cmd/dev/ninqu/backend.c\
32 cmd/dev/ninqu/parse.c\
33 cmd/dev/ninqu/expand.c\
34 cmd/dev/ninqu/schedule.c\
35 cmd/dev/ninqu/query.c\
36 cmd/dev/ninqu/resolve.c\
37 cmd/dev/ninqu/ninja.c
38
39# map make's -j to ninqu's -j flag
40NINQU ?= cmd/dev/ninqu/ninqu
41JOBS ?= $(filter -j%,$(MAKEFLAGS))
42
43# rebuilds config.set first so a build.cfg edit is picked up before
44# ninqu compiles, ninqu also does this lazily on its own via
45# (set-file), this just avoids the extra shell startup on every run
46$(NINQU): $(NINQU_SRC) cmd/dev/ninqu/ninqu.h scripts/mk/config.set $(NINQU_LIB_SRC)
47 $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $(NINQU_SRC) $(NINQU_LIB_SRC)
48
49# FORCE has no rule, thus making any pattern
50# that depends on it be always outdated
51.PHONY: FORCE
52FORCE:
53
54# ninqu generates build.ninja if ninja/samu is available and execs that
55# instead of running its own backend, but you can use make BACKEND=internal
56# to force the internal one to be used anyways
57%: $(NINQU) FORCE
58 $(NINQU) $(JOBS) $@
59
60clean: $(NINQU)
61 $(NINQU) clean
62 rm -f $(NINQU) build.ninja
63
64scripts/mk/config.set: build.cfg scripts/genconfig.sh
65 sh scripts/genconfig.sh config
66
67# stops the % pattern rule above from trying to rebuild these as if
68# they were stale build targets
69Makefile: ;
70ninqu.rules: ;
71cmd/dev/ninqu/ninqu.h: ;
72cmd/dev/ninqu/main.c: ;
73cmd/dev/ninqu/strlist.c: ;
74cmd/dev/ninqu/kv.c: ;
75cmd/dev/ninqu/sexpr.c: ;
76cmd/dev/ninqu/gate.c: ;
77cmd/dev/ninqu/registry.c: ;
78cmd/dev/ninqu/fs.c: ;
79cmd/dev/ninqu/exec.c: ;
80cmd/dev/ninqu/backend.c: ;
81cmd/dev/ninqu/parse.c: ;
82cmd/dev/ninqu/expand.c: ;
83cmd/dev/ninqu/schedule.c: ;
84cmd/dev/ninqu/query.c: ;
85cmd/dev/ninqu/resolve.c: ;
86cmd/dev/ninqu/ninja.c: ;
87build.cfg: ;
88scripts/genconfig.sh: ;