summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmake/FindGn.cmake8
-rw-r--r--cmake/Functions.cmake26
-rw-r--r--configure.cmake4
-rw-r--r--src/CMakeLists.txt27
-rw-r--r--src/host/BUILD.toolchain.gn.in1
-rw-r--r--src/host/CMakeLists.txt3
-rw-r--r--src/pdf/CMakeLists.txt5
7 files changed, 48 insertions, 26 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}
diff --git a/configure.cmake b/configure.cmake
index 3d383fb50..7da77ef70 100644
--- a/configure.cmake
+++ b/configure.cmake
@@ -481,8 +481,8 @@ add_check_for_support(
)
add_check_for_support(
MODULES QtPdf
- CONDITION LINUX OR (WIN32 AND NOT WIN_ARM_64) OR MACOS OR IOS OR (ANDROID AND NOT CMAKE_HOST_WIN32)
- MESSAGE "Build can be done only on Linux, Windows, macO, iOS and Android(on non-Windows hosts only)."
+ CONDITION LINUX OR (WIN32 AND NOT WIN_ARM_64) OR MACOS OR IOS OR ANDROID
+ MESSAGE "Build can be done only on Linux, Windows, macO, iOS and Android."
)
if(LINUX AND CMAKE_CROSSCOMPILING)
get_gn_arch(testArch ${TEST_architecture_arch})
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 748911a38..b425abd8a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -192,29 +192,32 @@ if(CMAKE_CROSSCOMPILING AND NOT IOS AND NOT MACOS)
endif()
# install gn for cross build
-if((LINUX OR MACOS) AND INSTALL_GN)
- get_install_config(installConfig)
- install(
- PROGRAMS ${installDir}/bin/gn
- CONFIGURATIONS ${installConfig}
- RUNTIME DESTINATION "${INSTALL_LIBEXECDIR}"
- )
+if((LINUX OR MACOS OR WIN32) AND INSTALL_GN)
if(NOT QT_WILL_INSTALL)
- add_custom_target(copy-gn ALL DEPENDS
- ${QT_BUILD_DIR}/${INSTALL_LIBEXECDIR}/gn
+ set(copyOuput
+ ${QT_BUILD_DIR}/${INSTALL_LIBEXECDIR}/gn${CMAKE_EXECUTABLE_SUFFIX}
)
if(Gn_FOUND)
+ set(copyInput ${Gn_EXECUTABLE})
set(copyDep ${Gn_EXECUTABLE})
else()
+ set(copyInput ${installDir}/bin/gn${CMAKE_EXECUTABLE_SUFFIX})
set(copyDep gn)
endif()
+ add_custom_target(copy-gn ALL DEPENDS ${copyOutput})
add_custom_command(
- OUTPUT ${QT_BUILD_DIR}/${INSTALL_LIBEXECDIR}/gn
- COMMAND ${CMAKE_COMMAND} -E copy ${installDir}/bin/gn
- ${QT_BUILD_DIR}/${INSTALL_LIBEXECDIR}
+ OUTPUT ${copyOutput}
+ COMMAND ${CMAKE_COMMAND} -E copy ${copyInput} ${QT_BUILD_DIR}/${INSTALL_LIBEXECDIR}
DEPENDS ${copyDep}
USES_TERMINAL
)
+ else()
+ get_install_config(installConfig)
+ install(
+ PROGRAMS "${installDir}/bin/gn${CMAKE_EXECUTABLE_SUFFIX}"
+ CONFIGURATIONS ${installConfig}
+ RUNTIME DESTINATION "${INSTALL_LIBEXECDIR}"
+ )
endif()
endif()
diff --git a/src/host/BUILD.toolchain.gn.in b/src/host/BUILD.toolchain.gn.in
index df62aa88e..1beb9ee6d 100644
--- a/src/host/BUILD.toolchain.gn.in
+++ b/src/host/BUILD.toolchain.gn.in
@@ -12,6 +12,7 @@ gcc_toolchain("@GN_TOOLCHAIN@") {
current_cpu = "@GN_CPU@"
v8_current_cpu = "@GN_V8_CPU@"
is_clang = @GN_IS_CLANG@
+ is_mingw = @GN_IS_MINGW@
use_gold = false
}
}
diff --git a/src/host/CMakeLists.txt b/src/host/CMakeLists.txt
index d90c6dea2..b5ce918ab 100644
--- a/src/host/CMakeLists.txt
+++ b/src/host/CMakeLists.txt
@@ -50,9 +50,10 @@ if(QT_FEATURE_qtpdf_build)
endif()
# TODO: this could be run as part of main configure with execute_process
+# Skip for qtpdf(android)
if(CMAKE_CXX_COMPILER_ID STREQUAL GNU AND TEST_architecture_arch STREQUAL "x86_64"
-AND GN_TARGET_CPU STREQUAL "arm")
+ AND GN_TARGET_CPU STREQUAL "arm" AND NOT MINGW AND NOT ANDROID)
try_compile(
has32HostCompiler
"${CMAKE_CURRENT_BINARY_DIR}/config.tests/hostcompiler"
diff --git a/src/pdf/CMakeLists.txt b/src/pdf/CMakeLists.txt
index 8070eb39a..9d1f798f8 100644
--- a/src/pdf/CMakeLists.txt
+++ b/src/pdf/CMakeLists.txt
@@ -71,7 +71,7 @@ add_dependencies(docs generate_pdf_attributions)
# TOOLCHAIN SETUP
##
-if(LINUX OR MINGW)
+if(LINUX OR MINGW OR ANDROID)
setup_toolchains()
endif()
@@ -132,6 +132,7 @@ foreach(arch ${archs})
enable_web_speech=false
chrome_pgo_phase=0
strip_absolute_paths_from_debug_symbols=false
+ v8_enable_webassembly=false
)
if(LINUX OR ANDROID)
@@ -160,7 +161,7 @@ foreach(arch ${archs})
CONDITION QT_FEATURE_pdf_bitcode
)
endif()
- if(WIN32)
+ if(WIN32 OR ANDROID)
list(APPEND gnArgArg
ninja_use_custom_environment_files=false
safe_browsing_mode=0