summaryrefslogtreecommitdiffstats
path: root/platform/android/detect.py
Commit message (Collapse)AuthorAgeFilesLines
* SCons: Move `swappy` option to android and slightly refactor `detect.py`Yevhen Babiichuk (DustDFG)2024-11-201-9/+10
| | | | Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com>
* Merge pull request #96439 from darksylinc/matias-TheForge-pr03-rebasedClay John2024-10-291-0/+35
|\ | | | | Add Swappy & Pre-Transformed Swapchain
| * Add Swappy & Pre-Transformed SwapchainMatias N. Goldberg2024-10-281-0/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Adds Swappy for Android for stable frame pacing - Implements pre-transformed Swapchain so that Godot's compositor is in charge of rotating the screen instead of Android's compositor (performance optimization for phones that don't have HW rotator) ============================ The work was performed by collaboration of TheForge and Google. I am merely splitting it up into smaller PRs and cleaning it up. Changes from original PR: - Removed "display/window/frame_pacing/android/target_frame_rate" option to use Engine::get_max_fps instead. - Target framerate can be changed at runtime using Engine::set_max_fps. - Swappy is enabled by default. - Added documentation. - enable_auto_swap setting is replaced with swappy_mode.
* | Merge pull request #97555 from dustdfg/platform_methods/extract_validate_archThaddeus Crews2024-10-251-6/+2
|\ \ | | | | | | | | | Build System: Extract `validate_arch` helper functions
| * | Build System: Extract `validate_arch` helper functionYevhen Babiichuk (DustDFG)2024-10-061-6/+2
| |/ | | | | | | Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com>
* / Android & iOS: Enable strict aliasingPedro J. Estébanez2024-10-211-3/+1
|/
* Disable FP contraction.bruvzg2024-07-231-0/+2
|
* SCons: Process platform-specific flags earlierRémi Verschelde2024-05-301-1/+1
| | | | | | | | | | Some of the logic in SCons depends on flags that get overridden in the platform-specific `detect.py`, so it needs to be processed first. For example the Android/iOS/Web platforms override the default `target` to `template_debug`, but this was processed too late so e.g. the logic that sets `env.editor_build` would set it to true due to the default `target` value in the environment being `editor`.
* SCons: Convert platform `get_flags` to dictionaryThaddeus Crews2024-05-221-5/+5
|
* Update pre-commit hooks configuration to use `ruff` instead of `black`Jakub Marcowski2024-05-211-2/+3
|
* Fix missing space in missing tools error message.Rob Blanckaert2024-05-041-1/+1
| | | Currently prints as `ANDROID_HOME is correct and cmdline-toolsare installed, or install NDK version`
* SCons: Colorize warnings/errors during generationThaddeus Crews2024-04-281-12/+9
|
* Merge pull request #88245 from shana/simplify-mono-support-detectionRémi Verschelde2024-02-191-0/+1
|\ | | | | | | C#: Let platforms signal if they support the mono module or not
| * C#: Let platforms signal if they support it or notAndreia Gaita2024-02-131-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | Instead of hardcoding platform names that support C#, let platforms set a flag indicating if they support it. All public platforms except web already support it, and it's a pain to maintain a patch for this list just to add additional names of proprietary console platforms. This makes adding new platforms or variants or existing platforms much easier, as the platform can signal what it supports/doesn't support directly, and we can avoid harcoding platform names.
* | SCons: "Environment" to "SConsEnvironment"Thaddeus Crews2024-02-141-4/+4
| |
* | [iOS/macOS] Add option to automatically build (and sign / archive) bundles.bruvzg2024-02-131-0/+1
| |
* | Add RD_ENABLED when VULKAN_ENABLED or D3D12_ENABLED is addedjsjtxietian2023-12-251-1/+1
|/
* Replace the use of the `ANDROID_SDK_ROOT` env variable with `ANDROID_HOME` ↵Fredia Huya-Kouadio2023-11-011-6/+6
| | | | | | as the former is deprecated. See https://developer.android.com/tools/variables#android_home for more details
* SCons: Disable C++ exception handlingRémi Verschelde2023-08-161-4/+0
| | | | | | | | | | | | | | | | | | | | Upon investigating the extremely slow MSVC build times in #80513, I noticed that while Godot policy is to never use exceptions, we weren't enforcing it with compiler flags, and thus still included exception handling code and stack unwinding. This is wasteful on multiple aspects: - Binary size: Around 20% binary size reduction with exceptions disabled for both MSVC and GCC binaries. - Compile time: * More than 50% build time reduction with MSVC. * 10% to 25% build time reduction with GCC + LTO. - Performance: Possibly, needs to be benchmarked. Since users may want to re-enable exceptions in their own thirdparty code or the libraries they compile with Godot, this behavior can be toggled with the `disable_exceptions` SCons option, which defaults to true.
* SCons: Move platform logo/run icon to `export` folderRémi Verschelde2023-06-201-4/+0
| | | | | | | | | | | | Follow-up to #75932. Since these icons are only used by the export plugin, it makes sense to move them and generate the headers there. The whole `detect.is_active()` logic seems to be a leftover from before times, as far back as 1.0-stable it already wasn't used for anything. So I'm removing it and moving the export icon generation to `platform_methods`, where it makes more sense.
* Update the gradle build tasks to generate play store builds.Fredia Huya-Kouadio2023-04-271-0/+3
| | | | Configure the gradle builds to sign and build the release version of the Godot Android Editor
* [Export docs] Move docs to platform folders.bruvzg2023-04-201-0/+10
|
* Updating the minimum Android target api for proper Vulkan supportFredia Huya-Kouadio2022-11-301-8/+17
|
* Enable GLES3 on Androidclayjohn2022-11-291-2/+5
| | | | | | | | | | Add necessary build flags and switch from using a GLES2 context to a GLES3 one. This also enables building for OpenXR Co-authored-by: m4gr3d <fhuyakou@gmail.com> Co-authored-by: dsnopek <dsnopek@gmail.com>
* Android: Remove extra arch suffix now redundant with the default oneRémi Verschelde2022-11-251-4/+0
| | | | We would needlessly get file names like `*.arm64.armv8.o`.
* Merge pull request #66807 from ↵Rémi Verschelde2022-10-041-2/+2
|\ | | | | | | | | | | akien-mga/core-unix-remove-NO_FCNTL-and-NO_STATVFS Unix: Remove now unnecessary I/O defines, cleanup
| * Unix: Remove now unnecessary I/O defines, cleanupRémi Verschelde2022-10-031-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - `LIBC_FILEIO_ENABLED` wasn't defined anywhere, even in _other platforms_. - `NO_NETWORK` is also never defined. It probably isn't enough anyway to disable network APIs in the current codebase. - `UNIX_SOCKET_UNAVAILABLE` is never defined in this code but used by some other platforms, clarify that. - `NO_STATVFS` can be removed as Android supports it since API level 19, which is our current min SDK level. It's also only used for `DirAccessUnix::get_space_left()` which is anyway overridden by `DirAccessJAndroid::get_space_left()` so it shouldn't make a difference. * Fixed documentation for `DirAccess.get_space_left()`. - `NO_FCNTL` is likely also a remnant of early Android days, in current NDK r23 it seems to be available. Also cleaned up unused `fcntl.h` includes. - `NO_ALLOCA` is never defined, and we use alloca in many places now.
* | Remove unsupported `NO_SAFE_CAST`/`-fno-rtti` from Android buildRémi Verschelde2022-10-031-9/+3
|/ | | | | | | | | | | | Android was the last platform to still attempt to disable RTTI (for binary size), but both the Android editor and now the ICU library used by templates need RTTI. There could still be the possibility to support this for non-ICU template builds (i.e. without the TextServerAdvanced module), but since this isn't one of the build configurations we test regularly it's pretty risky to keep this option only for that specific use case. And our code is already littered with `dynamic_cast`s which weren't guarded with `!defined(NO_SAFE_CAST)`.
* ci: add Python static analysis check via mypyJiri Suchan2022-09-301-3/+6
|
* SCons: Unify tools/target build type configurationRémi Verschelde2022-09-261-16/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* SCons: Cleanup `DEBUG`, `_DEBUG` and `NDEBUG` definesRémi Verschelde2022-09-231-4/+1
| | | | | | | | | | | | | | | | - `_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.
* SCons: Remove redundant `-fomit-frame-pointer` and `-ftree-vectorize`Rémi Verschelde2022-09-231-2/+1
| | | | | | | | | - `-fomit-frame-pointer` is included automatically by both GCC and Clang in `-O1` and above. - `-ftree-vectorize` is included automatically by GCC in `-O2` and beyond, and seems always enabled by Clang. Closes #66296. See that issue for a detailed investigation.
* SCons: Refactor handling of `production` flag and per-platform LTO defaultsRémi Verschelde2022-09-191-3/+4
| | | | | | | Fixup to #63288. See #65583 for the bug report. Co-authored-by: Cyberrebell <chainsaw75@web.de>
* SCons: Refactor LTO options with `lto=<none|thin|full>`Rémi Verschelde2022-09-081-0/+12
| | | | | | | | | | | | | 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).
* Unify bits, arch, and android_arch into env["arch"]Aaron Franke2022-08-251-21/+23
| | | | | | Fully removes the `bits` option and adapts the code that relied on it. Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
* Use clang as assembler to ensure preprocessing is done, and add assembler ↵bruvzg2022-07-071-6/+2
| | | | "target" flag.
* Upgrade Android NDK to r23 LTSMarcel Admiraal2022-06-251-257/+75
|
* Increase compiler optimization when using `target=release` on iOS/AndroidHugo Locurcio2022-05-131-2/+5
|
* Misc build system fixesAaron Franke2021-12-101-1/+1
|
* SCons: Set `DEBUG_ENABLED` and `DEV_ENABLED` in SConstructRémi Verschelde2021-10-151-4/+1
| | | | | They're the same for all platforms so they don't need to be repeated in all platform definitions.
* SCons: Add `DEV_ENABLED` defines for `target=debug` buildsRémi Verschelde2021-10-141-0/+1
| | | | | | | | | | | 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.
* Build for 64-bit ARM by default when compiling or exporting for AndroidHugo Locurcio2021-10-121-17/+6
| | | | | | | All Android devices that support Vulkan support 64-bit ARM. This also removes NEON opt-out code for ARMv7 as pretty much all ARMv7 devices also support NEON.
* Replace HTTP links with HTTPS for sites with HTTPS versionsAaron Franke2021-08-221-1/+1
|
* Android: Use volk instead of NDK Vulkan headersRémi Verschelde2021-08-121-1/+0
| | | | | We no longer build the Vulkan loader, and volk lets us load it dynamically. Roblox uses volk on Android so it should work well for us too.
* Use "volk" instead of statically linked Vulkan loader.bruvzg2021-08-121-2/+8
|
* Android: Remove `-fno-integrated-as`, it can break arm64v8 buildRémi Verschelde2021-05-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | We found that this flag causes this error on PR #48812 which does not add any fancy inline assembly: ``` /tmp/tile_set-ce236a.s: Assembler messages: /tmp/tile_set-ce236a.s:34676: Error: selected processor does not support `bfc x0,#32,#32' clang++: error: assembler command failed with exit code 1 (use -v to see invocation) ``` That flag is mentioned in various errors related to assembler failures on arm64v8 with Clang from the Android NDK. It was added in Godot in #6958 when migrating from GCC to Clang, and is indeed referenced in the NDK's Clang migration guide: https://android.googlesource.com/platform/ndk/+/master/docs/ClangMigration.md > Especially for ARM and ARM64, Clang is much stricter about assembler rules > than GCC/GAS. Use `-fno-integrated-as` if Clang reports errors in inline > assembly or assembly files that you don't wish to modernize. We don't get those errors nowadays so it seems the flag is no longer needed.
* Make all file access 64-bit (uint64_t)Pedro J. Estébanez2021-05-171-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes the types of a big number of variables. General rules: - Using `uint64_t` in general. We also considered `int64_t` but eventually settled on keeping it unsigned, which is also closer to what one would expect with `size_t`/`off_t`. - We only keep `int64_t` for `seek_end` (takes a negative offset from the end) and for the `Variant` bindings, since `Variant::INT` is `int64_t`. This means we only need to guard against passing negative values in `core_bind.cpp`. - Using `uint32_t` integers for concepts not needing such a huge range, like pages, blocks, etc. In addition: - Improve usage of integer types in some related places; namely, `DirAccess`, core binds. Note: - On Windows, `_ftelli64` reports invalid values when using 32-bit MinGW with version < 8.0. This was an upstream bug fixed in 8.0. It breaks support for big files on 32-bit Windows builds made with that toolchain. We might add a workaround. Fixes #44363. Fixes godotengine/godot-proposals#400. Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
* [JS, Android] Re-add "no-exceptions" for export templates builds with ICU.bruvzg2021-04-201-1/+3
|
* Allow to not optimize release buildRafał Mikrut2021-03-141-3/+2
|
* Override `ANDROID_NDK_ROOT` based on the project ndk version.Fredia Huya-Kouadio2021-02-171-8/+5
| | | | This helps resolve issues where the project ndk version differs from the one pointed by the `ANDROID_NDK_ROOT` environment variable (if it exists).