summaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorMichal Klocek <michal.klocek@qt.io>2023-08-15 18:43:48 +0200
committerMichal Klocek <michal.klocek@qt.io>2023-11-14 11:52:17 +0100
commita09f5c4d5ae11ac338f09de044b72b6fc6ac00cc (patch)
treee3ce23cbd8361cc99abdb29fa3c58f2605d49226 /cmake
parent71b4ebbf035d7a08184a43b896c4d51e1391421a (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.cmake8
-rw-r--r--cmake/Functions.cmake26
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}