Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-119340

Support not only arm64 native builds but also cross compilation arm64->amd64

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P3: Somewhat important
    • None
    • 5.15.11
    • Build System
    • None
    • arm64-windows
      vcpkg
    • Windows

    Description

      Issue:
      In case of host architecture is ARM64 $$QMAKE_HOST.arch is "unknown" - so an invalid arch is set when calling vcvarsall.bat.

      Error:

       {{Microsoft (R) Program Maintenance Utility Version 14.37.32824.0
      Copyright (C) Microsoft Corporation. All rights reserved.

      Command line: confirm-license -opensource -verbose -system-zlib -system-libjpeg -system-libpng -system-freetype -system-pcre -system-doubleconversion -system-sqlite -system-harfbuzz -no-angle -no-glib -openssl-linked -no-sql-psql -no-sql-mysql "-vulkan=no" -no-icu -opengl dynamic -nomake examples -nomake tests "LIBJPEG_LIBS=C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/jpeg.lib" "ZLIB_LIBS=C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/zlibd.lib" "LIBPNG_LIBS=C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/libpng16d.lib C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/zlibd.lib" "PCRE2_LIBS=C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/pcre2-16d.lib" "FREETYPE_LIBS=C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/freetyped.lib C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/bz2d.lib C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/libpng16d.lib C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/zlibd.lib C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/brotlidec.lib C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/brotlicommon.lib" "QMAKE_LIBS_PRIVATE+=C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/bz2d.lib" "QMAKE_LIBS_PRIVATE+=C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/libpng16d.lib C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/zlibd.lib" "QMAKE_LIBS_PRIVATE+=C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/zstd.lib" "SQLITE_LIBS=C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/sqlite3.lib" "HARFBUZZ_LIBS=-lharfbuzz -lfreetyped -lzlibd -lbz2d -llibpng16d -lzlibd -lbrotlidec -lbrotlicommon" "OPENSSL_LIBS=C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/libssl.lib C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/libcrypto.lib -lws2_32 -lsecur32 -ladvapi32 -lshell32 -lcrypt32 -luser32 -lgdi32" -debug -prefix C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows -hostprefix C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/tools/qt5/debug -hostlibdir C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/tools/qt5/debug/lib -hostbindir C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/tools/qt5/debug/bin -archdatadir C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/tools/qt5/debug -datadir C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/share/qt5/debug -plugindir C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/plugins -qmldir C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/qml -headerdir C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/include/qt5 -libexecdir C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/tools/qt5/debug -bindir C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/bin -libdir C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib -I C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/include -I C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/include/qt5 -L C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib -L C:/Users/mirko/source/repos/vcpkg/installed/arm64-windows/debug/lib/manual-link -platform win32-arm64-msvc2017 "QMAKE_CC=cl.exe" "QMAKE_CXX=cl.exe" "QMAKE_AR=lib.exe" "QMAKE_RANLIB=:" "QMAKE_STRIP=" "QMAKE_NM=" "QMAKE_RC=rc.exe" "QMAKE_MT=mt.exe" "QMAKE_LIB=lib.exe" "QMAKE_LINK=link.exe" "QMAKE_LIBS+=kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib" "QMAKE_RC+=-c65001 -DWIN32 -D_DEBUG" "QMAKE_CFLAGS_DEBUG+=-nologo -DWIN32 -D_WINDOWS -W3 -utf-8 -MP -D_DEBUG -MDd -Z7 -Ob0 -Od -RTC1" "QMAKE_CXXFLAGS_DEBUG+=-nologo -DWIN32 -D_WINDOWS -W3 -utf-8 -GR -EHsc -MP -D_DEBUG -MDd -Z7 -Ob0 -Od -RTC1" "QMAKE_LFLAGS+=-machine:ARM64 -nologo -debug -INCREMENTAL" "QMAKE_LFLAGS_SHLIB+=-machine:ARM64 -nologo -debug -INCREMENTAL" "QMAKE_LFLAGS_PLUGIN+=-machine:ARM64 -nologo -debug -INCREMENTAL" "QMAKE_LIBFLAGS_DEBUG+=-machine:ARM64 -nologo"
      Project ERROR: SDK setup script failed. Output:
      ===================
      [ERROR:vcvarsall.bat] Invalid argument found : Unknown_arm64
      [ERROR:vcvarsall.bat] Error in script usage. The correct usage is:
      Syntax:
      vcvarsall.bat [arch] [platform_type] [winsdk_version] [-vcvars_ver=vc_version] [-vcvars_spectre_libs=spectre_mode]
      where :
      [arch]: x86 | amd64 | x86_amd64 | x86_arm | x86_arm64 | amd64_x86 | amd64_arm | amd64_arm64
      [platform_type]: {empty} | store | uwp
      [winsdk_version] : full Windows 10 SDK number (e.g. 10.0.10240.0) or "8.1" to use the Windows 8.1 SDK.
      [vc_version] : {none} for latest installed VC++ compiler toolset |
      "14.0" for VC++ 2015 Compiler Toolset |
      "14.xx" for the latest 14.xx.yyyyy toolset installed (e.g. "14.11") |
      "14.xx.yyyyy" for a specific full version number (e.g. "14.11.25503")
      [spectre_mode] : {none} for libraries without spectre mitigations |
      "spectre" for libraries with spectre mitigations
      The store parameter sets environment variables to support Universal Windows Platform application
      development and is an alias for 'uwp'.
      For example:
      vcvarsall.bat x86_amd64
      vcvarsall.bat x86_amd64 10.0.10240.0
      vcvarsall.bat x86_arm uwp 10.0.10240.0
      vcvarsall.bat x86_arm onecore 10.0.10240.0 -vcvars_ver=14.0
      vcvarsall.bat x64 8.1
      vcvarsall.bat x64 store 8.1
      Please make sure either Visual Studio or C++ Build SKU is installed.
      ===================
      Command was: C:\Users\mirko\source\repos\vcpkg\buildtrees\qt5-base\src\5.15.11-13623e1e19.clean\mkspecs\features\data\dumpvcvars.bat "C:\Program Files\Microsoft Visual Studio\2022\Community\\VC\Auxiliary\Build\vcvarsall.bat" Unknown_arm64 10.0.22621.0}}

      Core:

      //mkspecs/features/toolchain.prf: 
      
      hostArch = $$QMAKE_HOST.arch
      equals(hostArch, x86_64): 
           hostArch = amd64
      !equals(arch, $$hostArch): 
           arch = $${hostArch}_$$arch

      Workaround:

      hostArch = $$QMAKE_HOST.arch
      equals(hostArch, x86_64): 
            hostArch = amd64
      equals(hostArch, unknown):
            hostArch = arm64
      !equals(arch, $$hostArch): 
            arch = $${hostArch}_$$arch 

      Related vcpkg issue and PR:
      https://github.com/microsoft/vcpkg/pull/35120{}

      https://github.com/microsoft/vcpkg/issues/35031

       

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              qtbuildsystem Qt Build System Team
              frankxie Frank Xoe
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:

                Gerrit Reviews

                  There are no open Gerrit changes