123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- # top level makefile for Ollama
- include make/common-defs.make
- # Determine which if any GPU runners we should build
- include make/cuda-v11-defs.make
- include make/cuda-v12-defs.make
- include make/rocm-defs.make
- ifeq ($(CUSTOM_CPU_FLAGS),)
- ifeq ($(ARCH),amd64)
- RUNNER_TARGETS=cpu
- endif
- # Without CUSTOM_CPU_FLAGS we default to build both v11 and v12 if present
- ifeq ($(OLLAMA_SKIP_CUDA_GENERATE),)
- ifneq ($(CUDA_11_COMPILER),)
- RUNNER_TARGETS += cuda_v11
- endif
- ifneq ($(CUDA_12_COMPILER),)
- RUNNER_TARGETS += cuda_v12
- endif
- endif
- else # CUSTOM_CPU_FLAGS is set, we'll build only the latest cuda version detected
- ifneq ($(CUDA_12_COMPILER),)
- RUNNER_TARGETS += cuda_v12
- else ifneq ($(CUDA_11_COMPILER),)
- RUNNER_TARGETS += cuda_v11
- endif
- endif
- ifeq ($(OLLAMA_SKIP_ROCM_GENERATE),)
- ifneq ($(HIP_COMPILER),)
- RUNNER_TARGETS += rocm
- endif
- endif
- all: runners exe
- dist: $(addprefix dist_, $(RUNNER_TARGETS)) dist_exe
- dist_%:
- @$(MAKE) --no-print-directory -f make/Makefile.$* dist
- runners: $(RUNNER_TARGETS)
- $(RUNNER_TARGETS):
- @$(MAKE) --no-print-directory -f make/Makefile.$@
- exe dist_exe:
- @$(MAKE) --no-print-directory -f make/Makefile.ollama $@
- help-sync apply-patches create-patches sync sync-clean:
- @$(MAKE) --no-print-directory -f make/Makefile.sync $@
- test integration lint:
- @$(MAKE) --no-print-directory -f make/Makefile.test $@
- clean:
- rm -rf $(BUILD_DIR) $(DIST_LIB_DIR) $(OLLAMA_EXE) $(DIST_OLLAMA_EXE)
- go clean -cache
- help:
- @echo "The following make targets will help you build Ollama"
- @echo ""
- @echo " make all # (default target) Build Ollama llm subprocess runners, and the primary ollama executable"
- @echo " make runners # Build Ollama llm subprocess runners; after you may use 'go build .' to build the primary ollama exectuable"
- @echo " make <runner> # Build specific runners. Enabled: '$(RUNNER_TARGETS)'"
- @echo " make dist # Build the runners and primary ollama executable for distribution"
- @echo " make help-sync # Help information on vendor update targets"
- @echo " make help-runners # Help information on runner targets"
- @echo ""
- @echo "The following make targets will help you test Ollama"
- @echo ""
- @echo " make test # Run unit tests"
- @echo " make integration # Run integration tests. You must 'make all' first"
- @echo " make lint # Run lint and style tests"
- @echo ""
- @echo "For more information see 'docs/development.md'"
- @echo ""
- help-runners:
- @echo "The following runners will be built based on discovered GPU libraries: '$(RUNNER_TARGETS)'"
- @echo ""
- @echo "GPU Runner CPU Flags: '$(GPU_RUNNER_CPU_FLAGS)' (Override with CUSTOM_CPU_FLAGS)"
- @echo ""
- @echo "# CUDA_PATH sets the location where CUDA toolkits are present"
- @echo "CUDA_PATH=$(CUDA_PATH)"
- @echo " CUDA_11_PATH=$(CUDA_11_PATH)"
- @echo " CUDA_11_COMPILER=$(CUDA_11_COMPILER)"
- @echo " CUDA_12_PATH=$(CUDA_12_PATH)"
- @echo " CUDA_12_COMPILER=$(CUDA_12_COMPILER)"
- @echo ""
- @echo "# HIP_PATH sets the location where the ROCm toolkit is present"
- @echo "HIP_PATH=$(HIP_PATH)"
- @echo " HIP_COMPILER=$(HIP_COMPILER)"
- .PHONY: all exe dist help help-sync help-runners test integration lint runners clean $(RUNNER_TARGETS)
- # Handy debugging for make variables
- print-%:
- @echo '$*=$($*)'
|