blob: 0e61c64d7dcaacc93439e2a32314d7e2ee7257ce (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
BIN := halk
PREFIX := /usr/local/bin
CC := gcc
REG_CFLAGS := -std=c99 -O3 -s
DBG_CFLAGS := -std=c99 -Og -ggdb -pedantic
DBG_CFLAGS += -Wall -Wextra -Wformat -Werror -Wpedantic
DBG_CFLAGS += -fsanitize=leak,address,undefined -fno-omit-frame-pointer
CFLAGS := $(REG_CFLAGS)
SRCS := $(wildcard src/*.c)
SRCS := $(filter-out %doer.c,$(SRCS)) # Filter out incomplete doer for now.
OBJS := $(SRCS:.c=.o)
TEST_SRCS := $(wildcard test/*.c)
TEST_OUTS := $(TEST_SRCS:.c=.out)
.PHONY: all reg_options dbg_options halk dbg install uninstall clean test me a sandwich
all: halk
reg_options:
@echo "HALK build options:"
@echo "CC: $(CC)"
@echo "CFLAGS: $(REG_CFLAGS)"
@echo
dbg_options:
@echo "HALK build options (dbg):"
@echo "CC: $(CC)"
@echo "CFLAGS: $(DBG_CFLAGS)"
@echo
halk: reg_options $(OBJS)
$(CC) $(OBJS) $(REG_CFLAGS) -o $(BIN).out
dbg: CFLAGS := $(DBG_CFLAGS)
dbg: dbg_options $(OBJS)
$(CC) $(OBJS) $(DBG_CFLAGS) -o $(BIN).out
test: clean dbg $(TEST_OUTS)
set -e
for f in $(TEST_OUTS); do ./$$f; done
%.o: %.c
$(CC) -c $< -o $@
%.out: %.c
$(CC) $< $(filter-out %main.o,$(OBJS)) -o $@
install: all
mkdir -p $(PREFIX)
cp -f $(BIN).out $(PREFIX)/$(BIN)
chmod 755 $(PREFIX)/$(BIN)
uninstall:
rm -f $(PREFIX)/$(BIN)
clean:
rm -f $(BIN).out src/*.o test/*.out
me a:
@exit
sandwich:
@[ "$(shell id -u)" = 0 ] && echo "Okay." || echo "What? Make it yourself."
|