# Una sola prueba y dos implementaciones: test_stack.o se compila una vez y se enlaza dos.
CC = gcc
CFLAGS = -Wall -Wextra -std=c17 -g -fsanitize=address,undefined
BUILD = build
PROGRAMS = $(BUILD)/test_array $(BUILD)/test_blocks

all: $(PROGRAMS)

$(BUILD)/test_array: $(BUILD)/test_stack.o $(BUILD)/stack_array.o
	$(CC) $(CFLAGS) $^ -o $@

$(BUILD)/test_blocks: $(BUILD)/test_stack.o $(BUILD)/stack_blocks.o
	$(CC) $(CFLAGS) $^ -o $@

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

$(BUILD):
	mkdir -p $@

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