diff options
author | Michal Klocek <michal.klocek@qt.io> | 2023-08-15 18:43:48 +0200 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2023-11-14 11:52:17 +0100 |
commit | a09f5c4d5ae11ac338f09de044b72b6fc6ac00cc (patch) | |
tree | e3ce23cbd8361cc99abdb29fa3c58f2605d49226 /cmake | |
parent | 71b4ebbf035d7a08184a43b896c4d51e1391421a (diff) |
Add android on windows build support
Add builds for android on windows platform. These
are required by qt release scripts to create armv7 targets
on windows.
Note new 'is_mingw' setting for toolchainis. This required
as andorid on windows build use mingw toolchain as a
host toolchian. Main gn_arg argument 'is_mingw' is used
only for target/default toolchian, in this case gn drops
toolchian_args. However toolchain_args are evaluated in
case of secondary/host toolchain.
Override v8 snapshot toolchain to avoid pulling windows
(msvc or clang) toolchains and creating yet another set of
toolchain targets.
Task-number: QTBUG-83459
Change-Id: I927872d69e363277b9f90c3adda28518d6b6bb13
Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/FindGn.cmake | 8 | ||||
-rw-r--r-- | cmake/Functions.cmake | 26 |
2 files changed, 25 insertions, 9 deletions
diff --git a/cmake/FindGn.cmake b/cmake/FindGn.cmake index 3f25bb585..fd03b7346 100644 --- a/cmake/FindGn.cmake +++ b/cmake/FindGn.cmake @@ -7,10 +7,10 @@ endif() find_program(Gn_EXECUTABLE NAMES gn PATHS "${WEBENGINE_ROOT_BUILD_DIR}/install/bin" NO_DEFAULT_PATH) if(NOT QT_HOST_PATH STREQUAL "") find_program(Gn_EXECUTABLE NAMES gn PATHS ${QT_HOST_PATH}/${INSTALL_LIBEXECDIR} NO_DEFAULT_PATH) -endif() -# script mode does not have QT_HOST_PATH or INSTALL_LIBEXECDIR instead it uses QT_HOST_GN_PATH -if(NOT QT_HOST_GN_PATH STREQUAL "") - find_program(Gn_EXECUTABLE NAMES gn PATHS ${QT_HOST_GN_PATH} NO_DEFAULT_PATH) + # note: mingw installs with INSTALL_LIBEXECDIR = bin, + # however android on windows has INSTALL_LIBEXECDIR = libexec, + # so cover this case also + find_program(Gn_EXECUTABLE NAMES gn PATHS ${QT_HOST_PATH}/${INSTALL_BINDIR} NO_DEFAULT_PATH) endif() find_program(Gn_EXECUTABLE NAMES gn) diff --git a/cmake/Functions.cmake b/cmake/Functions.cmake index 9fb4299c5..039b4daf7 100644 --- a/cmake/Functions.cmake +++ b/cmake/Functions.cmake @@ -717,6 +717,15 @@ function(get_gn_is_clang result) endif() endfunction() + +function(get_gn_is_mingw result) + if(MINGW) + set(${result} "true" PARENT_SCOPE) + else() + set(${result} "false" PARENT_SCOPE) + endif() +endfunction() + function(get_ios_sysroot result arch) if(NOT CMAKE_APPLE_ARCH_SYSROOTS) message(FATAL_ERROR "CMAKE_APPLE_ARCH_SYSROOTS not set.") @@ -734,6 +743,7 @@ function(configure_gn_toolchain name binTargetCpu v8TargetCpu toolchainIn toolch set(GN_TOOLCHAIN ${name}) get_gn_os(GN_OS) get_gn_is_clang(GN_IS_CLANG) + get_gn_is_mingw(GN_IS_MINGW) get_gn_arch(GN_CPU ${binTargetCpu}) get_gn_arch(GN_V8_CPU ${v8TargetCpu}) configure_file(${toolchainIn} ${toolchainOut}/BUILD.gn @ONLY) @@ -1086,6 +1096,14 @@ macro(append_toolchain_setup) endif() if(ANDROID) list(APPEND gnArgArg target_os="android") + if(CMAKE_HOST_WIN32) + list(APPEND gnArgArg + host_toolchain="/${buildDir}/host_toolchain:host" + host_cpu="x64" + v8_snapshot_toolchain="/${buildDir}/v8_toolchain:v8" + target_cpu="${cpu}" + ) + endif() endif() endmacro() @@ -1234,17 +1252,15 @@ function(add_gn_command) endforeach() list(TRANSFORM output PREPEND "${arg_BUILDDIR}/") - if(QT_HOST_PATH) - set(QT_HOST_GN_PATH ${QT_HOST_PATH}/${INSTALL_LIBEXECDIR}) - endif() - add_custom_command( OUTPUT ${output} COMMAND ${CMAKE_COMMAND} -DBUILD_DIR=${arg_BUILDDIR} -DSOURCE_DIR=${CMAKE_CURRENT_LIST_DIR} -DMODULE=${arg_MODULE} - -DQT_HOST_GN_PATH=${QT_HOST_GN_PATH} + -DQT_HOST_PATH=${QT_HOST_PATH} + -DINSTALL_LIBEXECDIR=${INSTALL_LIBEXECDIR} + -DINSTALL_BINDIR=${INSTALL_BINDIR} -DPython3_EXECUTABLE=${Python3_EXECUTABLE} -DGN_THREADS=$ENV{QTWEBENGINE_GN_THREADS} -DQT_ALLOW_SYMLINK_IN_PATHS=${QT_ALLOW_SYMLINK_IN_PATHS} |