# 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 src/site_downloader.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