.PHONY: all clean CC = gcc CLIBS = -lwayland-client -lcairo CDEBUG = -g -fsanitize=address CFLAGS = $(CLIBS) $(CDEBUG) SRC = main.c OUT = hello PROTOCOL_NAMES = $(foreach proto, $(wildcard protocols/*), $(notdir $(basename $(proto)))) PROTOCOL_IMPLS = $(foreach proto, $(PROTOCOL_NAMES), $(addsuffix .prot.c,$(proto))) PROTOCOL_HEADERS = $(foreach proto, $(PROTOCOL_NAMES), $(addsuffix .prot.h,$(proto))) PROTOCOLS = $(PROTOCOL_IMPLS) $(PROTOCOL_HEADERS) %.prot.c: protocols/%.xml wayland-scanner private-code $< $@ %.prot.h: protocols/%.xml wayland-scanner client-header $< $@ all: $(OUT) clean: rm -f $(OUT) rm -f $(PROTOCOLS) run: all ./$(OUT) $(OUT): $(PROTOCOLS) $(SRC) $(CC) $(PROTOCOL_IMPLS) $(SRC) $(CFLAGS) -o $(OUT)