SRC_DIR := src BUILD_DIR := build RELEASE_DIR := $(BUILD_DIR)/release DEBUG_DIR := $(BUILD_DIR)/debug BINARY := stj CORES := $(shell nproc --all) PREFIX := /usr/local MANPREFIX := $(PREFIX)/share/man all: debug .PHONY: all # Installation & removal install: release mkdir -p $(DESTDIR)$(PREFIX)/bin cp -f build/release/stj $(DESTDIR)$(PREFIX)/bin chmod 755 $(DESTDIR)$(PREFIX)/bin/stj mkdir -p $(DESTDIR)$(MANPREFIX)/man1 sed "s/VERSION/$(VERSION)/g" < data/stj.1 > $(DESTDIR)$(MANPREFIX)/man1/stj.1 chmod 644 $(DESTDIR)$(MANPREFIX)/man1/stj.1 tic -sx data/stj.info cp -f data/stj.desktop $(DESTDIR)$(PREFIX)/share/applications uninstall: rm -f $(DESTDIR)$(PREFIX)/bin/stj rm -f $(DESTDIR)$(MANPREFIX)/man1/stj.1 rm -f $(DESTDIR)$(PREFIX)/share/applications/stj.desktop # Full clean clean: @ [ ! -e '$(BINARY)' ] || rm '$(BINARY)' @ rm -rf '$(BUILD_DIR)' .PHONY: clean # Release run-release: release @ ./'$(RELEASE_DIR)/$(BINARY)' .PHONY: run-release release: $(RELEASE_DIR)/Makefile @ make -C '$(RELEASE_DIR)' -j'$(CORES)' && \ ln -sf '$(RELEASE_DIR)'/'$(BINARY)' ./'$(BINARY)' .PHONY: release $(RELEASE_DIR)/Makefile: $(SRC_DIR)/CMakeLists.txt @ cmake \ -H'$(SRC_DIR)' \ -B'$(RELEASE_DIR)' \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON clean-release: @ rm -rf '$(RELEASE_DIR)' .PHONY: clean-release # Debug run-debug: debug @ ./'$(DEBUG_DIR)/$(BINARY)' .PHONY: run-debug debug: $(DEBUG_DIR)/Makefile @ make -C '$(DEBUG_DIR)' -j'$(CORES)' && \ ln -sf '$(DEBUG_DIR)/$(BINARY)' ./'$(BINARY)' .PHONY: debug $(DEBUG_DIR)/Makefile: $(SRC_DIR)/CMakeLists.txt @ cmake \ -H'$(SRC_DIR)' \ -B'$(DEBUG_DIR)' \ -DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_EXPORT_COMPILE_COMMANDS=ON clean-debug: @ rm -rf '$(DEBUG_DIR)' .PHONY: clean-debug