2026-05-13 22:18:22 +05:30
|
|
|
CC = gcc
|
|
|
|
|
CFLAGS = -Wall -Wextra -O2 -Iinclude
|
|
|
|
|
LDFLAGS = -lm
|
2026-05-24 18:46:17 +05:30
|
|
|
LDFLAGS += -lpthread # Multi-threaded capture-render, pthreads producer/consumer
|
2026-05-25 13:50:49 +05:30
|
|
|
LDFLAGS += -ldl # Dynamic loading symbols
|
2026-05-24 18:46:17 +05:30
|
|
|
LDFLAGS += -msse4.1 # SIMD - SSE2 for the YUYV to gray conversion
|
2026-05-13 22:18:22 +05:30
|
|
|
|
|
|
|
|
SRCDIR = src
|
|
|
|
|
INCDIR = include
|
2026-05-19 17:28:19 +05:30
|
|
|
BUILDDIR = build
|
|
|
|
|
OBJDIR = $(BUILDDIR)/obj
|
2026-05-13 22:18:22 +05:30
|
|
|
|
|
|
|
|
SOURCES = $(wildcard $(SRCDIR)/*.c)
|
|
|
|
|
OBJECTS = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SOURCES))
|
2026-05-19 17:28:19 +05:30
|
|
|
TARGET = $(BUILDDIR)/webcam_ascii
|
2026-06-01 23:21:32 +05:30
|
|
|
PLUGIN_SRCS = $(wildcard filters/*.c)
|
|
|
|
|
PLUGIN_C_SRCS = $(filter-out filters/%.h, $(PLUGIN_SRCS))
|
|
|
|
|
PLUGIN_TARGETS = $(patsubst filters/%.c,$(BUILDDIR)/%.so,$(PLUGIN_C_SRCS))
|
2026-05-13 22:18:22 +05:30
|
|
|
|
2026-06-01 23:21:32 +05:30
|
|
|
# Security Testing Targets
|
|
|
|
|
TEST_TARGET = $(BUILDDIR)/security_tests
|
|
|
|
|
TEST_SRC = ../tests/secutrity_test.c
|
|
|
|
|
FILTER_SRCS = filters/edge_detect.c filters/invert.c filters/threshold.c
|
2026-05-13 22:18:22 +05:30
|
|
|
|
2026-06-01 23:21:32 +05:30
|
|
|
.PHONY: all clean plugins test
|
2026-05-13 22:18:22 +05:30
|
|
|
|
2026-05-25 13:50:49 +05:30
|
|
|
all: $(TARGET) plugins
|
|
|
|
|
|
|
|
|
|
# Main binary
|
2026-05-13 22:18:22 +05:30
|
|
|
$(TARGET): $(OBJECTS)
|
|
|
|
|
$(CC) $^ -o $@ $(LDFLAGS)
|
|
|
|
|
|
|
|
|
|
$(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)
|
|
|
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
|
|
|
|
|
|
$(OBJDIR):
|
|
|
|
|
mkdir -p $(OBJDIR)
|
|
|
|
|
|
2026-06-01 23:21:32 +05:30
|
|
|
# Plugins compilation
|
|
|
|
|
plugins: $(PLUGIN_TARGETS)
|
2026-05-25 13:50:49 +05:30
|
|
|
|
|
|
|
|
$(BUILDDIR)/%.so: filters/%.c | $(BUILDDIR)
|
|
|
|
|
$(CC) $(CFLAGS) -fPIC -shared $< -o $@.tmp
|
|
|
|
|
mv $@.tmp $@
|
|
|
|
|
|
2026-06-01 23:21:32 +05:30
|
|
|
# Automated Unit Tests Execution
|
|
|
|
|
test: $(BUILDDIR)
|
|
|
|
|
$(CC) -I.. $(CFLAGS) -DTESTING $(TEST_SRC) $(FILTER_SRCS) -o $(TEST_TARGET) -lcheck -lsubunit -lm -lrt -lpthread
|
|
|
|
|
@echo " RUNNING ALL PLUGINS INVARIANT TEST "
|
|
|
|
|
./$(TEST_TARGET)
|
2026-05-25 13:50:49 +05:30
|
|
|
|
|
|
|
|
$(BUILDDIR):
|
|
|
|
|
mkdir -p $(BUILDDIR)
|
|
|
|
|
|
|
|
|
|
# Cleanup
|
2026-05-13 22:18:22 +05:30
|
|
|
clean:
|
2026-05-19 17:28:19 +05:30
|
|
|
rm -rf $(BUILDDIR)
|