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 = sockets # 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