libs/html-threaded/Makefile

Makefile for HTML Threaded Writer Library

Compiles pthreads-based parallel file writing library

{{{ Directory paths

DIR := $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
SRC_DIR := $(DIR)/src
BUILD_DIR := $(DIR)/build
INCLUDE_DIR := $(DIR)/include

}}}

{{{ Compiler settings

CC := gcc
CFLAGS := -Wall -Wextra -O2 -I$(INCLUDE_DIR) -fPIC
LDFLAGS := -pthread

}}}

{{{ Source and target files

C_SOURCES := $(SRC_DIR)/html_gen.c
C_OBJECTS := $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(C_SOURCES))
SHARED_LIB := $(BUILD_DIR)/libhtmlgen.so
STATIC_LIB := $(BUILD_DIR)/libhtmlgen.a

}}}

{{{ Build targets

.PHONY: all clean shared static test

all: shared

Build shared library (primary target for FFI)

shared: $(SHARED_LIB)

$(SHARED_LIB): $(C_OBJECTS)
@mkdir -p $(BUILD_DIR)
$(CC) -shared $(C_OBJECTS) $(LDFLAGS) -o $@
@echo "Built shared library: $@"

Build static library

static: $(STATIC_LIB)

$(STATIC_LIB): $(C_OBJECTS)
ar rcs $@ $^
@echo "Built static library: $@"

Compile object files

$(BUILD_DIR)/%.o: $(SRC_DIR)/%.c $(INCLUDE_DIR)/html_gen.h
@mkdir -p $(BUILD_DIR)
$(CC) $(CFLAGS) -c $< -o $@

Clean build artifacts

clean:
rm -rf $(BUILD_DIR)
@echo "Cleaned build directory"

}}}

{{{ Test target

test: shared
@echo "Running basic test..."
@echo "Library built successfully: $(SHARED_LIB)"
@ls -la $(SHARED_LIB)
@echo "Checking symbols..."
@nm -D $(SHARED_LIB) | grep htmlgen

}}}