1PREFIX ?= /usr
2BINDIR ?= ${PREFIX}/bin
3XDGDIR ?= ${PREFIX}/etc/xdg
4
5CC ?= gcc
6
7SRCS_RAW = skippy wm dlist mainwin clientwin layout focus config tooltip img img-xlib
8PACKAGES = x11 xft xrender xcomposite xdamage xfixes
9
10# === Options ===
11ifeq "${CFG_NO_XINERAMA}" ""
12	CPPFLAGS += -DCFG_XINERAMA
13	PACKAGES += xext xinerama
14endif
15
16ifeq "${CFG_NO_PNG}" ""
17	CPPFLAGS += -DCFG_LIBPNG
18	SRCS_RAW += img-png
19	PACKAGES += libpng zlib
20endif
21
22ifeq "${CFG_NO_JPEG}" ""
23	CPPFLAGS += -DCFG_JPEG
24	SRCS_RAW += img-jpeg
25	LIBS += -ljpeg
26endif
27
28ifeq "${CFG_NO_GIF}" ""
29	CPPFLAGS += -DCFG_GIFLIB
30	SRCS_RAW += img-gif
31	LIBS += -lgif
32endif
33
34ifeq "$(CFG_DEV)" ""
35	CFLAGS ?= -DNDEBUG -O2 -D_FORTIFY_SOURCE=2
36else
37	CC = clang
38	CFLAGS += -ggdb -Wshadow -Weverything -Wno-unused-parameter -Wno-conversion -Wno-sign-conversion -Wno-gnu -Wno-disabled-macro-expansion -Wno-padded -Wno-c11-extensions -Wno-sign-compare -Wno-vla -Wno-cast-align
39	export LD_ALTEXEC = /usr/bin/ld.gold
40	# Xinerama debugging
41	CPPFLAGS += -DDEBUG_XINERAMA
42endif
43
44CFLAGS += -std=c99 -Wall
45LDFLAGS ?= -Wl,-O1 -Wl,--as-needed
46INCS = $(shell pkg-config --cflags $(PACKAGES))
47LIBS += -lm $(shell pkg-config --libs $(PACKAGES))
48
49# === Version string ===
50SKIPPYXD_VERSION ?= git-$(shell git describe --always --dirty)-$(shell git log -1 --date=short --pretty=format:%cd)
51CPPFLAGS += -DSKIPPYXD_VERSION="\"${SKIPPYXD_VERSION}\""
52
53# === Recipes ===
54EXESUFFIX =
55BINS = skippy-xd${EXESUFFIX}
56SRCS = $(foreach name,$(SRCS_RAW),src/$(name).c)
57HDRS = $(foreach name,$(SRCS_RAW),src/$(name).h)
58OBJS = $(foreach name,$(SRCS_RAW),$(name).o)
59
60.DEFAULT_GOAL := skippy-xd${EXESUFFIX}
61
62%.o: src/%.c ${HDRS}
63	${CC} ${INCS} ${CFLAGS} ${CPPFLAGS} -c src/$*.c
64
65all: skippy-xd${EXESUFFIX}
66
67skippy-xd${EXESUFFIX}: ${OBJS}
68	${CC} ${LDFLAGS} -o skippy-xd${EXESUFFIX} ${OBJS} ${LIBS}
69
70clean:
71	rm -f ${BINS} ${OBJS} src/.clang_complete
72
73install: ${BINS} skippy-xd.sample.rc
74	install -d "${DESTDIR}${BINDIR}/" "${DESTDIR}${XDGDIR}/"
75	install -m 755 ${BINS} "${DESTDIR}${BINDIR}/"
76	install -m 644 skippy-xd.sample.rc "${DESTDIR}${XDGDIR}/skippy-xd.rc.sample"
77
78uninstall:
79	# Should configuration file be removed?
80	rm -f $(foreach bin,$(BINS),"${DESTDIR}${BINDIR}/$(bin)")
81
82src/.clang_complete: Makefile
83	@(for i in $(filter-out -O% -DNDEBUG, $(CPPFLAGS) $(CFLAGS) $(INCS)); do echo "$$i"; done) > $@
84
85version:
86	@echo "${COMPTON_VERSION}"
87
88.PHONY: uninstall clean docs version
89