aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa/cmake.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/rosa/cmake.go')
-rw-r--r--internal/rosa/cmake.go32
1 files changed, 23 insertions, 9 deletions
diff --git a/internal/rosa/cmake.go b/internal/rosa/cmake.go
index 049688e5..b22c124f 100644
--- a/internal/rosa/cmake.go
+++ b/internal/rosa/cmake.go
@@ -20,6 +20,8 @@ type CMakeHelper struct {
// Use the bootstrap minimal [MakeHelper] CMake.
Early bool
+ // Omit CMAKE_CROSSCOMPILING_EMULATOR, because qemu is not yet available.
+ SkipEmulator bool
// Value of CMAKE_BUILD_TYPE. The zero value is equivalent to "Release".
BuildType string
@@ -40,16 +42,22 @@ type CMakeHelper struct {
var _ Helper = new(CMakeHelper)
// tools returns the cmake handle alongside either ninja or make.
-func (attr *CMakeHelper) tools(Toolchain) P {
- h := _cmake
- if attr != nil && attr.Early {
- h = _cmakeEarly
- }
+func (attr *CMakeHelper) tools(t Toolchain) P {
+ tools := P{_cmake, _ninja, _qemu}
+ if attr != nil {
+ if attr.Early {
+ tools[0] = _cmakeEarly
+ }
+
+ if attr.Make {
+ tools[1] = _make
+ }
- if attr != nil && attr.Make {
- return P{h, _make}
+ if !t.cross() || attr.SkipEmulator {
+ tools = tools[:2]
+ }
}
- return P{h, _ninja}
+ return tools
}
// inputs is a noop.
@@ -85,7 +93,8 @@ func (attr *CMakeHelper) script(t Toolchain, name string) string {
}
script := attr.Script
- if !attr.SkipTest && t.opts&OptSkipCheck == 0 {
+ if !attr.SkipTest && t.opts&OptSkipCheck == 0 &&
+ !(t.cross() && attr.SkipEmulator) {
script += "\n" + test
}
@@ -108,6 +117,11 @@ func (attr *CMakeHelper) script(t Toolchain, name string) string {
-DCMAKE_CXX_FLAGS='--target=` + target + ` --sysroot=` + sysroot + `' \
-DCMAKE_ASM_COMPILER=` + Prefix + `/bin/clang \
-DCMAKE_ASM_FLAGS='--target=` + target + ` --sysroot=` + sysroot + `' \`
+
+ if !attr.SkipEmulator {
+ cross += `
+ -DCMAKE_CROSSCOMPILING_EMULATOR='qemu-` + t.linuxArch() + `;-L;` + sysroot + `' \`
+ }
}
return `