89 lines
2.5 KiB
Makefile
89 lines
2.5 KiB
Makefile
# Ginxsom Blossom Server Makefile
|
|
|
|
CC = gcc
|
|
CFLAGS = -Wall -Wextra -std=gnu99 -O2 -Inostr_core_lib/nostr_core -Inostr_core_lib/cjson
|
|
LIBS = -lfcgi -lsqlite3 nostr_core_lib/libnostr_core_x64.a -lz -ldl -lpthread -lm -L/usr/local/lib -lsecp256k1 -lssl -lcrypto -lcurl
|
|
SRCDIR = src
|
|
BUILDDIR = build
|
|
TARGET = $(BUILDDIR)/ginxsom-fcgi
|
|
|
|
# Source files
|
|
SOURCES = $(SRCDIR)/main.c $(SRCDIR)/admin_api.c $(SRCDIR)/admin_auth.c $(SRCDIR)/admin_event.c $(SRCDIR)/admin_handlers.c $(SRCDIR)/admin_interface.c $(SRCDIR)/bud04.c $(SRCDIR)/bud06.c $(SRCDIR)/bud08.c $(SRCDIR)/bud09.c $(SRCDIR)/request_validator.c $(SRCDIR)/relay_client.c $(SRCDIR)/admin_commands.c
|
|
OBJECTS = $(SOURCES:$(SRCDIR)/%.c=$(BUILDDIR)/%.o)
|
|
|
|
# Embedded web interface files
|
|
EMBEDDED_HEADER = $(SRCDIR)/admin_interface_embedded.h
|
|
EMBED_SCRIPT = scripts/embed_web_files.sh
|
|
|
|
# Add core_relay_pool.c from nostr_core_lib
|
|
POOL_SRC = nostr_core_lib/nostr_core/core_relay_pool.c
|
|
POOL_OBJ = $(BUILDDIR)/core_relay_pool.o
|
|
|
|
# Default target
|
|
all: $(EMBEDDED_HEADER) $(TARGET)
|
|
|
|
# Generate embedded web interface files
|
|
$(EMBEDDED_HEADER): $(EMBED_SCRIPT) api/*.html api/*.css api/*.js
|
|
@echo "Embedding web interface files..."
|
|
@$(EMBED_SCRIPT)
|
|
|
|
# Create build directory
|
|
$(BUILDDIR):
|
|
mkdir -p $(BUILDDIR)
|
|
|
|
# Compile object files
|
|
$(BUILDDIR)/%.o: $(SRCDIR)/%.c | $(BUILDDIR)
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
# Compile core_relay_pool.o (needs src/ for request_validator.h)
|
|
$(POOL_OBJ): $(POOL_SRC) | $(BUILDDIR)
|
|
$(CC) $(CFLAGS) -I$(SRCDIR) -c $< -o $@
|
|
|
|
# Link final executable
|
|
$(TARGET): $(OBJECTS) $(POOL_OBJ)
|
|
$(CC) $(OBJECTS) $(POOL_OBJ) $(LIBS) -o $@
|
|
|
|
# Clean build files (preserves static binaries)
|
|
clean:
|
|
rm -rf $(BUILDDIR)
|
|
rm -f $(EMBEDDED_HEADER)
|
|
@echo "Note: Static binaries (ginxsom-fcgi_static_*) are preserved."
|
|
@echo "To remove everything: make clean-all"
|
|
|
|
# Clean everything including static binaries
|
|
clean-all:
|
|
rm -rf $(BUILDDIR)
|
|
rm -f $(EMBEDDED_HEADER)
|
|
@echo "✓ All build artifacts removed"
|
|
|
|
# Install (copy to system location)
|
|
install: $(TARGET)
|
|
sudo cp $(TARGET) /usr/local/bin/
|
|
sudo chmod 755 /usr/local/bin/ginxsom-fcgi
|
|
|
|
# Uninstall
|
|
uninstall:
|
|
sudo rm -f /usr/local/bin/ginxsom-fcgi
|
|
|
|
# Run the FastCGI application
|
|
run: $(TARGET)
|
|
./$(TARGET)
|
|
|
|
# Debug build
|
|
debug: CFLAGS += -g -DDEBUG
|
|
debug: $(TARGET)
|
|
|
|
# Rebuild embedded files
|
|
embed:
|
|
@$(EMBED_SCRIPT)
|
|
|
|
# Static MUSL build via Docker
|
|
static:
|
|
./build_static.sh
|
|
|
|
# Static MUSL build with debug symbols
|
|
static-debug:
|
|
./build_static.sh --debug
|
|
|
|
.PHONY: all clean clean-all install uninstall run debug embed static static-debug
|