diff --git a/makefile.basic b/makefile.basic index 3c57450..2f9d058 100644 --- a/makefile.basic +++ b/makefile.basic @@ -27,6 +27,7 @@ INCLUDE_DIRS::=include CXXFLAGS::=-g -std=c++17 -Wall -pedantic -Wextra EXT::=cpp MAIN_EXECUTABLE::=tester +RELEASE?=0 ifneq ($(WINDOWS),1) CXX::=g++ @@ -48,11 +49,15 @@ else MAIN_EXECUTABLE::=$(MAIN_EXECUTABLE).exe endif -all: CXXFLAGS+=-O0 -release: CXXFLAGS+=-O2 - -memchk: LDFLAGS+=-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls -memchk: CXXFLAGS+=-O0 -fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls +ifeq ($(RELEASE),1) + #a lot of false strict aliasing warnings from gcc 9 + CXXFLAGS+=-O2 -Wno-strict-aliasing +else ifeq ($(MEMCHK),1) + LDFLAGS+=-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls + CXXFLAGS+=-O0 -g3 -ggdb -fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls +else + CXXFLAGS+=-O0 -g3 -ggdb +endif ifeq ($(OS),Windows_NT) mkdir=mkdir $(subst /,\,$(1)) > NUL 2>&1 @@ -74,17 +79,14 @@ OBJECTS::=$(addprefix $(OBJDIR)/,$(subst \,.,$(subst /,.,$(addsuffix .o,$(SOURCE .PHONY: all all: $(MAIN_EXECUTABLE) -.PHONY: memchk -memchk: all +ifeq ($(RELEASE),1) + $(CXX) $(LDFLAGS) $^ -o "$(basename $(MAIN_EXECUTABLE))" $(LDLIBS) + $(STRIP) --strip-all "$(MAIN_EXECUTABLE)" +endif $(MAIN_EXECUTABLE): $(OBJECTS) $(CXX) $(LDFLAGS) $^ -o "$(basename $@)" $(LDLIBS) -.PHONY: release -release: $(OBJECTS) - $(CXX) $(LDFLAGS) $^ -o "$(basename $(MAIN_EXECUTABLE))" $(LDLIBS) - $(STRIP) --strip-all "$(MAIN_EXECUTABLE)" - define GENERATE_OBJECTS $$(OBJDIR)/$(subst \,.,$(subst /,.,$(1))).%.o: $(1)/%