.PHONY: all clean build zip CC := gcc CFLAGS := -MD -Wall -g -lm -lX11 -I ./inc/ TARGETS := pm3-lvgl EXES := $(patsubst %,bin/%,$(TARGETS)) SRCS := $(shell find src inc -type f -iname '*.c') OBJS := $(patsubst src/%.c,obj/%.o,$(patsubst inc/%.c,obj/lib/%.o,$(SRCS))) NO_BUILD := $(patsubst %,obj/%.o,$(TARGETS)) all: build build: $(EXES) $(EXES): bin/%: obj/%.o $(filter-out $(NO_BUILD), $(OBJS)) @mkdir -p $(dir $@) $(CC) $(CFLAGS) -o $@ $^ obj/%.o: src/%.c @mkdir -p $(dir $@) $(CC) $(CFLAGS) -o $@ -c $< obj/lib/%.o: inc/%.c @mkdir -p $(dir $@) $(CC) $(CFLAGS) -o $@ -c $< clean: rm -rf bin rm -rf obj rm -rf .artifacts rm -rf $(PROJ).zip -include $(OBJS:.o=.d)