Skip to content

Commit 1d1dc26

Browse files
committed
lkl: enable clang cross compiled FreeBSD build
Add script to create a FreeBSD sysroot and enable clang based build. Builds are enabled in CI as well, but tests are not yet enabled. Signed-off-by: Octavian Purdila <tavip@google.com>
1 parent d3e6118 commit 1d1dc26

3 files changed

Lines changed: 36 additions & 1 deletion

File tree

.github/workflows/ci.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@ jobs:
3838
runs_on: ubuntu-22.04
3939
shell: bash
4040
build_options: "LLVM=1 CROSS_COMPILE=x86_64-linux-gnu"
41+
- displayTargetName: freebsd
42+
os: unix
43+
runs_on: ubuntu-22.04
44+
shell: bash
45+
build_options: "LLVM=1 CROSS_COMPILE=x86_64-unknown-freebsd SYSROOT=~/freebsd-sysroot"
46+
make_sysroot: "./tools/lkl/scripts/freebsd-make-sysroot.sh"
4147
timeout-minutes: 100
4248
env:
4349
CCACHE_DIR: ${{ github.workspace }}/.ccache
@@ -150,10 +156,14 @@ jobs:
150156
echo MYSSH="$MYSSH" >> $GITHUB_ENV
151157
echo MYSCP="$MYSCP" >> $GITHUB_ENV
152158
echo LKL_QEMU_TEST=1 >> $GITHUB_ENV
159+
- name: Make sysroot
160+
run: |
161+
${{ matrix.make_sysroot }}
153162
- name: Build
154163
run: |
155164
make -j4 -C tools/lkl ${{ matrix.build_options }}
156165
- name: Tests
166+
if: matrix.displayTargetName != 'freebsd'
157167
run: mkdir junit && make -C tools/lkl run-tests tests="--junit-dir ../../junit"
158168
- name: Save test results
159169
uses: actions/upload-artifact@v5

tools/lkl/Makefile.autoconf

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,8 @@ endef
139139

140140
define llvm_target_to_ld_fmt
141141
$(if $(filter $(CROSS_COMPILE),x86_64-linux-gnu),elf64-x86-64,\
142-
$(error Unsupported LLVM target $(CROSS_COMPILE)))
142+
$(if $(filter $(CROSS_COMPILE),x86_64-unknown-freebsd),elf64-x86-64-freebsd, \
143+
$(error Unsupported LLVM target $(CROSS_COMPILE))))
143144
endef
144145

145146
define llvm_sysroot
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#!/bin/bash
2+
# SPDX-License-Identifier: GPL-2.0
3+
4+
function package_path()
5+
{
6+
grep \"name\":\"$1\" packagesite.yaml | jq -r .repopath
7+
}
8+
9+
mkdir -p ~/freebsd-sysroot
10+
cd ~/freebsd-sysroot
11+
wget -q https://download.freebsd.org/releases/amd64/14.4-RELEASE/base.txz
12+
tar -xf base.txz --exclude='./dev/*' --exclude='./chroot/*'
13+
14+
# Get FreeBSD package index...
15+
wget -q https://pkg.freebsd.org/FreeBSD:14:amd64/latest/packagesite.pkg
16+
tar -xf packagesite.pkg packagesite.yaml
17+
18+
wget -q https://pkg.freebsd.org/FreeBSD:14:amd64/latest/$(package_path argp-standalone)
19+
wget -q https://pkg.freebsd.org/FreeBSD:14:amd64/latest/$(package_path fusefs-libs3)
20+
21+
tar -xf argp-standalone-*.pkg
22+
tar -xf fusefs-libs3-*.pkg
23+
24+
rm fusefs-libs3-*.pkg argp-standalone-*.pkg base.txz packagesite.pkg packagesite.yaml

0 commit comments

Comments
 (0)