80 lines
1.8 KiB
Makefile
80 lines
1.8 KiB
Makefile
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
|