xbmc/tools/depends
fuzzard 2f0a222ef4 [CI] Test different ffmpeg build options
linux/webos - tools/depends/target testing the makefile setup - tests x64/arm/aarch64
freebsd - tests system ffmpeg
osx x64 - test explicit ENABLE_INTERNAL_FFMPEG
Other unix - tests search and fallback for KODI_DEPENDSBUILD auto build
2025-12-09 19:16:27 +10:00
..
build-aux upgrade autotools for aarch64 depends build 2016-10-09 10:53:39 +02:00
m4 [depends] use c++20 2024-06-13 20:28:07 +02:00
native [cmake] Add FindPkgConfig module 2025-12-08 19:20:56 +10:00
pre-depends [depends][native] Update autoconf to 2.72 2025-11-28 20:46:14 +01:00
target [CI] Test different ffmpeg build options 2025-12-09 19:16:27 +10:00
.gitignore [tools/depends] Generate Native toolchain file 2022-06-17 22:22:43 +10:00
Makefile tools/depends: add download target 2023-04-17 20:37:24 -07:00
Makefile.include.in [tools/depends] reorder native flags 2025-12-05 20:48:34 +10:00
README.md Use gh markdown highlights of warnings, tips and notes 2024-01-31 17:48:29 +00:00
bootstrap [tools/depends] bootstrap check minimum version of m4 pre-depends 2025-11-30 11:16:26 +10:00
configure.ac Merge pull request #27383 from sundermann/webos-mcpu-a53 2025-11-01 07:26:34 +01:00
download-files.include tools/depends: improve download retry logic 2023-04-17 20:37:23 -07:00
xbmc-addons.include [webos] fix building binary addons 2023-03-23 21:25:10 +01:00

README.md

Kodi Logo

Kodi's Unified Depends Build System

This builds native tools and library dependencies for platforms that do not provide them. It is used on our continuous integration system, jenkins. A nice side effect is that it allows us to use the same tools and library versions across all platforms.

In terms of build system usage, largest percentage is Autotools, followed by CMake and, in rare cases, hand crafted Makefiles. Tools and libraries versions are picked for a reason. If you feel the urge to start bumping them, be prepared for robust testing. Some tools and libraries need patching, most do not.

That said, we try to stay fairly current with used versions and send patches upstream whenever possible.

  • Autotools driven tools and libraries tend to just work provided the author(s) followed proper Autotools format. Execute ./bootstrap, followed by ./configure --[...] and you're all set. If ./configure --[...] gives you problems, try ./autoreconf -vif before ./configure --[...]. Some authors do silly things and only a config.site can correct the errors. Watch for this in the config.site(.in) file(s). It is the only way to handle bad Autotools behaviour.

  • CMake driven tools and libraries also tend to just work. Setup CMake flags correctly and go. On rare cases, you might need to diddle the native CMake setup.

  • Hand crafted Makefiles driven tools and libraries typically require manual sed tweaks or patching. May give you nightmares.

Usage Examples

Paths below are examples. If you want to build Kodi, follow our build guides.

All platforms

./bootstrap

Darwin

macOS (x86_64) ./configure --host=x86_64-apple-darwin

iOS (arm64) ./configure --host=aarch64-apple-darwin

tvOS ./configure --host=aarch64-apple-darwin --with-platform=tvos

[!NOTE]
You can target the same --prefix= path. Each setup will be done in an isolated directory. The last configure/make you do is the one used for Kodi/Xcode.

Android

arm ./configure --with-tarballs=$HOME/android-tools/xbmc-tarballs --host=arm-linux-androideabi --with-sdk-path=$HOME/android-tools/android-sdk-linux --with-ndk-path=$HOME/android-tools/android-ndk-r20 --prefix=$HOME/android-tools/xbmc-depends

aarch64 ./configure --with-tarballs=$HOME/android-tools/xbmc-tarballs --host=aarch64-linux-android --with-sdk-path=$HOME/android-tools/android-sdk-linux --with-ndk-path=$HOME/android-tools/android-ndk-r20 --prefix=$HOME/android-tools/xbmc-depends

x86 ./configure --with-tarballs=$HOME/android-tools/xbmc-tarballs --host=i686-linux-android --with-sdk-path=$HOME/android-tools/android-sdk-linux --with-ndk-path=$HOME/android-tools/android-ndk-r20 --prefix=$HOME/android-tools/xbmc-depends

x86_64 ./configure --with-tarballs=$HOME/android-tools/xbmc-tarballs --host=x86_64-linux-android --with-sdk-path=$HOME/android-tools/android-sdk-linux --with-ndk-path=$HOME/android-tools/android-ndk-r20 --prefix=$HOME/android-tools/xbmc-depends

[!NOTE]
Android x86 and x86_64 are not maintained and are not 100% sure that everything works correctly!

Linux

ARM (codesourcery/lenaro/etc) ./configure --with-toolchain=/opt/toolchains/my-example-toolchain/ --prefix=/opt/xbmc-deps --host=arm-linux-gnueabi --with-rendersystem=gles

webos (buildroot-nc4) ./configure --with-toolchain=/opt/toolchains/arm-webos-linux-gnueabi_sdk-buildroot --prefix=/opt/xbmc-deps --host=arm-webos-linux-gnueabi

Native ./configure --with-toolchain=/usr --prefix=/opt/xbmc-deps --host=x86_64-linux-gnu --with-rendersystem=gl

Cross compiling is a PITA.