[windows] Fix MAC Address Discovery
[xbmc.git] / docs / README.Ubuntu.md
blob236f3a34f1f7eb048f4d8cf7cc5e41584760db87
1 ![Kodi Logo](resources/banner_slim.png)
3 # Debian/Ubuntu build guide
4 This guide has been tested with Ubuntu 16.04.4 (Xenial) x86_64, 18.04 (Bionic) and 20.04 (Focal). Please read it in full before you proceed to familiarize yourself with the build procedure.
6 Several other distributions have **[specific build guides](README.md)** and a general **[Linux build guide](README.Linux.md)** is also available.
8 ## Table of Contents
9 1. **[Document conventions](#1-document-conventions)**
10 2. **[Get the source code](#2-get-the-source-code)**
11 3. **[Install the required packages](#3-install-the-required-packages)**  
12   3.1. **[Get build dependencies automagically](#31-get-build-dependencies-automagically)**  
13   3.2. **[Get build dependencies manually](#32-get-build-dependencies-manually)**   
14   3.3. **[Ubuntu <= 18.04](#33-ubuntu--1804)**
15 4. **[Build Kodi](#4-build-kodi)**
17 ## 1. Document conventions
18 This guide assumes you are using `terminal`, also known as `console`, `command-line` or simply `cli`. Commands need to be run at the terminal, one at a time and in the provided order.
20 This is a comment that provides context:
21 ```
22 this is a command
23 this is another command
24 and yet another one
25 ```
27 **Example:** Clone Kodi's current master branch:
28 ```
29 git clone https://github.com/xbmc/xbmc kodi
30 ```
32 Commands that contain strings enclosed in angle brackets denote something you need to change to suit your needs.
33 ```
34 git clone -b <branch-name> https://github.com/xbmc/xbmc kodi
35 ```
37 **Example:** Clone Kodi's current Krypton branch:
38 ```
39 git clone -b Krypton https://github.com/xbmc/xbmc kodi
40 ```
42 Several different strategies are used to draw your attention to certain pieces of information. In order of how critical the information is, these items are marked as a note, tip, or warning. For example:
44 > [!NOTE]  
45 > Linux is user friendly... It's just very particular about who its friends are.
47 > [!TIP]
48 > Algorithm is what developers call code they do not want to explain.
50 > [!WARNING]  
51 > Developers don't change light bulbs. It's a hardware problem.
53 **[back to top](#table-of-contents)** | **[back to section top](#1-document-conventions)**
55 ## 2. Get the source code
56 Make sure `git` is installed:
57 ```
58 sudo apt install git
59 ```
61 Change to your `home` directory:
62 ```
63 cd $HOME
64 ```
66 Clone Kodi's current master branch:
67 ```
68 git clone https://github.com/xbmc/xbmc kodi
69 ```
71 **[back to top](#table-of-contents)**
73 ## 3. Install the required packages
74 You can install the required packages using one of two methods: automagically or manually. Please use the former whenever possible.
76 > [!WARNING]  
77 > Oldest supported Ubuntu version is 16.04 (Xenial). It is possible to build on older Ubuntu releases but due to outdated packages it will require considerable fiddling. Sorry, you're on your own if you decide to go down that particular rabbit hole.
79 ### 3.1. Get build dependencies automagically
80 Add Kodi's *nightly* PPA to grab dependencies:
81 ```
82 sudo add-apt-repository -s ppa:team-xbmc/xbmc-nightly
83 ```
85 If you're using Ubuntu 16.04, *build-depends* PPA is also required:
86 ```
87 sudo add-apt-repository ppa:team-xbmc/xbmc-ppa-build-depends
88 sudo apt update
89 ```
91 Super-duper magic command to get the build dependencies:
92 ```
93 sudo apt build-dep kodi
94 ```
96 > [!WARNING]  
97 > Do not use `aptitude` for the `build-dep` command. It doesn't resolve everything properly.
99 If at a later point you decide you do not want Kodi's PPAs on your system, removing them is as easy as:
101 sudo add-apt-repository -r ppa:team-xbmc/xbmc-nightly
102 sudo add-apt-repository -r ppa:team-xbmc/xbmc-ppa-build-depends
105 > [!NOTE]  
106 > For developers and anyone else who builds frequently it is recommended to install `ccache` to expedite subsequent builds of Kodi.
108 You can install it with:
110 sudo apt install ccache
113 > [!TIP]
114 > If you have multiple computers at home, `distcc` will distribute build workloads of C and C++ code across several machines on a network. Team Kodi may not be willing to give support if problems arise using such a build configuration.
116 You can install it with:
118 sudo apt install distcc
121 ### 3.2. Get build dependencies manually
122 If you get a `package not found` type of message with the below command, remove the offending package(s) from the install list and reissue the command. Take a note of the missing dependencies and, after a successful step completion, **[build the missing dependencies manually](README.Linux.md#31-build-missing-dependencies)**.
124 > [!NOTE]  
125 > Kodi requires a compiler with C++17 support, i.e. gcc >= 7 or clang >= 5
127 Install build dependencies manually:
129 sudo apt install debhelper autoconf automake autopoint gettext autotools-dev cmake curl default-jre doxygen gawk gcc gdc gperf libasound2-dev libass-dev libavahi-client-dev libavahi-common-dev libbluetooth-dev libbluray-dev libbz2-dev libcdio-dev libp8-platform-dev libcrossguid-dev libcurl4-openssl-dev libcwiid-dev libdbus-1-dev libdrm-dev libegl1-mesa-dev libenca-dev libflac-dev libfmt-dev libfontconfig-dev libfreetype6-dev libfribidi-dev libfstrcmp-dev libgcrypt-dev libgif-dev libgles2-mesa-dev libgl1-mesa-dev libglu1-mesa-dev libgnutls28-dev libgpg-error-dev libgtest-dev libiso9660-dev libjpeg-dev liblcms2-dev libltdl-dev liblzo2-dev libmicrohttpd-dev libmysqlclient-dev libnfs-dev libogg-dev libpcre3-dev libplist-dev libpng-dev libpulse-dev libshairplay-dev libsmbclient-dev libspdlog-dev libsqlite3-dev libssl-dev libtag1-dev libtiff5-dev libtinyxml-dev libtinyxml2-dev libtool libudev-dev libunistring-dev libva-dev libvdpau-dev libvorbis-dev libxmu-dev libxrandr-dev libxslt1-dev libxt-dev lsb-release meson nasm ninja-build python3-dev python3-pil python3-pip rapidjson-dev swig unzip uuid-dev zip zlib1g-dev
132 > [!WARNING]  
133 > Make sure you copy paste the entire line or you might receive an error or miss a few dependencies.
135 If you're using Ubuntu 16.04, you also need to install:
137 sudo apt install libcec4-dev libfmt3-dev liblircclient-dev
140 If you're using Ubuntu 18.04 and later, you also need to install:
142 sudo apt install libcec-dev libfmt-dev liblirc-dev
145 Flatbuffers (Ubuntu < 20.04, from PPA repository):
147 sudo apt install flatbuffers-dev
150 Flatbuffers (Ubuntu >= 20.04):
152 sudo apt install libflatbuffers-dev
155 Building for Wayland requires some extra packages:
157 sudo apt install libglew-dev libwayland-dev libxkbcommon-dev waylandpp-dev wayland-protocols
160 Similarly, building for GBM also requires some extra packages:
162 sudo apt install libgbm-dev libinput-dev libxkbcommon-dev
165 Optional packages that you might want to install for extra functionality (generating doxygen documentation, for instance):
167 sudo apt install doxygen libcap-dev libsndio-dev libmariadbd-dev
170 **[back to top](#table-of-contents)**
172 ### 3.3 Ubuntu <= 18.04
173 Ubuntu 18.04 and lower ship an outdated [Meson](https://mesonbuild.com/) and [nasm](https://nasm.us/) package. 
174 In order to compile Kodi with AV1 support, you have to manually update both Meson and nasm.
176 > This is a requirement by the [dav1d](https://code.videolan.org/videolan/dav1d) AV1 decoder used in ffmpeg.
178 #### Meson
180 pip3 install --user meson
183 Make sure `~/.local/bin` is in your PATH.
185 Verify your Meson version by running `meson -v`. The version displayed should be >= 0.47.0.
187 #### nasm (x86_64 / amd64)
189 wget https://mirrors.edge.kernel.org/ubuntu/pool/universe/n/nasm/nasm_2.14-1_amd64.deb && sudo apt install ./nasm_2.14-1_amd64.deb
192 Verify your nasm version by running `nasm -v`. The version displayed should be >= 2.14.
194 ## 4. Build Kodi
195 See the general **[Linux build guide](README.Linux.md)** for reference.
197 **[back to top](#table-of-contents)**