@@ -95,19 +95,21 @@ const getPythonOutput = (command, args) => __awaiter(void 0, void 0, void 0, fun
9595const flaggedList = ( flag , listArgs ) => {
9696 return listArgs . length ? [ flag , ...listArgs ] : [ ] ;
9797} ;
98- const locateQtArchDir = ( installDir ) => {
98+ const locateQtArchDir = ( installDir , host ) => {
9999 // For 6.4.2/gcc, qmake is at 'installDir/6.4.2/gcc_64/bin/qmake'.
100100 // This makes a list of all the viable arch directories that contain a qmake file.
101101 const qtArchDirs = glob
102102 . sync ( `${ installDir } /[0-9]*/*/bin/qmake*` )
103103 . map ( ( s ) => path . resolve ( s , ".." , ".." ) ) ;
104- // For Qt6 mobile and wasm installations, and Qt6 Windows on ARM installations,
104+ // For Qt6 mobile and wasm installations, and Qt6 Windows on ARM cross-compiled installations,
105105 // a standard desktop Qt installation must exist alongside the requested architecture.
106106 // In these cases, we must select the first item that ends with 'android*', 'ios', 'wasm*' or 'msvc*_arm64'.
107107 const requiresParallelDesktop = qtArchDirs . filter ( ( archPath ) => {
108108 const archDir = path . basename ( archPath ) ;
109109 const versionDir = path . basename ( path . join ( archPath , ".." ) ) ;
110- return ( versionDir . match ( / ^ 6 \. \d + \. \d + $ / ) && archDir . match ( / ^ ( a n d r o i d .* | i o s | w a s m .* | m s v c .* _ a r m 6 4 ) $ / ) ) ;
110+ return ( versionDir . match ( / ^ 6 \. \d + \. \d + $ / ) &&
111+ ( archDir . match ( / ^ ( a n d r o i d .* | i o s | w a s m .* ) $ / ) ||
112+ ( archDir . match ( / ^ m s v c .* _ a r m 6 4 $ / ) && host !== "windows_arm64" ) ) ) ;
111113 } ) ;
112114 if ( requiresParallelDesktop . length ) {
113115 // NOTE: if multiple mobile/wasm installations coexist, this may not select the desired directory
@@ -133,26 +135,31 @@ class Inputs {
133135 if ( ! host ) {
134136 switch ( process . platform ) {
135137 case "win32" : {
136- this . host = "windows" ;
138+ this . host = process . arch === "arm64" ? "windows_arm64" : "windows" ;
137139 break ;
138140 }
139141 case "darwin" : {
140142 this . host = "mac" ;
141143 break ;
142144 }
143145 default : {
144- this . host = "linux" ;
146+ this . host = process . arch === "arm64" ? "linux_arm64" : "linux" ;
145147 break ;
146148 }
147149 }
148150 }
149151 else {
150152 // Make sure host is one of the allowed values
151- if ( host === "windows" || host === "mac" || host === "linux" || host === "all_os" ) {
153+ if ( host === "windows" ||
154+ host === "windows_arm64" ||
155+ host === "mac" ||
156+ host === "linux" ||
157+ host === "linux_arm64" ||
158+ host === "all_os" ) {
152159 this . host = host ;
153160 }
154161 else {
155- throw TypeError ( `host: "${ host } " is not one of "windows" | "mac" | "linux" | "all_os"` ) ;
162+ throw TypeError ( `host: "${ host } " is not one of "windows" | "windows_arm64" | " mac" | "linux" | "linux_arm64 " | "all_os"` ) ;
156163 }
157164 }
158165 const target = core . getInput ( "target" ) ;
@@ -194,6 +201,9 @@ class Inputs {
194201 this . arch = "win64_msvc2017_64" ;
195202 }
196203 }
204+ else if ( this . host === "windows_arm64" ) {
205+ this . arch = "win64_msvc2022_arm64" ;
206+ }
197207 }
198208 const dir = core . getInput ( "dir" ) || process . env . RUNNER_WORKSPACE ;
199209 if ( ! dir ) {
@@ -436,7 +446,7 @@ const run = () => __awaiter(void 0, void 0, void 0, function* () {
436446 }
437447 // Set environment variables/outputs for binaries
438448 if ( inputs . isInstallQtBinaries ) {
439- const [ qtPath , requiresParallelDesktop ] = locateQtArchDir ( inputs . dir ) ;
449+ const [ qtPath , requiresParallelDesktop ] = locateQtArchDir ( inputs . dir , inputs . host ) ;
440450 // Set outputs
441451 core . setOutput ( "qtPath" , qtPath ) ;
442452 // Set env variables
0 commit comments