CC = gcc CFLAGS = -Wall -Wextra -O2 -MMD -MP -Isrc LDFLAGS = -lm CORE_SRCS = src/articulator.c src/articulator_db.c src/transcriber.c src/visualizer.c CORE_OBJS = $(patsubst src/%.c, obj/%.o, $(CORE_SRCS)) GEN_TARGET = mapgen GEN_OBJS = obj/mapgen.o obj/articulator_db.o EX1_OBJ = obj/example_babble.o EX1_TARGET = example_babble EX2_OBJ = obj/example_names.o EX2_TARGET = example_names ALL_OBJS = $(CORE_OBJS) obj/mapgen.o $(EX1_OBJ) $(EX2_OBJ) DEPS = $(ALL_OBJS:.o=.d) all: $(GEN_TARGET) $(EX1_TARGET) $(EX2_TARGET) $(GEN_TARGET): $(GEN_OBJS) $(CC) $(CFLAGS) $(GEN_OBJS) -o $@ src/ortho_maps.h: $(GEN_TARGET) ./$(GEN_TARGET) > src/ortho_maps.h obj/%.o: src/%.c | obj $(CC) $(CFLAGS) -c $< -o $@ obj/%.o: examples/%.c | obj $(CC) $(CFLAGS) -c $< -o $@ obj/mapgen.o: tools/mapgen.c | obj $(CC) $(CFLAGS) -c $< -o $@ obj/transcriber.o: src/ortho_maps.h obj: mkdir -p obj $(EX1_TARGET): $(EX1_OBJ) $(CORE_OBJS) $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) $(EX2_TARGET): $(EX2_OBJ) $(CORE_OBJS) $(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) -include $(DEPS) clean: rm -rf obj $(GEN_TARGET) $(EX1_TARGET) $(EX2_TARGET) src/ortho_maps.h .PHONY: all clean