d59fadb2da
As now the configuration syntax supports enable_if, we can get rid of double negations. Change-Id: I5b8b695d4f7a72cd1a836b9b427096fb4e3b85a7 Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
214 lines
7.6 KiB
YAML
214 lines
7.6 KiB
YAML
version: 1
|
|
accept_configuration:
|
|
condition: property
|
|
property: host.os
|
|
equals_property: target.os
|
|
|
|
windows_specific_instrucitons:
|
|
- &export_target_architecture_and_sdk
|
|
# Export TARGET_ARCHITECTURE and WINDOWS_SDK_VERSION for MSVC cross compilation
|
|
type: Group
|
|
enable_if:
|
|
condition: property
|
|
property: host.os
|
|
equals_value: Windows
|
|
instructions:
|
|
- type: EnvironmentVariable
|
|
variableName: TARGET_ARCHITECTURE
|
|
variableValue: amd64 # TODO add something like "{{toLower .Config host.arch}}"
|
|
disable_if:
|
|
condition: property
|
|
property: host.arch
|
|
not_equals_property: target.arch
|
|
- type: EnvironmentVariable
|
|
variableName: TARGET_ARCHITECTURE
|
|
variableValue: amd64_x86
|
|
enable_if:
|
|
condition: and
|
|
conditions:
|
|
- condition: property
|
|
property: target.arch
|
|
equals_property: X86
|
|
- condition: property
|
|
property: host.arch
|
|
equals_property: X86_64
|
|
- type: EnvironmentVariable
|
|
# HACK. Overwrite TARGET_ARCHITECTURE as we do not use standard MSVC cross
|
|
# compilation targets here. The target architecture will be detected by Qt.
|
|
variableName: TARGET_ARCHITECTURE
|
|
variableValue: x86
|
|
enable_if:
|
|
condition: property
|
|
property: target.os
|
|
in_values: ["WINRT", "WINPHONE", "WINCE"]
|
|
- type: EnvironmentVariable
|
|
variableName: WINDOWS_SDK_VERSION
|
|
variableValue: "10.0.14393.0"
|
|
enable_if:
|
|
condition: property
|
|
property: target.os
|
|
equals_value: WINRT
|
|
- type: EnvironmentVariable
|
|
variableName: WINDOWS_SDK_VERSION
|
|
variableValue: ""
|
|
disable_if:
|
|
condition: property
|
|
property: host.os
|
|
equals_value: WINRT # TODO set windows sdk version for desktop windows as well
|
|
|
|
- &find_path_to_compiler
|
|
# MSVC is installed in somehow arbitrary places. To reduce amount of combinations we need to make a variable.
|
|
# This seems inverted, but on 64 bit hosts VS is installed into the x86 path, otherwise the regular one
|
|
# TODO cleanup, that step could be removed if we have same installation paths or we read the path from registry
|
|
# or we use %ProgramFiles(x86)%.
|
|
type: Group
|
|
enable_if:
|
|
condition: property
|
|
property: host.os
|
|
equals_value: Windows
|
|
instructions:
|
|
- type: EnvironmentVariable
|
|
variableName: PROGRAM_FILES_PATH
|
|
variableValue: "C:\\Program Files"
|
|
disable_if:
|
|
condition: property
|
|
property: host.arch
|
|
not_equals_value: X86
|
|
- type: EnvironmentVariable
|
|
variableName: PROGRAM_FILES_PATH
|
|
variableValue: "C:\\Program Files (x86)"
|
|
disable_if:
|
|
condition: property
|
|
property: host.arch
|
|
equals_value: X86
|
|
# Try to pick one of many coexistent MSVC installation to use
|
|
# TODO cleanup, that could be much simpler if all tools are installed to similar paths, so it would
|
|
# be enough to substitute compiler name.
|
|
- type: EnvironmentVariable
|
|
variableName: VC_SCRIPT
|
|
variableValue: "%VS90COMNTOOLS%\\vsvars32.bat"
|
|
enable_if:
|
|
condition: property
|
|
property: host.compiler
|
|
equals_value: MSVC2008
|
|
- type: EnvironmentVariable
|
|
variableName: VC_SCRIPT
|
|
variableValue: "%VS100COMNTOOLS%\\vsvars32.bat"
|
|
enable_if:
|
|
condition: property
|
|
property: host.compiler
|
|
equals_value: MSVC2010
|
|
- type: EnvironmentVariable
|
|
variableName: VC_SCRIPT
|
|
variableValue: "{{.Env.PROGRAM_FILES_PATH}}\\Microsoft Visual Studio 11.0\\VC\\vcvarsall.bat"
|
|
enable_if:
|
|
condition: property
|
|
property: host.compiler
|
|
equals_value: MSVC2012
|
|
- type: EnvironmentVariable
|
|
variableName: VC_SCRIPT
|
|
variableValue: "{{.Env.PROGRAM_FILES_PATH}}\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat"
|
|
enable_if:
|
|
condition: property
|
|
property: host.compiler
|
|
equals_value: MSVC2013
|
|
- type: EnvironmentVariable
|
|
variableName: VC_SCRIPT
|
|
variableValue: "{{.Env.PROGRAM_FILES_PATH}}\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat"
|
|
enable_if:
|
|
condition: property
|
|
property: host.compiler
|
|
equals_value: MSVC2015
|
|
- type: EnvironmentVariable
|
|
variableName: VC_SCRIPT
|
|
variableValue: "{{.Env.PROGRAM_FILES_PATH}}\\Microsoft Visual Studio\\2017\\Professional\\VC\\Auxiliary\\Build\\vcvarsall.bat"
|
|
enable_if:
|
|
condition: property
|
|
property: host.compiler
|
|
equals_value: MSVC2017
|
|
- type: EnvironmentVariable
|
|
variableName: VC_SCRIPT
|
|
variableValue: "{{.Env.PROGRAM_FILES_PATH}}\\Microsoft Visual Studio\\2019\\Professional\\VC\\Auxiliary\\Build\\vcvarsall.bat"
|
|
enable_if:
|
|
condition: property
|
|
property: host.compiler
|
|
equals_value: MSVC2019
|
|
|
|
build_instructions:
|
|
- type: MakeDirectory
|
|
directory: .git
|
|
- type: SetBuildDirectory
|
|
directory: "{{.SourceDir}}"
|
|
- type: ChangeDirectory
|
|
directory: "{{.BuildDir}}"
|
|
- *export_target_architecture_and_sdk
|
|
- *find_path_to_compiler
|
|
# With MSVC we need setup the environment before every subprocess call.
|
|
- type: WriteFile
|
|
fileContents: "call \"{{.Env.VC_SCRIPT}}\" {{.Env.TARGET_ARCHITECTURE}} {{.Env.WINDOWS_SDK_VERSION}}\r\ncmd /c %*"
|
|
filename: c:\\users\\qt\\prefix.bat
|
|
fileMode: 420
|
|
maxTimeInSeconds: 20
|
|
maxTimeBetweenOutput: 20
|
|
enable_if:
|
|
condition: property
|
|
property: host.os
|
|
equals_value: Windows
|
|
- type: EnvironmentVariable
|
|
variableName: ENV_PREFIX
|
|
variableValue: "c:\\users\\qt\\prefix.bat"
|
|
enable_if:
|
|
condition: property
|
|
property: host.os
|
|
equals_value: Windows
|
|
- type: EnvironmentVariable
|
|
variableName: ENV_PREFIX
|
|
variableValue: ""
|
|
disable_if:
|
|
condition: property
|
|
property: host.os
|
|
equals_value: Windows
|
|
- type: ExecuteCommand
|
|
command: "{{.Env.ENV_PREFIX}} cmake {{.Env.CONFIGURE_ARGS}} -DCMAKE_INSTALL_PREFIX:PATH={{.InstallDir}} -GNinja {{.SourceDir}}"
|
|
maxTimeInSeconds: 6000
|
|
maxTimeBetweenOutput: 120
|
|
userMessageOnFailure: >
|
|
Failed to call cmake. Contact Liang then.
|
|
- type: EnvironmentVariable
|
|
variableName: DESTDIR
|
|
variableValue: "{{.InstallRoot}}"
|
|
- type: ExecuteCommand # TODO: remove me, just debuging
|
|
command: cmd.exe /c type {{.BuildDir}}\\CMakeCache.txt
|
|
enable_if:
|
|
condition: property
|
|
property: host.os
|
|
equals_value: Windows
|
|
maxTimeInSeconds: 60
|
|
userMessageOnFailure: Could not print the file cmake config file. This should not be possible.
|
|
- type: ExecuteCommand
|
|
command: "{{.Env.ENV_PREFIX}} ninja install"
|
|
maxTimeInSeconds: 6000
|
|
maxTimeBetweenOutput: 120
|
|
userMessageOnFailure: >
|
|
Failed to build sources. In the current state bug can be everywhere. Contact Liang first.
|
|
- type: SignPackage
|
|
enable_if:
|
|
condition: property
|
|
property: host.os
|
|
equals_value: Windows
|
|
directory: "{{.InstallRoot}}/{{.AgentWorkingDir}}"
|
|
maxTimeInSeconds: 1200
|
|
maxTimeBetweenOutput: 1200
|
|
- type: UploadArtifact
|
|
archiveDirectory: "{{.InstallRoot}}/{{.AgentWorkingDir}}"
|
|
transferType: UploadModuleBuildArtifact
|
|
maxTimeInSeconds: 1200
|
|
maxTimeBetweenOutput: 1200
|
|
test_instructions:
|
|
- type: ExecuteCommand
|
|
command: echo "hello world - test"
|
|
maxTimeInSeconds: 60
|
|
maxTimeBetweenOutput: 12
|
|
userMessageOnFailure: >
|
|
Failed to call echo. Contact Liang then.
|