114 lines
3.7 KiB
Makefile
114 lines
3.7 KiB
Makefile
CC = gcc
|
|
CFLAGS = -std=c99 -Wall -Wextra -Wpedantic -O2 -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_POSIX_C_SOURCE=200809L -DMG_TLS=MG_TLS_BUILTIN
|
|
|
|
SRC_DIR = src
|
|
TARGET = didactyl
|
|
|
|
SRCS = \
|
|
$(SRC_DIR)/main.c \
|
|
$(SRC_DIR)/config.c \
|
|
$(SRC_DIR)/context.c \
|
|
$(SRC_DIR)/llm.c \
|
|
$(SRC_DIR)/nostr_handler.c \
|
|
$(SRC_DIR)/agent.c \
|
|
$(SRC_DIR)/cashu_wallet.c \
|
|
$(SRC_DIR)/tools/tools_common.c \
|
|
$(SRC_DIR)/tools/tools_schema.c \
|
|
$(SRC_DIR)/tools/tools_dispatch.c \
|
|
$(SRC_DIR)/tools/tool_agent.c \
|
|
$(SRC_DIR)/tools/tool_meta.c \
|
|
$(SRC_DIR)/tools/tool_model.c \
|
|
$(SRC_DIR)/tools/tool_nostr_query.c \
|
|
$(SRC_DIR)/tools/tool_nostr_my_events.c \
|
|
$(SRC_DIR)/tools/tool_nostr_identity.c \
|
|
$(SRC_DIR)/tools/tool_nostr_social.c \
|
|
$(SRC_DIR)/tools/tool_nostr_relay.c \
|
|
$(SRC_DIR)/tools/tool_nostr_dm.c \
|
|
$(SRC_DIR)/tools/tool_admin.c \
|
|
$(SRC_DIR)/tools/tool_task.c \
|
|
$(SRC_DIR)/tools/tool_nostr_list.c \
|
|
$(SRC_DIR)/tools/tool_local.c \
|
|
$(SRC_DIR)/tools/tool_skill.c \
|
|
$(SRC_DIR)/tools/tool_nostr_post.c \
|
|
$(SRC_DIR)/tools/tool_memory.c \
|
|
$(SRC_DIR)/tools/tool_config.c \
|
|
$(SRC_DIR)/tools/tool_cashu_wallet.c \
|
|
$(SRC_DIR)/trigger_manager.c \
|
|
$(SRC_DIR)/prompt_template.c \
|
|
$(SRC_DIR)/http_api.c \
|
|
$(SRC_DIR)/setup_wizard.c \
|
|
$(SRC_DIR)/mongoose.c \
|
|
$(SRC_DIR)/debug.c
|
|
|
|
INCLUDES = \
|
|
-I$(SRC_DIR) \
|
|
-I$(SRC_DIR)/tools \
|
|
-I./nostr_core_lib \
|
|
-I./nostr_core_lib/cjson \
|
|
-I./nostr_core_lib/nostr_core
|
|
|
|
NOSTR_LIB = $(firstword $(wildcard ./nostr_core_lib/libnostr_core_*.a))
|
|
|
|
LDFLAGS = -lcurl -lssl -lcrypto -lm -lpthread -ldl -lz -L/usr/local/lib -lsecp256k1
|
|
|
|
# Build directory
|
|
BUILD_DIR = build
|
|
|
|
all: $(TARGET)
|
|
|
|
$(BUILD_DIR):
|
|
mkdir -p $(BUILD_DIR)
|
|
|
|
# Build nostr_core_lib
|
|
$(NOSTR_LIB):
|
|
@echo "Building nostr_core_lib with all NIPs..."
|
|
cd ./nostr_core_lib && ./build.sh --nips=001,004,005,006,011,013,017,019,021,042,044,046,059,060,061
|
|
|
|
# Update main.h version information (requires main.h to exist)
|
|
src/main.h:
|
|
@if [ ! -f src/main.h ]; then \
|
|
echo "ERROR: src/main.h not found!"; \
|
|
echo "Please ensure src/main.h exists with version metadata."; \
|
|
exit 1; \
|
|
fi; \
|
|
if [ -d .git ]; then \
|
|
echo "Updating main.h version information from git tags..."; \
|
|
RAW_VERSION=$$(git describe --tags --always 2>/dev/null || echo "unknown"); \
|
|
if echo "$$RAW_VERSION" | grep -q "^v[0-9]"; then \
|
|
CLEAN_VERSION=$$(echo "$$RAW_VERSION" | sed 's/^v//' | cut -d- -f1); \
|
|
VERSION="v$$CLEAN_VERSION"; \
|
|
MAJOR=$$(echo "$$CLEAN_VERSION" | cut -d. -f1); \
|
|
MINOR=$$(echo "$$CLEAN_VERSION" | cut -d. -f2); \
|
|
PATCH=$$(echo "$$CLEAN_VERSION" | cut -d. -f3); \
|
|
else \
|
|
VERSION="v0.0.0"; \
|
|
MAJOR=0; MINOR=0; PATCH=0; \
|
|
fi; \
|
|
echo "Updating version information in existing main.h..."; \
|
|
sed -i "s/#define DIDACTYL_VERSION \".*\"/#define DIDACTYL_VERSION \"$$VERSION\"/g" src/main.h; \
|
|
sed -i "s/#define DIDACTYL_VERSION_MAJOR [0-9]*/#define DIDACTYL_VERSION_MAJOR $$MAJOR/g" src/main.h; \
|
|
sed -i "s/#define DIDACTYL_VERSION_MINOR [0-9]*/#define DIDACTYL_VERSION_MINOR $$MINOR/g" src/main.h; \
|
|
sed -i "s/#define DIDACTYL_VERSION_PATCH [0-9]*/#define DIDACTYL_VERSION_PATCH $$PATCH/g" src/main.h; \
|
|
echo "Updated main.h version to: $$VERSION"; \
|
|
else \
|
|
echo "Git not available, preserving existing main.h version information"; \
|
|
fi
|
|
|
|
# Force update version
|
|
force-version:
|
|
@echo "Force updating main.h version information..."
|
|
@$(MAKE) src/main.h
|
|
|
|
$(TARGET): src/main.h $(SRCS) $(NOSTR_LIB)
|
|
@if [ -z "$(NOSTR_LIB)" ]; then echo "nostr_core_lib static library not found; run 'make deps'"; exit 1; fi
|
|
$(CC) $(CFLAGS) $(INCLUDES) -o $@ $(SRCS) $(NOSTR_LIB) $(LDFLAGS)
|
|
|
|
deps:
|
|
cd ./nostr_core_lib && ./build.sh --nips=001,004,005,006,011,013,017,019,021,042,044,046,059,060,061
|
|
|
|
clean:
|
|
rm -f $(TARGET)
|
|
rm -rf $(BUILD_DIR)
|
|
|
|
.PHONY: all deps clean force-version
|