APPNAME ?= gitstatusd OBJDIR ?= obj CXX ?= g++ ZSH := $(shell command -v zsh 2> /dev/null) VERSION ?= $(shell . ./build.info && printf "%s" "$$gitstatus_version") # Note: -fsized-deallocation is not used to avoid binary compatibility issues on macOS. # # Sized delete is implemented as __ZdlPvm in /usr/lib/libc++.1.dylib but this symbol is # missing in macOS prior to 10.13. CXXFLAGS += -std=c++14 -funsigned-char -O3 -DNDEBUG -DGITSTATUS_VERSION=$(VERSION) # -Wall -g -fsanitize=thread LDFLAGS += -pthread # -fsanitize=thread LDLIBS += -lgit2 # -lprofiler -lunwind SRCS := $(shell find src -name "*.cc") OBJS := $(patsubst src/%.cc, $(OBJDIR)/%.o, $(SRCS)) all: $(APPNAME) $(APPNAME): usrbin/$(APPNAME) usrbin/$(APPNAME): $(OBJS) $(CXX) $(OBJS) $(LDFLAGS) $(LDLIBS) -o $@ $(OBJDIR): mkdir -p -- $(OBJDIR) $(OBJDIR)/%.o: src/%.cc Makefile build.info | $(OBJDIR) $(CXX) $(CXXFLAGS) -MM -MT $@ src/$*.cc >$(OBJDIR)/$*.dep $(CXX) $(CXXFLAGS) -Wall -c -o $@ src/$*.cc clean: rm -rf -- $(OBJDIR) zwc: $(or $(ZSH),:) -fc 'for f in *.zsh install; do zcompile -R -- $$f.zwc $$f || exit; done' minify: rm -rf -- .clang-format .git .gitattributes .gitignore .vscode deps docs src usrbin/.gitkeep LICENSE Makefile README.md build mbuild pkg: zwc GITSTATUS_DAEMON= GITSTATUS_CACHE_DIR=$(shell pwd)/usrbin ./install -f -include $(OBJS:.o=.dep) .PHONY: help help: @echo "Usage: make [TARGET]" @echo "Available targets:" @echo " all Build $(APPNAME) (default target)" @echo " clean Remove generated files and directories" @echo " zwc Compile Zsh files" @echo " minify Remove unnecessary files and folders" @echo " pkg Create a package"