64 lines
985 B
Makefile

MAKEFLAGS += -j16
CXX=g++
LD=g++
CLANG_FORMAT=clang-format
CXXFLAGS = -std=c++23 -pedantic-errors -Wall -Wextra -Wconversion
LDFLAGS =
# libraries = ""
# CXXFLAGS += $(shell pkg-config $(libraries) --cflags)
# LDFLAGS += $(shell pkg-config $(libraries) --libs)
RELEASE = 0
GDB = 0
ifeq ($(RELEASE),1)
CXXFLAGS += -O3
else
CXXFLAGS += -g -Wno-unused
ifeq ($(GDB),1)
CXXFLAGS += -ggdb
else
CXXFLAGS += -fsanitize=address
endif
endif
NO_MAIN = 0
ifeq ($(NO_MAIN),1)
CXXFLAGS += -Dmain="not_main"
endif
build_dir = build
obj_dir = $(build_dir)/obj
sources = \
src/main.cpp
target=$(build_dir)/backend
all: $(target)
$(target): $(sources:%.cpp=$(obj_dir)/%.o)
$(LD) -o $@ $(CXXFLAGS) $(LDFLAGS) $^
$(obj_dir)/%.o: %.cpp
@mkdir -p $(dir $@)
$(CXX) $< -c -o $@ -MMD -MP $(CXXFLAGS)
format:
$(CLANG_FORMAT) -style=file -i src/*
check:
$(CLANG_FORMAT) --dry-run --Werror -style=file src/*
clean:
rm -rf $(build_dir)
-include $(sources:%.cpp=$(obj_dir)/%.d)