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 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, liblirc-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 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 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=. 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=/ .1 Specific addons $ make -C tools/depends/target/binary-addons PREFIX=/ ADDONS="audioencoder.flac pvr.vdr.vnsi audiodecoder.snesapu" 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