Permalink
| TOC | |
| 1. Introduction | |
| 2. Getting the source code | |
| 3. Installing the required libraries and headers | |
| 4. How to compile | |
| 4.4 Binary addons | |
| 4.5 Test suite | |
| 5. How to run | |
| 6. Uninstalling | |
| ----------------------------------------------------------------------------- | |
| 1. Introduction | |
| ----------------------------------------------------------------------------- | |
| A graphics-adapter with OpenGL acceleration is highly recommended. | |
| 24/32 bitdepth is required along with OpenGL. | |
| Note to new Linux users: | |
| All lines that are prefixed with the '$' character are commands, | |
| that need to be typed into a terminal window / console. The '$' equals the prompt. | |
| Note: The '$' character itself should NOT be typed as part of the command. | |
| ----------------------------------------------------------------------------- | |
| 2. Getting the source code | |
| ----------------------------------------------------------------------------- | |
| You will have to grab the source code of course, here we use git as example. | |
| First install the git package provided by your distribution. | |
| Then from a terminal, type: | |
| .0 $ cd $HOME | |
| .1 $ git clone git://github.com/xbmc/xbmc.git kodi | |
| Note: You can clone any specific branch. | |
| .1 $ git clone -b <branch> git://github.com/xbmc/xbmc.git kodi | |
| ----------------------------------------------------------------------------- | |
| 3. Installing the required libraries and headers | |
| ----------------------------------------------------------------------------- | |
| You will then need the required libraries. The following is the list of packages | |
| that are used to build Kodi packages on Debian/Ubuntu (with all supported | |
| external libraries enabled). | |
| Build-Depends: autoconf, automake, autopoint, autotools-dev, cmake, curl, | |
| default-jre, gawk, gperf, libao-dev, libasound2-dev, | |
| libass-dev (>= 0.9.8), libavahi-client-dev, libavahi-common-dev, libbluetooth-dev, | |
| libbluray-dev (>= 0.9.3), libbz2-dev, libcap-dev, | |
| libcdio-dev, libcec-dev, libcurl4-openssl-dev | libcurl4-gnutls-dev | libcurl-dev, | |
| libcwiid-dev, libdbus-1-dev, libegl1-mesa-dev, libfmt3-dev, libfontconfig-dev, libfreetype6-dev, | |
| libfribidi-dev, libgif-dev (>= 4.1.6), libgl1-mesa-dev | libgl-dev, libglu1-mesa-dev | libglu-dev, | |
| libiso9660-dev, libjpeg-dev, libltdl-dev, liblzo2-dev, libmicrohttpd-dev, | |
| libmpcdec-dev, libmysqlclient-dev, libnfs-dev, | |
| libpcre3-dev, libplist-dev, libpng12-dev | libpng-dev, libpulse-dev, | |
| libshairplay-dev, libsmbclient-dev, libsqlite3-dev, libssh-dev, libssl-dev, libswscale-dev, | |
| libtag1-dev (>= 1.8), libtinyxml-dev (>= 2.6.2), libtool, libudev-dev, | |
| libusb-dev, libva-dev, libvdpau-dev, libxml2-dev, | |
| libxmu-dev, libxrandr-dev, libxslt1-dev, libxt-dev, lsb-release, rapidjson-dev, | |
| nasm [!amd64], python-dev, python-imaging, python-support, swig, uuid-dev, yasm, zlib1g-dev | |
| If you want to build with Wayland instead of X11, you will need: | |
| wayland-protocols (>= 1.7), libwaylandpp-dev | |
| [NOTICE] crossguid / libcrossguid-dev all Linux distributions. | |
| Kodi now requires crossguid which is not available in Ubuntu repositories at this time. | |
| We supply a Makefile in tools/depends/target/crossguid | |
| to make it easy to install into /usr/local. | |
| $ make -C tools/depends/target/crossguid PREFIX=/usr/local | |
| [NOTICE] libfmt / libfmt3-dev all Linux distributions. | |
| Kodi now requires libfmt which is not available in Ubuntu repositories at this time. | |
| We supply a Makefile in tools/depends/target/libfmt | |
| to make it easy to install into /usr/local. | |
| $ make -C tools/depends/target/libfmt PREFIX=/usr/local | |
| [NOTICE] wayland-protocols all Linux distributions. | |
| Building Kodi with Wayland requires a recent version of wayland-protocols (at least 1.7) | |
| which is not available in the Ubuntu LTS repostiories at this time. | |
| We supply a Makefile in tools/depends/target/wayland-protocols to make it easy to install | |
| into /usr/local. | |
| $ make -C tools/depends/target/wayland-protocols PREFIX=/usr/local | |
| [NOTICE] waylandpp all Linux distributions. | |
| Building Kodi with Wayland requires waylandpp which is not available in repositories | |
| of most major distributions at this time. | |
| We supply a Makefile in tools/depends/target/waylandpp to make it easy to install | |
| into /usr/local. | |
| Note that building waylandpp has some dependencies of its own: scons, | |
| libwayland-dev (>= 1.11.0), libwayland-egl1-mesa | |
| $ make -C tools/depends/target/waylandpp PREFIX=/usr/local | |
| Note: For developers and anyone else who compiles frequently it is recommended to use ccache. | |
| $ sudo apt-get install ccache | |
| ----------------------------------------------------------------------------- | |
| 3.1. Using the Kodi PPA to get all build dependencies (Debian/Ubuntu only) | |
| ----------------------------------------------------------------------------- | |
| For this, you need to specify the PPA in your apt sources. | |
| Please find them on the following wiki link: | |
| Note: See README.ubuntu as well | |
| http://kodi.wiki/index.php?title=Official_Ubuntu_PPA | |
| Update apt: | |
| $ sudo apt-get update | |
| The command to get the build dependencies, used to compile the version on the PPA. | |
| $ sudo apt-get build-dep kodi | |
| ----------------------------------------------------------------------------- | |
| 4. How to compile | |
| ----------------------------------------------------------------------------- | |
| Cmake build instructions V18.0 Leia and higher | |
| Create and change to build directory | |
| $ mkdir kodi-build && cd kodi-build | |
| Run CMake | |
| - for X11 | |
| $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local | |
| - for Wayland | |
| $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DCORE_PLATFORM_NAME=wayland -DWAYLAND_RENDER_SYSTEM=gl | |
| (You can use "gles" instead of "gl" if you want to build with GLES) | |
| Build | |
| $ cmake --build . -- VERBOSE=1 | |
| Tip: By adding -j<number> to the make command, you describe how many | |
| concurrent jobs will be used, it will speed up the build process. | |
| So for quadcore the command is: | |
| $ cmake --build . -- VERBOSE=1 -j4 | |
| If the build process completes succesfully you would want to test if it is working. | |
| Still in the build directory type the following: | |
| $ ./kodi.bin | |
| If everything was okay during your test you can now install the binaries to their place | |
| in this example "/usr/local". | |
| $ sudo make install | |
| This will install Kodi in the prefix provided in 4.1 as well as a launcher script. | |
| Tip: By adding -j<number> to the make command, you describe how many | |
| concurrent jobs will be used. So for dualcore the command is: | |
| $ sudo make install -j2 | |
| Tip: To override the location that Kodi is installed, use PREFIX=<path>. | |
| For example. | |
| $ make install DESTDIR=$HOME/kodi | |
| ----------------------------------------------------------------------------- | |
| 4.4. Binary addons - compile | |
| ----------------------------------------------------------------------------- | |
| From v14 with commit 4090a5f a new API for binary addons is available. | |
| You can compile all addons or only specific addons by specifying e.g. ADDONS="audioencoder.foo pvr.bar audiodecoder.baz" | |
| .0 All addons | |
| $ make -C tools/depends/target/binary-addons PREFIX=/<system prefix added on step 4.1> | |
| .1 Specific addons | |
| $ make -C tools/depends/target/binary-addons PREFIX=/<system prefix added on step 4.1> ADDONS="audioencoder.flac pvr.vdr.vnsi audiodecoder.snesapu" | |
| ADSP addons: | |
| adsp.basic, adsp.biquad.filters, adsp.freesurround | |
| Audio decoders: | |
| audiodecoder.modplug, audiodecoder.nosefart, audiodecoder.sidplay, audiodecoder.snesapu, | |
| audiodecoder.stsound, audiodecoder.timidity, audiodecoder.vgmstream | |
| Audio encoders: | |
| audioencoder.flac, audioencoder.lame, audioencoder.vorbis, audioencoder.wav | |
| Inputstream addons: | |
| inputstream.mpd | |
| Peripheral addons: | |
| peripheral.joystick | |
| PVR addons: | |
| pvr.argustv, pvr.demo, pvr.dvblink, pvr.dvbviewer, pvr.filmon, pvr.hdhomerun, pvr.hts, pvr.iptvsimple, | |
| pvr.mediaportal.tvserver,pvr.mythtv, pvr.nextpvr, pvr.njoy, pvr.pctv, pvr.stalker, pvr.vbox, pvr.vdr.vnsi, | |
| pvr.vuplus, pvr.wmc | |
| Screensavers: | |
| screensaver.asteroids, screensaver.biogenesis, screensaver.greynetic, screensaver.matrixtrails, | |
| screensaver.pingpong, screensaver.pyro, screensavers.rsxs, screensaver.stars | |
| Visualizations | |
| visualization.fishbmc, visualization.goom, visualization.projectm, visualization.shadertoy | |
| visualization.spectrum, visualization.vsxu, visualization.waveform | |
| ----------------------------------------------------------------------------- | |
| 4.5. Test suite | |
| ----------------------------------------------------------------------------- | |
| Kodi has a test suite which uses the Google C++ Testing Framework. | |
| This framework is provided directly in Kodi's source tree. | |
| It has very little requirements, in order to build and run. | |
| See the README file for the framework at 'lib/gtest/README' for specific requirements. | |
| To compile and run Kodi's test suite, type the following: | |
| $ make check | |
| To compile the test suite without running it, type the following. | |
| $ make kodi-test | |
| The test suite program can be run manually as well. | |
| The name of the test suite program is 'kodi-test' and will build in the Kodi source tree. | |
| To bring up the 'help' notes for the program, type the following: | |
| $ ./kodi-test --gtest_help | |
| The most useful options are, | |
| --gtest_list_tests | |
| List the names of all tests instead of running them. | |
| The name of TEST(Foo, Bar) is "Foo.Bar". | |
| --gtest_filter=POSITIVE_PATTERNS[-NEGATIVE_PATTERNS] | |
| Run only the tests whose name matches one of the positive patterns but | |
| none of the negative patterns. '?' matches any single character; '*' | |
| matches any substring; ':' separates two patterns. | |
| ----------------------------------------------------------------------------- | |
| 5. How to run | |
| ----------------------------------------------------------------------------- | |
| How to run Kodi depends on the type of installation you have done. | |
| It is possible to run Kodi without the requirement to install Kodi anywhere else. | |
| In this case, type the following from the top source directory. | |
| $ ./kodi.bin | |
| Or run in 'portable' mode | |
| $ ./kodi.bin -p | |
| If you chose to install Kodi using '/usr' or '/usr/local' as the PREFIX, | |
| you can just issue 'kodi' in a terminal session. | |
| If you have overridden PREFIX to install Kodi into some non-standard location, | |
| you will have to run Kodi by directly running 'kodi.bin'. | |
| For example: | |
| $ $HOME/kodi/usr/lib/kodi/kodi.bin | |
| You should still run the wrapper via | |
| $ $PREFIX/bin/kodi | |
| If you wish to use VDPAU decoding you will now have to change the Render Method | |
| in Settings->Videos->Player from "Auto Detect" to "VDPAU". | |
| ----------------------------------------------------------------------------- | |
| 6. Uninstalling | |
| ----------------------------------------------------------------------------- | |
| Prepend "sudo" to commands, if your user doesn't have write permission to the install directory. | |
| Note: If you have rerun configure with a different prefix, | |
| you will either need to rerun configure with the correct prefix for this step to work correctly. | |
| $ make uninstall | |
| .0 $ sudo make uninstall | |
| If you would like to also remove any settings and 3rd party addons (skins, scripts, etc) | |
| you should also run: | |
| .1 $ rm -rf ~/.kodi | |
| EOF |