checkArg = $(shell echo 'int main(){}' | $(CXX) $(1) -o /dev/null -xc - &>/dev/null && echo $(1))

CXXFLAGS = -MMD -Iinclude -Wall -Wextra -std=c++2a -O3 -g
#CXXFLAGS = -MMD -Iinclude -Wall -Wextra -std=c++14 -O3 -g     für gcc10: gnu++20

CXXFLAGS += $(call checkArg,-fsanitize=undefined)
LDLIBS += $(call checkArg,-lubsan)
LDFLAGS = -rdynamic
ifneq ($(MEMORY_LIMITS),1)
    CXXFLAGS += $(call checkArg,-fsanitize=address)
    LDLIBS += $(call checkArg,-lasan)
else
    LIMITS = -m 1024 -M 1024
endif

LDLIBS = -ldl
LINK.o = $(LINK.cc)

SRC = $(wildcard *.cc)
OBJ = $(SRC:.cc=.o)

.PHONY: all clean

all: mcp
mcp: $(OBJ)

clean:
	rm -f mcp *.o *.d

$(wildcard *.o): Makefile
-include $(SRC:.cc=.d)
