bin:=$(notdir $(shell pwd)) src:=$(wildcard *.cc) obj:=$(src:.cc=.o) libs:=\ egl \ glesv2 \ libdrm \ libpipewire-0.3 \ libva-wayland \ wayland-client protocols_dir:=\ wlr-protocols/unstable protocols:=\ wlr-export-dmabuf-unstable-v1 res:=\ vertex.glsl \ luma.glsl \ chroma.glsl CXXFLAGS+=\ -std=c++20 obj:=$(patsubst %,%.o,$(protocols)) $(obj) headers:=$(patsubst %,%.h,$(protocols)) CFLAGS+=$(shell pkg-config --cflags $(libs)) LDFLAGS+=$(shell pkg-config --libs $(libs)) comma:=, LDFLAGS+= \ -Wl,--format=binary \ $(patsubst %,-Wl$(comma)%,$(res)) \ -Wl,--format=default all: $(bin) $(bin): $(obj) $(CXX) $^ $(LDFLAGS) -o $@ %.o: %.cc *.h $(res) $(headers) $(CXX) -c $< $(CFLAGS) $(CXXFLAGS) -o $@ %.h: $(protocols_dir)/%.xml wayland-scanner client-header $< $@ %.cc: $(protocols_dir)/%.xml wayland-scanner private-code $< $@ clean: -rm $(bin) $(obj) $(headers) .PHONY: all clean .PRECIOUS: $(headers)