ifeq ($(shell which root-config 2>/dev/null),) ROOT = $(HOME)/root_build/debug $(info Cannot find root-config: guessing the root is $(ROOT). Please source thisroot.sh) ROOTINCDIR = $(ROOT)/include ROOTLIBDIR = $(ROOT)/lib else ROOTINCDIR = $(shell root-config --incdir) ROOTLIBDIR = $(shell root-config --libdir) endif CFLAGS = -Wall -Wextra -pedantic -fcolor-diagnostics INC = -Ithird_party -Ithird_party/imgui LIBS = -lglfw ROOTFLAGS = -std=c++17 -m64 -I$(ROOTINCDIR) ROOTLIBS = -L$(ROOTLIBDIR) -lCore -lRIO -lROOTNTuple -lxxhash -pthread -Wl,-rpath,$(ROOTLIBDIR) IMGUI_FLAGS = -Ithird_party -Ithird_party/imgui ifeq ($(shell which mold 2>/dev/null),) MOLD = else MOLD = mold -run endif .PHONY: all clean all: build/imgui.o ubsan clean: rm -f build/*.o rntviewer build/imgui.o: src/imgui_inc.cpp @mkdir -p $(@D)/build $(CXX) -O2 -fPIC -c $(IMGUI_FLAGS) $< -o $@ # debug build d: build/imgui.o $(MOLD) $(CXX) -DDEBUG -g -O0 -DENABLE_ASAN $(CFLAGS) $(INC) $(ROOTFLAGS) -o rntviewer src/rntviewer.cpp build/imgui.o -lasan $(LIBS) $(ROOTLIBS) # release build r: build/imgui.o $(MOLD) $(CXX) -O2 -DNDEBUG $(CFLAGS) $(INC) $(ROOTFLAGS) -o rntviewer src/rntviewer.cpp build/imgui.o $(LIBS) $(ROOTLIBS) # debug-release build dr: build/imgui.o $(MOLD) $(CXX) -g -O2 $(CFLAGS) $(INC) $(ROOTFLAGS) -o rntviewer src/rntviewer.cpp build/imgui.o $(LIBS) $(ROOTLIBS) # sanitizers asan: build/imgui.o $(MOLD) $(CXX) -DDEBUG -g -O0 $(CFLAGS) -fsanitize=address $(INC) $(ROOTFLAGS) -o rntviewer src/rntviewer.cpp build/imgui.o $(LIBS) $(ROOTLIBS) ubsan: build/imgui.o $(MOLD) $(CXX) -DDEBUG -g -O0 $(CFLAGS) -fsanitize=undefined $(INC) $(ROOTFLAGS) -o rntviewer src/rntviewer.cpp build/imgui.o $(LIBS) $(ROOTLIBS) # no gfx debug build nogfx_d: $(MOLD) $(CXX) -DDEBUG -g -O0 -DRNT_NO_GFX -DENABLE_ASAN $(CFLAGS) $(INC) $(ROOTFLAGS) -o rntviewer src/rntviewer.cpp -lasan $(ROOTLIBS) # no gfx release build nogfx_r: $(MOLD) $(CXX) -O2 -DRNT_NO_GFX -DNDEBUG $(CFLAGS) $(INC) $(ROOTFLAGS) -o rntviewer src/rntviewer.cpp $(ROOTLIBS)