--- /dev/null
+name: Build relocatable cmake package
+on:
+ workflow_dispatch:
+ workflow_call:
+
+jobs:
+ linux:
+ runs-on: ubuntu-24.04
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+
+ - name: Install dependencies
+ run: |
+ sudo apt update
+ sudo apt install -y build-essential tcl
+
+ - name: Build
+ run: |
+ PREFIX="$(pwd)"/inst
+ cmake -S . -B build -DCMAKE_PREFIX_PATH="$PREFIX" \
+ -DLLAMA_CURL=OFF -DLLAMA_BUILD_TESTS=OFF -DLLAMA_BUILD_TOOLS=OFF \
+ -DLLAMA_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release
+ cmake --build build --config Release
+ cmake --install build --prefix "$PREFIX" --config Release
+
+ export LLAMA_CONFIG="$PREFIX"/lib/cmake/llama/llama-config.cmake
+ tclsh <<'EOF'
+ set build(commit) [string trim [exec git rev-parse --short HEAD]]
+ set build(number) [string trim [exec git rev-list --count HEAD]]
+ set build(version) "0.0.$build(number)"
+
+ set llamaconfig [read [open "$env(LLAMA_CONFIG)" r]]
+ set checks [list "set\\(LLAMA_VERSION \\s+$build(version)\\)" \
+ "set\\(LLAMA_BUILD_COMMIT\\s+$build(commit)\\)" \
+ "set\\(LLAMA_BUILD_NUMBER\\s+$build(number)\\)"]
+
+ puts -nonewline "Checking llama-config.cmake version... "
+ foreach check $checks {
+ if {![regexp -expanded -- $check $llamaconfig]} {
+ puts "\"$check\" failed!"
+ exit 1
+ }
+ }
+ puts "success."
+ EOF
+
+ cd examples/simple-cmake-pkg
+ cmake -S . -B build -DCMAKE_PREFIX_PATH="$PREFIX"/lib/cmake
+ cmake --build build
push:
branches:
- master
- paths: ['.github/workflows/build.yml', '.github/workflows/build-linux-cross.yml', '**/CMakeLists.txt', '**/.cmake', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu', '**/*.cuh', '**/*.swift', '**/*.m', '**/*.metal', '**/*.comp']
+ paths: [
+ '.github/workflows/build.yml',
+ '.github/workflows/build-linux-cross.yml',
+ '.github/workflows/build-cmake-pkg.yml',
+ '**/CMakeLists.txt',
+ '**/.cmake',
+ '**/*.h',
+ '**/*.hpp',
+ '**/*.c',
+ '**/*.cpp',
+ '**/*.cu',
+ '**/*.cuh',
+ '**/*.swift',
+ '**/*.m',
+ '**/*.metal',
+ '**/*.comp'
+ ]
+
pull_request:
types: [opened, synchronize, reopened]
- paths: ['.github/workflows/build.yml', '.github/workflows/build-linux-cross.yml', '**/CMakeLists.txt', '**/.cmake', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp', '**/*.cu', '**/*.cuh', '**/*.swift', '**/*.m', '**/*.metal', '**/*.comp']
+ paths: [
+ '.github/workflows/build.yml',
+ '.github/workflows/build-linux-cross.yml',
+ '.github/workflows/build-cmake-pkg.yml',
+ '**/CMakeLists.txt',
+ '**/.cmake',
+ '**/*.h',
+ '**/*.hpp',
+ '**/*.c',
+ '**/*.cpp',
+ '**/*.cu',
+ '**/*.cuh',
+ '**/*.swift',
+ '**/*.m',
+ '**/*.metal',
+ '**/*.comp'
+ ]
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}
build-linux-cross:
uses: ./.github/workflows/build-linux-cross.yml
+ build-cmake-pkg:
+ uses: ./.github/workflows/build-cmake-pkg.yml
+
macOS-latest-cmake-ios:
runs-on: macos-latest