-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
39 lines (29 loc) · 1.22 KB
/
Makefile
File metadata and controls
39 lines (29 loc) · 1.22 KB
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
CC = gcc
CFLAGS = -Wall -Wextra -g -O0
VERIFY_CFLAGS = -Wall -Wextra -Werror
SRC_DIR = src
TEST_DIR = tests
PROGRAMS = vuln_buffer_overflow safe_input_demo stack_layout_demo overflow_behavior_demo control_flow_simulation
TEST_PROGRAM = demo_runtime_checks
TEST_SOURCES = $(TEST_DIR)/$(TEST_PROGRAM).c $(addprefix $(SRC_DIR)/,$(addsuffix .c,$(PROGRAMS)))
ifeq ($(OS),Windows_NT)
RUN_TEST = .\$(TEST_PROGRAM).exe
CLEAN_CMD = powershell -NoProfile -Command "$(foreach file,$(PROGRAMS) $(addsuffix .exe,$(PROGRAMS)) $(TEST_PROGRAM) $(TEST_PROGRAM).exe,Remove-Item -ErrorAction SilentlyContinue '$(file)';) exit 0"
else
RUN_TEST = ./$(TEST_PROGRAM)
CLEAN_CMD = rm -f $(PROGRAMS) $(addsuffix .exe,$(PROGRAMS)) $(TEST_PROGRAM) $(TEST_PROGRAM).exe
endif
.PHONY: all verify test check clean
all: $(PROGRAMS)
$(PROGRAMS): %: $(SRC_DIR)/%.c $(SRC_DIR)/demo_programs.h
$(CC) $(CFLAGS) -o $@ $<
verify: $(addprefix verify-,$(PROGRAMS)) verify-tests
verify-%: $(SRC_DIR)/%.c $(SRC_DIR)/demo_programs.h
$(CC) $(VERIFY_CFLAGS) -o $* $<
verify-tests: $(TEST_SOURCES) $(SRC_DIR)/demo_programs.h
$(CC) $(VERIFY_CFLAGS) -DDEMO_NO_MAIN -I$(SRC_DIR) -o $(TEST_PROGRAM) $(TEST_SOURCES)
test: verify-tests
$(RUN_TEST)
check: verify test
clean:
-$(CLEAN_CMD)