Advertisement
adfasdfadsfasdf

Untitled

Mar 21st, 2023
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Make 1.37 KB | None | 0 0
  1. CXX = g++
  2. CXXFLAGS = -O3 -std=c++17 -Wall -Wextra -DNDEBUG
  3. INCLUDES = -Isrc
  4. TMPDIR = tmp
  5. TARGET := Midnight
  6.  
  7. # Detect Windows
  8. ifeq ($(OS), Windows_NT)
  9.     MKDIR    := mkdir
  10.     uname_S  := Windows
  11.     SUFFIX   := .exe
  12. else
  13. ifeq ($(COMP), MINGW)
  14.     MKDIR    := mkdir
  15.     uname_S  := Windows
  16.     SUFFIX   := .exe
  17. else
  18.     MKDIR   := mkdir -p
  19.     LDFLAGS := -pthread
  20.     uname_S := $(shell uname -s)
  21.     SUFFIX  :=
  22. endif
  23. endif
  24.  
  25. ifeq ($(build), debug)
  26.     CXXFLAGS := -g3 -O3 $(INCLUDES) -std=c++17 -Wall -Wextra -pedantic
  27. endif
  28.  
  29. ifeq ($(build), release)
  30.     CXXFLAGS := -O3 -std=c++17 $(INCLUDES) -Wall -Wextra -pedantic -DNDEBUG
  31.     LDFLAGS  := -lpthread -static -static-libgcc -static-libstdc++ -Wl,--no-as-needed
  32. endif
  33.  
  34. # Different native flag for macOS
  35. ifeq ($(uname_S), Darwin)
  36.     LDFLAGS =
  37. endif
  38.  
  39. rwildcard=$(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2))
  40.  
  41. SRC_FILES := $(call rwildcard,src/,*.cpp) main.cpp
  42. OBJECTS   := $(patsubst %.cpp,$(TMPDIR)/%.o,$(SRC_FILES))
  43. DEPENDS   := $(patsubst %.cpp,$(TMPDIR)/%.d,$(SRC_FILES))
  44.    
  45. .PHONY: clean all tests FORCE
  46.  
  47. all: $(TARGET)
  48.  
  49. $(TARGET): $(OBJECTS)
  50.     $(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)
  51.  
  52. $(TMPDIR)/%.o: %.cpp | $(TMPDIR)
  53.     $(CXX) $(CXXFLAGS) -c $< -o $@ $(LDFLAGS)
  54.  
  55. $(TMPDIR):
  56.     $(MKDIR) "$(TMPDIR)" "$(TMPDIR)/src"
  57.  
  58. clean:
  59.     rm -rf $(TMPDIR)
  60.  
  61. -include $(DEPENDS)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement