summaryrefslogtreecommitdiffstats
path: root/coin
diff options
context:
space:
mode:
authorJędrzej Nowacki <jedrzej.nowacki@qt.io>2019-07-03 08:26:24 +0200
committerJędrzej Nowacki <jedrzej.nowacki@qt.io>2019-07-04 07:06:52 +0000
commit12b73cba89c7564ba33bf6139f67b135522248ce (patch)
treec5842f4e68ec50ba4bc263a1ac49a887af140d88 /coin
parent38640f745e8079e8fc860aa5ff162035b31572c2 (diff)
Split module_config.yaml
There are things that could be shared around all Qt submodules. In particular compiler specific configuration should not be repeated over and over. The new file can be included directly from all modules that uses QtBase. In longer term one would have a separate repository for such instructions as most of them are not QtBase specific. Change-Id: I0590b2a0c78b73e1b9dbb27cc1da6568cbe56563 Reviewed-by: Qt CMake Build Bot Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'coin')
-rw-r--r--coin/instructions/prepare_building_env.yaml202
-rw-r--r--coin/module_config.yaml194
2 files changed, 203 insertions, 193 deletions
diff --git a/coin/instructions/prepare_building_env.yaml b/coin/instructions/prepare_building_env.yaml
new file mode 100644
index 0000000000..f862459ba3
--- /dev/null
+++ b/coin/instructions/prepare_building_env.yaml
@@ -0,0 +1,202 @@
+# Prepares environment for building Qt module. It sets all important environment variables in particular
+# configures the right compiler and cmake generator
+type: Group
+instructions:
+
+ # Set default cmake generator, it may be overwritten later
+ - type: EnvironmentVariable
+ variableName: CMAKE_GENERATOR
+ variableValue: Ninja
+
+
+ # Export ICC specific env. variables
+ - type: Group
+ instructions:
+ - type: EnvironmentVariable
+ variableName: LD_LIBRARY_PATH
+ variableValue: "{{.Env.ICC64_18_LDLP}}"
+ - type: PrependToEnvironmentVariable
+ variableName: PATH
+ variableValue: "{{.Env.ICC64_18_PATH}}"
+ enable_if:
+ condition: property
+ property: host.compiler
+ equals_value: ICC_18
+
+
+ # Set CMAKE_C[XX]_COMPILER otherwise cmake may prioritize a wrong compiler
+ - type: Group
+ instructions:
+ - type: PrependToEnvironmentVariable
+ variableName: CONFIGURE_ARGS
+ variableValue: "-DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc "
+ enable_if:
+ condition: property
+ property: host.compiler
+ contains_value: ICC
+ - type: PrependToEnvironmentVariable
+ variableName: CONFIGURE_ARGS
+ variableValue: "-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ "
+ enable_if:
+ condition: property
+ property: host.compiler
+ contains_value: GCC
+ - type: PrependToEnvironmentVariable
+ variableName: CONFIGURE_ARGS
+ variableValue: "-DCMAKE_C_COMPILER=cl.exe -DCMAKE_CXX_COMPILER=cl.exe "
+ enable_if:
+ condition: property
+ property: host.compiler
+ contains_value: MSVC
+ - type: PrependToEnvironmentVariable
+ variableName: CONFIGURE_ARGS
+ variableValue: "-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ "
+ enable_if:
+ condition: property
+ property: host.compiler
+ contains_value: Clang
+
+
+ # 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
+
+
+ # 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 compiler specific generator (probably superior solution as it allows to get rid of ENV_PREFIX).
+ - type: Group
+ enable_if:
+ condition: property
+ property: host.os
+ equals_value: Windows
+ instructions:
+ # 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: "%ProgramFiles(x86)%\\Microsoft Visual Studio 11.0\\VC\\vcvarsall.bat"
+ enable_if:
+ condition: property
+ property: host.compiler
+ equals_value: MSVC2012
+ - type: EnvironmentVariable
+ variableName: VC_SCRIPT
+ variableValue: "%ProgramFiles(x86)%\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat"
+ enable_if:
+ condition: property
+ property: host.compiler
+ equals_value: MSVC2013
+ - type: EnvironmentVariable
+ variableName: VC_SCRIPT
+ variableValue: "%ProgramFiles(x86)%\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat"
+ enable_if:
+ condition: property
+ property: host.compiler
+ equals_value: MSVC2015
+ - type: EnvironmentVariable
+ variableName: VC_SCRIPT
+ variableValue: "%ProgramFiles(x86)%\\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: "%ProgramFiles(x86)%\\Microsoft Visual Studio\\2019\\Professional\\VC\\Auxiliary\\Build\\vcvarsall.bat"
+ enable_if:
+ condition: property
+ property: host.compiler
+ equals_value: MSVC2019
+
+
+ # With MSVC we need setup the environment before every subprocess call, the group below creates a script that
+ # does it. It is enough to prepand it to every call (it is safe to add it even on other OSes)
+ - type: Group
+ instructions:
+ - 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
diff --git a/coin/module_config.yaml b/coin/module_config.yaml
index 24977812ae..565dd52554 100644
--- a/coin/module_config.yaml
+++ b/coin/module_config.yaml
@@ -4,167 +4,6 @@ accept_configuration:
property: host.os
equals_property: target.os
-windows_specific_instructions:
- - &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.
- type: Group
- enable_if:
- condition: property
- property: host.os
- equals_value: Windows
- instructions:
- # 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: "%ProgramFiles(x86)%\\Microsoft Visual Studio 11.0\\VC\\vcvarsall.bat"
- enable_if:
- condition: property
- property: host.compiler
- equals_value: MSVC2012
- - type: EnvironmentVariable
- variableName: VC_SCRIPT
- variableValue: "%ProgramFiles(x86)%\\Microsoft Visual Studio 12.0\\VC\\vcvarsall.bat"
- enable_if:
- condition: property
- property: host.compiler
- equals_value: MSVC2013
- - type: EnvironmentVariable
- variableName: VC_SCRIPT
- variableValue: "%ProgramFiles(x86)%\\Microsoft Visual Studio 14.0\\VC\\vcvarsall.bat"
- enable_if:
- condition: property
- property: host.compiler
- equals_value: MSVC2015
- - type: EnvironmentVariable
- variableName: VC_SCRIPT
- variableValue: "%ProgramFiles(x86)%\\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: "%ProgramFiles(x86)%\\Microsoft Visual Studio\\2019\\Professional\\VC\\Auxiliary\\Build\\vcvarsall.bat"
- enable_if:
- condition: property
- property: host.compiler
- equals_value: MSVC2019
-
-icc_specific_instructions: &icc_export_variables
- type: Group
- instructions:
- - type: EnvironmentVariable
- variableName: LD_LIBRARY_PATH
- variableValue: "{{.Env.ICC64_18_LDLP}}"
- - type: PrependToEnvironmentVariable
- variableName: PATH
- variableValue: "{{.Env.ICC64_18_PATH}}"
- enable_if:
- condition: property
- property: host.compiler
- equals_value: ICC_18
-
-set_cmake_compiler: &set_cmake_c_cxx_compiler
- type: Group
- instructions:
- - type: PrependToEnvironmentVariable
- variableName: CONFIGURE_ARGS
- variableValue: "-DCMAKE_C_COMPILER=icc -DCMAKE_CXX_COMPILER=icpc "
- enable_if:
- condition: property
- property: host.compiler
- contains_value: ICC
- - type: PrependToEnvironmentVariable
- variableName: CONFIGURE_ARGS
- variableValue: "-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ "
- enable_if:
- condition: property
- property: host.compiler
- contains_value: GCC
- - type: PrependToEnvironmentVariable
- variableName: CONFIGURE_ARGS
- variableValue: "-DCMAKE_C_COMPILER=cl.exe -DCMAKE_CXX_COMPILER=cl.exe "
- enable_if:
- condition: property
- property: host.compiler
- contains_value: MSVC
- - type: PrependToEnvironmentVariable
- variableName: CONFIGURE_ARGS
- variableValue: "-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ "
- enable_if:
- condition: property
- property: host.compiler
- contains_value: Clang
-
call_cmake_instructions: &call_cmake
type: Group
instructions:
@@ -243,38 +82,7 @@ build_instructions:
directory: "{{.SourceDir}}"
- type: ChangeDirectory
directory: "{{.BuildDir}}"
- - type: EnvironmentVariable
- variableName: CMAKE_GENERATOR
- variableValue: Ninja
- - *icc_export_variables
- - *set_cmake_c_cxx_compiler
- - *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
+ - !include "{{qt/qtbase}}/prepare_building_env.yaml"
- type: ExecuteCommand
command: "{{.Env.ENV_PREFIX}} cmake {{.Env.CONFIGURE_ARGS}} -DCMAKE_INSTALL_PREFIX:PATH={{.InstallDir}} -DBUILD_TESTING=OFF {{.SourceDir}}"
executeCommandArgumentSplitingBehavior: SplitAfterVariableSubstitution