@@ -1231,8 +1231,42 @@ def generate_build_tree(
1231
1231
vcpkg_keep_env_vars = ["TRT_UPLOAD_AUTH_TOKEN" ]
1232
1232
1233
1233
if args .build_wasm :
1234
- env ["EMSDK" ] = emsdk_dir
1235
- vcpkg_keep_env_vars += ["EMSDK" , "EMSDK_NODE" , "EMSDK_PYTHON" ]
1234
+ emsdk_vars = ["EMSDK" , "EMSDK_NODE" , "EMSDK_PYTHON" ]
1235
+
1236
+ # If environment variables 'EMSDK' is not set, run emsdk_env to set them
1237
+ if "EMSDK" not in os .environ :
1238
+ if is_windows ():
1239
+ # Run `cmd /s /c call .\\emsdk_env && set` to run emsdk_env and dump the environment variables
1240
+ emsdk_env = run_subprocess (
1241
+ ["cmd" , "/s" , "/c" , "call .\\ emsdk_env && set" ],
1242
+ cwd = emsdk_dir ,
1243
+ capture_stdout = True ,
1244
+ )
1245
+ else :
1246
+ # Run `sh -c ". ./emsdk_env.sh && printenv"` to run emsdk_env and dump the environment variables
1247
+ emsdk_env = run_subprocess (
1248
+ ["sh" , "-c" , ". ./emsdk_env.sh && printenv" ],
1249
+ cwd = emsdk_dir ,
1250
+ capture_stdout = True ,
1251
+ )
1252
+
1253
+ # check for EMSDK environment variables and set them in the environment
1254
+ for line in emsdk_env .stdout .decode ().splitlines ():
1255
+ if "=" in line :
1256
+ key , value = line .rstrip ().split ("=" , 1 )
1257
+ if key in emsdk_vars :
1258
+ os .environ [key ] = value
1259
+
1260
+ for var in emsdk_vars :
1261
+ if var in os .environ :
1262
+ env [var ] = os .environ [var ]
1263
+ elif var == "EMSDK" :
1264
+ # EMSDK must be set, but EMSDK_NODE and EMSDK_PYTHON are optional
1265
+ raise BuildError (
1266
+ "EMSDK environment variable is not set correctly. Please run `emsdk_env` to set them."
1267
+ )
1268
+
1269
+ vcpkg_keep_env_vars += emsdk_vars
1236
1270
1237
1271
#
1238
1272
# Workaround for vcpkg failed to find the correct path of Python
0 commit comments