Add example cross files

These are example cross files that will be used by the CI. They
could require manual editing to change hardcoded paths to toolchains
when used on different environment.
This commit is contained in:
Xavier Claessens 2018-12-03 09:16:14 -05:00 committed by Jordan Petridis
parent 9689fa0a45
commit 81d8a8c78c
3 changed files with 73 additions and 0 deletions

40
cross-files/README.md Normal file
View file

@ -0,0 +1,40 @@
# Cross compiling GStreamer with gst-build
GStreamer can be cross compiled for various platforms using gst-build. However,
only dependencies that are ported to the Meson build system will be built. It is
recommended to use Cerbero to cross compile GStreamer when other external
dependencies are required.
Once the toolchain is installed and a Meson cross file is created, to build
GStreamer simply run for example: `meson --cross-file cross-files/mingw_w64_x86-64.txt builddir`.
## Android
Requires Android API level >= 28, previous versions are missing *iconv* dependency.
- Download and extract the [NDK](https://developer.android.com/ndk/)
- Create a standalone toolchain targeting your arch and API level:
`./build/tools/make_standalone_toolchain.py --arch $arch --api $api --install-dir $toolchain_path`
- Create a Meson cross file, you can use `android_arm64_api28.txt` as example
and change CPU architectures and toolchain path.
Notes:
- On fedora the Android NDK requires the `ncurses-compat-libs` package.
## Windows
GStreamer can be cross compiled for Windows using mingw packaged in most
distribution.
The Meson cross file `mingw_w64_x86-64.txt` can be used when targeting amd64
architecture, or adapted for i686 arch.
### Fedora
- Install the toolchain packages: `mingw64-gcc`, `mingw64-gcc-c++`. Fedora
provides many other optional dependencies that could be installed as well.
For example: `mingw64-gettext`, `mingw64-libffi`, `mingw64-zlib`.
### Ubuntu
- Install the toolchain package: `gcc-mingw-w64`.

View file

@ -0,0 +1,16 @@
[host_machine]
system = 'android'
cpu_family = 'aarch64'
cpu = 'arm64'
endian = 'little'
[properties]
c_args = ['--sysroot', '/opt/android-arm64-api28/sysroot']
cpp_args = ['--sysroot', '/opt/android-arm64-api28/sysroot']
[binaries]
c = '/opt/android-arm64-api28/bin/aarch64-linux-android-clang'
cpp = '/opt/android-arm64-api28/bin/aarch64-linux-android-clang++'
ar = '/opt/android-arm64-api28/bin/aarch64-linux-android-ar'
strip = '/opt/android-arm64-api28/bin/aarch64-linux-android-strip'
pkgconfig = 'false'

View file

@ -0,0 +1,17 @@
[host_machine]
system = 'windows'
cpu_family = 'x86_64'
cpu = 'x86_64'
endian = 'little'
[properties]
c_args = []
c_link_args = []
[binaries]
c = 'x86_64-w64-mingw32-gcc'
cpp = 'x86_64-w64-mingw32-g++'
ar = 'x86_64-w64-mingw32-ar'
strip = 'x86_64-w64-mingw32-strip'
pkgconfig = 'x86_64-w64-mingw32-pkg-config'
windres = 'x86_64-w64-mingw32-windres'