summaryrefslogtreecommitdiff
path: root/config
AgeCommit message (Collapse)AuthorFilesLines
2024-02-14Enable Rust plugins on AndroidL. E. Segovia1-1/+1
Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1368>
2024-02-14cerbero, config/android, openssl: Don't pass the Android toolchain path ↵L. E. Segovia1-1/+2
wholesale In !1191 (commit 643087f3f09fd637b29335efb608ac7a82031ecf), the removal of GCC support relied on making the Android compiler available to all processes. This fixed accessing the host's compiler for Meson based builds like fribidi's, and also allowed OpenSSL to build, but there was a hidden side effect: it broke Rust's ability to compile build scripts because the linker it finds (LLVM 14 from the NDK) no longer supports `--no-add-needed` [1] [2]. A more Meson-ese fix is to pass the toolchain as a constant in the native file, and fill the path in manually. This also needs to be injected manually into the `PATH` for OpenSSL as that's how its configure script consumes the toolchain. [1]: https://github.com/llvm/llvm-project/issues/54756 [2]: https://github.com/llvm/llvm-project/commit/815a1207bfe121c8dcf3804a4f4638e580f63519 Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1368>
2024-02-08cerbero: Enable rust variant on ios by defaultNirbheek Chauhan1-1/+1
We can enable these now with the various fixes that have gone in. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1341>
2023-11-21gst-plugins-rs: Complete the NDK migration to fix linking against RustL. E. Segovia1-3/+10
From !915 and !1191, the following bits were missing: - Autotools expects the raw linker to perform detection for version scripting. If that parameter isn't detected in the `--help`, shared libraries are disabled (breaks libpng). - Cargo, conversely, expects implicitly the clang executable itself because of a new dependency on libunwind starting with 1.68 To appease both, I pass the corresponding linkers separately, then massage the flags into link-args entries in the TOML's rustflags entry. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1255>
2023-10-26config/ios: remove unneeded (-Wl) minimum ios versionMatthew Waters1-3/+0
We are already setting the minimum version via a (-m) argument and the -Wl, variant now produces errors from clang. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1289>
2023-07-31ios: update minimum ios version to 12.0Matthew Waters1-1/+1
Needed for some abseil-cpp code: ../subprojects/abseil-cpp-20230125.1/absl/status/status.cc:129:30: error: 'value' is unavailable: introduced in iOS 12.0 Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1236>
2023-06-08Bump minimum macOS version to 10.13 (High Sierra)Nirbheek Chauhan1-1/+1
There are a bunch of reasons to do this: 1. This is the oldest version of macOS that people still use - Released 5½ years ago, went out of security support 2½ years ago - 93.5% according to https://www.statista.com/statistics/944559/worldwide-macos-version-market-share/ - 96.8% according to https://gs.statcounter.com/os-version-market-share/macos/desktop/worldwide 2. GLib uses `utimensat` added in 10.13 for nanosecond granularity file timestamps, which is an important feature 3. This is also the oldest version supported by Qt5 Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1115>
2023-06-08darwin: Ensure errors on unguarded use of new APIsNirbheek Chauhan1-1/+1
APIs that are only available on newer macOS versions need to be guarded with __builtin_available for a runtime check that won't load the symbol at all on older OS versions. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1115>
2023-06-04android: remove all traces of gnustlMatthew Waters1-12/+2
The relevant c++ standard library is now automaticaly added by the compiler/linker and our gross hack involving gnustl.pc/la is not longer needed. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1191>
2023-06-04config/android: update toolchain for gcc tools removalMatthew Waters1-32/+27
Everything is done through clang/++ now. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1191>
2023-06-04bootstrap/android: download NDK R25cMatthew Waters1-1/+1
Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1191>
2023-03-20cross-win: add support for WIX packagingStéphane Cerveau1-6/+0
Wix allows to build MSI package in a cross platform environment. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/821>
2023-03-14linux: use arch-specific libdir'sAndoni Morales Alastruey1-0/+6
2023-01-13android.config: Stop excluding static libs in ldflagsNirbheek Chauhan1-1/+1
Seems unnecessary now. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/864>
2023-01-12android.config: Use versioned llvm-triples everywhereNirbheek Chauhan1-4/+4
Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/864>
2023-01-12android.config: Use f-strings for all string formattingNirbheek Chauhan1-23/+23
This makes it much easier to read Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/864>
2023-01-12gnustl.recipe: Eliminate libandroid_support from gnustlNirbheek Chauhan1-7/+0
Doesn't seem to be needed with API level 21. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/864>
2023-01-12cross-android-{armv7,universal,x86}: bump target API version to v21Tim-Philipp Muller3-3/+3
To fix glib 2.74 build issues. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/864>
2022-12-05macOS, iOS: Fix Xcode 14 ABI breakage with older XcodeNirbheek Chauhan2-2/+22
Starting with Xcode 14, clang emits `_objc_msgSend` stubs that are unsupported by older Xcode toolchains. This makes artifacts created with Xcode 14 unusable with older Xcode versions. Disable this for now. Other projects are doing the same thing: https://github.com/llvm/llvm-project/issues/56034 Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1034>
2022-11-10cerbero: Fix install prefix when no variant is specified on WindowsNirbheek Chauhan1-6/+0
We were setting the default visualstudio variant too late, and the prefix was being set to mingw_x86_64 in the case when no variant is specified on Windows, even though Visual Studio is used for compilation. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1006>
2022-11-02Use Visual Studio by default for building on WindowsNirbheek Chauhan1-1/+7
When possible, we now build using Visual Studio by default, unless you pass -v mingw. This flips the previous default of using the MinGW toolchain unless you pass -v visualstudio The migration path for users on Windows is to wipe their build-tools prefix and rebuild it. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/991>
2022-09-15Enable Rust plugins on Linux, macOS, MSVCNirbheek Chauhan3-2/+7
Also update the bootstrap step for the Fedora image to download Rust toolchain files for cross-mingw and cross-android, purely for testing purposes. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/915>
2022-09-03Remove Apple Bitcode supportNirbheek Chauhan2-2/+2
Apple has deprecated Bitcode support in XCode 14 with a loud warning asking users to stop using it, and submissions to the App Store now strip bitcode information. Time to just delete all the relevant code. https://developer.apple.com/documentation/xcode-release-notes/xcode-14-release-notes#Deprecations Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/879>
2022-03-30config: rename cross-macos-x86_64 -> x86-64 like all the other config filesMatthew Waters2-2/+2
Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/839>
2022-03-04windows: enable parallel builds with MSYS2Andoni Morales Alastruey1-6/+6
Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/743>
2022-03-04Add support for MSYS2Andoni Morales Alastruey1-9/+7
This is the initial commit to start supporting MSYS2 (https://www.msys2.org/) in favor of the old MSYS/MinGW. MSYS2 brings several important improvements: * Project with active development * In sync with latest Cygwin * Up-to-date packages * Package manager Here is a more detailed writeup of MSYS2 from Git's migration https://github.com/git/git/commit/df5218b4c30b2fa1ba0d1ada4166ad85bc83be26 The old msys will still be supported to ease the migration but a deprecation warning will be shown to migrate to MSYS2 Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/743>
2021-10-18android: set ANDROID_NDK_HOME instead of ANDROID_NDKJonas Vautherin1-1/+1
Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/752>
2021-07-13config/ios: put iphone sdk version minimum into CPPFLAGSMatthew Waters1-4/+6
This may be important for anything produced by the C Preprocesser Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/715>
2021-05-14macos/universal: fix pkg-config packagingMatthew Waters1-0/+5
When building for universal, the build-tools pkg-config is not sufficient as it is not built for the universal archs. We need to build our own version to distribute. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/701>
2021-01-21macOS: fix Objective-C++ cross-compilationAndoni Morales Alastruey1-2/+2
OBJCXXFLAGS are not being set correctly so Objective-C++ files were compiled with the build arch instead of the target one Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/673>
2020-12-07x264: add support for macOS ARM64Andoni Morales Alastruey1-0/+6
Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/661>
2020-12-07macos: add new configuration files for macosAndoni Morales Alastruey3-0/+18
When building from Intel we want to cross-compile for ARM64 When building from Apple silicon we want to cross-compile for X86_64 For releases we want universal builds Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/661>
2020-12-07macos: add support for targetting ARM64Andoni Morales Alastruey1-4/+18
Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/661>
2020-09-30windows.config: Use MinGW Perl instead of MSYS PerlNirbheek Chauhan1-0/+5
It seems like MSYS Perl sometimes hangs on the Windows CI runners and causes the cerbero build jobs to hang. Maybe the MinGW Perl won't hang because it's not ancient. Some recipes such as autoconf and automake fail to build when using the newer Perl, so continue to use the MSYS perl for those. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/616>
2020-09-21Don't override the 64 bit linker with the 32 bit oneBrent Gardner1-1/+1
Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/607>
2020-07-12Add a uwp-universal target to build all uwp arches at onceNirbheek Chauhan3-8/+35
This is identical to how the cross-android-universal target works. Supported UWP arches are: x86, x86_64, arm64. This covers 100% of Windows 10 machines: https://docs.microsoft.com/en-us/windows/msix/package/device-architecture Advantages are the same as Android: 1. Most people will build apps that target multiple (or all) archs 2. Easier to build and ship all arches at once 3. Easier to download two tarballs rather than six Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/551>
2020-07-09config: Don't set prefix for Windows buildsNirbheek Chauhan4-4/+0
We've been doing this since the beginning to ensure correct paths inside various files such as .pc and .la, but we this is not needed anymore for two reasons: 1. We ship pkg-config with --define-prefix enabled 2. MSI supports installing into any location So, always use dirs inside the build/ directory. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/537>
2020-06-08windows.config: Add UWP flags to C++ flags tooNirbheek Chauhan1-0/+1
Really silly oversight. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/497>
2020-05-29config: Remove glib-specific autoconf hacksNirbheek Chauhan2-12/+2
These haven't been used ever since glib was ported to Meson: glib_cv_stack_grows is now set as a cross property glib_cv_uscore is correctly detected with meson getpwuid_r is correctly detected with meson getgrgid_r is correctly detected with meson wchar_t is available and things work fine (added in 2013, no notes) _NSGetEnviron is fixed in the previous commit Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/489>
2020-05-26cerbero/genlib: Reuse msvc env found at startupNirbheek Chauhan1-16/+27
Since Visual Studio is optional now, this patch is non-trivial. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/480>
2020-05-26Rewrite MSVC/MinGW toolchain config for UWP cross compilationNirbheek Chauhan2-122/+147
Unlike any other platform, on Windows we build recipes with both MSVC and MinGW. All Meson recipes can be built with MSVC, but the Autotools recipes always use MinGW. This broke the fundamental assumption that `self.config.config_env` contains all the information needed by the build system to find the toolchain that we want to use. At the time, we hacked around it by unsetting MinGW toolchain env vars inside `build.py`, and storing msvc toolchain env vars in `self.config.msvc_toolchain_env`. We would then set those only when building recipes that can use MSVC. This completely breaks down when you want to cross-compile on Windows, because we need some env vars to stay in the env, and others to only be in the cross file. To fix this, a bunch of things had to change: 1. Use actual objects for environment variable values: `EnvValue` and other classes that inherit from it. These allow easier merging/overriding of env var values. 2. Separate out env vars according to their stated purpose: a) Configuration for build tools (WINEPREFIX, WINDEBUG, etc) b) Configuration for toolchain (LIBRARY_PATH, INCLUDE, LIB, etc) c) Configuration for build system (CC, CFLAGS, ac_cv_*, etc) 3. Always use a native-file or a cross-file for selecting the toolchain when using Meson. 4. Rename meson_cross_properties to meson_properties, since we use those even when not cross-compiling. Future TODO: port all env var usage in config.py and config/*.config to the new EnvValue* objects Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/480>
2020-05-26cerbero: Refactor variant handling in platform config filesNirbheek Chauhan12-43/+24
While parsing config files such as the platform config files, we were exposing variants as an unresolved `list` of "operations" that will enable or disable the variant once they've all been resolved This is buggy because it means that platform config files have no way to know whether a variant has actually been disabled or enabled by the user. Now we always parse variants into the `Variants` object before parsing all configuration files. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/480>
2020-05-26cerbero: Add configs to cross-compile on Windows to ARM/ARM64Nirbheek Chauhan2-0/+6
Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/480>
2020-05-26cerbero: Add a variant for the Universal Windows PlatformNirbheek Chauhan1-3/+21
When building with 'uwp' enabled, recipes that can be built with MSVC will be built for the Universal Windows Platform. Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/480>
2020-05-26cerbero: Allow fetching UWP Visual Studio env varsNirbheek Chauhan1-1/+2
Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/480>
2020-04-18cerbero/windows: Don't require visual studio for genlibNirbheek Chauhan1-1/+2
We don't actually require Visual Studio if you don't enable the variant.
2020-04-06android: update to NDK r21Matthew Waters1-6/+27
2020-04-03cerbero: Add a new variant for optimizationNirbheek Chauhan5-11/+11
Now you can pass `-v debug,nooptimization` and it will be the same as passing `-Dbuildtype=debug` or `-Doptimization=0 -Ddebug=true` to Meson. Same also applies to non-Meson recipes: `-O2`/`-Os` will be passed if `optimization` is enabled. If not, `-Og` is passed if `debug` is enabled, else `-O0` is passed. This requires revamping how optimization and debug args are added to compiler flags via env vars. Earlier we used to add them in the platform-specific config, but this was duplicated across all configs and was incorrect for Meson recipes. Note that Meson recipes should not be using `get_option('buildtype')` in the build files to check if debugging is enabled because that will return `custom` for most combinations of `optimization` and `debug. See: https://mesonbuild.com/Builtin-options.html#core-options
2020-04-01config/darwin: don't symlink gl headersMatthew Waters1-13/+0
It's not necessary anymore
2020-03-04windows.config: Place temporary wine files in var/tmpNirbheek Chauhan1-1/+3
This is a more obvious place for it, and is self-documenting in the CI YAML too, where we exclude it from the cerbero-deps tarball.