-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
71 lines (54 loc) · 1.36 KB
/
Makefile
File metadata and controls
71 lines (54 loc) · 1.36 KB
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
69
70
71
PREFIX=/usr/local
INSTALL_DIR=$(PREFIX)/bin
AZU_SYSTEM=$(INSTALL_DIR)/azu
# Manpage installation directories
MANPREFIX=$(PREFIX)/share/man
MANDIR=$(MANPREFIX)/man1
OUT_DIR=$(CURDIR)/bin
AZU=$(OUT_DIR)/azu
SOURCE_FILE=src/azu_cli.cr
all: build | link
build: shard $(AZU)
.PHONY: shard
shard:
@echo "Building Azu CLI"
shards build --production --ignore-crystal-version
$(AZU): $(AZU_SOURCES) | $(OUT_DIR)
crystal build -o $@ $(SOURCE_FILE) -p --no-debug
$(OUT_DIR) $(INSTALL_DIR):
@mkdir -p $@
$(MANDIR):
@mkdir -p $(MANDIR)
.PHONY: run
run:
$(AZU)
.PHONY: install
install: build install-man | $(INSTALL_DIR)
rm -f $(AZU_SYSTEM)
cp $(AZU) $(AZU_SYSTEM)
.PHONY: install-man
install-man: man | $(MANDIR)
@echo "Installing man page to $(MANDIR)"
cp docs/man/azu.1 $(MANDIR)/azu.1
gzip -f $(MANDIR)/azu.1
.PHONY: uninstall-man
uninstall-man:
@echo "Removing man page from $(MANDIR)"
rm -f $(MANDIR)/azu.1.gz $(MANDIR)/azu.1
.PHONY: link
link: build | $(INSTALL_DIR)
@echo "Symlinking $(AZU) to $(AZU_SYSTEM)"
ln -s $(AZU) $(AZU_SYSTEM)
.PHONY: force_link
force_link: build | $(INSTALL_DIR)
@echo "Symlinking $(AZU) to $(AZU_SYSTEM)"
ln -sf $(AZU) $(AZU_SYSTEM)
.PHONY: clean
clean:
rm -rf $(AZU)
.PHONY: distclean
distclean:
rm -rf $(AZU) .crystal .shards libs lib
.PHONY: man
man:
@echo "Man page available at docs/man/azu.1; use 'make install-man' to install"