Commit 7085b6c6 authored by Dominik Charousset's avatar Dominik Charousset

Simplify CMake flag handling

parent 3a4239a0
...@@ -101,14 +101,16 @@ def coverageReport() { ...@@ -101,14 +101,16 @@ def coverageReport() {
} }
} }
def cmakeSteps(buildType, cmakeArgs, installDir) { def cmakeSteps(buildType, cmakeArgs, buildId) {
def absInstallDir = pwd() + '/' + installDir def installDir = "$WORKSPACE/$buildId"
dir('caf-sources') { dir('caf-sources') {
// Configure and build. // Configure and build.
cmakeBuild([ cmakeBuild([
buildDir: 'build', buildDir: 'build',
buildType: buildType, buildType: buildType,
cmakeArgs: "-DCMAKE_INSTALL_PREFIX=\"$absInstallDir\" " + cmakeArgs, cmakeArgs: (cmakeArgs + [
"CMAKE_INSTALL_PREFIX=\"$installDir\"",
]).collect { x -> '-D' + x }.join(' '),
installation: 'cmake in search path', installation: 'cmake in search path',
sourceDir: '.', sourceDir: '.',
steps: [[ steps: [[
...@@ -127,40 +129,35 @@ def cmakeSteps(buildType, cmakeArgs, installDir) { ...@@ -127,40 +129,35 @@ def cmakeSteps(buildType, cmakeArgs, installDir) {
if (PrettyJobBaseName == 'master') { if (PrettyJobBaseName == 'master') {
zip([ zip([
archive: true, archive: true,
dir: installDir, dir: buildId,
zipFile: "${installDir}.zip", zipFile: "${buildId}.zip",
]) ])
} }
} }
// Builds `name` with CMake and runs the unit tests. // Builds `name` with CMake and runs the unit tests.
def buildSteps(buildType, cmakeArgs, installDir) { def buildSteps(buildType, cmakeArgs, buildId) {
echo "build stage: $STAGE_NAME" echo "build stage: $STAGE_NAME"
deleteDir() deleteDir()
dir(installDir) { dir(buildId) {
// Create directory. // Create directory.
} }
unstash('caf-sources') unstash('caf-sources')
if (STAGE_NAME.contains('Windows')) { if (STAGE_NAME.contains('Windows')) {
echo "Windows build on $NODE_NAME" echo "Windows build on $NODE_NAME"
withEnv(['PATH=C:\\Windows\\System32;C:\\Program Files\\CMake\\bin;C:\\Program Files\\Git\\cmd;C:\\Program Files\\Git\\bin']) { withEnv(['PATH=C:\\Windows\\System32;C:\\Program Files\\CMake\\bin;C:\\Program Files\\Git\\cmd;C:\\Program Files\\Git\\bin']) {
cmakeSteps(buildType, cmakeArgs, installDir) cmakeSteps(buildType, cmakeArgs, buildId)
} }
} else { } else {
echo "Unix build on $NODE_NAME" echo "Unix build on $NODE_NAME"
def leakCheck = STAGE_NAME.contains("Linux") && !STAGE_NAME.contains("clang") def leakCheck = STAGE_NAME.contains("Linux") && !STAGE_NAME.contains("clang")
withEnv(["label_exp=" + STAGE_NAME.toLowerCase(), withEnv(["label_exp=" + STAGE_NAME.toLowerCase(),
"ASAN_OPTIONS=detect_leaks=" + (leakCheck ? 1 : 0)]) { "ASAN_OPTIONS=detect_leaks=" + (leakCheck ? 1 : 0)]) {
cmakeSteps(buildType, cmakeArgs, installDir) cmakeSteps(buildType, cmakeArgs, buildId)
} }
} }
} }
// Concatenates CMake flags into a single string.
def makeFlags(xs) {
xs.collect { x -> '-D' + x }.join(' ')
}
// Builds a stage for given builds. Results in a parallel stage `if builds.size() > 1`. // Builds a stage for given builds. Results in a parallel stage `if builds.size() > 1`.
def makeBuildStages(matrixIndex, builds, lblExpr, settings) { def makeBuildStages(matrixIndex, builds, lblExpr, settings) {
builds.collectEntries { buildType -> builds.collectEntries { buildType ->
...@@ -171,9 +168,9 @@ def makeBuildStages(matrixIndex, builds, lblExpr, settings) { ...@@ -171,9 +168,9 @@ def makeBuildStages(matrixIndex, builds, lblExpr, settings) {
node(lblExpr) { node(lblExpr) {
stage(id) { stage(id) {
try { try {
def installDir = "$lblExpr && $buildType" def buildId = "$lblExpr && $buildType"
withEnv(buildEnvironments[lblExpr] ?: []) { withEnv(buildEnvironments[lblExpr] ?: []) {
buildSteps(buildType, makeFlags(settings['cmakeArgs']), installDir) buildSteps(buildType, settings['cmakeArgs'], buildId)
(settings['extraSteps'] ?: []).each { fun -> "$fun"() } (settings['extraSteps'] ?: []).each { fun -> "$fun"() }
} }
} finally { } finally {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment