summaryrefslogtreecommitdiff
path: root/platform/android
AgeCommit message (Collapse)Author
2022-10-04Merge pull request #66807 from ↵Rémi Verschelde
akien-mga/core-unix-remove-NO_FCNTL-and-NO_STATVFS Unix: Remove now unnecessary I/O defines, cleanup
2022-10-03Unix: Remove now unnecessary I/O defines, cleanupRémi Verschelde
- `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.
2022-10-03Remove unsupported `NO_SAFE_CAST`/`-fno-rtti` from Android buildRémi Verschelde
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)`.
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-26Style: Cleanup header guards for consistencyRémi Verschelde
Fix file names for {Static,Lightmap}RaycasterEmbree.
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-23SCons: Remove redundant `-fomit-frame-pointer` and `-ftree-vectorize`Rémi Verschelde
- `-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.
2022-09-20Merge pull request #65745 from akien-mga/scons-production-lto-earlierRémi Verschelde
Refactor handling of `production` flag and per-platform LTO defaults
2022-09-20Merge pull request #65541 from clayjohn/renderer-settingRémi Verschelde
Split rendering driver project setting into renderer_name and rendering_driver
2022-09-19Split rendering driver project setting into renderer_name and ↵clayjohn
rendering_driver. To differentiate between a driver (e.g. Vulkan or D3D12) and a renderer (e.g. clustered or mobile renderer).
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-19Replace File/Directory with FileAccess/DirAccesskobewi
2022-09-16Add get_distribution_name() and get_version() to OSMJacred
supports: LinuxBSD, Windows, macOS, iOS, Android, UWP Co-authored-by: bruvzg
2022-09-13Disable menus and functionality that are not relevant on the Android Editor portFredia Huya-Kouadio
2022-09-13Merge pull request #65509 from gotnospirit/master-os-get_datetimeRémi Verschelde
get_datetime_* functions can return wrong values
2022-09-12Exclude small screens from the set of supported devices.Fredia Huya-Kouadio
2022-09-12Update the versioning logic for the Godot Android EditorFredia Huya-Kouadio
This is necessary to separate subsequent uploads to the Google Play store as each upload needs to increment the version code.
2022-09-10Fixes #65377: get_datetime_* functions can return wrong valuesJames
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-09-08Merge pull request #65501 from m4gr3d/fix_invalid_project_manager_path_mainRémi Verschelde
Fix issue causing the project manager to crash because of missing path argument
2022-09-07Fix issue causing the project manager to crash because of missing path argumentFredia Huya-Kouadio
In the process, the initialization logic is updated to show an error message and gracefully close the engine when setup errors occur.
2022-09-07Enable long press, pan and scale gestures for the Godot Android EditorFredia Huya-Kouadio
Fix the bug causing the editor to crash when running the project.
2022-09-07Cleanup the Android input logic implementationFredia Huya-Kouadio
2022-08-30Additional fixes to the Android `get_current_dir()` implementation.Fredia Huya-Kouadio
2022-08-29Rename String `plus_file` to `path_join`Aaron Franke
2022-08-26Merge pull request #64912 from m4gr3d/fix_android_arch_mapping_mainRémi Verschelde
Revert the architecture values update made to the Android export logic
2022-08-25Revert the architecture values update made to the Android export logicFredia Huya-Kouadio
2022-08-25Improve platform-specific READMEs to add useful linksHugo Locurcio
This also adds READMEs for all platforms.
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-08-23Merge pull request #64414 from m4gr3d/fix_get_current_dir_mainRémi Verschelde
2022-08-22Replace Array return types with TypedArraykobewi
2022-08-19Fix issue with `get_current_dir()` returning the wrong path on AndroidFredia Huya-Kouadio
2022-08-15Disable threads used to check on plugins to loadFredia Huya-Kouadio
The functionality is unavailable on Android (requires export capability) and unnecessarily consumes resources
2022-08-15Fix issue preventing the Android Editor from displaying the project contentFredia Huya-Kouadio
The issue was causing by a bug within the logic for `FileAccessFilesystemJAndroid#eof_reached()` causing that value to remain false after the eof was reached. This in turn caused an infinite loop in the file scanner preventing the project's content from showing up.
2022-08-14Refactor the export checking logic to improve separation of concernsFredia Huya-Kouadio
2022-08-08Merge pull request #62885 from madmiraal/fix-59931Rémi Verschelde
2022-08-04Add support for multiple virtual keyboard typesBrian Semrau
2022-08-02Add override keywords to FileAccess derived classesMarcel Admiraal
2022-08-01File: Re-add support to skip CR (`\r`) in `File::get_as_text`Rémi Verschelde
This was removed in #63481, and we confirmed that it's better like this, but we add back the possibility to strip CR as an option, to optionally restore the previous behavior. For performance this is done directly in `String::parse_utf8`. Also fixes Android `FileAccess::get_line()` as this one _should_ strip CR. Supersedes #63717.
2022-07-30Merge pull request #63563 from aaronfranke/export-archRémi Verschelde
2022-07-29Update export dialog to handle many architecturesAaron Franke
2022-07-29Make some editor export methods constAaron Franke
2022-07-29Remove Signal connect bindsJuan Linietsky
Remove the optional argument p_binds from `Object::connect` since it was deprecated by Callable.bind(). Changed all uses of it to Callable.bind()
2022-07-27Merge pull request #63121 from aaronfranke/editor-export-splitRémi Verschelde
2022-07-26Address remaining scoped storage regressionsFredia Huya-Kouadio
- Accelerate common path used to check the storage scope for a given path - Update the logic for the `get_as_text()` method - previous logic loads the content of a text file one byte at a time
2022-07-26Split up editor export code into multiple filesAaron Franke
2022-07-25Code quality: Fix header guards consistencyRémi Verschelde
Adds `header_guards.sh` bash script, used in CI to validate future changes. Can be run locally to fix invalid header guards.
2022-07-13Fix incorrect Android scancodesMarcel Admiraal
2022-07-08Add static methods for creating Image and ImageTexturekobewi