|
1 | 1 | # Compiler
|
2 |
| -CC := gcc |
| 2 | +# CC := gcc |
3 | 3 |
|
4 | 4 | # Directories
|
5 | 5 | SRC_DIR := src
|
6 |
| -BIN_DIR := bin |
| 6 | +BUILD_DIR := build |
7 | 7 |
|
8 | 8 | # Source files
|
9 | 9 | SRCS := $(wildcard $(SRC_DIR)/*.c)
|
10 | 10 |
|
11 | 11 | # Object files
|
12 |
| -OBJS := $(patsubst $(SRC_DIR)/%.c,$(BIN_DIR)/%.o,$(SRCS)) |
| 12 | +DEBUG_OBJS := $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/debug/%.o,$(SRCS)) |
| 13 | +RELEASE_OBJS := $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/release/%.o,$(SRCS)) |
13 | 14 |
|
14 | 15 | # Executable file
|
15 | 16 | TARGET := Azzian
|
16 | 17 |
|
17 | 18 | # Compiler flags
|
18 |
| -CFLAGS := -Wall -Wextra -ggdb -std=c99 -Iinclude -Ilib |
| 19 | +DEBUG_CFLAGS := -ggdb -DDEBUG -Wall -Wextra -std=c17 -Iinclude -isystemlib |
| 20 | +RELEASE_CFLAGS := -Ofast -DNDEBUG -Wall -Wextra -std=c17 -Iinclude -isystemlib |
19 | 21 |
|
20 | 22 | # Linker flags
|
21 | 23 | LDFLAGS := -lraylib -lm
|
22 | 24 |
|
| 25 | +.PHONY: all debug release embed fmt clean |
| 26 | + |
23 | 27 | # Build target
|
24 |
| -$(TARGET): $(OBJS) |
25 |
| - $(CC) $^ -o $@ $(LDFLAGS) |
| 28 | +all: debug |
| 29 | + |
| 30 | +debug: $(DEBUG_OBJS) |
| 31 | + $(CC) $^ -o $(TARGET) $(LDFLAGS) |
| 32 | + |
| 33 | +release: $(RELEASE_OBJS) |
| 34 | + $(CC) $^ -o $(TARGET) $(LDFLAGS) |
26 | 35 |
|
27 | 36 | # Compile source files
|
28 |
| -$(BIN_DIR)/%.o: $(SRC_DIR)/%.c |
29 |
| - mkdir -p $(BIN_DIR) |
30 |
| - $(CC) $(CFLAGS) -c $< -o $@ |
| 37 | +$(BUILD_DIR)/debug/%.o: $(SRC_DIR)/%.c |
| 38 | + @mkdir -p $(BUILD_DIR)/debug |
| 39 | + $(CC) $(DEBUG_CFLAGS) -c $< -o $@ |
| 40 | + |
| 41 | +$(BUILD_DIR)/release/%.o: $(SRC_DIR)/%.c |
| 42 | + @mkdir -p $(BUILD_DIR)/release |
| 43 | + $(CC) $(RELEASE_CFLAGS) -c $< -o $@ |
| 44 | + |
| 45 | +embed: embed_assets.py |
| 46 | + python $< $(SRC_DIR)/*.c |
31 | 47 |
|
32 | 48 | fmt:
|
33 | 49 | clang-format -i src/*.c include/*.h
|
34 | 50 |
|
35 | 51 | clean:
|
36 |
| - $(RM) -r -- $(BIN_DIR)/*.o $(TARGET) |
37 |
| - $(RM) -- Azzian |
| 52 | + $(RM) -r -- $(BUILD_DIR) $(TARGET) |
0 commit comments