mirror of
https://github.com/Mercantec-GHC/h5-projekt-mst.git
synced 2026-08-26 21:27:38 +02:00
70 lines
1.4 KiB
Makefile
70 lines
1.4 KiB
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
|
|
|
|
build_dir = build
|
|
obj_dir = $(build_dir)/obj
|
|
src_dir = src
|
|
test_dir = tests
|
|
|
|
sources = $(shell find $(src_dir) -name '*.cpp' -and -not -name 'main.cpp')
|
|
sources_with_main=$(sources) src/main.cpp
|
|
|
|
tests = $(shell find $(test_dir) -name '*.cpp')
|
|
|
|
target=$(build_dir)/backend
|
|
|
|
all: $(target)
|
|
|
|
$(target): $(sources_with_main:%.cpp=$(obj_dir)/%.o)
|
|
$(LD) -o $@ $(CXXFLAGS) $(LDFLAGS) $^
|
|
|
|
$(obj_dir)/%.o:%.cpp
|
|
@mkdir -p $(dir $@)
|
|
$(CXX) $< -c -o $@ -MMD -MP $(CXXFLAGS)
|
|
|
|
test: $(tests:tests/%.cpp=$(build_dir)/tests/test_%)
|
|
printf "%s\n" $^ | xargs -I % sh -c 'echo "- %..." && ./% && echo "- %: OK" || (echo "- %: FAILED" && exit 1)'
|
|
|
|
$(build_dir)/tests/test_%: $(obj_dir)/tests/%.o $(sources:%.cpp=$(obj_dir)/%.o)
|
|
@mkdir -p $(dir $@)
|
|
$(LD) -o $@ $(CXXFLAGS) $(LDFLAGS) $^
|
|
|
|
format:
|
|
$(CLANG_FORMAT) -style=file -i src/*
|
|
|
|
check:
|
|
$(CLANG_FORMAT) --dry-run --Werror -style=file src/*
|
|
|
|
clean:
|
|
rm -rf $(build_dir)
|
|
|
|
-include $(sources_with_main:%.cpp=$(obj_dir)/%.d) $(tests:%.cpp=$(obj_dir)/%.d)
|
|
|