summaryrefslogtreecommitdiffstats
path: root/tools/depends/README.md
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tools/depends/README.md56
1 files changed, 56 insertions, 0 deletions
diff --git a/tools/depends/README.md b/tools/depends/README.md
new file mode 100644
index 0000000..64fb3f0
--- /dev/null
+++ b/tools/depends/README.md
@@ -0,0 +1,56 @@
+![Kodi Logo](../../docs/resources/banner_slim.png)
+
+# 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](http://jenkins.kodi.tv/)**. 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](../../docs/README.md)**.
+### 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`
+
+**Native**
+`./configure --with-toolchain=/usr --prefix=/opt/xbmc-deps --host=x86_64-linux-gnu --with-rendersystem=gl`
+
+Cross compiling is a PITA.