CXX = g++ CXXFLAGS = -Wall -Wextra -std=c++17 -O2 -g LDFLAGS = -lX11 TARGET = blockuntilkey # 'sort' removes duplicates SOURCES := $(sort $(wildcard *.cpp) keysym_table.cpp) HEADERS := $(sort $(wildcard *.cpp) keysym_table.h) OBJDIR = obj .PHONY: all clean all: $(TARGET) clean: @echo "Cleaning" @rm -f $(TARGET) @rm -rf $(OBJDIR) $(OBJDIR)/%.o: %.cpp $(wildcard *.h) | $(OBJDIR) @echo "CXX $<" @$(CXX) $(CXXFLAGS) -c -o $@ $< $(TARGET): $(patsubst %.cpp,$(OBJDIR)/%.o,$(SOURCES)) | $(OBJDIR) @echo "LD -o $@" @$(CXX) -o $@ $^ $(LDFLAGS) $(OBJDIR): @mkdir -p $(OBJDIR) keysym_table.h: make_keysym_table.sh /usr/include/xkbcommon/xkbcommon-keysyms.h ./make_keysym_table.sh --header >$@ keysym_table.cpp: make_keysym_table.sh /usr/include/xkbcommon/xkbcommon-keysyms.h ./make_keysym_table.sh --source >$@