-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
127 lines (101 loc) · 3.52 KB
/
Makefile
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
122
123
124
125
126
127
BLOCKBAR_SRCS=blockbar.c config.c exec.c modules.c render.c socket.c task.c util.c window-common.c
BLOCKBAR_X11_SRCS=tray.c window.c
BLOCKBAR_WL_SRCS=wl.c
WL_PROTOCOL_DIR=$(shell pkgconf --variable=pkgdatadir wayland-protocols)
WL_PROTOCOL=stable/xdg-shell/xdg-shell.xml wlr-layer-shell-unstable-v1.xml
BBC_SRCS=bbc.c
BLOCKBAR_OBJS=$(BLOCKBAR_SRCS:.c=.o)
WL_HEADERS=$(addprefix protocol/,$(WL_PROTOCOL:.xml=-client-protocol.h))
BLOCKBAR_WL_OBJS=$(addprefix protocol/,$(WL_PROTOCOL:.xml=-protocol.o))
BBC_OBJS=$(BBC_SRCS:.c=.o)
MODULES=text subblocks
MODULEDIRS=$(addprefix modules/,$(MODULES))
VPATH=src
ifeq ($(WAYLAND),1)
BLOCKBAR_SRCS+=$(BLOCKBAR_WL_SRCS)
else
BLOCKBAR_SRCS+=$(BLOCKBAR_X11_SRCS)
endif
DEPS=$(addprefix $(VPATH)/,$(BLOCKBAR_SRCS:.c=.d) $(BBC_SRCS:.c=.d))
PREFIX?=/usr/local
CFLAGS+=-std=gnu99 -Wall -Wextra -D_WITH_DPRINTF
CFLAGS+=-Iinclude/blockbar
CFLAGS+=$(shell pkgconf --cflags cairo)
LDFLAGS+=-rdynamic
LDLIBS+=$(shell pkgconf --libs cairo)
LDLIBS+=-ldl
LDLIBS+=-lujson
DESTDIR?=
BINDIR?=$(PREFIX)/bin
INCDIR?=$(PREFIX)/include
MANDIR?=$(PREFIX)/share/man
BASHDIR?=$(PREFIX)/share/bash-completion
ZSHDIR?=$(PREFIX)/share/zsh/site-functions
MODDIR?=$(PREFIX)/lib/blockbar/modules
CFLAGS+='-DMODDIRS="$(abspath $(MODDIR))"'
ifeq ($(DEBUG),1)
CFLAGS+=-Og -ggdb
endif
export DEBUG
all: $(DEPS)
src/wl.d: $(WL_HEADERS)
-include $(DEPS)
all: blockbar bbc modules
ifeq ($(WAYLAND),1)
CFLAGS+=-Iprotocol -DWAYLAND
CFLAGS+=$(shell pkgconf --cflags wayland-client)
LDLIBS+=$(shell pkgconf --libs wayland-client)
blockbar: $(WL_HEADERS) $(BLOCKBAR_OBJS) $(BLOCKBAR_WL_OBJS)
else
CFLAGS+=$(shell pkgconf --cflags x11)
CFLAGS+=$(shell pkgconf --cflags xrandr)
LDLIBS+=$(shell pkgconf --libs x11)
LDLIBS+=$(shell pkgconf --libs xrandr)
blockbar: $(BLOCKBAR_OBJS)
endif
bbc: $(BBC_OBJS)
modules:
$(foreach m,$(MODULEDIRS),$(MAKE) -C $(m) && ) true
%.d: %.c
$(CC) $(CFLAGS) $< -MM -MT $(@:.d=.o) > $@
protocol/%-protocol.c: $(WL_PROTOCOL_DIR)/%.xml
mkdir -p $(dir $@)
wayland-scanner private-code $< $@
protocol/%-client-protocol.h: $(WL_PROTOCOL_DIR)/%.xml
mkdir -p $(dir $@)
wayland-scanner client-header $< $@
protocol/%-protocol.c: protocol/%.xml
wayland-scanner private-code $< $@
protocol/%-client-protocol.h: protocol/%.xml
wayland-scanner client-header $< $@
install: all
mkdir -p "$(DESTDIR)$(BINDIR)"
mkdir -p "$(DESTDIR)$(INCDIR)"
mkdir -p "$(DESTDIR)$(MANDIR)/man1"
mkdir -p "$(DESTDIR)$(BASHDIR)"
mkdir -p "$(DESTDIR)$(ZSHDIR)"
mkdir -p "$(DESTDIR)$(MODDIR)"
cp -fp blockbar "$(DESTDIR)$(BINDIR)"
cp -fp bbc "$(DESTDIR)$(BINDIR)"
cp -fpr include/blockbar "$(DESTDIR)$(INCDIR)"
cp -fp doc/blockbar.1 "$(DESTDIR)$(MANDIR)/man1"
cp -fp autocomplete/bbc.bash "$(DESTDIR)$(BASHDIR)/bbc"
cp -fp autocomplete/bbc.zsh "$(DESTDIR)$(ZSHDIR)/_bbc"
cp -fp modules/rebuild_modules.sh "$(DESTDIR)$(MODDIR)"
$(foreach m,$(MODULES),cp -fp "modules/$(m)/$(m).so" "$(DESTDIR)$(MODDIR)" && ) true
uninstall:
rm -f "$(DESTDIR)$(BINDIR)/blockbar"
rm -f "$(DESTDIR)$(BINDIR)/bbc"
rm -fr "$(DESTDIR)$(INCDIR)/blockbar"
rm -f "$(DESTDIR)$(MANDIR)/man1/blockbar.1"
rm -f "$(DESTDIR)$(BASHDIR)/bbc"
rm -f "$(DESTDIR)$(ZSHDIR)/_bbc"
rm -rf "$(DESTDIR)$(MODDIR)"
clean:
rm -f blockbar bbc
rm -f $(addprefix $(VPATH)/,$(BLOCKBAR_OBJS) $(BBC_OBJS)) $(DEPS)
$(foreach m,$(MODULEDIRS),$(MAKE) clean -C $(m) && ) true
rm -f $(addprefix protocol/,$(WL_PROTOCOL:.xml=-protocol.c))
rm -f $(addprefix protocol/,$(WL_PROTOCOL:.xml=-client-protocol.h))
rm -f $(addprefix protocol/,$(WL_PROTOCOL:.xml=-protocol.o))
.PHONY: all modules install uninstall clean