1name: Build relocatable cmake package
 2on:
 3  workflow_dispatch:
 4  workflow_call:
 5
 6jobs:
 7  linux:
 8    runs-on: ubuntu-24.04
 9    steps:
10      - uses: actions/checkout@v6
11        with:
12          fetch-depth: 0
13
14      - name: Install dependencies
15        run: |
16          sudo apt update
17          sudo apt install -y build-essential tcl
18
19      - name: Build
20        run: |
21          PREFIX="$(pwd)"/inst
22          cmake -S . -B build -DCMAKE_PREFIX_PATH="$PREFIX" \
23                -DLLAMA_OPENSSL=OFF -DLLAMA_BUILD_TESTS=OFF -DLLAMA_BUILD_TOOLS=OFF \
24                -DLLAMA_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release
25          cmake --build build --config Release
26          cmake --install build --prefix "$PREFIX" --config Release
27
28          export LLAMA_CONFIG="$PREFIX"/lib/cmake/llama/llama-config.cmake
29          tclsh <<'EOF'
30          set build(commit)  [string trim [exec git rev-parse --short HEAD]]
31          set build(number)  [string trim [exec git rev-list  --count HEAD]]
32          set build(version) "0.0.$build(number)"
33
34          set llamaconfig [read [open "$env(LLAMA_CONFIG)" r]]
35          set checks [list "set\\(LLAMA_VERSION     \\s+$build(version)\\)" \
36                           "set\\(LLAMA_BUILD_COMMIT\\s+$build(commit)\\)" \
37                           "set\\(LLAMA_BUILD_NUMBER\\s+$build(number)\\)"]
38
39          puts -nonewline "Checking llama-config.cmake version... "
40          foreach check $checks {
41              if {![regexp -expanded -- $check $llamaconfig]} {
42                  puts "\"$check\" failed!"
43                  exit 1
44              }
45          }
46          puts "success."
47          EOF
48
49          cd examples/simple-cmake-pkg
50          cmake -S . -B build -DCMAKE_PREFIX_PATH="$PREFIX"/lib/cmake
51          cmake --build build