# Compiler CC := /opt/homebrew/opt/llvm/bin/clang # Compiler flags CFLAGS := -Wall -Wextra -Werror -Ilibs -fsanitize=address # Directories SRCDIR := src BINDIR := bin LIBDIR := libs # Source files SRCS := $(wildcard $(SRCDIR)/*.c) # Object files OBJS := $(patsubst $(SRCDIR)/%.c,$(BINDIR)/%.o,$(SRCS)) # Libraries LIBS := $(wildcard $(LIBDIR)/*/*.c) # Library object files LIBOBJS := $(patsubst %.c,%.o,$(LIBS)) # Target executables EXECUTABLES := $(patsubst $(SRCDIR)/%,$(BINDIR)/%,$(basename $(wildcard $(SRCDIR)/*/*.c))) .PHONY: all clean all: $(EXECUTABLES) $(BINDIR)/%: $(BINDIR)/%.o $(LIBOBJS) $(CC) $(CFLAGS) $^ -o $@ $(BINDIR)/%.o: $(SRCDIR)/%.c | $(BINDIR) $(CC) $(CFLAGS) -c $< -o $@ $(BINDIR): mkdir -p $(BINDIR) users: -sudo useradd -M djumbaiq -sudo useradd -M djumbaid -sudo groupadd djumbai_queue -sudo groupadd djumbai_send -sudo usermod -aG djumbai_queue djumbaiq -sudo usermod -aG djumbai_queue djumbaid -sudo usermod -aG djumbai_send djumbaid -sudo usermod -aG djumbai_send root permissions: -sudo chown djumbaiq $(BINDIR)/djumbai_enqueue/djumbai_enqueue -sudo chmod u+s $(BINDIR)/djumbai_enqueue/djumbai_enqueue -sudo chown djumbaid $(BINDIR)/djumbai_dequeue/djumbai_dequeue -sudo chmod u+s $(BINDIR)/djumbai_dequeue/djumbai_dequeue -sudo chown root $(BINDIR)/djumbai_send/djumbai_send -sudo chmod u+s $(BINDIR)/djumbai_send/djumbai_send directories: -sudo -u root -g djumbai mkdir /opt/djumbai -sudo -u root -g djumbai mkdir /opt/djumbai/fifos -sudo -u root -g djumbai mkdir /opt/djumbai/user -sudo -u root -g djumbai mkdir /opt/djumbai/group setup: users permissions directories clean: rm -rf $(BINDIR)