summaryrefslogtreecommitdiff
path: root/platform/windows/detect.py
AgeCommit message (Collapse)Author
2022-12-05Windows: Make MSVC debug CRT opt-in (`debug_crt=yes`)Rémi Verschelde
Follow-up to #69294 which enabled it automatically for `dev_build=yes`, but this seems to cause some issues. Those issues should likely be debugged but until then this can stay opt-in.
2022-11-28Windows: Link MSVC dynamic debug CRT for debug buildsRémi Verschelde
Fixes #31608.
2022-10-26Fix build with Vulkan disabled and no Vulkan headers installed.bruvzg
2022-10-11Merge pull request #66102 from MJacred/feature/getvideoadapterdriverinfoRémi Verschelde
Fetch video adapter driver name and version from OS
2022-10-11Fetch video adapter driver name and version from OS on Linux/*BSD and WindowsMJacred
2022-09-30ci: add Python static analysis check via mypyJiri Suchan
2022-09-26SCons: Unify tools/target build type configurationRémi Verschelde
Implements https://github.com/godotengine/godot-proposals/issues/3371. New `target` presets ==================== The `tools` option is removed and `target` changes to use three new presets, which match the builds users are familiar with. These targets control the default optimization level and enable editor-specific and debugging code: - `editor`: Replaces `tools=yes target=release_debug`. * Defines: `TOOLS_ENABLED`, `DEBUG_ENABLED`, `-O2`/`/O2` - `template_debug`: Replaces `tools=no target=release_debug`. * Defines: `DEBUG_ENABLED`, `-O2`/`/O2` - `template_release`: Replaces `tools=no target=release`. * Defines: `-O3`/`/O2` New `dev_build` option ====================== The previous `target=debug` is now replaced by a separate `dev_build=yes` option, which can be used in combination with either of the three targets, and changes the following: - `dev_build`: Defines `DEV_ENABLED`, disables optimization (`-O0`/`/0d`), enables generating debug symbols, does not define `NDEBUG` so `assert()` works in thirdparty libraries, adds a `.dev` suffix to the binary name. Note: Unlike previously, `dev_build` defaults to off so that users who compile Godot from source get an optimized and small build by default. Engine contributors should now set `dev_build=yes` in their build scripts or IDE configuration manually. Changed binary names ==================== The name of generated binaries and object files are changed too, to follow this format: `godot.<platform>.<target>[.dev][.double].<arch>[.<extra_suffix>][.<ext>]` For example: - `godot.linuxbsd.editor.dev.arm64` - `godot.windows.template_release.double.x86_64.mono.exe` Be sure to update your links/scripts/IDE config accordingly. More flexible `optimize` and `debug_symbols` options ==================================================== The optimization level and whether to generate debug symbols can be further specified with the `optimize` and `debug_symbols` options. So the default values listed above for the various `target` and `dev_build` combinations are indicative and can be replaced when compiling, e.g.: `scons p=linuxbsd target=template_debug dev_build=yes optimize=debug` will make a "debug" export template with dev-only code enabled, `-Og` optimization level for GCC/Clang, and debug symbols. Perfect for debugging complex crashes at runtime in an exported project.
2022-09-23SCons: Cleanup `DEBUG`, `_DEBUG` and `NDEBUG` definesRémi Verschelde
- `_DEBUG` is MSVC specific so it didn't make much sense to define for Android and iOS builds. - iOS was the only platform to define `DEBUG`. We don't use it anywhere outside thirdparty code, which we usually don't intend to debug, so it seems better to be consistent with other platforms. - Consistently define `NDEBUG` to disable assert behavior in both `release` and `release_debug` targets. This used to be set for `release` for all platforms, and `release_debug` for Android and iOS only. - Due to the above, I removed the only use we made of `assert()` in Godot code, which was only implemented for Unix anyway, should have been `DEV_ENABLED`, and is in PoolAllocator which we don't actually use. - The denoise and recast modules keep defining `NDEBUG` even for the `debug` target as we don't want OIDN and Embree asserting all over the place.
2022-09-19SCons: Refactor handling of `production` flag and per-platform LTO defaultsRémi Verschelde
Fixup to #63288. See #65583 for the bug report. Co-authored-by: Cyberrebell <chainsaw75@web.de>
2022-09-08SCons: Refactor LTO options with `lto=<none|thin|full>`Rémi Verschelde
Adds support for LTO on macOS and Android. We don't have much experience with LTO on these platforms so for now we keep it disabled by default even when `production=yes` is set. Similarly for iOS where we ship object files for the user to link in Xcode so LTO makes builds extremely slow to link. `production=yes` defaults to full LTO. ThinLTO is much faster for LLVM-based compilers but seems to produce bigger binaries (at least for the Web platform).
2022-08-27[Windows] Improve build environment detection, add support for Windows on ARM.bruvzg
2022-08-25Unify bits, arch, and android_arch into env["arch"]Aaron Franke
Fully removes the `bits` option and adapts the code that relied on it. Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2022-07-26Implement support for loading system fonts on Linux, macOS / iOS and Windows.bruvzg
2022-07-25Use bigobj for release MSVC buildsKevin Smith
Previously it was used only on debug builds, but recent additions to variant_call.cpp have made that unit too large even in release_debug. It was originally set to debug only because using it breaks mingw, so this only reinstates it for MSVC where it shouldn't have any drawbacks (famous last words). Test-Information: Builds for me with scons -j 40 platform=windows target=release_debug and my game then runs from it.
2022-05-11opengl3 driver now works on windows including multi windowderammo
fixed and simplified gl_manager_windows swap buffers now called for all windows fixed missing pixel format setting in additional windows this makes them work in OpenGL contexts changed verbose error printing to write once this error message happens very frequently while opengl3 is not finished removed dead code no longer needed after changes fixed comments that were misinformation window messages during window creation now handled these were previously discarded messages now tunnel the required context changed failure to create opengl3 window on windows to be more fatal marked a problem with pen code conditional compilation of vulkan and opengl3 on windows fixed windows debug builds now show messages on debug console also rendering driver selection box now shows only compiled drivers marked some problematic code thanks to akien-mga for patiently rewriting my style mistakes
2022-04-28Implement text-to-speech support on Android, iOS, HTML5, Linux, macOS and ↵bruvzg
Windows. Implement TextServer word break method.
2021-12-18[Windows] Improve console handling and execute/create_process.bruvzg
Always build with the GUI subsystem. Redirect stdout and stderr output to the parent process console. Use CreateProcessW for blocking `execute` calls with piped stdout and stderr (prevent console windows for popping up when used with the GUI subsystem build, and have more consistent behavior with `create_process`). Add `open_console` argument to the `execute` and `create_process` to open a new console window. Remove `interface/editor/hide_console_window` editor setting. Remove `Toggle System Console` menu option. Remove `set_console_visible` and `is_console_visible` functions.
2021-12-10Misc build system fixesAaron Franke
2021-11-18Windows: Use `/bigobj` only for debug builds, breaks GCC LTORémi Verschelde
Building `target=release` and `target=release_debug` builds with MinGW-GCC errors when linking with LTO. Since it's only needed for `target=debug` builds anyway (bigger objects), which we don't build with LTO, this works around the issue.
2021-11-10Windows: Enable `/bigobj` to increase max size for obj filesRémi Verschelde
Equivalent `-Wa,-mbig-obj` for GCC/Clang. This started being needed to compile harfbuzz in `target=debug` with MinGW/GCC, but there doesn't seem to be any drawback to enabling `/bigobj` (aside from losing support for pre-VS 2005 linkers, which we don't support).
2021-10-31Use OpenGL 3.3 core profile instead of compatibility profileClay John
- Rename OpenGL to GLES3 in the source code per community feedback. - The renderer is still exposed as "OpenGL 3" to the user. - Hide renderer selection dropdown until OpenGL support is more mature. - The renderer can still be changed in the Project Settings or using the `--rendering-driver opengl` command line argument. - Remove commented out exporter code. - Remove some OpenGL/DisplayServer-related debugging prints.
2021-10-30Rename GLES2 driver to OpenGL to prepare for the upgrade to GLES3Hugo Locurcio
- Use lowercase driver names for the `--rendering-driver` command line argument.
2021-10-30Add GLES2 2D renderer + Linux display managerlawnjelly
First implementation with Linux display manager. - Add single-threaded mode for EditorResourcePreview (needed for OpenGL). Co-authored-by: clayjohn <claynjohn@gmail.com> Co-authored-by: Fabio Alessandrelli <fabio.alessandrelli@gmail.com>
2021-10-15SCons: Set `DEBUG_ENABLED` and `DEV_ENABLED` in SConstructRémi Verschelde
They're the same for all platforms so they don't need to be repeated in all platform definitions.
2021-10-14SCons: Add `DEV_ENABLED` defines for `target=debug` buildsRémi Verschelde
This will allow adding developer checks which will be fully compiled out in user builds, unlike `DEBUG_ENABLED` which is included in debug tempates and the editor builds. This define is not used yet, but we'll soon add code that uses it, and change some existing `DEBUG_ENABLED` checks to be performed only in dev builds. Related to godotengine/godot-proposals#3371.
2021-08-22Replace HTTP links with HTTPS for sites with HTTPS versionsAaron Franke
2021-08-12Use "volk" instead of statically linked Vulkan loader.bruvzg
2021-08-01Windows: Fix build with SCons 4.2.0Rémi Verschelde
2021-07-25Remove unnecessary 'pass' statementluz paz
ref: https://lgtm.com/projects/g/godotengine/godot/?mode=tree&ruleFocus=910088
2021-03-20Merge pull request #46966 from qarmin/faster_releaseRémi Verschelde
Allow to not optimize release build
2021-03-14Allow to not optimize release buildRafał Mikrut
2021-03-12Add `use_asan` option for MSVC to enable AddressSanitizerAndrii Doroshenko (Xrayez)
Exposes AddressSanitizer support in MSVC compiler. Can be installed via individual components in the Visual Studio 2019 Installer. Disabled by default. Compile the engine with `scons use_asan=yes`.
2021-02-09Use /Zi and /FS for including debugger symbols on Windows with MSVCBastiaan Olij
2021-02-08SCons: Fix debug_symbols tests after switch to BoolVariableRémi Verschelde
Bug introduced in #45679. Fixes part of #45816.
2021-02-03SCons: Add `production=yes` option to use production defaultsRémi Verschelde
This is meant for users making custom builds to match the options used on optimized, official builds. This enables, on the platforms which support them: - `use_static_cpp=yes` (portable binaries for Linux and Windows) - `use_lto=yes` (link time optimizations - note: requires a lot of RAM!) - `debug_symbols=no` (no debug symbols, smaller binaries) Also abort when using MSVC with `production=yes`, as: - It cannot optimize the GDScript VM like GCC or Clang do, leading to significant performance drops. - Its LTO support is unreliable, at least used to trigger crashes last we tried it extensively. All options can still be overridden if specified, and the `dev=yes` option was changed to also support overrides.
2020-12-16SCons: Add only selected platform's opts to envRémi Verschelde
Otherwise we can get situations where platform-specific opts with the same name can override each other depending on the order at which platforms are parsed, as was the case with `use_static_cpp` in Linux/Windows. Fixes #44304. This also has the added benefit that the `scons --help` output will now only include the options which are relevant for the selected (or detected) platform.
2020-12-12Don't handle BaseException in build scriptsMarcel Admiraal
2020-12-03Add 'use_static_cpp' option for MinGW and MSVC buildsLyubomir Vasilev
2020-11-19SCons: Remove unnecessary $LINK overridesRémi Verschelde
As of SCons 4.0.1, the default value for $LINK is $SMARTLINK, which itself is a function that will use $CXX as linker for C++: https://github.com/SCons/scons/blob/4.0.1/SCons/Tool/link.py#L327-L328 https://github.com/SCons/scons/blob/4.0.1/SCons/Tool/link.py#L54-L76 So we don't need to manually specify the same value as $CXX for $LINK.
2020-11-09Remove `debug_symbols=full` in favor of `debug_symbols=yes`Hugo Locurcio
`debug_symbols=yes` will now behave like `debug_symbols=full` did before. The difference in compressed file sizes is not that large, which means there isn't much point in having two different values. This helps make the buildsystem easier to understand.
2020-10-09[Windows, MSVC] Correctly set source file encoding.bruvzg
2020-10-08SCons: Refactor and cleanup warnings definitionRémi Verschelde
2020-10-06SCons: Add windows_subsystem=default, restores original behaviorRémi Verschelde
We want debug builds to have a console and easy stdout redirection by default. Windows makes reading the stdout/stderr stream from gui applications too cumbersome (and most users don't know about it, and just wonder why they don't see a thing).
2020-09-18Fix typos with codespellRémi Verschelde
Using codespell 1.17.1. Method: ``` $ cat > ../godot-word-whitelist.txt << EOF ang curvelinear dof doubleclick fave findn leapyear lod merchantibility nd numer ois ony que seeked synching te uint unselect webp EOF $ codespell -w -q 3 -I ../godot-word-whitelist.txt --skip="./thirdparty,*.po" $ git diff // undo unwanted changes ```
2020-09-14Only display the Windows toggle console option if it can actually be usedHugo Locurcio
2020-08-17Add Windows Subsystem build option.bruvzg
2020-08-17Revert "[Windows] Attach to parent console instead of creating new one."bruvzg
This reverts commit 4f7a49db53c6aaabeca70fe8901144af708fb6b2.
2020-08-11[Windows] Attach to parent console instead of creating new one.bruvzg
2020-07-26CI: Install master version of psf/blackRémi Verschelde
Until https://github.com/psf/black/pull/1328 makes it in a stable release, we have to use the latest from Git. Apply new style fixes done by latest black.
2020-07-23SCons: Remove unused DEBUG_MEMORY_ENABLED defineRémi Verschelde
Its last use was removed in Godot 3.0, so it no longer makes sense to define. Also removed `D3D_DEBUG_INFO` for Windows as it's likely a left over from a long time ago pre-opensourcing when Godot had some form of Direct3D 9 support?