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
+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