CC = gcc
CFLAGS = -Wall -Wextra -O2 -Iinclude
LDFLAGS = -lcurl -lcjson

SRCDIR = src
OBJDIR = obj
BINDIR = bin
LIBDIR = lib

SOURCES = $(wildcard $(SRCDIR)/*.c)
OBJECTS = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SOURCES))
LIBRARY = $(LIBDIR)/libpishro_sms.a

EXAMPLES = $(wildcard examples/*.c)
EXAMPLE_BINS = $(patsubst examples/%.c,$(BINDIR)/%,$(EXAMPLES))

all: $(LIBRARY) $(EXAMPLE_BINS)

$(LIBRARY): $(OBJECTS) | $(LIBDIR)
	ar rcs $@ $^

$(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)
	$(CC) $(CFLAGS) -c $< -o $@

$(BINDIR)/%: examples/%.c $(LIBRARY) | $(BINDIR)
	$(CC) $(CFLAGS) $< -L$(LIBDIR) -lpishro_sms $(LDFLAGS) -o $@

$(OBJDIR) $(BINDIR) $(LIBDIR):
	mkdir -p $@

clean:
	rm -rf $(OBJDIR) $(BINDIR) $(LIBDIR)

.PHONY: all clean