-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
121 lines (112 loc) · 4.87 KB
/
Makefile
File metadata and controls
121 lines (112 loc) · 4.87 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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# SPDX-License-Identifier: GPL-3.0-or-later
# Makefile - Install BCS (Bash Coding Standard)
# BCS1212 compliant
PREFIX ?= /usr/local
BINDIR ?= $(PREFIX)/bin
MANDIR ?= $(PREFIX)/share/man/man1
SHAREDIR ?= $(PREFIX)/share/yatti/BCS
COMPDIR ?= /etc/bash_completion.d
DESTDIR ?=
# Directory of this Makefile (trailing slash). Used to anchor all source
# paths so 'make install' works regardless of the invoking CWD and never
# picks up a like-named file from a parent directory.
srcdir := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
.PHONY: all install uninstall check test help
all: help
install:
install -d $(DESTDIR)$(BINDIR)
install -m 755 $(srcdir)bcs $(DESTDIR)$(BINDIR)/bcs
install -m 755 $(srcdir)bcscheck $(DESTDIR)$(BINDIR)/bcscheck
install -m 755 $(srcdir)bcsdisplay $(DESTDIR)$(BINDIR)/bcsdisplay
install -m 755 $(srcdir)bcstemplate $(DESTDIR)$(BINDIR)/bcstemplate
install -m 755 $(srcdir)bcscodes $(DESTDIR)$(BINDIR)/bcscodes
install -m 755 $(srcdir)bcsgenerate $(DESTDIR)$(BINDIR)/bcsgenerate
install -d $(DESTDIR)$(SHAREDIR)
install -m 644 $(srcdir)LICENSE $(DESTDIR)$(SHAREDIR)/LICENSE
install -m 644 $(srcdir)COPYING $(DESTDIR)$(SHAREDIR)/COPYING
install -d $(DESTDIR)$(SHAREDIR)/data
install -m 644 $(srcdir)data/LICENSE $(DESTDIR)$(SHAREDIR)/data/LICENSE
install -m 644 $(srcdir)data/BASH-CODING-STANDARD.md $(DESTDIR)$(SHAREDIR)/data/
install -m 644 $(srcdir)data/[0-9]*.md $(DESTDIR)$(SHAREDIR)/data/
install -d $(DESTDIR)$(SHAREDIR)/examples/templates
install -m 644 $(srcdir)examples/templates/*.sh.template $(DESTDIR)$(SHAREDIR)/examples/templates/
install -d $(DESTDIR)$(SHAREDIR)/docs
cp -a $(srcdir)docs/. $(DESTDIR)$(SHAREDIR)/docs/
rm -f $(DESTDIR)$(SHAREDIR)/docs/CLAUDE.md
rm -rf $(DESTDIR)$(SHAREDIR)/docs/.claude
install -d $(DESTDIR)$(SHAREDIR)/benchmarks
cp -a $(srcdir)benchmarks/. $(DESTDIR)$(SHAREDIR)/benchmarks/
install -d $(DESTDIR)$(SHAREDIR)/examples
find $(srcdir)examples/ -maxdepth 1 -type f -exec install -m 755 {} $(DESTDIR)$(SHAREDIR)/examples/ \;
install -d $(DESTDIR)$(SHAREDIR)/examples/lib
cd $(srcdir) && tar --exclude='mk-index*' --exclude='BASH-CODING-STANDARD.md' -cf - examples/lib | tar -xf - -C $(DESTDIR)$(SHAREDIR)/
install -d $(DESTDIR)$(MANDIR)
install -m 644 $(srcdir)bcs.1 $(DESTDIR)$(MANDIR)/bcs.1
install -m 644 $(srcdir)docs/BCS-bash.1 $(DESTDIR)$(MANDIR)/BCS-bash.1
ln -sfn BCS-bash.1 $(DESTDIR)$(MANDIR)/bcs-bash.1
@if [ -d $(DESTDIR)$(COMPDIR) ]; then \
install -m 644 $(srcdir)bcs.bash_completion $(DESTDIR)$(COMPDIR)/bcs; \
ln -sfn bcs $(DESTDIR)$(COMPDIR)/bcscheck; \
ln -sfn bcs $(DESTDIR)$(COMPDIR)/bcsdisplay; \
ln -sfn bcs $(DESTDIR)$(COMPDIR)/bcstemplate; \
ln -sfn bcs $(DESTDIR)$(COMPDIR)/bcscodes; \
ln -sfn bcs $(DESTDIR)$(COMPDIR)/bcsgenerate; \
fi
@if [ -d $(DESTDIR)$(PREFIX)/share/yatti/bash-coding-standard ] \
&& [ ! -L $(DESTDIR)$(PREFIX)/share/yatti/bash-coding-standard ]; then \
rm -rf $(DESTDIR)$(PREFIX)/share/yatti/bash-coding-standard; \
fi
@ln -sfn BCS $(DESTDIR)$(PREFIX)/share/yatti/bash-coding-standard 2>/dev/null || true
@if [ -z "$(DESTDIR)" ]; then $(MAKE) --no-print-directory check; fi
uninstall:
rm -f $(DESTDIR)$(BINDIR)/bcs
rm -f $(DESTDIR)$(BINDIR)/bcscheck
rm -f $(DESTDIR)$(BINDIR)/bcsdisplay
rm -f $(DESTDIR)$(BINDIR)/bcstemplate
rm -f $(DESTDIR)$(BINDIR)/bcscodes
rm -f $(DESTDIR)$(BINDIR)/bcsgenerate
rm -f $(DESTDIR)$(MANDIR)/bcs.1
rm -f $(DESTDIR)$(MANDIR)/BCS-bash.1
rm -f $(DESTDIR)$(MANDIR)/bcs-bash.1
rm -f $(DESTDIR)$(COMPDIR)/bcs
rm -f $(DESTDIR)$(COMPDIR)/bcscheck
rm -f $(DESTDIR)$(COMPDIR)/bcsdisplay
rm -f $(DESTDIR)$(COMPDIR)/bcstemplate
rm -f $(DESTDIR)$(COMPDIR)/bcscodes
rm -f $(DESTDIR)$(COMPDIR)/bcsgenerate
rm -rf $(DESTDIR)$(SHAREDIR)
rm -f $(DESTDIR)$(PREFIX)/share/yatti/bash-coding-standard
check:
@command -v bcs >/dev/null 2>&1 \
&& echo 'bcs: OK' \
|| echo 'bcs: NOT FOUND (check PATH)'
@command -v bcscheck >/dev/null 2>&1 \
&& echo 'bcscheck: OK' \
|| echo 'bcscheck: NOT FOUND (check PATH)'
@command -v bcsdisplay >/dev/null 2>&1 \
&& echo 'bcsdisplay: OK' \
|| echo 'bcsdisplay: NOT FOUND (check PATH)'
@command -v bcstemplate >/dev/null 2>&1 \
&& echo 'bcstemplate: OK' \
|| echo 'bcstemplate: NOT FOUND (check PATH)'
@command -v bcscodes >/dev/null 2>&1 \
&& echo 'bcscodes: OK' \
|| echo 'bcscodes: NOT FOUND (check PATH)'
@command -v bcsgenerate >/dev/null 2>&1 \
&& echo 'bcsgenerate: OK' \
|| echo 'bcsgenerate: NOT FOUND (check PATH)'
test:
./tests/run-all-tests.sh
help:
@echo 'Usage: make [target]'
@echo ''
@echo 'Targets:'
@echo ' install Install to $(PREFIX)'
@echo ' uninstall Remove installed files'
@echo ' check Verify installation'
@echo ' test Run test suite'
@echo ' help Show this message'
@echo ''
@echo 'Install from GitHub:'
@echo ' git clone https://github.com/Open-Technology-Foundation/BCS.git'
@echo ' cd BCS && sudo make install'