-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
94 lines (74 loc) · 2.31 KB
/
Makefile
File metadata and controls
94 lines (74 loc) · 2.31 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
PREFIX ?= /usr/local
BINDIR ?= $(PREFIX)/bin
DATADIR ?= $(PREFIX)/share
CC ?= cc
PKG_CONFIG ?= pkg-config
TARGET := vwm
BUILD_DIR := build
APPDIR := $(DATADIR)/vwm
SRC := \
src/main.c \
src/config.c \
src/wm.c \
src/x11.c \
src/bar.c \
src/layout.c \
src/client.c \
src/actions.c \
src/util.c \
src/system_status.c \
src/bar_modules.c
OBJ := $(SRC:src/%.c=$(BUILD_DIR)/%.o)
WARN_CFLAGS := -std=c11 -Wall -Wextra -Wpedantic
OPT_CFLAGS ?= -O2
CPPFLAGS ?= -D_POSIX_C_SOURCE=200809L -Iinclude
CFLAGS ?=
LDFLAGS ?=
PKGS := x11 x11-xcb xcb xcb-randr xcb-icccm xcb-keysyms xft fontconfig cairo xrender xext
PKG_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(PKGS) 2>/dev/null)
PKG_LIBS := $(shell $(PKG_CONFIG) --libs $(PKGS) 2>/dev/null) -lXrender
.PHONY: all clean check deps-check install install-config uninstall pkg srcinfo reload
all: $(TARGET)
$(TARGET): check $(OBJ)
$(CC) $(OBJ) -o $@ $(LDFLAGS) $(PKG_LIBS)
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
$(BUILD_DIR)/%.o: src/%.c | $(BUILD_DIR)
$(CC) $(CPPFLAGS) $(WARN_CFLAGS) $(OPT_CFLAGS) $(CFLAGS) $(PKG_CFLAGS) -c $< -o $@
check:
@$(PKG_CONFIG) --exists $(PKGS) || { \
echo "Missing required build dependencies."; \
echo "On Arch/Artix install:"; \
echo " doas pacman -S base-devel pkgconf libx11 libxcb xcb-util-wm xcb-util-keysyms libxft fontconfig cairo libxrender libxext"; \
exit 1; \
}
deps-check: check
@echo "build dependencies OK"
install: $(TARGET)
install -d "$(DESTDIR)$(BINDIR)"
install -m 0755 "$(TARGET)" "$(DESTDIR)$(BINDIR)/$(TARGET)"
install -d "$(DESTDIR)$(APPDIR)"
install -m 0644 example/vwm.conf "$(DESTDIR)$(APPDIR)/vwm.conf.example"
@if [ -z "$(DESTDIR)" ] && [ ! -f "$(APPDIR)/vwm.conf" ]; then \
install -m 0644 example/vwm.conf "$(APPDIR)/vwm.conf"; \
fi
install-config:
@mkdir -p "$(HOME)/.config/vwm"
@if [ -f "$(HOME)/.config/vwm/vwm.conf" ]; then \
echo "Config already exists: ~/.config/vwm/vwm.conf (not overwriting)"; \
else \
install -m 0644 example/vwm.conf "$(HOME)/.config/vwm/vwm.conf"; \
echo "Installed config: ~/.config/vwm/vwm.conf"; \
fi
uninstall:
rm -f "$(DESTDIR)$(BINDIR)/$(TARGET)"
rm -f "$(DESTDIR)$(APPDIR)/vwm.conf.example"
rm -f "$(DESTDIR)$(APPDIR)/vwm.conf"
pkg:
makepkg -fs
srcinfo:
makepkg --printsrcinfo > .SRCINFO
reload:
pkill -HUP -x $(TARGET) || true
clean:
rm -rf $(BUILD_DIR) $(TARGET)