# Przykład "owinięcia" (wrap) / sastąpienia
# pojedynczej funkcji przez linker
# Uwaga na zamierzone włączenie #include "foo.c"
# w test/foo.c
.PHONY := clean

CC := gcc

CFLAGS := -Wall -Wextra -pedantic
LDFLAGS :=
OBJS := main.o foo.o

WRAP_CFLAGS := $(CFLAGS)
WRAP_LDFLAGS := $(LD_FLAGS) -Wl,-wrap=foo
WRAP_OBJS := main.o
WRAP_SRCDIR := tests

all: main wrap

main: $(OBJS)
	$(CC) $(LDFLAGS) -o $@ $^

wrap: $(WRAP_OBJS)
	$(CC) $(WRAP_LDFLAGS) -o wrap $^ $(WRAP_SRCDIR)/foo.c -I$(WRAP_SRCDIR)

clean:
	@rm -f main wrap $(OBJS) $(WRAP_OBJS) > /dev/null 2>&1
