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