Files
sovereign_browser/Makefile

53 lines
2.6 KiB
Makefile

# sovereign_browser — WebKitGTK + C99
#
# Requires: libwebkit2gtk-4.1-dev (Debian: sudo apt install libwebkit2gtk-4.1-dev)
# nostr_core_lib (vendored at ./nostr_core_lib/, build it first)
# libsecp256k1-dev, libssl-dev, libcurl4-openssl-dev
CC ?= gcc
# Debug build: -g for debug symbols (stack traces in gdb/core dumps),
# -O2 for optimization (runs at full speed). No ASAN (too slow for
# daily use). To temporarily enable ASAN for crash investigation:
# make clean && make CFLAGS="-std=c99 -Wall -Wextra -g -O0 -fsanitize=address" LDFLAGS="-fsanitize=address"
CFLAGS ?= -std=c99 -Wall -Wextra -g -O2
CFLAGS += $(shell pkg-config --cflags webkit2gtk-4.1 libsoup-3.0 libqrencode sqlite3)
CFLAGS += -I./nostr_core_lib
CFLAGS += -DNOSTR_ENABLE_NSIGNER_CLIENT
LDFLAGS ?=
LDLIBS += $(shell pkg-config --libs webkit2gtk-4.1 libsoup-3.0 libqrencode sqlite3)
# nostr_core_lib static library + its dependencies
NOSTR_LIB = ./nostr_core_lib/libnostr_core_x64.a
NOSTR_DEPS = -lsecp256k1 -lssl -lcrypto -lcurl -lz -ldl -lpthread -lm
BIN := sovereign_browser
SRC := src/main.c src/key_store.c src/login_dialog.c src/nostr_bridge.c src/nostr_inject.c src/nostr_url.c src/nostr_scheme.c src/history.c src/settings.c src/net_services.c src/tor_control.c src/tor_scheme.c src/fips_control.c src/tab_manager.c src/session.c src/agent_server.c src/agent_login.c src/agent_snapshot.c src/agent_tools.c src/agent_mcp.c src/cli.c src/qr.c src/db.c src/relay_fetch.c src/bookmarks.c src/shortcuts.c src/settings_sync.c src/search.c src/profile.c src/agent_fs_tools.c src/agent_llm.c src/agent_loop.c src/agent_chat_store.c src/agent_chat.c src/agent_conversations.c src/agent_skills.c src/embedded_web_content.c src/process_info.c src/perf_probe.c src/webkit_data.c src/web_context.c
# Web files embedded into the binary as C byte arrays.
WEB_FILES := $(shell find www -type f \( -name '*.html' -o -name '*.css' -o -name '*.js' \) 2>/dev/null)
# Default goal: build the browser binary.
$(BIN): $(SRC) $(NOSTR_LIB) src/embedded_web_content.c
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(NOSTR_LIB) $(LDLIBS) $(NOSTR_DEPS)
# Auto-generated C byte arrays from www/. Regenerated whenever a web
# file changes (or on first build). Both the .c and .h are produced by
# a single invocation of embed_web_files.sh.
src/embedded_web_content.c: $(WEB_FILES) embed_web_files.sh
./embed_web_files.sh
src/embedded_web_content.h: src/embedded_web_content.c
@true
$(NOSTR_LIB):
@echo "Building nostr_core_lib..."
cd nostr_core_lib && ./build.sh --nips=all
run: $(BIN)
./$(BIN)
clean:
rm -f $(BIN)
.PHONY: run clean