@@ -8,7 +8,7 @@ DETECT_LIBS?=true
88# llama.cpp versions
99GOLLAMA_REPO? =https://github.com/go-skynet/go-llama.cpp
1010GOLLAMA_VERSION? =2b57a8ae43e4699d3dc5d1496a1ccd42922993be
11- CPPLLAMA_VERSION? =705b7ecf60e667ced57c15d67aa86865e3cc7aa7
11+ CPPLLAMA_VERSION? =01245f5b1629075543bc4478418c7d72a0b4b3c7
1212
1313# gpt4all version
1414GPT4ALL_REPO? =https://github.com/nomic-ai/gpt4all
@@ -58,7 +58,7 @@ RANDOM := $(shell bash -c 'echo $$RANDOM')
5858
5959VERSION? =$(shell git describe --always --tags || echo "dev" )
6060# go tool nm ./local-ai | grep Commit
61- LD_FLAGS? =
61+ LD_FLAGS? =-s -w
6262override LD_FLAGS += -X "github.com/mudler/LocalAI/internal.Version=$(VERSION ) "
6363override LD_FLAGS += -X "github.com/mudler/LocalAI/internal.Commit=$(shell git rev-parse HEAD) "
6464
@@ -72,6 +72,14 @@ WHITE := $(shell tput -Txterm setaf 7)
7272CYAN := $(shell tput -Txterm setaf 6)
7373RESET := $(shell tput -Txterm sgr0)
7474
75+ UPX? =
76+ # check if upx exists
77+ ifeq (, $(shell which upx) )
78+ UPX=
79+ else
80+ UPX=$(shell which upx)
81+ endif
82+
7583# Default Docker bridge IP
7684E2E_BRIDGE_IP? =172.17.0.1
7785
@@ -377,6 +385,7 @@ build: prepare backend-assets grpcs ## Build the project
377385 $(info ${GREEN}I BUILD_TYPE: ${YELLOW}$(BUILD_TYPE ) ${RESET})
378386 $(info ${GREEN}I GO_TAGS: ${YELLOW}$(GO_TAGS ) ${RESET})
379387 $(info ${GREEN}I LD_FLAGS: ${YELLOW}$(LD_FLAGS ) ${RESET})
388+ $(info ${GREEN}I UPX: ${YELLOW}$(UPX ) ${RESET})
380389ifneq ($(BACKEND_LIBS ) ,)
381390 $(MAKE) backend-assets/lib
382391 cp -f $(BACKEND_LIBS) backend-assets/lib/
421430endif
422431
423432dist-cross-linux-arm64 :
424- CMAKE_ARGS=" $( CMAKE_ARGS) -DGGML_NATIVE=off" GRPC_BACKENDS=" backend-assets/grpc/llama-cpp-fallback backend-assets/grpc/llama-cpp-grpc backend-assets/util/llama-cpp-rpc-server" \
433+ CMAKE_ARGS=" $( CMAKE_ARGS) -DGGML_NATIVE=off" GRPC_BACKENDS=" backend-assets/grpc/llama-cpp-fallback backend-assets/grpc/llama-cpp-grpc backend-assets/util/llama-cpp-rpc-server" GO_TAGS= " p2p " \
425434 STATIC=true $(MAKE ) build
426435 mkdir -p release
427436# if BUILD_ID is empty, then we don't append it to the binary name
@@ -471,7 +480,7 @@ prepare-e2e:
471480 mkdir -p $(TEST_DIR )
472481 cp -rfv $(abspath ./tests/e2e-fixtures) /gpu.yaml $(TEST_DIR ) /gpu.yaml
473482 test -e $(TEST_DIR ) /ggllm-test-model.bin || wget -q https://huggingface.co/TheBloke/CodeLlama-7B-Instruct-GGUF/resolve/main/codellama-7b-instruct.Q2_K.gguf -O $(TEST_DIR ) /ggllm-test-model.bin
474- docker build --build-arg GRPC_BACKENDS=" $( GRPC_BACKENDS) " --build-arg IMAGE_TYPE=core --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg CUDA_MAJOR_VERSION=12 --build-arg CUDA_MINOR_VERSION=4 --build-arg FFMPEG=true -t localai-tests .
483+ docker build --build-arg GRPC_BACKENDS=" $( GRPC_BACKENDS) " --build-arg IMAGE_TYPE=core --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg CUDA_MAJOR_VERSION=12 --build-arg CUDA_MINOR_VERSION=0 --build-arg FFMPEG=true -t localai-tests .
475484
476485run-e2e-image :
477486 ls -liah $(abspath ./tests/e2e-fixtures)
@@ -733,13 +742,22 @@ backend-assets/grpc: protogen-go replace
733742backend-assets/grpc/bert-embeddings : sources/go-bert.cpp sources/go-bert.cpp/libgobert.a backend-assets/grpc
734743 CGO_LDFLAGS=" $( CGO_LDFLAGS) " C_INCLUDE_PATH=$(CURDIR ) /sources/go-bert.cpp LIBRARY_PATH=$(CURDIR ) /sources/go-bert.cpp \
735744 $(GOCMD ) build -ldflags " $( LD_FLAGS) " -tags " $( GO_TAGS) " -o backend-assets/grpc/bert-embeddings ./backend/go/llm/bert/
745+ ifneq ($(UPX ) ,)
746+ $(UPX) backend-assets/grpc/bert-embeddings
747+ endif
736748
737749backend-assets/grpc/gpt4all : sources/gpt4all sources/gpt4all/gpt4all-bindings/golang/libgpt4all.a backend-assets/gpt4all backend-assets/grpc
738750 CGO_LDFLAGS=" $( CGO_LDFLAGS) " C_INCLUDE_PATH=$(CURDIR ) /sources/gpt4all/gpt4all-bindings/golang/ LIBRARY_PATH=$(CURDIR ) /sources/gpt4all/gpt4all-bindings/golang/ \
739751 $(GOCMD ) build -ldflags " $( LD_FLAGS) " -tags " $( GO_TAGS) " -o backend-assets/grpc/gpt4all ./backend/go/llm/gpt4all/
752+ ifneq ($(UPX ) ,)
753+ $(UPX) backend-assets/grpc/gpt4all
754+ endif
740755
741756backend-assets/grpc/huggingface : backend-assets/grpc
742757 $(GOCMD ) build -ldflags " $( LD_FLAGS) " -tags " $( GO_TAGS) " -o backend-assets/grpc/huggingface ./backend/go/llm/langchain/
758+ ifneq ($(UPX ) ,)
759+ $(UPX) backend-assets/grpc/huggingface
760+ endif
743761
744762backend/cpp/llama/llama.cpp :
745763 LLAMA_VERSION=$(CPPLLAMA_VERSION ) $(MAKE ) -C backend/cpp/llama llama.cpp
765783 echo "BUILD_GRPC_FOR_BACKEND_LLAMA is not defined."
766784 LLAMA_VERSION=$(CPPLLAMA_VERSION) $(MAKE) -C backend/cpp/${VARIANT} grpc-server
767785endif
786+ ifneq ($(UPX ) ,)
787+ $(UPX) backend/cpp/${VARIANT}/grpc-server
788+ endif
768789
769790# This target is for manually building a variant with-auto detected flags
770791backend-assets/grpc/llama-cpp : backend-assets/grpc backend/cpp/llama/llama.cpp
@@ -837,33 +858,57 @@ backend-assets/grpc/llama-cpp-grpc: backend-assets/grpc backend/cpp/llama/llama.
837858backend-assets/util/llama-cpp-rpc-server : backend-assets/grpc/llama-cpp-grpc
838859 mkdir -p backend-assets/util/
839860 cp -rf backend/cpp/llama-grpc/llama.cpp/build/bin/rpc-server backend-assets/util/llama-cpp-rpc-server
861+ ifneq ($(UPX ) ,)
862+ $(UPX) backend-assets/util/llama-cpp-rpc-server
863+ endif
840864
841865backend-assets/grpc/llama-ggml : sources/go-llama.cpp sources/go-llama.cpp/libbinding.a backend-assets/grpc
842866 CGO_LDFLAGS=" $( CGO_LDFLAGS) " C_INCLUDE_PATH=$(CURDIR ) /sources/go-llama.cpp LIBRARY_PATH=$(CURDIR ) /sources/go-llama.cpp \
843867 $(GOCMD ) build -ldflags " $( LD_FLAGS) " -tags " $( GO_TAGS) " -o backend-assets/grpc/llama-ggml ./backend/go/llm/llama-ggml/
868+ ifneq ($(UPX ) ,)
869+ $(UPX) backend-assets/grpc/llama-ggml
870+ endif
844871
845872backend-assets/grpc/piper : sources/go-piper sources/go-piper/libpiper_binding.a backend-assets/grpc backend-assets/espeak-ng-data
846873 CGO_CXXFLAGS=" $( PIPER_CGO_CXXFLAGS) " CGO_LDFLAGS=" $( PIPER_CGO_LDFLAGS) " LIBRARY_PATH=$(CURDIR ) /sources/go-piper \
847874 $(GOCMD ) build -ldflags " $( LD_FLAGS) " -tags " $( GO_TAGS) " -o backend-assets/grpc/piper ./backend/go/tts/
875+ ifneq ($(UPX ) ,)
876+ $(UPX) backend-assets/grpc/piper
877+ endif
848878
849879backend-assets/grpc/rwkv : sources/go-rwkv.cpp sources/go-rwkv.cpp/librwkv.a backend-assets/grpc
850880 CGO_LDFLAGS=" $( CGO_LDFLAGS) " C_INCLUDE_PATH=$(CURDIR ) /sources/go-rwkv.cpp LIBRARY_PATH=$(CURDIR ) /sources/go-rwkv.cpp \
851881 $(GOCMD ) build -ldflags " $( LD_FLAGS) " -tags " $( GO_TAGS) " -o backend-assets/grpc/rwkv ./backend/go/llm/rwkv
882+ ifneq ($(UPX ) ,)
883+ $(UPX) backend-assets/grpc/rwkv
884+ endif
852885
853886backend-assets/grpc/stablediffusion : sources/go-stable-diffusion sources/go-stable-diffusion/libstablediffusion.a backend-assets/grpc
854887 CGO_LDFLAGS=" $( CGO_LDFLAGS) " CPATH=" $( CPATH) :$( CURDIR) /sources/go-stable-diffusion/:/usr/include/opencv4" LIBRARY_PATH=$(CURDIR ) /sources/go-stable-diffusion/ \
855888 $(GOCMD ) build -ldflags " $( LD_FLAGS) " -tags " $( GO_TAGS) " -o backend-assets/grpc/stablediffusion ./backend/go/image/stablediffusion
889+ ifneq ($(UPX ) ,)
890+ $(UPX) backend-assets/grpc/stablediffusion
891+ endif
856892
857893backend-assets/grpc/tinydream : sources/go-tiny-dream sources/go-tiny-dream/libtinydream.a backend-assets/grpc
858894 CGO_LDFLAGS=" $( CGO_LDFLAGS) " LIBRARY_PATH=$(CURDIR ) /go-tiny-dream \
859895 $(GOCMD ) build -ldflags " $( LD_FLAGS) " -tags " $( GO_TAGS) " -o backend-assets/grpc/tinydream ./backend/go/image/tinydream
896+ ifneq ($(UPX ) ,)
897+ $(UPX) backend-assets/grpc/tinydream
898+ endif
860899
861900backend-assets/grpc/whisper : sources/whisper.cpp sources/whisper.cpp/libwhisper.a backend-assets/grpc
862901 CGO_LDFLAGS=" $( CGO_LDFLAGS) $( CGO_LDFLAGS_WHISPER) " C_INCLUDE_PATH=" $( CURDIR) /sources/whisper.cpp/include:$( CURDIR) /sources/whisper.cpp/ggml/include" LIBRARY_PATH=$(CURDIR ) /sources/whisper.cpp \
863902 $(GOCMD ) build -ldflags " $( LD_FLAGS) " -tags " $( GO_TAGS) " -o backend-assets/grpc/whisper ./backend/go/transcribe/
903+ ifneq ($(UPX ) ,)
904+ $(UPX) backend-assets/grpc/whisper
905+ endif
864906
865907backend-assets/grpc/local-store : backend-assets/grpc
866908 $(GOCMD ) build -ldflags " $( LD_FLAGS) " -tags " $( GO_TAGS) " -o backend-assets/grpc/local-store ./backend/go/stores/
909+ ifneq ($(UPX ) ,)
910+ $(UPX) backend-assets/grpc/local-store
911+ endif
867912
868913grpcs : prepare $(GRPC_BACKENDS )
869914
0 commit comments