diff options
Diffstat (limited to 'internal/rosa/cmake.go')
| -rw-r--r-- | internal/rosa/cmake.go | 38 |
1 files changed, 31 insertions, 7 deletions
diff --git a/internal/rosa/cmake.go b/internal/rosa/cmake.go index f9e5e38c..2095c47a 100644 --- a/internal/rosa/cmake.go +++ b/internal/rosa/cmake.go @@ -7,6 +7,8 @@ import ( ) var ( + _cmakeEarly = H("cmake-early") + _cmake = H("cmake") _ninja = H("ninja") ) @@ -16,6 +18,9 @@ type CMakeHelper struct { // Path elements joined with source. Append []string + // Use the bootstrap minimal [MakeHelper] CMake. + Early bool + // Value of CMAKE_BUILD_TYPE. The zero value is equivalent to "Release". BuildType string // CMake CACHE entries. @@ -35,11 +40,16 @@ type CMakeHelper struct { var _ Helper = new(CMakeHelper) // tools returns the cmake handle alongside either ninja or make. -func (attr *CMakeHelper) tools() P { +func (attr *CMakeHelper) tools(Toolchain) P { + h := _cmake + if attr != nil && attr.Early { + h = _cmakeEarly + } + if attr != nil && attr.Make { - return P{_cmake, _make} + return P{h, _make} } - return P{_cmake, _ninja} + return P{h, _ninja} } // inputs is a noop. @@ -62,6 +72,7 @@ func (attr *CMakeHelper) script(t Toolchain, name string) string { if attr == nil { attr = new(CMakeHelper) } + target := t.triple() generate := "Ninja" test := "ninja " + jobsFlagE + " " + loadFlagE + " test" @@ -85,12 +96,25 @@ func (attr *CMakeHelper) script(t Toolchain, name string) string { } cache = append(cache, attr.Cache...) + var cross string + if t.cross() { + cross = ` + -DCMAKE_SYSTEM_NAME=Linux \ + -DCMAKE_SYSROOT=/system/` + t.arch + ` \ + -DCMAKE_C_COMPILER=/system/bin/clang \ + -DCMAKE_CXX_COMPILER=/system/bin/clang++ \ + -DCMAKE_ASM_COMPILER=/system/bin/clang \` + } + return ` cmake -G ` + generate + ` \ - -Wno-author -Wno-unused-cli \ - -DCMAKE_C_COMPILER_TARGET="${ROSA_TRIPLE}" \ - -DCMAKE_CXX_COMPILER_TARGET="${ROSA_TRIPLE}" \ - -DCMAKE_ASM_COMPILER_TARGET="${ROSA_TRIPLE}" \ + -Wno-author -Wno-unused-cli \` + cross + ` + -DCMAKE_C_COMPILER_TARGET='` + target + `' \ + -DCMAKE_C_FLAGS='--target=` + target + `' \ + -DCMAKE_CXX_COMPILER_TARGET='` + target + `' \ + -DCMAKE_CXX_FLAGS='--target=` + target + `' \ + -DCMAKE_ASM_COMPILER_TARGET='` + target + `' \ + -DCMAKE_ASM_FLAGS='--target=` + target + `' \ -DCMAKE_INSTALL_LIBDIR=lib \ ` + strings.Join(slices.Collect(func(yield func(string) bool) { for _, v := range cache { |
