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