diff --git a/Makefile b/Makefile deleted file mode 100644 index 67900d9a..00000000 --- a/Makefile +++ /dev/null @@ -1,197 +0,0 @@ -# Use tab to indent recipe lines, spaces to indent other lines, otherwise -# GNU make may get unhappy. - -CC ?= gcc - -PREFIX ?= /usr -BINDIR ?= $(PREFIX)/bin -MANDIR ?= $(PREFIX)/share/man/man1 -APPDIR ?= $(PREFIX)/share/applications -ICODIR ?= $(PREFIX)/share/icons/hicolor/ - -PACKAGES = x11 x11-xcb xcb-renderutil xcb-render xcb-damage xcb-randr xcb-composite xcb-shape xcb-image xcb-xfixes xext pixman-1 -LIBS = -lm -lrt -lev -INCS = - -OBJS = compton.o config.o win.o x.o - -# === Configuration flags === -CFG = -std=c11 -D_GNU_SOURCE -Wall -Wextra -Wno-unused-parameter -Wnonnull - -ifeq "$(CC)" "clang" - CFG += -Wconditional-uninitialized -endif - -# ==== Xinerama ==== -# Enables support for --xinerama-shadow-crop -ifeq "$(NO_XINERAMA)" "" - CFG += -DCONFIG_XINERAMA - PACKAGES += xcb-xinerama -endif - -# ==== libconfig ==== -# Enables configuration file parsing support -ifeq "$(NO_LIBCONFIG)" "" - CFG += -DCONFIG_LIBCONFIG - PACKAGES += libconfig - OBJS += config_libconfig.o - - # libconfig-1.3* does not define LIBCONFIG_VER* macros, so we use - # pkg-config to determine its version here - LIBCONFIG_VER = $(shell pkg-config --atleast-version=1.4 libconfig; echo $$?) - ifeq ($LIBCONFIG_VER, 1) - $(error "Your libconfig is too old, at least 1.4 is required") - endif -endif - -# ==== PCRE regular expression ==== -# Enables support for PCRE regular expression pattern in window conditions -ifeq "$(NO_REGEX_PCRE)" "" - CFG += -DCONFIG_REGEX_PCRE - LIBS += $(shell pcre-config --libs) - INCS += $(shell pcre-config --cflags) - # Enables JIT support in libpcre - ifeq "$(NO_REGEX_PCRE_JIT)" "" - CFG += -DCONFIG_REGEX_PCRE_JIT - endif -endif - -# ==== DRM VSync ==== -# Enables support for "drm" VSync method -ifeq "$(NO_VSYNC_DRM)" "" - INCS += $(shell pkg-config --cflags libdrm) - CFG += -DCONFIG_VSYNC_DRM -endif - -# ==== OpenGL ==== -# Enables support for GLX backend, OpenGL VSync methods, etc. -ifneq "$(NO_VSYNC_OPENGL)" "" - NO_OPENGL=$(NO_VSYNC_OPENGL) -endif -ifeq "$(NO_OPENGL)" "" - CFG += -DCONFIG_OPENGL - # -lGL must precede some other libraries, or it segfaults on FreeBSD (#74) - LIBS := -lGL $(LIBS) - OBJS += opengl.o -endif - -# ==== D-Bus ==== -# Enables support for --dbus (D-Bus remote control) -ifeq "$(NO_DBUS)" "" - CFG += -DCONFIG_DBUS - PACKAGES += dbus-1 - OBJS += dbus.o -endif - -# ==== X Sync ==== -# Enables support for --xrender-sync-fence -ifeq "$(NO_XSYNC)" "" - CFG += -DCONFIG_XSYNC -endif - -OBJS += c2.o - -# ==== X resource checker ==== -# Enable X resource leakage checking (Pixmap only, presently) -ifneq "$(ENABLE_XRESCHECK)" "" - CFG += -DDEBUG_XRC - OBJS += xrescheck.o -endif - -# === Version string === -COMPTON_VERSION ?= git-$(shell git describe --always --dirty)-$(shell git log -1 --date=short --pretty=format:%cd) -CFG += -DCOMPTON_VERSION="\"$(COMPTON_VERSION)\"" - -LDFLAGS ?= -Wl,-O1 -Wl,--as-needed - -BUILD_TYPE ?= "Debug" - -ifeq "$(BUILD_TYPE)" "Release" - CFG += -DNDEBUG -O2 -D_FORTIFY_SOURCE=2 -else ifeq "$(BUILD_TYPE)" "Debug" - CFG += -ggdb -Wshadow -endif - -ifeq "$(ENABLE_SAN)" "1" - ifeq "$(CC)" "clang" - CFG += -fsanitize=address,undefined,integer,nullability - else - CFG += -fsanitize=address,undefined - endif -else ifeq "$(ENABLE_SAN)" "memory" - CFG += -fsanitize=memory -endif - -LIBS += $(shell pkg-config --libs $(PACKAGES)) -INCS += $(shell pkg-config --cflags $(PACKAGES)) - -BINS = compton bin/compton-trans -MANPAGES = man/compton.1 man/compton-trans.1 -MANPAGES_HTML = $(addsuffix .html,$(MANPAGES)) - -# === Recipes === -.DEFAULT_GOAL := compton - -src/.clang_complete: Makefile - @(for i in $(filter-out -O% -DNDEBUG, $(CFG) $(CPPFLAGS) $(INCS)); do echo "$$i"; done) > $@ - -.deps: - mkdir -p $@ - -.deps/%.d: src/%.c | .deps - @set -e; rm -f $@; \ - $(CC) -M $(CPPFLAGS) $(INCS) $< > $@.$$$$; \ - sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ - rm -f $@.$$$$ -%.o: src/%.c - $(CC) $(CFG) $(CPPFLAGS) $(INCS) -c src/$*.c -o $@ - -compton: $(OBJS) - $(CC) $(CFG) $(CPPFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) - -man/%.1: man/%.1.asciidoc - a2x --format manpage $< - -man/%.1.html: man/%.1.asciidoc - asciidoc $< - -docs: $(MANPAGES) $(MANPAGES_HTML) - -install: $(BINS) docs - @install -d "$(DESTDIR)$(BINDIR)" "$(DESTDIR)$(MANDIR)" "$(DESTDIR)$(APPDIR)" - @install -m755 $(BINS) "$(DESTDIR)$(BINDIR)"/ -ifneq "$(MANPAGES)" "" - @install -m644 $(MANPAGES) "$(DESTDIR)$(MANDIR)"/ -endif - @install -d \ - "$(DESTDIR)$(ICODIR)/scalable/apps" \ - "$(DESTDIR)$(ICODIR)/48x48/apps" - @install -m644 media/compton.svg "$(DESTDIR)$(ICODIR)/scalable/apps"/ - @install -m644 media/icons/48x48/compton.png "$(DESTDIR)$(ICODIR)/48x48/apps"/ - @install -m644 compton.desktop "$(DESTDIR)$(APPDIR)"/ -ifneq "$(DOCDIR)" "" - @install -d "$(DESTDIR)$(DOCDIR)" - @install -m644 README.md compton.sample.conf "$(DESTDIR)$(DOCDIR)"/ - @install -m755 dbus-examples/cdbus-driver.sh "$(DESTDIR)$(DOCDIR)"/ -endif - -uninstall: - @rm -f "$(DESTDIR)$(BINDIR)/compton" "$(DESTDIR)$(BINDIR)/compton-trans" - @rm -f $(addprefix "$(DESTDIR)$(MANDIR)"/, compton.1 compton-trans.1) - @rm -f "$(DESTDIR)$(APPDIR)/compton.desktop" -ifneq "$(DOCDIR)" "" - @rm -f $(addprefix "$(DESTDIR)$(DOCDIR)"/, README.md compton.sample.conf cdbus-driver.sh) -endif - -clean: - @rm -f $(OBJS) compton $(MANPAGES) $(MANPAGES_HTML) .clang_complete - @rm -rf .deps - -version: - @echo "$(COMPTON_VERSION)" - -.PHONY: uninstall clean docs version - -ifneq ($(MAKECMDGOALS),clean) -include $(addprefix .deps/,$(OBJS:.o=.d)) -endif