summaryrefslogtreecommitdiff
path: root/makefile.mk
blob: e004a648660b7c0ec39fda4e644e7c47080871f9 (plain)
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
# needed cflags
CFLAGS += -std=gnu2x

# add include directory
CFLAGS += -isystem ../include -DPREFIX=$(PREFIX)
INCLUDE += ../include

# add lib directory
SRC += ../lib

H_SRC = $(shell find $(SRC) $(INCLUDE) -type f -name "*.h")
C_SRC = $(shell find $(SRC) -type f -name "*.c")
C_OBJ = $(patsubst %.c,$(BIN)/%.o,$(C_SRC))

.PHONY: clean build run fuzz

build: $(BIN)/$(OUT)

clean:
	rm -fr $(BIN)
	rm -fr ../bin/lib

run: build
	$(BIN)/$(OUT)

fuzz: clean
	make -C . build CC=afl-cc LD=afl-cc
	mkdir -p ../fuzz
	rm -fr ../fuzz/$(OUT)
	afl-fuzz -i ../test/$(OUT) -o ../fuzz -M $(OUT) -- $(BIN)/$(OUT) @@

$(C_OBJ): $(BIN)/%.o : %.c
	@mkdir -p $(@D)
	$(CC) -c $(CFLAGS) -o $@ $<

$(BIN)/$(OUT): $(C_OBJ) $(H_SRC)
	@mkdir -p $(@D)
	$(LD) $(LDFLAGS) -o $(BIN)/$(OUT) $(C_OBJ)