DistributedEmbeddedSystemsL.../03_io_access/Makefile

40 lines
729 B
Makefile

CC = gcc
CFLAGS = -Wall -Ilib
LDFLAGS = -lgpiod
# Directories
SRCDIR = src
LIBDIR = lib
OBJDIR = obj
# Source files
LIB_SOURCES = $(wildcard $(LIBDIR)/*.c)
SRC_SOURCES = $(wildcard $(SRCDIR)/*.c)
# Object files
LIB_OBJECTS = $(LIB_SOURCES:$(LIBDIR)/%.c=$(OBJDIR)/%.o)
SRC_OBJECTS = $(SRC_SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
# Target executable
TARGET = io
# Create obj directory if it doesn't exist
$(shell mkdir -p $(OBJDIR))
# Rules
all: $(TARGET)
$(TARGET): $(LIB_OBJECTS) $(SRC_OBJECTS)
$(CC) $(LIB_OBJECTS) $(SRC_OBJECTS) -o $@ $(LDFLAGS)
$(OBJDIR)/%.o: $(LIBDIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@
$(OBJDIR)/%.o: $(SRCDIR)/%.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(OBJDIR)/*.o $(TARGET)
.PHONY: all clean