forked from security/hakurei
internal/rosa/cmake: expose earlier build script
This allows for more flexible build setups. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
@@ -51,12 +51,16 @@ type CMakeAttr struct {
|
||||
Env []string
|
||||
// Runs before cmake.
|
||||
ScriptEarly string
|
||||
// Runs after cmake.
|
||||
// Runs after cmake, replaces default.
|
||||
ScriptConfigured string
|
||||
// Runs after install.
|
||||
Script string
|
||||
|
||||
// Override the default installation prefix [AbsSystem].
|
||||
Prefix *check.Absolute
|
||||
|
||||
// Passed through to [Toolchain.New].
|
||||
Paths []pkg.ExecPath
|
||||
// Passed through to [Toolchain.New].
|
||||
Flag int
|
||||
}
|
||||
@@ -82,11 +86,9 @@ func (t Toolchain) NewViaCMake(
|
||||
panic("CACHE must be non-empty")
|
||||
}
|
||||
|
||||
scriptEarly := attr.ScriptEarly
|
||||
if attr.Writable {
|
||||
scriptEarly = `
|
||||
chmod -R +w "${ROSA_SOURCE}"
|
||||
` + scriptEarly
|
||||
scriptConfigured := "cmake --build .\ncmake --install .\n"
|
||||
if attr.ScriptConfigured != "" {
|
||||
scriptConfigured = attr.ScriptConfigured
|
||||
}
|
||||
|
||||
prefix := attr.Prefix
|
||||
@@ -102,7 +104,7 @@ chmod -R +w "${ROSA_SOURCE}"
|
||||
"ROSA_SOURCE=" + sourcePath.String(),
|
||||
"ROSA_CMAKE_SOURCE=" + sourcePath.Append(attr.Append...).String(),
|
||||
"ROSA_INSTALL_PREFIX=/work" + prefix.String(),
|
||||
}, attr.Env), scriptEarly+`
|
||||
}, attr.Env), attr.ScriptEarly+`
|
||||
mkdir /cure && cd /cure
|
||||
cmake -G Ninja \
|
||||
-DCMAKE_C_COMPILER_TARGET="${ROSA_TRIPLE}" \
|
||||
@@ -117,7 +119,7 @@ cmake -G Ninja \
|
||||
}), " \\\n\t")+` \
|
||||
-DCMAKE_INSTALL_PREFIX="${ROSA_INSTALL_PREFIX}" \
|
||||
"${ROSA_CMAKE_SOURCE}"
|
||||
cmake --build .
|
||||
cmake --install .
|
||||
`+attr.Script, pkg.Path(sourcePath, attr.Writable, source))
|
||||
`+scriptConfigured+attr.Script, slices.Concat([]pkg.ExecPath{
|
||||
pkg.Path(sourcePath, attr.Writable, source),
|
||||
}, attr.Paths)...)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user