| CMAKE_ARGS?= |
| BUILD_TYPE?= |
| NATIVE?=false |
|
|
| GOCMD?=go |
| GO_TAGS?= |
| JOBS?=$(shell nproc --ignore=1) |
|
|
| |
| STABLEDIFFUSION_GGML_REPO?=https://github.com/leejet/stable-diffusion.cpp |
| STABLEDIFFUSION_GGML_VERSION?=7010bb4dff7bd55b03d35ef9772142c21699eba9 |
|
|
| CMAKE_ARGS+=-DGGML_MAX_NAME=128 |
|
|
| ifeq ($(NATIVE),false) |
| CMAKE_ARGS+=-DGGML_NATIVE=OFF |
| endif |
|
|
| |
| ifeq ($(BUILD_TYPE),cublas) |
| CMAKE_ARGS+=-DSD_CUDA=ON -DGGML_CUDA=ON |
| |
| |
| else ifeq ($(BUILD_TYPE),openblas) |
| CMAKE_ARGS+=-DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS |
| |
| else ifeq ($(BUILD_TYPE),clblas) |
| CMAKE_ARGS+=-DGGML_CLBLAST=ON -DCLBlast_DIR=/some/path |
| |
| else ifeq ($(BUILD_TYPE),hipblas) |
| ROCM_HOME ?= /opt/rocm |
| ROCM_PATH ?= /opt/rocm |
| export CXX=$(ROCM_HOME)/llvm/bin/clang++ |
| export CC=$(ROCM_HOME)/llvm/bin/clang |
| AMDGPU_TARGETS?=gfx803,gfx900,gfx906,gfx908,gfx90a,gfx942,gfx1010,gfx1030,gfx1032,gfx1100,gfx1101,gfx1102,gfx1200,gfx1201 |
| CMAKE_ARGS+=-DSD_HIPBLAS=ON -DGGML_HIPBLAS=ON -DAMDGPU_TARGETS=$(AMDGPU_TARGETS) |
| else ifeq ($(BUILD_TYPE),vulkan) |
| CMAKE_ARGS+=-DSD_VULKAN=ON -DGGML_VULKAN=ON |
| else ifeq ($(OS),Darwin) |
| ifneq ($(BUILD_TYPE),metal) |
| CMAKE_ARGS+=-DSD_METAL=OFF -DGGML_METAL=OFF |
| else |
| CMAKE_ARGS+=-DSD_METAL=ON -DGGML_METAL=ON |
| CMAKE_ARGS+=-DGGML_METAL_EMBED_LIBRARY=ON |
| endif |
| endif |
|
|
| ifeq ($(BUILD_TYPE),sycl_f16) |
| CMAKE_ARGS+=-DGGML_SYCL=ON \ |
| -DCMAKE_C_COMPILER=icx \ |
| -DCMAKE_CXX_COMPILER=icpx \ |
| -DSD_SYCL=ON \ |
| -DGGML_SYCL_F16=ON |
| endif |
|
|
| ifeq ($(BUILD_TYPE),sycl_f32) |
| CMAKE_ARGS+=-DGGML_SYCL=ON \ |
| -DCMAKE_C_COMPILER=icx \ |
| -DCMAKE_CXX_COMPILER=icpx \ |
| -DSD_SYCL=ON |
| endif |
|
|
| sources/stablediffusion-ggml.cpp: |
| git clone --recursive $(STABLEDIFFUSION_GGML_REPO) sources/stablediffusion-ggml.cpp && \ |
| cd sources/stablediffusion-ggml.cpp && \ |
| git checkout $(STABLEDIFFUSION_GGML_VERSION) && \ |
| git submodule update --init --recursive --depth 1 --single-branch |
|
|
| libgosd.so: sources/stablediffusion-ggml.cpp CMakeLists.txt gosd.cpp gosd.h |
| mkdir -p build && \ |
| cd build && \ |
| cmake .. $(CMAKE_ARGS) && \ |
| cmake --build . --config Release -j$(JOBS) && \ |
| cd .. && \ |
| mv build/libgosd.so ./ |
|
|
| stablediffusion-ggml: main.go gosd.go libgosd.so |
| CGO_ENABLED=0 $(GOCMD) build -tags "$(GO_TAGS)" -o stablediffusion-ggml ./ |
|
|
| package: stablediffusion-ggml |
| bash package.sh |
|
|
| build: package |
|
|
| clean: |
| rm -rf libgosd.so build stablediffusion-ggml package sources |
|
|