-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
77 lines (60 loc) · 1.87 KB
/
Makefile
File metadata and controls
77 lines (60 loc) · 1.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
SHELL = /bin/sh
.SUFFIXES:
.SUFFIXES: .sh
PREFIX ?= /usr/local
EXEC_PREFIX ?= $(PREFIX)
bindir ?= $(EXEC_PREFIX)/bin
DESTDIR ?=
srcdir ?= .
BUILD_DIR := build
BUILD_FILE := $(BUILD_DIR)/doasedit
LIB_SCRIPTS := doasedit_common \
doasedit_client \
doasedit_server
MAIN_SCRIPT := doasedit_main
STRIPPED_LIBS := $(patsubst %,$(BUILD_DIR)/%.stripped,$(LIB_SCRIPTS))
STRIPPED_MAIN := $(BUILD_DIR)/$(MAIN_SCRIPT).stripped
INSTALL := install
INSTALL_PROGRAM := $(INSTALL)
INSTALL_DATA = ${INSTALL} -m 644
.PHONY: all installdirs install check clean
all: $(BUILD_FILE)
$(BUILD_DIR):
mkdir -p "$(BUILD_DIR)"
$(BUILD_DIR)/%.stripped: $(srcdir)/%.sh | $(BUILD_DIR)
@printf '\n###\n### BEGIN %s\n###\n' "$(notdir $<)" >> $@
@sed -e '1 s/^#!.*$$//' $< >> $@
@printf '\n' >> $@
@printf '\n###\n### END %s\n###\n' "$(notdir $<)" >> $@
$(BUILD_FILE): $(STRIPPED_LIBS) $(STRIPPED_MAIN)
@printf '%s\n' "#!/bin/sh" > $@
@for lib in $(STRIPPED_LIBS); do \
cat "$$lib" >> $@; \
printf '\n' >> $@; \
done
@cat "$(STRIPPED_MAIN)" >> $@
@chmod 755 "$(BUILD_FILE)"
@echo "Built $(BUILD_FILE)"
installdirs:
mkdir -p "$(DESTDIR)$(bindir)"
install: $(BUILD_FILE) | installdirs
@$(INSTALL_PROGRAM) -m 755 "$(BUILD_FILE)" "$(DESTDIR)$(bindir)/doasedit"
@echo "Installed to $(DESTDIR)$(bindir)/doasedit"
check: $(BUILD_FILE)
@command -v shellcheck >/dev/null 2>&1 || { echo "shellcheck not found; install shellcheck to run 'make validate'"; exit 2; }
@echo "Running shellcheck on $(BUILD_FILE)..."
@rcfile="$(abspath $(srcdir)/.shellcheckrc)"; \
if [ -f "$$rcfile" ]; then \
shellcheck --rcfile "$$rcfile" -S error "$(BUILD_FILE)"; \
else \
shellcheck -S error "$(BUILD_FILE)"; \
fi \
status="$$?" \
if [ "$$status" -ne 0 ]; then \
printf 'Shellcheck found errors'; \
exit "$$status" \
else \
printf 'shellcheck found no errors' \
fi
clean:
-rm -rf "$(BUILD_FILE)" "$(BUILD_DIR)"