|
@@ -15,16 +15,6 @@ from collections import OrderedDict
|
|
from importlib.util import spec_from_file_location, module_from_spec
|
|
from importlib.util import spec_from_file_location, module_from_spec
|
|
from SCons import __version__ as scons_raw_version
|
|
from SCons import __version__ as scons_raw_version
|
|
|
|
|
|
-# Enable ANSI escape code support on Windows 10 and later (for colored console output).
|
|
|
|
-# <https://github.com/python/cpython/issues/73245>
|
|
|
|
-if sys.platform == "win32":
|
|
|
|
- from ctypes import windll, c_int, byref
|
|
|
|
-
|
|
|
|
- stdout_handle = windll.kernel32.GetStdHandle(c_int(-11))
|
|
|
|
- mode = c_int(0)
|
|
|
|
- windll.kernel32.GetConsoleMode(c_int(stdout_handle), byref(mode))
|
|
|
|
- mode = c_int(mode.value | 4)
|
|
|
|
- windll.kernel32.SetConsoleMode(c_int(stdout_handle), mode)
|
|
|
|
|
|
|
|
# Explicitly resolve the helper modules, this is done to avoid clash with
|
|
# Explicitly resolve the helper modules, this is done to avoid clash with
|
|
# modules of the same name that might be randomly added (e.g. someone adding
|
|
# modules of the same name that might be randomly added (e.g. someone adding
|
|
@@ -74,6 +64,24 @@ if ARGUMENTS.get("target", "editor") == "editor":
|
|
_helper_module("editor.editor_builders", "editor/editor_builders.py")
|
|
_helper_module("editor.editor_builders", "editor/editor_builders.py")
|
|
_helper_module("editor.template_builders", "editor/template_builders.py")
|
|
_helper_module("editor.template_builders", "editor/template_builders.py")
|
|
|
|
|
|
|
|
+# Enable ANSI escape code support on Windows 10 and later (for colored console output).
|
|
|
|
+# <https://github.com/python/cpython/issues/73245>
|
|
|
|
+if sys.stdout.isatty() and sys.platform == "win32":
|
|
|
|
+ try:
|
|
|
|
+ from ctypes import windll, byref, WinError # type: ignore
|
|
|
|
+ from ctypes.wintypes import DWORD # type: ignore
|
|
|
|
+
|
|
|
|
+ stdout_handle = windll.kernel32.GetStdHandle(DWORD(-11))
|
|
|
|
+ mode = DWORD(0)
|
|
|
|
+ if not windll.kernel32.GetConsoleMode(stdout_handle, byref(mode)):
|
|
|
|
+ raise WinError()
|
|
|
|
+ mode = DWORD(mode.value | 4)
|
|
|
|
+ if not windll.kernel32.SetConsoleMode(stdout_handle, mode):
|
|
|
|
+ raise WinError()
|
|
|
|
+ except Exception as e:
|
|
|
|
+ methods._colorize = False
|
|
|
|
+ print_error(f"Failed to enable ANSI escape code support, disabling color output.\n{e}")
|
|
|
|
+
|
|
# Scan possible build platforms
|
|
# Scan possible build platforms
|
|
|
|
|
|
platform_list = [] # list of platforms
|
|
platform_list = [] # list of platforms
|