Skip to content

Commit 7714fe5

Browse files
committed
Build only the specific library targets LLamaSharp needs
Instead of building all llama.cpp targets (CLI tools, benchmarks, server, examples), use cmake --target to build only the shared libraries that LLamaSharp actually uses: ggml, ggml-base, ggml-cpu/cuda/vulkan, llama, and mtmd. This skips ~40 unnecessary targets and their dependencies.
1 parent c36e19c commit 7714fe5

1 file changed

Lines changed: 13 additions & 10 deletions

File tree

.github/workflows/compile.yml

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ jobs:
6060
mkdir build
6161
cd build
6262
cmake .. ${{ env.COMMON_DEFINE }} ${{ env.LINUX_RPATH_DEFINE }} ${{ matrix.defines }}
63-
cmake --build . --config Release -j $(nproc)
63+
cmake --build . --config Release -j $(nproc) --target ggml ggml-base ggml-cpu llama mtmd
6464
ls -R
6565
- uses: actions/upload-artifact@v4
6666
with:
@@ -125,7 +125,7 @@ jobs:
125125
mkdir build
126126
cd build
127127
cmake .. ${{ env.COMMON_DEFINE }} ${{ env.LINUX_RPATH_DEFINE }} ${{ matrix.defines }}
128-
cmake --build . --config Release -j $(nproc)
128+
cmake --build . --config Release -j $(nproc) --target ggml ggml-base ggml-cpu llama mtmd
129129
ls -R
130130
- uses: actions/upload-artifact@v4
131131
with:
@@ -181,7 +181,7 @@ jobs:
181181
mkdir build
182182
cd build
183183
cmake .. ${{ env.COMMON_DEFINE }} ${{ matrix.defines }}
184-
cmake --build . --config Release -j ${env:NUMBER_OF_PROCESSORS}
184+
cmake --build . --config Release -j ${env:NUMBER_OF_PROCESSORS} --target ggml ggml-base ggml-cpu llama mtmd
185185
tree /f
186186
187187
- name: Upload artifacts (llama)
@@ -237,7 +237,7 @@ jobs:
237237
mkdir build
238238
cd build
239239
cmake .. ${{ env.COMMON_DEFINE }} ${{ matrix.defines }}
240-
cmake --build . --config Release -j ${env:NUMBER_OF_PROCESSORS}
240+
cmake --build . --config Release -j ${env:NUMBER_OF_PROCESSORS} --target ggml ggml-base ggml-cpu llama mtmd
241241
tree /f
242242
243243
- name: Upload artifacts (llama)
@@ -314,15 +314,15 @@ jobs:
314314
mkdir build
315315
cd build
316316
cmake .. ${{ env.COMMON_DEFINE }} -DGGML_VULKAN=ON
317-
cmake --build . --config Release -j ${env:NUMBER_OF_PROCESSORS}
317+
cmake --build . --config Release -j ${env:NUMBER_OF_PROCESSORS} --target ggml ggml-base ggml-vulkan llama mtmd
318318
ls -R
319319
- name: Build (Linux)
320320
if: ${{ matrix.os == 'ubuntu-22.04' }}
321321
run: |
322322
mkdir build
323323
cd build
324324
cmake .. ${{ env.COMMON_DEFINE }} ${{ env.LINUX_RPATH_DEFINE }} -DGGML_VULKAN=ON
325-
cmake --build . --config Release -j $(nproc)
325+
cmake --build . --config Release -j $(nproc) --target ggml ggml-base ggml-vulkan llama mtmd
326326
ls -R
327327
- name: Upload llama artifacts (Windows)
328328
if: ${{ matrix.os == 'windows-latest' }}
@@ -436,7 +436,7 @@ jobs:
436436
mkdir build
437437
cd build
438438
cmake .. ${{ env.COMMON_DEFINE }} -DGGML_CUDA=ON -DCMAKE_CUDA_FLAGS=-w
439-
cmake --build . --config Release -j ${env:NUMBER_OF_PROCESSORS}
439+
cmake --build . --config Release -j ${env:NUMBER_OF_PROCESSORS} --target ggml ggml-base ggml-cuda llama mtmd
440440
ls -R
441441
442442
- name: Build (Linux)
@@ -447,7 +447,7 @@ jobs:
447447
mkdir build
448448
cd build
449449
cmake .. ${{ env.COMMON_DEFINE }} ${{ env.LINUX_RPATH_DEFINE }} -DGGML_CUDA=ON -DCMAKE_CUDA_FLAGS=-w
450-
cmake --build . --config Release -j $(nproc)
450+
cmake --build . --config Release -j $(nproc) --target ggml ggml-base ggml-cuda llama mtmd
451451
ls -R
452452
453453
- name: Upload artifacts (Windows)
@@ -530,10 +530,13 @@ jobs:
530530
include:
531531
- build: 'arm64'
532532
defines: '-DCMAKE_OSX_ARCHITECTURES=arm64 -DGGML_METAL_EMBED_LIBRARY=ON -DGGML_METAL_USE_BF16=ON'
533+
targets: '--target ggml ggml-base ggml-cpu ggml-blas ggml-metal llama mtmd'
533534
- build: 'x64'
534535
defines: '-DCMAKE_OSX_ARCHITECTURES=x86_64 -DGGML_METAL=OFF -DGGML_AVX=ON -DGGML_AVX2=ON'
536+
targets: '--target ggml ggml-base ggml-cpu ggml-blas llama mtmd'
535537
- build: 'x64-rosetta2'
536538
defines: '-DCMAKE_OSX_ARCHITECTURES=x86_64 -DGGML_METAL=OFF -DGGML_AVX=OFF -DGGML_AVX2=OFF'
539+
targets: '--target ggml ggml-base ggml-cpu ggml-blas llama mtmd'
537540
env:
538541
MACOS_RPATH_DEFINE: "-DCMAKE_INSTALL_RPATH='@loader_path' -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON"
539542
runs-on: macos-14
@@ -553,7 +556,7 @@ jobs:
553556
mkdir build
554557
cd build
555558
cmake .. ${{ env.COMMON_DEFINE }} ${{ env.MACOS_RPATH_DEFINE }} ${{ matrix.defines }}
556-
cmake --build . --config Release -j $(sysctl -n hw.logicalcpu)
559+
cmake --build . --config Release -j $(sysctl -n hw.logicalcpu) ${{ matrix.targets }}
557560
ls -R
558561
- name: Upload ggml
559562
uses: actions/upload-artifact@v4
@@ -628,7 +631,7 @@ jobs:
628631
# export-lora not supported on 32 bit machines hence breaks x86 build
629632
sed -i '/add_subdirectory(export-lora)/d' examples/CMakeLists.txt # remove export-lora from examples
630633
cmake ${{ env.COMMON_DEFINE }} ${{ env.CMAKE_FLAGS }} ${{ matrix.defines }} -B build
631-
cmake --build build --config Release -j $(nproc)
634+
cmake --build build --config Release -j $(nproc) --target ggml ggml-base ggml-cpu llama mtmd
632635
- name: Upload Llama
633636
uses: actions/upload-artifact@v4
634637
with:

0 commit comments

Comments
 (0)