Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CXX = g++
- CXXFLAGS = -O3 -std=c++17 -Wall -Wextra -DNDEBUG
- INCLUDES = -Isrc
- TMPDIR = tmp
- TARGET := Midnight
- # Detect Windows
- ifeq ($(OS), Windows_NT)
- MKDIR := mkdir
- uname_S := Windows
- SUFFIX := .exe
- else
- ifeq ($(COMP), MINGW)
- MKDIR := mkdir
- uname_S := Windows
- SUFFIX := .exe
- else
- MKDIR := mkdir -p
- LDFLAGS := -pthread
- uname_S := $(shell uname -s)
- SUFFIX :=
- endif
- endif
- ifeq ($(build), debug)
- CXXFLAGS := -g3 -O3 $(INCLUDES) -std=c++17 -Wall -Wextra -pedantic
- endif
- ifeq ($(build), release)
- CXXFLAGS := -O3 -std=c++17 $(INCLUDES) -Wall -Wextra -pedantic -DNDEBUG
- LDFLAGS := -lpthread -static -static-libgcc -static-libstdc++ -Wl,--no-as-needed
- endif
- # Different native flag for macOS
- ifeq ($(uname_S), Darwin)
- LDFLAGS =
- endif
- rwildcard=$(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2))
- SRC_FILES := $(call rwildcard,src/,*.cpp) main.cpp
- OBJECTS := $(patsubst %.cpp,$(TMPDIR)/%.o,$(SRC_FILES))
- DEPENDS := $(patsubst %.cpp,$(TMPDIR)/%.d,$(SRC_FILES))
- .PHONY: clean all tests FORCE
- all: $(TARGET)
- $(TARGET): $(OBJECTS)
- $(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)
- $(TMPDIR)/%.o: %.cpp | $(TMPDIR)
- $(CXX) $(CXXFLAGS) -c $< -o $@ $(LDFLAGS)
- $(TMPDIR):
- $(MKDIR) "$(TMPDIR)" "$(TMPDIR)/src"
- clean:
- rm -rf $(TMPDIR)
- -include $(DEPENDS)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement