summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmake/Functions.cmake88
-rw-r--r--src/host/BUILD.toolchain.gn.in4
-rw-r--r--src/host/CMakeLists.txt2
3 files changed, 66 insertions, 28 deletions
diff --git a/cmake/Functions.cmake b/cmake/Functions.cmake
index 37d097b6a..3f01646ed 100644
--- a/cmake/Functions.cmake
+++ b/cmake/Functions.cmake
@@ -362,36 +362,74 @@ function(qt_internal_add_external_project_dependency_to_root_project name)
endfunction()
function(get_gn_arch result arch)
- if("${arch}" STREQUAL "i386")
- set(${result} "x86" PARENT_SCOPE)
- elseif("${arch}" STREQUAL "x86_64")
- set(${result} "x64" PARENT_SCOPE)
- elseif("${arch}" STREQUAL "arm")
- set(${result} "arm" PARENT_SCOPE)
- elseif("${arch}" STREQUAL "arm64")
- set(${result} "arm64" PARENT_SCOPE)
- elseif("${arch}" STREQUAL "mipsel")
- set(${result} "mipsel" PARENT_SCOPE)
- elseif("${arch}" STREQUAL "mipsel64")
- set(${result} "mips64el" PARENT_SCOPE)
- else()
- message(DEBUG "Unsupported achitecture: ${arch}")
- endif()
+ if(arch STREQUAL "i386")
+ set(${result} "x86" PARENT_SCOPE)
+ elseif(arch STREQUAL "x86_64")
+ set(${result} "x64" PARENT_SCOPE)
+ elseif(arch STREQUAL "arm")
+ set(${result} "arm" PARENT_SCOPE)
+ elseif(arch STREQUAL "arm64")
+ set(${result} "arm64" PARENT_SCOPE)
+ elseif(arch STREQUAL "mipsel")
+ set(${result} "mipsel" PARENT_SCOPE)
+ elseif(arch STREQUAL "mipsel64")
+ set(${result} "mips64el" PARENT_SCOPE)
+ else()
+ message(DEBUG "Unsupported architecture: ${arch}")
+ endif()
+endfunction()
+
+function(get_v8_arch result targetArch hostArch)
+ set(list32 i386 arm mipsel)
+ if(hostArch STREQUAL targetArch)
+ set(${result} "${targetArch}" PARENT_SCOPE)
+ elseif(targetArch IN_LIST list32)
+ # 32bit target which needs a 32bit compatible host
+ if(hostArch STREQUAL "x86_64")
+ set(${result} "i386" PARENT_SCOPE)
+ elseif(hostArch STREQUAL "arm64")
+ set(${result} "arm" PARENT_SCOPE)
+ elseif(hostArch STREQUAL "mips64")
+ set(${result} "mipsel" PARENT_SCOPE)
+ elseif(hostArch STREQUAL "mipsel64")
+ set(${result} "mipsel" PARENT_SCOPE)
+ else()
+ message(DEBUG "Unsupported architecture: ${hostArch}")
+ endif()
+ else()
+ # assume 64bit target which matches 64bit host
+ set(${result} "${hostArch}" PARENT_SCOPE)
+ endif()
endfunction()
-function(get_v8_arch result targetArch)
- set(list32 i386 arm mipsel)
- if("${targetArch}" IN_LIST list32)
- set(${result} "i386" PARENT_SCOPE)
- else()
- set(${result} "x86_64" PARENT_SCOPE)
- endif()
+function(get_gn_os result)
+ if(WIN32)
+ set(${result} "win" PARENT_SCOPE)
+ elseif(LINUX)
+ set(${result} "linux" PARENT_SCOPE)
+ elseif(MACOS)
+ set(${result} "mac" PARENT_SCOPE)
+ elseif(IOS)
+ set(${result} "ios" PARENT_SCOPE)
+ else()
+ message(DEBUG "Unrecognized OS")
+ endif()
+endfunction()
+
+function(get_gn_is_clang result)
+ if(CLANG)
+ set(${result} "true" PARENT_SCOPE)
+ else()
+ set(${result} "false" PARENT_SCOPE)
+ endif()
endfunction()
-function(configure_gn_toolchain name cpuType v8CpuType toolchainIn toolchainOut)
+function(configure_gn_toolchain name binTargetCpu v8TargetCpu toolchainIn toolchainOut)
set(GN_TOOLCHAIN ${name})
- get_gn_arch(GN_CPU ${cpuType})
- get_gn_arch(GN_V8_CPU ${v8CpuType})
+ get_gn_os(GN_OS)
+ get_gn_is_clang(GN_IS_CLANG)
+ get_gn_arch(GN_CPU ${binTargetCpu})
+ get_gn_arch(GN_V8_CPU ${v8TargetCpu})
configure_file(${toolchainIn} ${toolchainOut}/BUILD.gn @ONLY)
endfunction()
diff --git a/src/host/BUILD.toolchain.gn.in b/src/host/BUILD.toolchain.gn.in
index c1bf3845b..df62aa88e 100644
--- a/src/host/BUILD.toolchain.gn.in
+++ b/src/host/BUILD.toolchain.gn.in
@@ -8,10 +8,10 @@ gcc_toolchain("@GN_TOOLCHAIN@") {
nm = "@CMAKE_NM@"
extra_cppflags = ""
toolchain_args = {
- current_os = "linux"
+ current_os = "@GN_OS@"
current_cpu = "@GN_CPU@"
v8_current_cpu = "@GN_V8_CPU@"
- is_clang = false
+ is_clang = @GN_IS_CLANG@
use_gold = false
}
}
diff --git a/src/host/CMakeLists.txt b/src/host/CMakeLists.txt
index 86249d74c..9053d1e59 100644
--- a/src/host/CMakeLists.txt
+++ b/src/host/CMakeLists.txt
@@ -23,7 +23,7 @@ configure_gn_toolchain(host ${TEST_architecture_arch} ${TEST_architecture_arch}
${WEBENGINE_ROOT_SOURCE_DIR}/src/host/BUILD.toolchain.gn.in
${buildDir}/host_toolchain
)
-get_v8_arch(GN_V8_HOST_CPU ${GN_TARGET_CPU})
+get_v8_arch(GN_V8_HOST_CPU ${GN_TARGET_CPU} ${TEST_architecture_arch})
configure_gn_toolchain(v8 ${GN_V8_HOST_CPU} ${GN_TARGET_CPU}
${WEBENGINE_ROOT_SOURCE_DIR}/src/host/BUILD.toolchain.gn.in
${buildDir}/v8_toolchain)