Additional plug-in host to try and fix arm64 build

This commit is contained in:
Thomas Krijnen
2026-05-09 21:04:32 +02:00
parent fde502daa1
commit c1173dfc78
2 changed files with 98 additions and 43 deletions
+55 -5
View File
@@ -751,6 +751,8 @@ IF /I "%VS_TOOLSET%"=="v145" set QT6_MSVC_YEAR=2026
set QT6_ARCH= set QT6_ARCH=
set QT6_INSTALL_SUFFIX= set QT6_INSTALL_SUFFIX=
set QT6_HOST_ARCH=
set QT6_HOST_INSTALL_SUFFIX=
IF /I "%TARGET_ARCH%"=="x64" ( IF /I "%TARGET_ARCH%"=="x64" (
set QT6_ARCH=win64_msvc%QT6_MSVC_YEAR%_64 set QT6_ARCH=win64_msvc%QT6_MSVC_YEAR%_64
set QT6_INSTALL_SUFFIX=msvc%QT6_MSVC_YEAR%_64 set QT6_INSTALL_SUFFIX=msvc%QT6_MSVC_YEAR%_64
@@ -758,6 +760,12 @@ IF /I "%TARGET_ARCH%"=="x64" (
IF /I "%TARGET_ARCH%"=="arm64" ( IF /I "%TARGET_ARCH%"=="arm64" (
set QT6_ARCH=win64_msvc%QT6_MSVC_YEAR%_arm64_cross_compiled set QT6_ARCH=win64_msvc%QT6_MSVC_YEAR%_arm64_cross_compiled
set QT6_INSTALL_SUFFIX=msvc%QT6_MSVC_YEAR%_arm64 set QT6_INSTALL_SUFFIX=msvc%QT6_MSVC_YEAR%_arm64
REM Qt publishes Windows ARM64 packages as cross-compiled Qt. Even on the
REM windows-11-arm runner, Qt CMake requires host tools such as moc/rcc.
REM Use the x64 host tools; Windows 11 on Arm runs them through x64
REM emulation while cl.exe still builds ARM64 binaries against target Qt.
set QT6_HOST_ARCH=win64_msvc%QT6_MSVC_YEAR%_64
set QT6_HOST_INSTALL_SUFFIX=msvc%QT6_MSVC_YEAR%_64
) )
IF "%QT6_ARCH%"=="" ( IF "%QT6_ARCH%"=="" (
@@ -769,6 +777,14 @@ set DEPENDENCY_INSTALL_NAME=qt6-%QT6_VERSION%-%QT6_INSTALL_SUFFIX%
set QT6_AQT_OUTPUT_DIR=%INSTALL_DIR%\%DEPENDENCY_INSTALL_NAME% set QT6_AQT_OUTPUT_DIR=%INSTALL_DIR%\%DEPENDENCY_INSTALL_NAME%
set QT6_INSTALL_DIR=%QT6_AQT_OUTPUT_DIR%\%QT6_VERSION%\%QT6_INSTALL_SUFFIX% set QT6_INSTALL_DIR=%QT6_AQT_OUTPUT_DIR%\%QT6_VERSION%\%QT6_INSTALL_SUFFIX%
set QT_DIR=%QT6_INSTALL_DIR% set QT_DIR=%QT6_INSTALL_DIR%
set QT6_HOST_AQT_OUTPUT_DIR=
set QT6_HOST_INSTALL_DIR=
set QT_HOST_PATH=
IF NOT "%QT6_HOST_INSTALL_SUFFIX%"=="" (
set QT6_HOST_AQT_OUTPUT_DIR=%INSTALL_DIR%\qt6-%QT6_VERSION%-%QT6_HOST_INSTALL_SUFFIX%
set QT6_HOST_INSTALL_DIR=%INSTALL_DIR%\qt6-%QT6_VERSION%-%QT6_HOST_INSTALL_SUFFIX%\%QT6_VERSION%\%QT6_HOST_INSTALL_SUFFIX%
set QT_HOST_PATH=%INSTALL_DIR%\qt6-%QT6_VERSION%-%QT6_HOST_INSTALL_SUFFIX%\%QT6_VERSION%\%QT6_HOST_INSTALL_SUFFIX%
)
set QT6_CONFIG_DLL=Qt6Core.dll set QT6_CONFIG_DLL=Qt6Core.dll
IF /I "%BUILD_CFG%"=="Debug" ( IF /I "%BUILD_CFG%"=="Debug" (
set QT6_CONFIG_DLL=Qt6Cored.dll set QT6_CONFIG_DLL=Qt6Cored.dll
@@ -782,12 +798,22 @@ IF NOT "%IFCOS_INSTALL_QT6%"=="TRUE" (
echo QT6_INSTALL_DIR=%QT6_INSTALL_DIR%>>"%~dp0\%BUILD_DEPS_CACHE_PATH%" echo QT6_INSTALL_DIR=%QT6_INSTALL_DIR%>>"%~dp0\%BUILD_DEPS_CACHE_PATH%"
echo QT_DIR=%QT_DIR%>>"%~dp0\%BUILD_DEPS_CACHE_PATH%" echo QT_DIR=%QT_DIR%>>"%~dp0\%BUILD_DEPS_CACHE_PATH%"
IF DEFINED QT6_HOST_INSTALL_DIR (
echo QT6_HOST_INSTALL_DIR=%QT6_HOST_INSTALL_DIR%>>"%~dp0\%BUILD_DEPS_CACHE_PATH%"
echo QT_HOST_PATH=%QT_HOST_PATH%>>"%~dp0\%BUILD_DEPS_CACHE_PATH%"
)
call :CheckInstallation set QT6_TARGET_INSTALLED=FALSE
if %ERRORLEVEL%==200 GOTO %NEXT_DEPENDENCY_LABEL% IF EXIST "%QT6_INSTALL_DIR%\lib\cmake\Qt6\Qt6Config.cmake" IF EXIST "%QT6_INSTALL_DIR%\bin\%QT6_CONFIG_DLL%" set QT6_TARGET_INSTALLED=TRUE
set QT6_HOST_INSTALLED=TRUE
IF DEFINED QT6_HOST_INSTALL_DIR (
set QT6_HOST_INSTALLED=FALSE
IF EXIST "%QT6_HOST_INSTALL_DIR%\lib\cmake\Qt6\Qt6Config.cmake" IF EXIST "%QT6_HOST_INSTALL_DIR%\bin\moc.exe" IF EXIST "%QT6_HOST_INSTALL_DIR%\bin\rcc.exe" set QT6_HOST_INSTALLED=TRUE
)
IF EXIST "%QT6_INSTALL_DIR%\bin\%QT6_CONFIG_DLL%" ( IF "%QT6_TARGET_INSTALLED%"=="TRUE" IF "%QT6_HOST_INSTALLED%"=="TRUE" (
echo Found existing "%QT6_INSTALL_DIR%" for %BUILD_CFG%, skipping echo Found existing "%QT6_INSTALL_DIR%" for %BUILD_CFG%, skipping
IF DEFINED QT6_HOST_INSTALL_DIR echo Found existing Qt host tools at "%QT6_HOST_INSTALL_DIR%", skipping
call :MarkInstallation call :MarkInstallation
goto :Successful goto :Successful
) )
@@ -798,8 +824,17 @@ IF "%IFCOS_INSTALL_PYTHON%"=="TRUE" IF EXIST "%PYTHONHOME%\python.exe" set AQT_P
%AQT_PYTHON% -m pip install --upgrade aqtinstall %AQT_PYTHON% -m pip install --upgrade aqtinstall
IF NOT %ERRORLEVEL%==0 GOTO :Error IF NOT %ERRORLEVEL%==0 GOTO :Error
%AQT_PYTHON% -m aqt install-qt windows desktop %QT6_VERSION% %QT6_ARCH% -O "%QT6_AQT_OUTPUT_DIR%" --archives qtbase IF NOT "%QT6_TARGET_INSTALLED%"=="TRUE" (
IF NOT %ERRORLEVEL%==0 GOTO :Error %AQT_PYTHON% -m aqt install-qt windows desktop %QT6_VERSION% %QT6_ARCH% -O "%QT6_AQT_OUTPUT_DIR%" --archives qtbase
IF ERRORLEVEL 1 GOTO :Error
)
IF DEFINED QT6_HOST_INSTALL_DIR (
IF NOT "%QT6_HOST_INSTALLED%"=="TRUE" (
%AQT_PYTHON% -m aqt install-qt windows desktop %QT6_VERSION% %QT6_HOST_ARCH% -O "%QT6_HOST_AQT_OUTPUT_DIR%" --archives qtbase
IF ERRORLEVEL 1 GOTO :Error
)
)
IF NOT EXIST "%QT6_INSTALL_DIR%\lib\cmake\Qt6\Qt6Config.cmake" ( IF NOT EXIST "%QT6_INSTALL_DIR%\lib\cmake\Qt6\Qt6Config.cmake" (
call cecho.cmd 0 12 "Qt6 installation did not produce Qt6Config.cmake at %QT6_INSTALL_DIR%." call cecho.cmd 0 12 "Qt6 installation did not produce Qt6Config.cmake at %QT6_INSTALL_DIR%."
@@ -811,6 +846,21 @@ IF NOT EXIST "%QT6_INSTALL_DIR%\bin\%QT6_CONFIG_DLL%" (
GOTO :Error GOTO :Error
) )
IF DEFINED QT6_HOST_INSTALL_DIR (
IF NOT EXIST "%QT6_HOST_INSTALL_DIR%\lib\cmake\Qt6\Qt6Config.cmake" (
call cecho.cmd 0 12 "Qt6 host installation did not produce Qt6Config.cmake at %QT6_HOST_INSTALL_DIR%."
GOTO :Error
)
IF NOT EXIST "%QT6_HOST_INSTALL_DIR%\bin\moc.exe" (
call cecho.cmd 0 12 "Qt6 host installation did not produce moc.exe at %QT6_HOST_INSTALL_DIR%\bin."
GOTO :Error
)
IF NOT EXIST "%QT6_HOST_INSTALL_DIR%\bin\rcc.exe" (
call cecho.cmd 0 12 "Qt6 host installation did not produce rcc.exe at %QT6_HOST_INSTALL_DIR%\bin."
GOTO :Error
)
)
call :MarkInstallation call :MarkInstallation
goto :Successful goto :Successful
+5
View File
@@ -127,6 +127,7 @@ set USD_INSTALL_DIR=%INSTALL_DIR%\usd
set ROCKSDB_INSTALL_DIR=%INSTALL_DIR%\rocksdb set ROCKSDB_INSTALL_DIR=%INSTALL_DIR%\rocksdb
set ZSTD_INSTALL_DIR=%INSTALL_DIR%\zstd set ZSTD_INSTALL_DIR=%INSTALL_DIR%\zstd
if not defined QT_DIR if defined QT6_INSTALL_DIR set QT_DIR=%QT6_INSTALL_DIR% if not defined QT_DIR if defined QT6_INSTALL_DIR set QT_DIR=%QT6_INSTALL_DIR%
if not defined QT_HOST_PATH if defined QT6_HOST_INSTALL_DIR set QT_HOST_PATH=%QT6_HOST_INSTALL_DIR%
echo. echo.
call cecho.cmd 0 10 "Script configuration:" call cecho.cmd 0 10 "Script configuration:"
@@ -161,6 +162,7 @@ echo USD_INSTALL_DIR = %USD_INSTALL_DIR%
echo ROCKSDB_INSTALL_DIR = %ROCKSDB_INSTALL_DIR% echo ROCKSDB_INSTALL_DIR = %ROCKSDB_INSTALL_DIR%
echo ZSTD_INSTALL_DIR = %ZSTD_INSTALL_DIR% echo ZSTD_INSTALL_DIR = %ZSTD_INSTALL_DIR%
echo QT_DIR = %QT_DIR% echo QT_DIR = %QT_DIR%
echo QT_HOST_PATH = %QT_HOST_PATH%
echo CCACHE_INSTALL_DIR = %CCACHE_INSTALL_DIR% echo CCACHE_INSTALL_DIR = %CCACHE_INSTALL_DIR%
echo. echo.
echo CMAKE_INSTALL_PREFIX = %CMAKE_INSTALL_PREFIX% echo CMAKE_INSTALL_PREFIX = %CMAKE_INSTALL_PREFIX%
@@ -181,6 +183,8 @@ if defined QT_DIR set CMAKE_PREFIX_PATH=%CMAKE_PREFIX_PATH%;%QT_DIR%
set QT_DIR_OPTION= set QT_DIR_OPTION=
if defined QT_DIR set QT_DIR_OPTION=-DQT_DIR="%QT_DIR%" if defined QT_DIR set QT_DIR_OPTION=-DQT_DIR="%QT_DIR%"
set QT_HOST_PATH_OPTION=
if defined QT_HOST_PATH set QT_HOST_PATH_OPTION=-DQT_HOST_PATH="%QT_HOST_PATH%"
:: Not fully supported - not available from install-ifcopenshell :: Not fully supported - not available from install-ifcopenshell
:: and some logs are still showing Visual Studio generators. :: and some logs are still showing Visual Studio generators.
@@ -202,6 +206,7 @@ cmake.exe %CMAKELISTS_DIR% -G %GENERATOR% %ARCH_OPTION% %VS_TOOLSET_OPTION% ^
-DWITH_ROCKSDB=On -DWITH_ZSTD=On ^ -DWITH_ROCKSDB=On -DWITH_ZSTD=On ^
-DCMAKE_PREFIX_PATH="%CMAKE_PREFIX_PATH%" ^ -DCMAKE_PREFIX_PATH="%CMAKE_PREFIX_PATH%" ^
%QT_DIR_OPTION% ^ %QT_DIR_OPTION% ^
%QT_HOST_PATH_OPTION% ^
-DADD_COMMIT_SHA=%ADD_COMMIT_SHA% -DVERSION_OVERRIDE=%VERSION_OVERRIDE% ^ -DADD_COMMIT_SHA=%ADD_COMMIT_SHA% -DVERSION_OVERRIDE=%VERSION_OVERRIDE% ^
%ARGUMENTS% %ARGUMENTS%