CC := clang CXX := clang++ CFLAGS := -g3 -O3 -std=c2x -Wall -Wextra -MMD -MP CXXFLAGS := -g3 -O3 -std=c++2b -Wall -Wextra -MMD -MP LDFLAGS := -fuse-ld=lld BUILD_DIR := build CSOURCES := $(shell find . -name '*.c') CXXSOURCES := $(shell find . -name '*.cpp') COBJS := $(CSOURCES:%.c=$(BUILD_DIR)/%.o) CXXOBJS := $(CXXSOURCES:%.cpp=$(BUILD_DIR)/%.o) DEPS := $(COBJS:.o=.d) $(CXXOBJS:.o=.d) .PHONY: all clean vg help all: $(BUILD_DIR)/main $(BUILD_DIR)/main: $(COBJS) $(CXXOBJS) @mkdir -p $(@D) ifeq ($(strip $(CXXOBJS)),) $(CC) $(LDFLAGS) -o $@ $(COBJS) else $(CXX) $(LDFLAGS) -o $@ $(COBJS) $(CXXOBJS) endif $(BUILD_DIR)/%.o: %.c @mkdir -p $(@D) $(CC) $(CFLAGS) -c $< -o $@ $(BUILD_DIR)/%.o: %.cpp @mkdir -p $(@D) $(CXX) $(CXXFLAGS) -c $< -o $@ -include $(DEPS) clean: rm -rf $(BUILD_DIR) run: $(BUILD_DIR)/main $< $(ARGS) vg: $(BUILD_DIR)/main valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes $< $(ARGS) help: @echo "Available commands:" @echo " all - Build the project" @echo " clean - Remove build files" @echo " run - Run the project" @echo " vg - Run Valgrind on the project" @echo " help - Show this help message"CC=gcc CXX=g++ RM=rm -f CPPFLAGS=-g $(shell root-config --cflags) LDFLAGS=-g $(shell root-config --ldflags) LDLIBS=$(shell root-config --libs) SRCS=tool.cc support.cc OBJS=$(subst .cc,.o,$(SRCS)) all: tool tool: $(OBJS) $(CXX) $(LDFLAGS) -o tool $(OBJS) $(LDLIBS) tool.o: tool.cc support.hh support.o: support.hh support.cc clean: $(RM) $(OBJS) distclean: clean $(RM) tool CC=gcc CXX=g++ RM=rm -f CPPFLAGS=-g $(shell root-config --cflags) LDFLAGS=-g $(shell root-config --ldflags) LDLIBS=$(shell root-config --libs) SRCS=tool.cc support.cc OBJS=$(subst .cc,.o,$(SRCS)) all: tool tool: $(OBJS) $(CXX) $(LDFLAGS) -o tool $(OBJS) $(LDLIBS) tool.o: tool.cc support.hh support.o: support.hh support.cc clean: $(RM) $(OBJS) distclean: clean $(RM) tool