blob: 0cb65a136dea8805b79efdd379edd3bfe4b60a05 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# This Makefile wraps Rust's cargo build tool.
# It's mostly here for the `install` command.
#
# This Makefile is self-documenting (via the 'help' target)
# see: http://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
CARGO = cargo
CARGO_OPTS =
PREFIX=/usr
HACKS=exuberantbovines
INSTALL_BIN=$(PREFIX)/lib/xscreensaver
INSTALL_CONFIG=$(PREFIX)/share/xscreensaver/config
INSTALL_MAN=$(PREFIX)/share/man
all: ## Alias for build
$(MAKE) build
$(MAKE) doc
build: ## Compiles the default target
$(CARGO) $(CARGO_OPTS) build
build-debug: ## Compiles for 'debug' target
$(CARGO) $(CARGO_OPTS) build --debug
build-release: ## Compiles for 'release' target
$(CARGO) $(CARGO_OPTS) build --release
install: build-release doc-release ## Installs everything!
@echo "Installing under $(PREFIX)..."
sudo mkdir -p $(PREFIX)/lib/xscreensaver
sudo mkdir -p $(PREFIX)/share/xscreensaver/config
@for PROG in $(HACKS); do \
sudo install -m 0755 target/release/$$PROG $(INSTALL_BIN); \
sudo install -m 0644 extra/$$PROG.xml $(INSTALL_CONFIG); \
done
@echo "IMPORTANT: For the hacks to show up you'll need to add the following lines to ~/.xscreensaver:"
@echo "";
@for PROG in $(HACKS); do \
echo "\tGL: $$PROG --root \\\\n\\\\ "; \
done
@echo "";
@echo "(don't worry about duplicate lines, xscreensaver will clean that up)"
clean: ## Deletes intermediate files (including compiled deps)
$(CARGO) $(CARGO_OPTS) clean
check: ## Rebuilds and runs tests
$(MAKE) build
$(MAKE) test
test: ## Runs tests (if they exist)
$(CARGO) $(CARGO_OPTS) test
bench: ## Run benchmarks (if they exist)
$(CARGO) $(CARGO_OPTS) bench
doc: ## Builds documentation (if there is any) for the default target
$(CARGO) $(CARGO_OPTS) doc --no-deps
doc-release: ## Builds documentation (if there is any) for release
$(CARGO) $(CARGO_OPTS) doc --no-deps --release
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-25s\033[0m %s\n", $$1, $$2}'
.PHONY: all build build-debug build-release clean install check test bench doc doc-release help
.DEFAULT_GOAL := all
|