# Una sola prueba y dos implementaciones de la misma interfaz. test_tally.o se compila una
# vez y se enlaza dos: la prueba no sabe cuál de las dos recibe.

CC = gcc
CFLAGS = -Wall -Wextra -std=c17
BUILD = build
PROGRAMS = $(BUILD)/test_array $(BUILD)/test_summary

all: $(PROGRAMS)

$(BUILD)/test_array: $(BUILD)/test_tally.o $(BUILD)/tally_array.o
	$(CC) $^ -o $@

$(BUILD)/test_summary: $(BUILD)/test_tally.o $(BUILD)/tally_summary.o
	$(CC) $^ -o $@

$(BUILD)/%.o: %.c tally.h | $(BUILD)
	$(CC) $(CFLAGS) -c $< -o $@

$(BUILD):
	mkdir -p $@

.PHONY: all clean
clean:
	rm -rf $(BUILD)
