λ

swayaway

a drop-in replacement for swayidle(1)

settings

Makefile

1737 bytes raw

CC      ?= cc
PKG_CONFIG ?= pkg-config
WAYLAND_SCANNER ?= wayland-scanner

PREFIX  ?= /usr/local
BINDIR  ?= $(PREFIX)/bin
MANDIR  ?= $(PREFIX)/share/man
SCODOC  ?= scdoc

WAYLAND_PROTOCOLS_DIR := $(shell $(PKG_CONFIG) --variable=pagedir wayland-protocols 2>/dev/null)
ifeq ($(WAYLAND_PROTOCOLS_DIR),)
WAYLAND_PROTOCOLS_DIR := /usr/share/wayland-protocols
endif
EXT_IDLE_XML := $(firstword \
	$(wildcard $(WAYLAND_PROTOCOLS_DIR)/stable/ext-idle-notify/ext-idle-notify-v1.xml) \
	$(wildcard $(WAYLAND_PROTOCOLS_DIR)/staging/ext-idle-notify/ext-idle-notify-v1.xml))
ifeq ($(EXT_IDLE_XML),)
$(error ext-idle-notify-v1.xml not found under $(WAYLAND_PROTOCOLS_DIR); install wayland-protocols >= 1.32)
endif

CFLAGS  ?= -O2 -Wall -Wextra -std=c99
CFLAGS  += $(shell $(PKG_CONFIG) --cflags wayland-client dbus-1)
LDLIBS  += $(shell $(PKG_CONFIG) --libs wayland-client dbus-1)

GENERATED = ext-idle-notify-v1-client-protocol.h ext-idle-notify-v1-protocol.c

MANPAGE = swayaway.1

SRCS = main.c log.c idle.c wayland.c screensaver.c logind.c \
       ext-idle-notify-v1-protocol.c
OBJS = $(SRCS:.c=.o)

all: swayaway

swayaway: $(OBJS)
	$(CC) $(CFLAGS) -o $@ $(OBJS) $(LDLIBS)

$(MANPAGE): swayaway.1.scd
	$(SCODOC) < $< > $@

man: $(MANPAGE)

%.o: %.c swayaway.h $(GENERATED)
	$(CC) $(CFLAGS) -c -o $@ $<

ext-idle-notify-v1-client-protocol.h: $(EXT_IDLE_XML)
	$(WAYLAND_SCANNER) client-header $< $@

ext-idle-notify-v1-protocol.c: $(EXT_IDLE_XML)
	$(WAYLAND_SCANNER) private-code $< $@

install: swayaway
	install -Dm755 swayaway $(DESTDIR)$(BINDIR)/swayaway

install-man: $(MANPAGE)
	install -Dm644 $(MANPAGE) $(DESTDIR)$(MANDIR)/man1/swayaway.1

clean:
	rm -f $(OBJS) swayaway $(GENERATED) $(MANPAGE)

.PHONY: all clean install install-man man