summaryrefslogtreecommitdiffstats
path: root/platform/linuxbsd/detect.py
Commit message (Collapse)AuthorAgeFilesLines
* [Linux] Load dbus libraries dynamically.bruvzg2022-07-291-1/+1
|
* Load fontconfig libraries dynamically.bruvzg2022-07-271-5/+8
|
* Implement support for loading system fonts on Linux, macOS / iOS and Windows.bruvzg2022-07-261-0/+6
|
* SCons: Refactor Linux linker options with `linker=<bfd|gold|lld|mold>`Rémi Verschelde2022-07-221-16/+33
| | | | | | | | | | | | | | | | | | | | | The new option is `linker` and lets the user specify the argument to the`-fuse_ld=` linker flag directly. The supported options are: - `default`: No change, typically uses GNU ld (bfd) unless the user or distro picked a different default `/usr/bin/ld`. - `bfd`: GNU ld from binutils - `gold`: GNU gold from binutils - `lld`: lld from LLVM - `mold`: mold, an extremely fast modern linker, not (yet) intended for use in production but great for development speed. Provided by distro `mold` package or needs to be compiled from source and installed to `/usr` otherwise. Removes the `use_lld=yes` option, and make lld actually usable with GCC too. Not all the above are compatible or recommend for LTO, we recommend using GNU ld with GCC LTO, or lld with LLVM ThinLTO.
* Improve `linuxbsd` headless building, cleanup build scriptsRiteo2022-07-201-47/+13
| | | | | | | | Now the `linuxbsd` platform can be built headlessly (e.g. without X11 development libraries). I also cleaned up some weird (old?) usages of the `env` variable which seem to make no difference and are used nowhere else.
* Remove `-pipe` from `LINKFLAGS`Riteo2022-07-201-1/+0
| | | | For some reason this fixes the CI from going OOM.
* [Linux] Disable speech-dispatcher, pulse audio and udev wrapper builds, when ↵bruvzg2022-04-281-0/+3
| | | | library is not found.
* Implement text-to-speech support on Android, iOS, HTML5, Linux, macOS and ↵bruvzg2022-04-281-0/+8
| | | | | | Windows. Implement TextServer word break method.
* Linux: Use pkg-config for alsa, libudev and GL tooRémi Verschelde2022-04-261-4/+6
| | | | | | | | | | It's not needed on most distros as those are found in standard lib and include paths, but on NixOS they're all in non-standard prefixes, so we need to rely on information provided by pkg-config. Fixes #59913. Co-authored-by: David Lewis <davidalewis00@gmail.com>
* CI: Update black formatter and apply changesRémi Verschelde2022-04-051-1/+1
|
* Add CI build with clang sanitizers, increase stack size to 30 MB for builds ↵bruvzg2022-04-011-0/+1
| | | | with sanitizers.
* Remove unused Bullet module and thirdparty codeRémi Verschelde2022-03-091-21/+0
| | | | | | | It has been disabled in `master` since one year (#45852) and our plan is for Bullet, and possibly other thirdparty physics engines, to be implemented via GDExtension so that they can be selected by the users who need them.
* Misc build system fixesAaron Franke2021-12-101-1/+1
|
* Add support for PowerPC familyDaniel Kolesa2021-11-011-2/+10
|
* Use OpenGL 3.3 core profile instead of compatibility profileClay John2021-10-311-1/+1
| | | | | | | | | | - 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.
* Add GLES2 2D renderer + Linux display managerlawnjelly2021-10-301-2/+2
| | | | | | | | | 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>
* Add support for the RISC-V architectureAaron Franke2021-10-221-0/+7
| | | | Supports RV64GC (RISC-V 64-bit with general-purpose and compressed-instruction extensions)
* Merge pull request #53833 from akien-mga/remove-webm-supportRémi Verschelde2021-10-151-7/+0
|\
| * Remove WebM support (and deps libvpx and opus)Rémi Verschelde2021-10-151-7/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We've had many issues with WebM support and specifically the libvpx library over the years, mostly due to its poor integration in Godot's buildsystem, but without anyone really interested in improving this state. With the new GDExtensions in Godot 4.0, we intend to move video decoding to first-party extensions, and this would likely be done using something like libvlc to expose more codecs. Removing the `webm` module means we can remove libsimplewebm, libvpx and opus, which we were only used for that purpose. Both libvpx and opus were fairly complex pieces of the buildsystem, so this is a nice cleanup. This also removes the compile-time dependency on `yasm`. Fixes lots of compilation or non-working WebM issues which will be linked in the PR.
* | SCons: Set `DEBUG_ENABLED` and `DEV_ENABLED` in SConstructRémi Verschelde2021-10-151-3/+0
|/ | | | | 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.
* Merge pull request #52282 from Calinou/scons-improve-linuxbsd-build-messagesRémi Verschelde2021-09-151-23/+21
|\ | | | | Improve messages when compiling for Linux/*BSD
| * Improve messages when compiling for Linux/*BSDHugo Locurcio2021-08-311-23/+21
| | | | | | | | | | | | | | - Don't display messages when enabling PulseAudio/ALSA/D-Bus/udev as these become noisy in incremental builds. - Improve warning and error messages to be more descriptive and consistent.
* | Re-enable building position-independent executables on Linux/*BSDHugo Locurcio2021-09-151-5/+0
|/ | | | | | | | | | This provides better security at the cost of having misleading binary icons on some file managers. Now that recent Linux distributions no longer allow executing binaries by double-clicking them in a file manager (even if the binary is set to be executable), the usability cost of PIE is lowered. You have to use a terminal or install a `.desktop` file nowadays.
* Use "volk" instead of statically linked Vulkan loader.bruvzg2021-08-121-1/+1
|
* Add "Keep screen on" feature to `DisplayServerX11`Niklas Higi2021-06-201-0/+9
|
* LinuxBSD now compiles without vulkan/x11.Fabio Alessandrelli2021-06-011-9/+18
|
* Make all file access 64-bit (uint64_t)Pedro J. Estébanez2021-05-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Port changes to the "raycast" module build files from 3.xjfons2021-05-041-0/+4
|
* Linux: Remove use_static_cpp override on x86_32Rémi Verschelde2021-04-261-4/+1
| | | | | | | After further testing it seems to work fine now when building binaries with GCC 5 on Ubuntu 16.04 (previously we were using GCC 9 on Ubuntu 14.04). Follow-up to #45629.
* Fix macOS build with all sanitizers enabled.bruvzg2021-04-161-1/+1
|
* Add more sanitizer flags to shows more bugsRafał Mikrut2021-04-151-7/+21
|
* Allow to not optimize release buildRafał Mikrut2021-03-141-2/+2
|
* add msan sanitizer option for linus/bsd, lsan option for osxJordan Schidlowsky2021-03-021-1/+6
|
* Allow static linking with libatomic using clangHein-Pieter van Braam-Stewart2021-02-231-1/+6
| | | | | | | When using use_static_cpp we want to statically link with atomic as well to make sure we don't incur any new runtime dependencies. Scons doesn't quite support this so we do this little trick.
* Use -latomic when linking whe using clang on LinuxHein-Pieter van Braam-Stewart2021-02-201-0/+1
| | | | | | | | According to the LLVM documentation when using GNU's libstdc++ clang will not automatically link with -latomic. This is necessary since we merged c++11 atomics support. This fixes linking using Clang on Linux
* Dynamically load libudev.so.1 on Linux if `udev=yes`Rémi Verschelde2021-02-171-2/+2
| | | | | | | | | | | | | | | | | | | This makes it possibly to run Linux binaries compiled with udev support on Linux systems which do not provide udev (typically systemd-less distros). If udev is missing, we fall back to parsing `/dev/input` like when compiled without udev support (`udev=no`). Also adding some verbose debug statements to know which method we're using when debugging Linux joypad issues. The libudev so wrappers were generated on Mageia 8 with libudev 246.9 using https://github.com/hpvb/dynload-wrapper: ``` ./generate-wrapper.py --include /usr/include/libudev.h --sys-include '<libudev.h>' \ --soname libudev.so.1 --init-name libudev --omit-prefix gnu_ \ --output-header libudev-so_wrap.h --output-implementation libudev-so_wrap.c ```
* Dynamically load libpulse.so.0 and libasound.so.1 on LinuxHein-Pieter van Braam-Stewart2021-02-161-3/+2
| | | | | | | | | | | | By generating stubs using https://github.com/hpvb/dynload-wrapper we can dynamically load libpulse and libasound on systems where it is available. Both are still a build-time requirement but no longer a run-time dependency. For maintenance purposes the wrappers should not need to be re-generated unless we want to bump pulse or asound to an incompatible version. It is unlikely we will want to do this any time soon. This closes #20978
* SCons: Fix debug_symbols tests after switch to BoolVariableRémi Verschelde2021-02-081-2/+2
| | | | | | Bug introduced in #45679. Fixes part of #45816.
* SCons: Add `production=yes` option to use production defaultsRémi Verschelde2021-02-031-1/+1
| | | | | | | | | | | | | | | | | | | 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.
* Merge pull request #45630 from akien-mga/linux-enable-udevRémi Verschelde2021-02-011-1/+1
|\ | | | | Linux: Enable udev support by default
| * Linux: Enable udev support by defaultRémi Verschelde2021-02-011-1/+1
| | | | | | | | | | | | | | | | | | This has been enabled for years in official binaries, and users making custom builds may end up not enabling it unknowingly, so it's best if we default to the same as what official builds do. The original reason for having it opt-in was likely the addition of a dependency on libudev, but that should be fairly ubiquitous by now.
* | Linux: Build with use_static_cpp=yes by default for x86_64Rémi Verschelde2021-02-011-2/+5
|/ | | | | | | | This enables `-static-libgcc -static-libstdc++` which help make custom Linux builds more portable (official builds have been using this option for years). For some obscure reason Ubuntu 18.04 i386 crashes when using the option for i386 builds, so let's play it safe and enable for x86_64 only for now.
* SCons: Add only selected platform's opts to envRémi Verschelde2020-12-161-3/+0
| | | | | | | | | | | 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.
* [Complex Text Layouts] Add third-party TextServer dependencies (ICU, ↵bruvzg2020-11-261-1/+18
| | | | HarfBuzz, Graphite).
* SCons: Do not define TYPED_METHOD_BIND on Linux/clangRémi Verschelde2020-11-251-1/+0
| | | | It's now only needed for MSVC.
* SCons: Remove unnecessary $LINK overridesRémi Verschelde2020-11-191-1/+0
| | | | | | | | | | 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.
* Remove `debug_symbols=full` in favor of `debug_symbols=yes`Hugo Locurcio2020-11-091-5/+1
| | | | | | | | `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.
* Add window click-through support.bruvzg2020-09-171-0/+6
|
* SCons: Remove unused DEBUG_MEMORY_ENABLED defineRémi Verschelde2020-07-231-1/+1
| | | | | | | 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?