TARGET  = mgos_i2c
CC      = gcc
# CFLAGS  = -g -O -Wall -Wextra -std=c89 -pedantic -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition
CFLAGS  = -g -O -Wall -Wextra -pedantic -Wmissing-prototypes -Wold-style-definition
LINKER  = gcc
LFLAGS  = -O -Wall -I. -lm

.PHONY: default all clean

default: $(TARGET)
all: default

SRCDIR  = src
INCDIR  = include
OBJDIR  = build
LIBDIR  = libs
BINDIR  = .

SRCS     := $(shell find $(SRCDIR) $(LIBDIR) -type f -name '*.c')
INCS     := $(shell find $(SRCDIR) $(LIBDIR) $(INCDIR) -type d -name 'include')
INCFLAGS := $(patsubst %,-I %, $(INCS))
OBJS     := $(patsubst %.c, build/%.o, $(SRCS))
RM       = rm -f
RMDIR    = rm -r -f

$(BINDIR)/$(TARGET): $(OBJS)
	$(LINKER) $(OBJS) $(LFLAGS) -o $@

$(OBJS): $(OBJDIR)/%.o : %.c
	@mkdir -p $(shell dirname $(OBJS))
	$(CC) $(CFLAGS) $(INCFLAGS) -c $< -o $@

.PHONY: clean
clean:
	$(RMDIR) $(OBJDIR)
	$(RM) $(BINDIR)/$(TARGET)