CC = clang CFLAGS = -std=c17 -g -Wall -O2 -fPIC EXEC = pluginhost SRCS = $(shell find src -name '*.c') OBJS = $(SRCS:.c=.o) PLUGINS = $(shell ls plugins) .PHONY: $(EXEC) all: $(EXEC) all_plugins $(EXEC): $(OBJS) $(CC) $(CFLAGS) -o $(EXEC) $(OBJS) src/%.c.o: src/%.c $(CC) $(CFLAGS) -o $@ -c $< all_plugins: for plugin in $(PLUGINS); do \ $(MAKE) -C plugins/$$plugin; \ done clean: rm -f $(EXEC) $(OBJS) for plugin in $(PLUGINS); do \ $(MAKE) -C plugins/$$plugin clean; \ done