-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
executable file
·67 lines (50 loc) · 1.4 KB
/
Copy pathMakefile
File metadata and controls
executable file
·67 lines (50 loc) · 1.4 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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
CXX := g++
CXXFLAGS := -Wall -Wextra -std=c++17 -Iinclude -MMD -MP
LDFLAGS :=
BUILD_DIR := build
OBJ_DIR := $(BUILD_DIR)/obj
ifeq ($(OS),Windows_NT)
LDFLAGS += -lws2_32 -lwsock32
endif
# Source files
MAIN_SRC := src/main.cpp
GENERATOR_SRC := src/generator.cpp
WARMUP_SRC := src/warmup_generator.cpp
# Targets
MAIN_TARGET := $(BUILD_DIR)/main
GENERATOR_TARGET := $(BUILD_DIR)/generator
WARMUP_TARGET := $(BUILD_DIR)/warmup_generator
# Object files
MAIN_OBJ := $(OBJ_DIR)/main.o
GENERATOR_OBJ := $(OBJ_DIR)/generator.o
WARMUP_OBJ := $(OBJ_DIR)/warmup_generator.o
# Dependency files
DEPS := $(MAIN_OBJ:.o=.d) $(GENERATOR_OBJ:.o=.d) $(WARMUP_OBJ:.o=.d)
all: $(MAIN_TARGET) $(GENERATOR_TARGET) $(WARMUP_TARGET)
# Main executable
$(MAIN_TARGET): $(MAIN_OBJ)
$(CXX) $< -o $@ $(LDFLAGS)
# Generator executable
$(GENERATOR_TARGET): $(GENERATOR_OBJ)
$(CXX) $< -o $@ $(LDFLAGS)
# Warmup executable
$(WARMUP_TARGET): $(WARMUP_OBJ)
$(CXX) $< -o $@ $(LDFLAGS)
# Compile any CPP file to object
$(OBJ_DIR)/%.o: src/%.cpp | $(OBJ_DIR)
$(CXX) $(CXXFLAGS) -c $< -o $@
# Create build directories
$(OBJ_DIR):
@mkdir -p "$(OBJ_DIR)" "$(BUILD_DIR)"
# Include dependency rules
-include $(DEPS)
# Run targets
run: $(MAIN_TARGET)
@./$(MAIN_TARGET) $(ARGS)
generate: $(GENERATOR_TARGET)
@./$(GENERATOR_TARGET) $(ARGS)
warmup: $(WARMUP_TARGET)
@./$(WARMUP_TARGET)
clean:
rm -rf "$(BUILD_DIR)"
.PHONY: all run generate warmup clean