commit d112c98
shrub
·
2026-07-22 10:50:56 +0000 UTC
parent 6d171e7
build: switch to ninja
3 files changed,
+75,
-163
+0,
-1
1@@ -4,6 +4,5 @@ tests/.runner
2 tests/runner/runner
3 tests/runner/testhelper
4 tests/work
5-build.ninja
6 .ninja_log
7 .ninja_deps
D
Makefile
+0,
-162
1@@ -1,162 +0,0 @@
2-.POSIX:
3-PREFIX = /usr
4-DESTDIR =
5-BINDIR = $(DESTDIR)$(PREFIX)/bin
6-MANDIR = $(DESTDIR)$(PREFIX)/share/man/man1
7-
8-BIN = shin
9-RUNNERBIN = tests/runner/runner
10-HELPERBIN = tests/runner/testhelper
11-SRCS = cli/main.c \
12- src/parse.c \
13- src/eval/eval.c \
14- src/eval/dollar.c \
15- src/graph/graph.c \
16- src/graph/subgraph.c \
17- src/sufrule.c \
18- src/defaults.c \
19- src/targets.c \
20- src/gnu/pattern.c \
21- backends/ninja.c \
22- backends/graphviz.c \
23- backends/compdb.c \
24- src/util.c \
25- src/submake.c \
26- src/gnu/functions.c
27-
28-FMTSRCS = $(SRCS) \
29- src/shinobi.h \
30- src/internal.h \
31- src/posix.h \
32- src/gnu/pattern.h \
33- backends/ninja.h \
34- backends/graphviz.h \
35- backends/compdb.h
36-
37-OBJS = $(SRCS:.c=.o)
38-RUNNERSRCS = tests/runner/case.go \
39- tests/runner/discover.go \
40- tests/runner/main.go \
41- tests/runner/preserve.go \
42- tests/runner/suite.go \
43- tests/runner/types.go \
44- tests/runner/go.mod
45-HELPERSRCS = tests/runner/testhelp/main.go
46-
47-CC = cc
48-CFLAGS = -std=c99 -O2 -Wall -Wextra -pedantic
49-CPPFLAGS = -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -Isrc -Ibackends -DSHIN_WITH_GNU=$(SHIN_WITH_GNU)
50-LDFLAGS =
51-
52-# set to 0 to exclude gnu mode from the runtime -M flag
53-SHIN_WITH_GNU = 1
54-
55-.PHONY: all fmt test runner helper install clean
56-
57-all: $(BIN)
58-
59-.SUFFIXES: .c .o
60-
61-.c.o:
62- $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
63-
64-$(BIN): $(OBJS)
65- $(CC) $(LDFLAGS) -o $(BIN) $(OBJS) $(LDLIBS)
66-
67-fmt:
68- clang-format -i $(FMTSRCS)
69-
70-runner: $(RUNNERBIN)
71-
72-helper: $(HELPERBIN)
73-
74-$(RUNNERBIN): $(RUNNERSRCS)
75- cd tests/runner && go build -o runner
76-
77-$(HELPERBIN): $(HELPERSRCS) tests/runner/go.mod
78- cd tests/runner && go build -o testhelper ./testhelp
79-
80-test: $(BIN) runner helper
81- tests/shintest.sh
82-
83-install: $(BIN)
84- install -d $(BINDIR)
85- install -m 755 $(BIN) $(BINDIR)/$(BIN)
86- install -d $(MANDIR)
87- install -m 644 doc/shin.1 $(MANDIR)/shin.1
88-
89-clean:
90- rm -f $(BIN) $(OBJS) $(RUNNERBIN) $(HELPERBIN)
91-
92-#AUTOGENERATED
93-backends/ninja.o: backends/ninja.c
94-backends/ninja.o: backends/ninja.h
95-backends/ninja.o: src/shinobi.h
96-backends/ninja.o: src/internal.h
97-backends/ninja.o: src/shinobi.h
98-backends/graphviz.o: backends/graphviz.c
99-backends/graphviz.o: backends/graphviz.h
100-backends/graphviz.o: src/shinobi.h
101-backends/graphviz.o: src/internal.h
102-backends/graphviz.o: src/shinobi.h
103-backends/compdb.o: backends/compdb.c
104-backends/compdb.o: backends/compdb.h
105-backends/compdb.o: src/shinobi.h
106-backends/compdb.o: src/internal.h
107-backends/compdb.o: src/shinobi.h
108-cli/main.o: cli/main.c
109-cli/main.o: backends/compdb.h
110-cli/main.o: src/shinobi.h
111-cli/main.o: backends/graphviz.h
112-cli/main.o: src/internal.h
113-cli/main.o: src/shinobi.h
114-cli/main.o: backends/ninja.h
115-src/eval/eval.o: src/eval/eval.c
116-src/eval/eval.o: src/internal.h
117-src/eval/eval.o: src/shinobi.h
118-src/eval/eval.o: src/posix.h
119-src/eval/eval.o: src/internal.h
120-src/eval/eval.o: src/shinobi.h
121-src/eval/dollar.o: src/eval/dollar.c
122-src/eval/dollar.o: src/internal.h
123-src/eval/dollar.o: src/shinobi.h
124-src/gnu/pattern.o: src/gnu/pattern.c
125-src/gnu/pattern.o: src/gnu/pattern.h
126-src/gnu/pattern.o: src/internal.h
127-src/gnu/pattern.o: src/shinobi.h
128-src/gnu/functions.o: src/gnu/functions.c
129-src/gnu/functions.o: src/internal.h
130-src/gnu/functions.o: src/shinobi.h
131-src/graph/graph.o: src/graph/graph.c
132-src/graph/graph.o: src/gnu/pattern.h
133-src/graph/graph.o: src/internal.h
134-src/graph/graph.o: src/shinobi.h
135-src/graph/graph.o: src/posix.h
136-src/graph/graph.o: src/internal.h
137-src/graph/graph.o: src/shinobi.h
138-src/graph/subgraph.o: src/graph/subgraph.c
139-src/graph/subgraph.o: src/internal.h
140-src/graph/subgraph.o: src/shinobi.h
141-src/parse.o: src/parse.c
142-src/parse.o: src/internal.h
143-src/parse.o: src/shinobi.h
144-src/sufrule.o: src/sufrule.c
145-src/sufrule.o: src/posix.h
146-src/sufrule.o: src/internal.h
147-src/sufrule.o: src/shinobi.h
148-src/defaults.o: src/defaults.c
149-src/defaults.o: src/gnu/pattern.h
150-src/defaults.o: src/internal.h
151-src/defaults.o: src/shinobi.h
152-src/defaults.o: src/posix.h
153-src/defaults.o: src/internal.h
154-src/defaults.o: src/shinobi.h
155-src/targets.o: src/targets.c
156-src/targets.o: src/internal.h
157-src/targets.o: src/shinobi.h
158-src/util.o: src/util.c
159-src/util.o: src/internal.h
160-src/util.o: src/shinobi.h
161-src/submake.o: src/submake.c
162-src/submake.o: src/internal.h
163-src/submake.o: src/shinobi.h
+75,
-0
1@@ -0,0 +1,75 @@
2+# i know this is a ninja file, but you're allowed to edit it.
3+# you can also pass things on the command line if you like, eg
4+#
5+# CC=clang ninja
6+
7+bin = shin
8+cc = $${CC:-cc}
9+cflags = $${CFLAGS:--O2 -std=c99 -Wall -Wextra -pedantic -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -Isrc -Ibackends -DSHIN_WITH_GNU=$${SHIN_WITH_GNU:-1}}
10+ldflags = $${LDFLAGS:-}
11+libs = $${LIBS:-}
12+prefix = $${PREFIX:-/usr}
13+destdir = $${DESTDIR:-}
14+bindir = $${BINDIR:-$${DESTDIR:-}$${PREFIX:-/usr}/bin}
15+mandir = $${MANDIR:-$${DESTDIR:-}$${PREFIX:-/usr}/share/man/man1}
16+
17+rule cc
18+ command = $cc $cflags -MMD -MF $out.d -c -o $out $in
19+ deps = gcc
20+ depfile = $out.d
21+ description = cc $out
22+
23+rule link
24+ command = $cc $ldflags -o $out $in $libs
25+ description = link $out
26+
27+rule install
28+ command = mkdir -p $bindir $mandir && cp $in $bindir/ && cp doc/shin.1 $mandir/
29+ description = install $bin
30+
31+rule go
32+ command = cd $dir && go build -o $outfile $pkg
33+ description = go build $out
34+
35+rule test
36+ command = tests/shintest.sh
37+ description = test
38+
39+rule fmt
40+ command = clang-format -i cli/main.c src/parse.c src/eval/eval.c src/eval/dollar.c src/graph/graph.c src/graph/subgraph.c src/sufrule.c src/defaults.c src/targets.c src/gnu/pattern.c backends/ninja.c backends/graphviz.c backends/compdb.c src/util.c src/submake.c src/gnu/functions.c src/shinobi.h src/internal.h src/posix.h src/gnu/pattern.h backends/ninja.h backends/graphviz.h backends/compdb.h
41+ description = fmt
42+
43+build cli/main.o: cc cli/main.c
44+build src/parse.o: cc src/parse.c
45+build src/eval/eval.o: cc src/eval/eval.c
46+build src/eval/dollar.o: cc src/eval/dollar.c
47+build src/graph/graph.o: cc src/graph/graph.c
48+build src/graph/subgraph.o: cc src/graph/subgraph.c
49+build src/sufrule.o: cc src/sufrule.c
50+build src/defaults.o: cc src/defaults.c
51+build src/targets.o: cc src/targets.c
52+build src/gnu/pattern.o: cc src/gnu/pattern.c
53+build backends/ninja.o: cc backends/ninja.c
54+build backends/graphviz.o: cc backends/graphviz.c
55+build backends/compdb.o: cc backends/compdb.c
56+build src/util.o: cc src/util.c
57+build src/submake.o: cc src/submake.c
58+build src/gnu/functions.o: cc src/gnu/functions.c
59+
60+build $bin: link cli/main.o src/parse.o src/eval/eval.o src/eval/dollar.o src/graph/graph.o src/graph/subgraph.o src/sufrule.o src/defaults.o src/targets.o src/gnu/pattern.o backends/ninja.o backends/graphviz.o backends/compdb.o src/util.o src/submake.o src/gnu/functions.o
61+build all: phony $bin
62+build install: install $bin
63+build tests/runner/runner: go tests/runner/case.go tests/runner/discover.go tests/runner/main.go tests/runner/preserve.go tests/runner/suite.go tests/runner/types.go tests/runner/go.mod
64+ dir = tests/runner
65+ outfile = runner
66+ pkg = .
67+build tests/runner/testhelper: go tests/runner/testhelp/main.go tests/runner/go.mod
68+ dir = tests/runner
69+ outfile = testhelper
70+ pkg = ./testhelp
71+build runner: phony tests/runner/runner
72+build helper: phony tests/runner/testhelper
73+build test: test $bin runner helper
74+build fmt: fmt
75+
76+default all