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
+93 -43
View File
@@ -749,70 +749,120 @@ IF /I "%VS_TOOLSET%"=="v142" set QT6_MSVC_YEAR=2019
IF /I "%VS_TOOLSET%"=="v143" set QT6_MSVC_YEAR=2022
IF /I "%VS_TOOLSET%"=="v145" set QT6_MSVC_YEAR=2026
set QT6_ARCH=
set QT6_INSTALL_SUFFIX=
IF /I "%TARGET_ARCH%"=="x64" (
set QT6_ARCH=win64_msvc%QT6_MSVC_YEAR%_64
set QT6_INSTALL_SUFFIX=msvc%QT6_MSVC_YEAR%_64
)
IF /I "%TARGET_ARCH%"=="arm64" (
set QT6_ARCH=win64_msvc%QT6_MSVC_YEAR%_arm64_cross_compiled
set QT6_INSTALL_SUFFIX=msvc%QT6_MSVC_YEAR%_arm64
)
set QT6_ARCH=
set QT6_INSTALL_SUFFIX=
set QT6_HOST_ARCH=
set QT6_HOST_INSTALL_SUFFIX=
IF /I "%TARGET_ARCH%"=="x64" (
set QT6_ARCH=win64_msvc%QT6_MSVC_YEAR%_64
set QT6_INSTALL_SUFFIX=msvc%QT6_MSVC_YEAR%_64
)
IF /I "%TARGET_ARCH%"=="arm64" (
set QT6_ARCH=win64_msvc%QT6_MSVC_YEAR%_arm64_cross_compiled
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%"=="" (
call cecho.cmd 0 12 "Automatic Qt6 installation is only supported for x64 and arm64 builds."
GOTO :Error
)
set DEPENDENCY_INSTALL_NAME=qt6-%QT6_VERSION%-%QT6_INSTALL_SUFFIX%
set QT6_AQT_OUTPUT_DIR=%INSTALL_DIR%\%DEPENDENCY_INSTALL_NAME%
set QT6_INSTALL_DIR=%QT6_AQT_OUTPUT_DIR%\%QT6_VERSION%\%QT6_INSTALL_SUFFIX%
set QT_DIR=%QT6_INSTALL_DIR%
set QT6_CONFIG_DLL=Qt6Core.dll
IF /I "%BUILD_CFG%"=="Debug" (
set QT6_CONFIG_DLL=Qt6Cored.dll
)
set DEPENDENCY_INSTALL_NAME=qt6-%QT6_VERSION%-%QT6_INSTALL_SUFFIX%
set QT6_AQT_OUTPUT_DIR=%INSTALL_DIR%\%DEPENDENCY_INSTALL_NAME%
set QT6_INSTALL_DIR=%QT6_AQT_OUTPUT_DIR%\%QT6_VERSION%\%QT6_INSTALL_SUFFIX%
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
IF /I "%BUILD_CFG%"=="Debug" (
set QT6_CONFIG_DLL=Qt6Cored.dll
)
set NEXT_DEPENDENCY_LABEL=Successful
IF NOT "%IFCOS_INSTALL_QT6%"=="TRUE" (
call cecho.cmd 0 13 "IFCOS_INSTALL_QT6 not 'TRUE', skipping installation of Qt6."
goto :Successful
)
echo QT6_INSTALL_DIR=%QT6_INSTALL_DIR%>>"%~dp0\%BUILD_DEPS_CACHE_PATH%"
echo QT_DIR=%QT_DIR%>>"%~dp0\%BUILD_DEPS_CACHE_PATH%"
call :CheckInstallation
if %ERRORLEVEL%==200 GOTO %NEXT_DEPENDENCY_LABEL%
IF EXIST "%QT6_INSTALL_DIR%\bin\%QT6_CONFIG_DLL%" (
echo Found existing "%QT6_INSTALL_DIR%" for %BUILD_CFG%, skipping
call :MarkInstallation
goto :Successful
)
echo QT6_INSTALL_DIR=%QT6_INSTALL_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%"
)
set QT6_TARGET_INSTALLED=FALSE
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 "%QT6_TARGET_INSTALLED%"=="TRUE" IF "%QT6_HOST_INSTALLED%"=="TRUE" (
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
goto :Successful
)
set AQT_PYTHON=python
IF "%IFCOS_INSTALL_PYTHON%"=="TRUE" IF EXIST "%PYTHONHOME%\python.exe" set AQT_PYTHON="%PYTHONHOME%\python.exe"
%AQT_PYTHON% -m pip install --upgrade aqtinstall
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 %ERRORLEVEL%==0 GOTO :Error
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%."
%AQT_PYTHON% -m pip install --upgrade aqtinstall
IF NOT %ERRORLEVEL%==0 GOTO :Error
IF NOT "%QT6_TARGET_INSTALLED%"=="TRUE" (
%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" (
call cecho.cmd 0 12 "Qt6 installation did not produce Qt6Config.cmake at %QT6_INSTALL_DIR%."
GOTO :Error
)
IF NOT EXIST "%QT6_INSTALL_DIR%\bin\%QT6_CONFIG_DLL%" (
call cecho.cmd 0 12 "Qt6 installation did not produce %BUILD_CFG% runtime %QT6_CONFIG_DLL% at %QT6_INSTALL_DIR%\bin."
GOTO :Error
)
call :MarkInstallation
goto :Successful
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
goto :Successful
:manifold
set DEPENDENCY_NAME=manifold
+5
View File
@@ -127,6 +127,7 @@ set USD_INSTALL_DIR=%INSTALL_DIR%\usd
set ROCKSDB_INSTALL_DIR=%INSTALL_DIR%\rocksdb
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_HOST_PATH if defined QT6_HOST_INSTALL_DIR set QT_HOST_PATH=%QT6_HOST_INSTALL_DIR%
echo.
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 ZSTD_INSTALL_DIR = %ZSTD_INSTALL_DIR%
echo QT_DIR = %QT_DIR%
echo QT_HOST_PATH = %QT_HOST_PATH%
echo CCACHE_INSTALL_DIR = %CCACHE_INSTALL_DIR%
echo.
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=
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
:: 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 ^
-DCMAKE_PREFIX_PATH="%CMAKE_PREFIX_PATH%" ^
%QT_DIR_OPTION% ^
%QT_HOST_PATH_OPTION% ^
-DADD_COMMIT_SHA=%ADD_COMMIT_SHA% -DVERSION_OVERRIDE=%VERSION_OVERRIDE% ^
%ARGUMENTS%