-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
executable file
·57 lines (41 loc) · 1.37 KB
/
Makefile
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
SRCPATHS = src/*.c src/gpu/*.c
SRC = $(wildcard $(SRCPATHS))
OBJECTS = $(SRC:src/%.c=build/%.o)
EXECUTABLE_NAME = comet
CC = gcc
LD = gcc
DEBUGFLAGS = -ggdb -Og
ASANFLAGS = -fsanitize=undefined -fsanitize=address
DONTBEAFUCKINGIDIOT = -Werror -Wall -Wextra -pedantic -Wno-missing-field-initializers -Wno-unused-result
CFLAGS = -O3 -flto -fno-strict-aliasing
SHUTTHEFUCKUP = -Wno-unknown-warning-option -Wno-incompatible-pointer-types-discards-qualifiers -Wno-initializer-overrides -Wno-discarded-qualifiers
LINK_FLAGS = -lm -flto -lpthread
ifeq ($(OS),Windows_NT)
EXECUTABLE_NAME = comet.exe
LINK_FLAGS += -lws2_32 -lmingw32 -L. -lSDL2 -lglew32 -lopengl32 -lWs2_32 -lole32 -lcomctl32 -lgdi32 -lcomdlg32 -lSDL2_image
else
LINK_FLAGS += -lSDL2 -lGL -lGLEW -lSDL2_image
endif
all: build
build/%.o: */%.c
@echo compiling $<
@$(CC) -c -o $@ $< $(CFLAGS) -MD
build: $(OBJECTS)
@echo linking with $(LD)
@$(CC) $(OBJECTS) -o $(EXECUTABLE_NAME) $(LINK_FLAGS)
@echo $(EXECUTABLE_NAME) built
test: build
@echo ""
./$(EXECUTABLE_NAME) test/example.bin -max-cycles:700000000 -bench
dbgbuild/%.o: */%.c
@$(CC) -c -o $@ $< -Isrc/ -MD $(DEBUGFLAGS)
dbgbuild: $(OBJECTS)
@$(LD) $(OBJECTS) -o $(EXECUTABLE_NAME) $(DEBUGFLAGS)
clean:
@rm -rf build
@mkdir build
@mkdir build/gpu
printbuildinfo:
@echo using $(CC) with flags $(CFLAGS)
new: clean printbuildinfo build
-include $(OBJECTS:.o=.d)