2026-05-15 13:45:21 +07:00

48 lines
1.7 KiB
Makefile

.PHONY: all clean libbinding.a
include build.conf
LLAMA_INCLUDE := $(LLAMA_CPP_PATH)/include
LLAMA_COMMON := $(LLAMA_CPP_PATH)/common
LLAMA_GGML := $(LLAMA_CPP_PATH)/ggml/include
CXXFLAGS := -std=c++17 -O3 -DNDEBUG -fPIC -pthread \
-I$(LLAMA_INCLUDE) -I$(LLAMA_COMMON) -I$(LLAMA_GGML) -I.
LDFLAGS_LIBS := \
-L$(LLAMA_BUILD_PATH)/src -lllama \
-L$(LLAMA_BUILD_PATH)/common -lllama-common \
-L$(LLAMA_BUILD_PATH)/ggml/src -lggml -lggml-cpu -lggml-base \
-L$(LLAMA_BUILD_PATH)/vendor/cpp-httplib -lcpp-httplib \
-lpthread -fopenmp -ldl -lm -lstdc++
all: libbinding.a cgo_flags.go
# Обновить пути в cgo_flags.go из build.conf
cgo_flags.go: build.conf
@LLAMA=$$(grep '^LLAMA_CPP_PATH=' build.conf | cut -d= -f2); \
BUILD=$$(grep '^LLAMA_BUILD_PATH=' build.conf | cut -d= -f2); \
printf '%s\n' \
'package llama' \
'' \
'/*' \
"#cgo CXXFLAGS: -std=c++17 -I$$LLAMA/include -I$$LLAMA/common -I$$LLAMA/ggml/include -I\$${SRCDIR}" \
"#cgo LDFLAGS: -L\$${SRCDIR} -lbinding -L$$BUILD/src -lllama -L$$BUILD/common -lllama-common -lllama-common-base -L$$BUILD/ggml/src -lggml -lggml-cpu -lggml-base -L$$BUILD/vendor/cpp-httplib -lcpp-httplib -lstdc++ -lm -lpthread -fopenmp -ldl" \
'*/' \
'import "C"' \
> cgo_flags.go
$(LLAMA_BUILD_PATH)/src/libllama.a:
cd $(LLAMA_BUILD_PATH) && cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF && \
cmake --build . --target llama llama-common -j$$(nproc)
binding.o: binding.cpp binding.h $(LLAMA_BUILD_PATH)/src/libllama.a
$(CXX) $(CXXFLAGS) -c binding.cpp -o binding.o
libbinding.a: binding.o
ar rcs libbinding.a binding.o
@echo "Собрано: libbinding.a. Линковка llama.cpp — через cgo_flags.go."
clean:
rm -f binding.o libbinding.a