summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmake/README.md315
-rw-r--r--cmake/addons/CMakeLists.txt2
-rw-r--r--cmake/addons/README.md2
-rw-r--r--cmake/addons/depends/common/tinyxml/tinyxml.sha2561
-rw-r--r--cmake/cpack/deb/copyright216
-rw-r--r--cmake/cpack/deb/packages/kodi-bin.txt.in2
-rw-r--r--cmake/cpack/deb/packages/kodi-tools-texturepacker.txt.in2
-rw-r--r--cmake/cpack/deb/packages/kodi.txt.in2
-rw-r--r--cmake/installdata/common/certificates.txt (renamed from cmake/installdata/ios/certificates.txt)0
-rw-r--r--cmake/installdata/ios/packaging.txt2
-rw-r--r--cmake/installdata/osx/certificates.txt1
-rw-r--r--cmake/installdata/osx/packaging.txt2
-rw-r--r--cmake/installdata/windowsstore/certificates.txt1
-rw-r--r--cmake/messages/flatbuffers/retroplayer.txt1
-rw-r--r--cmake/modules/FindAML.cmake2
-rw-r--r--cmake/modules/FindASS.cmake2
-rw-r--r--cmake/modules/FindAlsa.cmake2
-rw-r--r--cmake/modules/FindAvahi.cmake2
-rw-r--r--cmake/modules/FindBluetooth.cmake2
-rw-r--r--cmake/modules/FindBluray.cmake21
-rw-r--r--cmake/modules/FindCEC.cmake21
-rw-r--r--cmake/modules/FindCWiid.cmake2
-rw-r--r--cmake/modules/FindCdio.cmake2
-rw-r--r--cmake/modules/FindCurl.cmake2
-rw-r--r--cmake/modules/FindDBus.cmake2
-rw-r--r--cmake/modules/FindEGL.cmake2
-rw-r--r--cmake/modules/FindFFMPEG.cmake28
-rw-r--r--cmake/modules/FindFlatBuffers.cmake72
-rw-r--r--cmake/modules/FindFmt.cmake15
-rw-r--r--cmake/modules/FindFreeType.cmake2
-rw-r--r--cmake/modules/FindFriBidi.cmake2
-rw-r--r--cmake/modules/FindGBM.cmake28
-rw-r--r--cmake/modules/FindGIF.cmake2
-rw-r--r--cmake/modules/FindGLX.cmake2
-rw-r--r--cmake/modules/FindIconv.cmake2
-rw-r--r--cmake/modules/FindLCMS2.cmake2
-rw-r--r--cmake/modules/FindLibDRM.cmake4
-rw-r--r--cmake/modules/FindLibDvd.cmake11
-rw-r--r--cmake/modules/FindLibInput.cmake36
-rw-r--r--cmake/modules/FindLibUSB.cmake2
-rw-r--r--cmake/modules/FindLircClient.cmake2
-rw-r--r--cmake/modules/FindLzo2.cmake2
-rw-r--r--cmake/modules/FindMDNS.cmake2
-rw-r--r--cmake/modules/FindMariaDBClient.cmake2
-rw-r--r--cmake/modules/FindMicroHttpd.cmake2
-rw-r--r--cmake/modules/FindMir.cmake33
-rw-r--r--cmake/modules/FindMySqlClient.cmake2
-rw-r--r--cmake/modules/FindNFS.cmake2
-rw-r--r--cmake/modules/FindOpenGLES.cmake2
-rw-r--r--cmake/modules/FindOpenGl.cmake2
-rw-r--r--cmake/modules/FindPCRE.cmake2
-rw-r--r--cmake/modules/FindPlist.cmake2
-rw-r--r--cmake/modules/FindSSE.cmake4
-rw-r--r--cmake/modules/FindSSH.cmake47
-rw-r--r--cmake/modules/FindSWIG.cmake2
-rw-r--r--cmake/modules/FindSdl.cmake2
-rw-r--r--cmake/modules/FindShairplay.cmake2
-rw-r--r--cmake/modules/FindSmbClient.cmake2
-rw-r--r--cmake/modules/FindSndio.cmake2
-rw-r--r--cmake/modules/FindSqlite3.cmake2
-rw-r--r--cmake/modules/FindTagLib.cmake2
-rw-r--r--cmake/modules/FindTinyXML.cmake2
-rw-r--r--cmake/modules/FindUDEV.cmake2
-rw-r--r--cmake/modules/FindUUID.cmake2
-rw-r--r--cmake/modules/FindVAAPI.cmake2
-rw-r--r--cmake/modules/FindVDPAU.cmake2
-rw-r--r--cmake/modules/FindWaylandProtocols.cmake2
-rw-r--r--cmake/modules/FindWaylandpp.cmake50
-rw-r--r--cmake/modules/FindX.cmake2
-rw-r--r--cmake/modules/FindXRandR.cmake2
-rw-r--r--cmake/modules/FindXSLT.cmake2
-rw-r--r--cmake/modules/FindXkbcommon.cmake39
-rw-r--r--cmake/modules/FindYajl.cmake2
-rw-r--r--cmake/modules/FindZip.cmake2
-rw-r--r--cmake/modules/Findfstrcmp.cmake80
-rw-r--r--cmake/platform/freebsd/gbm.cmake1
-rw-r--r--cmake/platform/freebsd/rbpi.cmake1
-rw-r--r--cmake/platform/linux/aml.cmake2
-rw-r--r--cmake/platform/linux/gbm.cmake19
-rw-r--r--cmake/platform/linux/mir.cmake3
-rw-r--r--cmake/platform/linux/rbpi.cmake2
-rw-r--r--cmake/platform/linux/wayland.cmake2
-rw-r--r--cmake/platform/linux/x11.cmake1
-rw-r--r--cmake/scripts/android/Install.cmake2
-rw-r--r--cmake/scripts/common/AddonHelpers.cmake19
-rw-r--r--cmake/scripts/common/ArchSetup.cmake7
-rw-r--r--cmake/scripts/common/CheckTargetPlatform.cmake4
-rw-r--r--cmake/scripts/common/HandleDepends.cmake16
-rw-r--r--cmake/scripts/common/Macros.cmake14
-rw-r--r--cmake/scripts/common/ProjectMacros.cmake2
-rw-r--r--cmake/scripts/freebsd/ArchSetup.cmake9
-rw-r--r--cmake/scripts/freebsd/ExtraTargets.cmake30
-rw-r--r--[l---------]cmake/scripts/freebsd/Macros.cmake96
-rw-r--r--cmake/scripts/ios/Install.cmake3
-rw-r--r--cmake/scripts/linux/ArchSetup.cmake4
-rw-r--r--cmake/scripts/linux/Install.cmake18
-rw-r--r--cmake/scripts/linux/Macros.cmake2
-rw-r--r--cmake/scripts/osx/ArchSetup.cmake2
-rw-r--r--cmake/scripts/windows/ArchSetup.cmake6
-rw-r--r--cmake/scripts/windowsstore/ArchSetup.cmake32
-rw-r--r--cmake/scripts/windowsstore/Macros.cmake14
-rw-r--r--cmake/treedata/android/subdirs.txt2
-rw-r--r--cmake/treedata/common/drm.txt1
-rw-r--r--cmake/treedata/common/games.txt3
-rw-r--r--cmake/treedata/common/retroplayer.txt7
-rw-r--r--cmake/treedata/freebsd/subdirs.txt4
-rw-r--r--cmake/treedata/optional/common/mir.txt1
-rw-r--r--version.txt6
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/AddonBase.h33
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/Filesystem.h31
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/General.h27
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/Network.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/StreamCodec.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/StreamCrypto.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/AudioDecoder.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/AudioEncoder.h29
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/ImageDecoder.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Inputstream.h25
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Peripheral.h25
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/PeripheralUtils.h112
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Screensaver.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/VFS.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/VideoCodec.h24
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Visualization.h35
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/General.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/ListItem.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/Window.h27
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Button.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Edit.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/FadeLabel.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Image.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Label.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Progress.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/RadioButton.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Rendering.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/SettingsSlider.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Slider.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Spin.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/TextBox.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/definitions.h25
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/ContextMenu.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/ExtendedProgress.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/FileBrowser.h27
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Keyboard.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Numeric.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/OK.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Progress.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Select.h27
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/TextViewer.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/YesNo.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_dll.h35
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_types.h407
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_vfs_types.h19
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_game.h117
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_guilib.h31
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h33
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_pvr.h25
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/platform/android/System.h44
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/tools/DllHelper.h23
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/versions.h35
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_dll.h24
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_types.h24
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_epg_types.h25
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h266
-rw-r--r--xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_types.h36
-rw-r--r--xbmc/cores/AudioEngine/Utils/AEChannelData.h23
-rw-r--r--xbmc/cores/VideoPlayer/Interface/Addon/DemuxCrypto.h31
-rw-r--r--xbmc/cores/VideoPlayer/Interface/Addon/DemuxPacket.h24
-rw-r--r--xbmc/cores/VideoPlayer/Interface/Addon/TimingConstants.h34
-rw-r--r--xbmc/filesystem/IFileTypes.h20
-rw-r--r--xbmc/input/ActionIDs.h24
-rw-r--r--xbmc/input/XBMC_vkeys.h33
-rw-r--r--xbmc/interfaces/json-rpc/schema/version.txt2
173 files changed, 1578 insertions, 2336 deletions
diff --git a/cmake/README.md b/cmake/README.md
index c1b953f..8637da6 100644
--- a/cmake/README.md
+++ b/cmake/README.md
@@ -1,326 +1,85 @@
1# Kodi CMake based buildsystem 1![Kodi Logo](../docs/resources/banner_slim.png)
2 2
3This files describes Kodi's CMake based buildsystem. CMake is a cross-platform 3# Kodi's CMake Based Build System
4tool for generating makefiles as well as project files used by IDEs. 4Welcome to Kodi's CMake Based Build System. CMake is a cross-platform tool for generating makefiles as well as project files used by IDEs. The current version of the build system is capable of building and packaging Kodi for the following platforms:
5 5
6The current version of the buildsystem is capable of building and packaging 6* Linux (several distros)
7Kodi for the following platforms: 7* Windows
8* macOS and iOS
9* Android
10* FreeBSD
8 11
9- Linux (GNU Makefiles, Ninja) 12While the legacy build systems typically used in-source builds, it's recommended to use out-of-source builds with CMake. The necessary runtime dependencies such as dlls, skins and configuration files are copied over to the build directory automatically. Instructions are highly dependent on your operating system and target platform but we prepared a set of **[build guides](../docs/README.md)** for your convenience.
10- Windows (NMake Makefiles, Visual Studio 14 (2015), Ninja)
11- macOS and iOS (GNU Makefiles, Xcode, Ninja)
12- Android (GNU Makefiles)
13- FreeBSD (GNU Makefiles)
14 13
15Before building Kodi with CMake, please ensure that you have the platform 14## Build options
16specific dependencies installed. 15Kodi supports a number of build options that can enable or disable functionality. These options must be set when running CMake with `-DENABLE_<OPTION>=<ON|OFF|AUTO`. The default is `AUTO` which enables the option if a certain dependency is found. For example CEC support is enabled if `libCEC` is available. `ON` forcefully enables the dependency and the CMake run will **fail** if the related dependency is not available. `OFF` will disable the feature.
17
18While the legacy build systems typically used in-source builds it's recommended
19to use out-of-source builds with CMake. The necessary runtime dependencies such
20as dlls, skins and configuration files are copied over to the build directory
21automatically.
22
23## Dependency installation
24
25### Linux
26
27The dependencies required to build on Linux can be found in
28[docs/README.xxx](https://github.com/xbmc/xbmc/tree/master/docs).
29
30### Raspberry Pi
31
32The cross compilation environment for the Raspberry Pi as well as the
33dependencies have to be installed as explained in
34[docs/README.raspberrypi](https://github.com/xbmc/xbmc/tree/master/docs/README.raspberrypi).
35
36### Windows
37
38For Windows the dependencies can be found in the
39[Wiki](https://kodi.wiki/view/HOW-TO:Compile_Kodi_for_Windows#Setting_up_the_build_Environment) (Step 1-4). If not already available on your pc, you should
40install the [Windows Software Development Kit (SDK)](https://dev.windows.com/en-us/downloads/sdk-archive) for your Windows version. This is required for HLSL shader offline compiling with the [Effect-Compiler Tool](https://msdn.microsoft.com/de-de/library/windows/desktop/bb232919(v=vs.85).aspx) (fxc.exe).
41
42On Windows, the CMake based buildsystem requires that the binary dependencies
43are downloaded using `download-dependencies.bat` and `download-msys2.bat`
44and that the mingw libs (ffmpeg, libdvd and others) are built using
45`make-mingwlibs.bat`.
46
47### macOS
48
49For macOS the required dependencies can be found in
50[docs/README.osx.md](https://github.com/xbmc/xbmc/tree/master/docs/README.osx.md).
51
52On macOS it is necessary to build the dependencies in `tools/depends` using
53`./bootstrap && ./configure --host=<PLATFORM> && make`. The other steps such
54as `make -C tools/depends/target/xbmc` and `make xcode_depends` are not needed
55as these steps are covered already by the CMake project.
56
57### Android
58
59The dependencies needed to compile for Android can be found in
60[docs/README.android](https://github.com/xbmc/xbmc/tree/master/docs/README.android)
61. All described steps have to be executed (except 5.2 which is replaced by the
62respective CMake command below).
63
64## Building Kodi
65
66This section lists the necessary commands for building Kodi with CMake.
67CMake supports different generators that can be classified into two categories:
68single- and multiconfiguration generators.
69
70A single configuration generator (GNU/NMake Makefiles) generates project files
71for a single build type (e.g. Debug, Release) specified at configure time.
72Multi configuration generators (Visual Studio, Xcode) allow to specify the
73build type at compile time.
74
75All examples below are for out-of-source builds with Kodi checked out to
76`<KODI_SRC>`:
77
78```
79mkdir kodi-build && cd kodi-build
80```
81
82### Linux with GNU Makefiles
83
84```
85cmake <KODI_SRC>
86cmake --build . -- VERBOSE=1 -j$(nproc) # or: make VERBOSE=1 -j$(nproc)
87./kodi.bin
88```
89
90`CMAKE_BUILD_TYPE` defaults to `Release`.
91
92#### Debian package generation
93The buildsystem is capable of generating Debian packages using CPack. To generate them, `CPACK_GENERATOR` has to be set to *DEB*, i.e. executing CMake's configure step with `-DCPACK_GENERATOR=DEB`.
94You should use CMake/CPack 3.6.0 or higher. Lower versions can generate the packages but package names will be mangled.
95
96The following optional variables (which can be passed to buildsystem when executing cmake with the -D`<variable-name>=<value>` format) can be used to manipulate package type, name and version:
97
98- `DEBIAN_PACKAGE_TYPE` controls the name and version of generated packages. Accepted values are `stable`, `unstable` and `nightly` (default is `nightly`).
99- `DEBIAN_PACKAGE_EPOCH` controls package epoch (default is `2`)
100- `DEBIAN_PACKAGE_VERSION` controls package version (default is `0`)
101- `DEBIAN_PACKAGE_REVISION` controls package revision (no default is set)
102
103Packages metadata can be changed simply by editing files present in the `cpack/deb` folder
104A lot more variables are available (see cpack/CPackDebian.cmake file) but you shouldn't mess with them unless you know what you're doing.
105
106Generated packages can be found in <BUILD_DIR>/packages.
107
108### Raspberry Pi with GNU Makefiles
109
110```
111cmake -DCMAKE_TOOLCHAIN_FILE=<KODI_SRC>/tools/depends/target/Toolchain.cmake <KODI_SRC>
112cmake --build . -- VERBOSE=1 -j$(nproc) # or: make VERBOSE=1 -j$(nproc)
113```
114
115### Windows with Visual Studio project files
116These instructions are for Visual Studio 2015. If you want to build for Visal Studio 2017, you need to target `Visual Studio 15` instead of `Visual Studio 14`.
117
118#### Build for win32
119```
120cmake -G "Visual Studio 14" <KODI_SRC>
121cmake --build . --config "Debug" # or: Build solution with Visual Studio
122Debug\kodi.exe
123```
124
125Building on a x64 cpu can be improved, if you're on a cmake version > 3.8:
126```
127cmake -G "Visual Studio 14" -T host=x64 <KODI_SRC>
128cmake --build . --config "Debug" # or: Build solution with Visual Studio
129Debug\kodi.exe
130```
131This will choose the x64 toolset, as windows uses the x32 toolset by default.
132
133#### Build for x64
134```
135cmake -G "Visual Studio 14 Win64" <KODI_SRC>
136cmake --build . --config "Debug" # or: Build solution with Visual Studio
137Debug\kodi.exe
138```
139
140Building on a x64 cpu can be improved, if you're on a cmake version > 3.8:
141```
142cmake -G "Visual Studio 14 Win64" -T host=x64 <KODI_SRC>
143cmake --build . --config "Debug" # or: Build solution with Visual Studio
144Debug\kodi.exe
145```
146This will choose the x64 toolset, as windows uses the x32 toolset by default.
147
148You can always check ``cmake --help` to see which generators are available and how to call those.
149
150#### Windows installer generation
151
152The script [project/Win32BuildSetup](https://github.com/xbmc/xbmc/blob/master/tools/buildsteps/windows/win32/BuildSetup.bat) or [project/Win64BuildSetup](https://github.com/xbmc/xbmc/blob/master/tools/buildsteps/windows/x64/BuildSetup.bat)
153builds an installable package for Windows. Choose either 32bit or 64bit, depending on what your trying to build.
154
155### Windows with NMake Makefiles
156
157```
158cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release <KODI_SRC>
159cmake --build . # or: nmake
160kodi.exe
161```
162
163### macOS with GNU Makefiles
164
165```
166cmake -DCMAKE_TOOLCHAIN_FILE=<KODI_SRC>/tools/depends/target/Toolchain.cmake <KODI_SRC>
167cmake --build . -- VERBOSE=1 -j$(sysctl -n hw.ncpu) # or: make VERBOSE=1 -j$(sysctl -n hw.ncpu)
168./kodi.bin
169```
170
171### macOS with Xcode project files
172
173```
174cmake -DCMAKE_TOOLCHAIN_FILE=<KODI_SRC>/tools/depends/target/Toolchain.cmake -G "Xcode" <KODI_SRC>
175cmake --build . --config "Release" -- -verbose -jobs $(sysctl -n hw.ncpu) # or: Build solution with Xcode
176./Release/kodi.bin
177```
178
179#### macOS installer generation
180
181Afterwards an installable DMG for macOS can be built with the following command:
182
183```
184cmake --build . --config "Release" --target "dmg" # or: make dmg
185```
186
187#### iOS package generation
188
189Consequently an installable DEB for iOS can be built with the following command:
190
191```
192make deb
193```
194
195### Android with GNU Makefiles
196
197```
198cmake -DCMAKE_TOOLCHAIN_FILE=<KODI_SRC>/tools/depends/target/Toolchain.cmake <KODI_SRC>
199cmake --build . -- VERBOSE=1 -j$(nproc) # or: make VERBOSE=1 -j$(nproc)
200```
201
202#### Android package generation
203
204An installable APK for Android can be built with the following command:
205
206```
207make apk
208```
209
210## Options
211
212Kodi supports a number of build options that can enable or disable certain
213functionality.i These options must be set when running CMake with
214`-DENABLE_<OPTION>=<ON|OFF|AUTO`. The default is `AUTO` which enables
215the option if a certain dependency is found. For example CEC support is
216enabled if libCEC is available. `ON` forcefully enables the dependency
217and the CMake run will fail if the related dependency is not available.
218This is mostly useful for packagers. `OFF` will disable the feature.
219 16
220Example for forcefully enabling VAAPI and disabling VDPAU: 17Example for forcefully enabling VAAPI and disabling VDPAU:
221
222``` 18```
223cmake ... -DENABLE_VAAPI=ON -DENABLE_VDPAU=OFF ... 19cmake ... -DENABLE_VAAPI=ON -DENABLE_VDPAU=OFF ...
224``` 20```
225 21
226Example for building with external FFMPEG: 22Unfortunately, Kodi's CMake gazillion options are not fully documented yet. For more information and an updated list of options, please check the main **[CMakeLists.txt](../CMakeLists.txt)**.
227
228```
229cmake ... -DFFMPEG_PATH=/opt/ffmpeg -DENABLE_INTERNAL_FFMPEG=OFF ...
230```
231
232For more information and an updated list of option, please check the
233main [CMakeLists.txt](https://github.com/xbmc/xbmc/tree/master/CMakeLists.txt).
234 23
235## Tests 24## Tests
25Kodi uses Google Test as its testing framework. Each test file is scanned for tests and these are added to CTest, which is the native test driver for CMake.
236 26
237Kodi uses Google Test as its testing framework. Each test file is scanned for tests and these 27This scanning happens at configuration time. If tests depend on generated support files which should not be scanned, then those support files should be added to the `SUPPORT_SOURCES` variable as opposed to `SOURCES` before calling `core_add_test`. You might want to do this where the generated support files would not exist at configure time, or if they are so large that scanning them would take up an unreasonable amount of configure time.
238are added to CTest, which is the native test driver for CMake.
239
240This scanning happens at configuration time. If tests depend on generated support files which
241should not be scanned, then those support files should be added to the SUPPORT_SOURCES
242variable as opposed to SOURCES before calling core_add_test. You might want to do this where
243the generated support files would not exist at configure time, or if they are so large that
244scanning them would take up an unreasonable amount of configure time.
245 28
246## Extra targets 29## Extra targets
30When using makefile builds, a few extra targets are defined:
247 31
248When using the makefile builds a few extra targets are defined: 32* `make check` builds and executes the test suite.
249 33* `make check-valgrind` builds and executes the test suite with valgrind memcheck.
250- `make check` builds and executes the test suite. 34* `make doc` builds the Doxygen documentation.
251- `make check-valgrind` builds and executes the test suite with valgrind memcheck.
252- `make doc` builds the Doxygen documentation.
253 35
254Code coverage (with Gcov, LCOV and Gcovr) can be built on Linux: 36Code coverage (with Gcov, LCOV and Gcovr) can be built on Linux:
255 37
256- CMake has to be executed with `-DCMAKE_BUILD_TYPE=Coverage` 38* CMake has to be executed with `-DCMAKE_BUILD_TYPE=Coverage`.
257- `make coverage` generates an HTML code coverage report. 39* `make coverage` generates an HTML code coverage report.
258- `make coverage_xml` generates an XML code coverage report. 40* `make coverage_xml` generates an XML code coverage report.
259 41
260## Building binary addons 42## Building binary addons
43Kodi's CMake build system integrates with the add-on build system if the GNU Makefile generator is used. This offers an easy way to build add-ons for packagers or Kodi developers who don't work on add-ons.
261 44
262The CMake build system integrates with the addon build system if the GNU 45Build all add-ons:
263Makefile generator is used. This offers an easy way to build addons for
264packagers or Kodi developers who don't work on addons.
265
266``` 46```
267make binary-addons 47make binary-addons
268``` 48```
269 49
270Specific addons can be built with: 50Build specific add-ons:
271
272``` 51```
273make binary-addons ADDONS="visualization.spectrum pvr.demo" 52make binary-addons ADDONS="visualization.spectrum pvr.demo"
274``` 53```
275 54
276Addon developers can build single addons into the Kodi build directory 55Add-on developers can build single add-ons into the Kodi build directory so that the add-on can be tested with self-compiled specific versions of Kodi.
277so that the addon can be tested with self-compiled specific versions of Kodi.
278
279``` 56```
280mkdir pvr.demo-build && cd pvr.demo-build 57mkdir pvr.demo-build
58cd pvr.demo-build
281cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH=<KODI_BUILD_DIR>/build -DKODI_BUILD_DIR=<KODI_BUILD_DIR> <pvr.demo-SRC> 59cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH=<KODI_BUILD_DIR>/build -DKODI_BUILD_DIR=<KODI_BUILD_DIR> <pvr.demo-SRC>
282make 60make
283``` 61```
284 62
285It is recommended to specify the directories as absolute paths. If relative 63It is recommended to specify the directories as absolute paths. If relative paths are used, they are considered relative to the build directory in which `cmake` was executed (the current working directory).
286paths are used, they are considered relative to the build directory in which
287`cmake` was executed (aka the current working working directory).
288 64
289Both methods work only for already existing addons. See this 65Both methods work only for already existing add-ons. See this **[forum thread](https://forum.kodi.tv/showthread.php?tid=219166&pid=1934922)** and add-ons **[README](cmake/addons/README.md)**
290[forum thread](http://forum.kodi.tv/showthread.php?tid=219166&pid=1934922#pid1934922) 66for add-on development and detailed documentation about the add-on build system.
291and [addons/README.md](https://github.com/xbmc/xbmc/blob/master/cmake/addons/README.md)
292for addon development and detailed documentation about the addon build system.
293 67
294## Sanitizers 68## Sanitizers
69Clang and GCC support different kinds of sanitizers. To enable a sanitizer, call CMake with the option `-DECM_ENABLE_SANITIZERS=’san1;san2;...'`. For more information about enabling the
70sanitizers, read the module **[documentation](modules/extra/ECMEnableSanitizers.cmake)**.
295 71
296Clang and GCC support different kinds of Sanitizers. To enable a Sanitizer call CMake with the 72It is also recommended to read the sections about sanitizers in the [Clang documentation](http://clang.llvm.org/docs/).
297option `-DECM_ENABLE_SANITIZERS=’san1;san2;...'`. For more information about enabling the
298Sanitizers read the documentation in
299[modules/extra/ECMEnableSanitizers.cmake](https://github.com/xbmc/xbmc/tree/master/cmake/modules/extra/ECMEnableSanitizers.cmake).
300
301It is also recommended to read the sections about the Sanitizers in the [Clang
302documentation](http://clang.llvm.org/docs/).
303 73
304## Debugging the build 74## Debugging the build
75In order to see the exact compiler commands `make` and `nmake` can be executed with a `VERBOSE=1` parameter.
305 76
306This section covers some tips that can be useful for debugging a CMake 77On Windows, this is unfortunately not enough because `nmake` uses temporary files to workaround `nmake`'s command string length limitations.
307based build. 78In order to see verbose output the file **[Modules/Platform/Windows.cmake](https://github.com/Kitware/CMake/blob/master/Modules/Platform/Windows.cmake#L40)** in the local CMake installation has to be adapted by uncommenting these lines:
308
309### Verbosity (show compiler and linker parameters)
310
311In order to see the exact compiler commands `make` and `nmake` can be
312executed with a `VERBOSE=1` parameter.
313
314On Windows, this is unfortunately not enough because `nmake` uses
315temporary files to workaround `nmake`'s command string length limitations.
316In order to see verbose output the file
317[Modules/Platform/Windows.cmake](https://github.com/Kitware/CMake/blob/master/Modules/Platform/Windows.cmake#L40)
318in the local CMake installation has to be adapted by uncommenting these
319lines:
320
321``` 79```
322# uncomment these out to debug nmake and borland makefiles 80# uncomment these out to debug nmake and borland makefiles
323#set(CMAKE_START_TEMP_FILE "") 81#set(CMAKE_START_TEMP_FILE "")
324#set(CMAKE_END_TEMP_FILE "") 82#set(CMAKE_END_TEMP_FILE "")
325#set(CMAKE_VERBOSE_MAKEFILE 1) 83#set(CMAKE_VERBOSE_MAKEFILE 1)
326``` 84```
85
diff --git a/cmake/addons/CMakeLists.txt b/cmake/addons/CMakeLists.txt
index 5db5dba..5fc798b 100644
--- a/cmake/addons/CMakeLists.txt
+++ b/cmake/addons/CMakeLists.txt
@@ -1,4 +1,4 @@
1cmake_minimum_required(VERSION 3.3) 1cmake_minimum_required(VERSION 3.5)
2project(kodi-addons) 2project(kodi-addons)
3 3
4list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}) 4list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR})
diff --git a/cmake/addons/README.md b/cmake/addons/README.md
index 6470ee1..e04c834 100644
--- a/cmake/addons/README.md
+++ b/cmake/addons/README.md
@@ -5,7 +5,7 @@ This directory contains the cmake-based buildsystem for Kodi add-ons. It looks i
5 - `<addon-id> <git-url> <git-revision>` 5 - `<addon-id> <git-url> <git-revision>`
6 - `<addon-id> <tarball-url>` 6 - `<addon-id> <tarball-url>`
7 - `<addon-id> <file://path>` 7 - `<addon-id> <file://path>`
8 8
9where 9where
10- `<addon-id>` must be identical to the add-on's ID as defined in the add-on's addon.xml 10- `<addon-id>` must be identical to the add-on's ID as defined in the add-on's addon.xml
11- `<git-url>` must be the URL of the git repository containing the add-on 11- `<git-url>` must be the URL of the git repository containing the add-on
diff --git a/cmake/addons/depends/common/tinyxml/tinyxml.sha256 b/cmake/addons/depends/common/tinyxml/tinyxml.sha256
new file mode 100644
index 0000000..78c07c8
--- /dev/null
+++ b/cmake/addons/depends/common/tinyxml/tinyxml.sha256
@@ -0,0 +1 @@
8164c9ad48b9028667768a584d62f7760cfbfb90d0dd6214ad174403058da10c
diff --git a/cmake/cpack/deb/copyright b/cmake/cpack/deb/copyright
index ba82f18..3033afd 100644
--- a/cmake/cpack/deb/copyright
+++ b/cmake/cpack/deb/copyright
@@ -1920,14 +1920,6 @@ Crystal HD
1920 You should have received a copy of the GNU General Public License 1920 You should have received a copy of the GNU General Public License
1921 along with this driver. If not, see <http://www.gnu.org/licenses/>. 1921 along with this driver. If not, see <http://www.gnu.org/licenses/>.
1922 1922
1923OpenSSH
1924<http://www.openssh.org/>
1925
1926 Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
1927 All rights reserved.
1928
1929 See the section 'License: OpenSSH' for full license terms.
1930
1931Enca - Extremely Naive Charset Analyser 1923Enca - Extremely Naive Charset Analyser
1932<http://freshmeat.net/projects/enca/> 1924<http://freshmeat.net/projects/enca/>
1933 1925
@@ -2916,211 +2908,3 @@ We are required to state that
2916 CompuServe Incorporated." 2908 CompuServe Incorporated."
2917 2909
2918-- End of IJG License -- 2910-- End of IJG License --
2919
2920License: OpenSSH
2921
2922This file is part of the OpenSSH software.
2923
2924The licences which components of this software fall under are as
2925follows. First, we will summarize and say that all components
2926are under a BSD licence, or a licence more free than that.
2927
2928OpenSSH contains no GPL code.
2929
29301)
2931 * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
2932 * All rights reserved
2933 *
2934 * As far as I am concerned, the code I have written for this software
2935 * can be used freely for any purpose. Any derived versions of this
2936 * software must be clearly marked as such, and if the derived work is
2937 * incompatible with the protocol description in the RFC file, it must be
2938 * called by a name other than "ssh" or "Secure Shell".
2939
2940 [Tatu continues]
2941 * However, I am not implying to give any licenses to any patents or
2942 * copyrights held by third parties, and the software includes parts that
2943 * are not under my direct control. As far as I know, all included
2944 * source code is used in accordance with the relevant license agreements
2945 * and can be used freely for any purpose (the GNU license being the most
2946 * restrictive); see below for details.
2947
2948 [However, none of that term is relevant at this point in time. All of
2949 these restrictively licenced software components which he talks about
2950 have been removed from OpenSSH, i.e.,
2951
2952 - RSA is no longer included, found in the OpenSSL library
2953 - IDEA is no longer included, its use is deprecated
2954 - DES is now external, in the OpenSSL library
2955 - GMP is no longer used, and instead we call BN code from OpenSSL
2956 - Zlib is now external, in a library
2957 - The make-ssh-known-hosts script is no longer included
2958 - TSS has been removed
2959 - MD5 is now external, in the OpenSSL library
2960 - RC4 support has been replaced with ARC4 support from OpenSSL
2961 - Blowfish is now external, in the OpenSSL library
2962
2963 [The licence continues]
2964
2965 Note that any information and cryptographic algorithms used in this
2966 software are publicly available on the Internet and at any major
2967 bookstore, scientific library, and patent office worldwide. More
2968 information can be found e.g. at "http://www.cs.hut.fi/crypto".
2969
2970 The legal status of this program is some combination of all these
2971 permissions and restrictions. Use only at your own responsibility.
2972 You will be responsible for any legal consequences yourself; I am not
2973 making any claims whether possessing or using this is legal or not in
2974 your country, and I am not taking any responsibility on your behalf.
2975
2976
2977 NO WARRANTY
2978
2979 BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
2980 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
2981 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
2982 PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
2983 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
2984 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
2985 TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
2986 PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
2987 REPAIR OR CORRECTION.
2988
2989 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
2990 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
2991 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
2992 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
2993 OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
2994 TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
2995 YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
2996 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
2997 POSSIBILITY OF SUCH DAMAGES.
2998
29992)
3000 The 32-bit CRC compensation attack detector in deattack.c was
3001 contributed by CORE SDI S.A. under a BSD-style license.
3002
3003 * Cryptographic attack detector for ssh - source code
3004 *
3005 * Copyright (c) 1998 CORE SDI S.A., Buenos Aires, Argentina.
3006 *
3007 * All rights reserved. Redistribution and use in source and binary
3008 * forms, with or without modification, are permitted provided that
3009 * this copyright notice is retained.
3010 *
3011 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
3012 * WARRANTIES ARE DISCLAIMED. IN NO EVENT SHALL CORE SDI S.A. BE
3013 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY OR
3014 * CONSEQUENTIAL DAMAGES RESULTING FROM THE USE OR MISUSE OF THIS
3015 * SOFTWARE.
3016 *
3017 * Ariel Futoransky <futo@core-sdi.com>
3018 * <http://www.core-sdi.com>
3019
30203)
3021 ssh-keyscan was contributed by David Mazieres under a BSD-style
3022 license.
3023
3024 * Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>.
3025 *
3026 * Modification and redistribution in source and binary forms is
3027 * permitted provided that due credit is given to the author and the
3028 * OpenBSD project by leaving this copyright notice intact.
3029
30304)
3031 The Rijndael implementation by Vincent Rijmen, Antoon Bosselaers
3032 and Paulo Barreto is in the public domain and distributed
3033 with the following license:
3034
3035 * @version 3.0 (December 2000)
3036 *
3037 * Optimised ANSI C code for the Rijndael cipher (now AES)
3038 *
3039 * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be>
3040 * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be>
3041 * @author Paulo Barreto <paulo.barreto@terra.com.br>
3042 *
3043 * This code is hereby placed in the public domain.
3044 *
3045 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
3046 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
3047 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
3048 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
3049 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
3050 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
3051 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
3052 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
3053 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
3054 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
3055 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3056
30575)
3058 One component of the ssh source code is under a 3-clause BSD license,
3059 held by the University of California, since we pulled these parts from
3060 original Berkeley code.
3061
3062 * Copyright (c) 1983, 1990, 1992, 1993, 1995
3063 * The Regents of the University of California. All rights reserved.
3064 *
3065 * Redistribution and use in source and binary forms, with or without
3066 * modification, are permitted provided that the following conditions
3067 * are met:
3068 * 1. Redistributions of source code must retain the above copyright
3069 * notice, this list of conditions and the following disclaimer.
3070 * 2. Redistributions in binary form must reproduce the above copyright
3071 * notice, this list of conditions and the following disclaimer in the
3072 * documentation and/or other materials provided with the distribution.
3073 * 3. Neither the name of the University nor the names of its contributors
3074 * may be used to endorse or promote products derived from this software
3075 * without specific prior written permission.
3076 *
3077 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
3078 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
3079 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
3080 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
3081 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
3082 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
3083 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
3084 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
3085 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
3086 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
3087 * THE POSSIBILITY OF SUCH DAMAGE.
3088
30896)
3090 Remaining components of the software are provided under a standard
3091 2-term BSD licence with the following names as copyright holders:
3092
3093 Markus Friedl
3094 Theo de Raadt
3095 Niels Provos
3096 Dug Song
3097 Aaron Campbell
3098 Damien Miller
3099 Kevin Steves
3100 Daniel Kouril
3101 Wesley Griffin
3102 Per Allansson
3103 Nils Nordman
3104 Simon Wilkinson
3105
3106 * Redistribution and use in source and binary forms, with or without
3107 * modification, are permitted provided that the following conditions
3108 * are met:
3109 * 1. Redistributions of source code must retain the above copyright
3110 * notice, this list of conditions and the following disclaimer.
3111 * 2. Redistributions in binary form must reproduce the above copyright
3112 * notice, this list of conditions and the following disclaimer in the
3113 * documentation and/or other materials provided with the distribution.
3114 *
3115 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
3116 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
3117 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
3118 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
3119 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
3120 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
3121 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
3122 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
3123 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
3124 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3125
3126-- End of OpenSSH License --
diff --git a/cmake/cpack/deb/packages/kodi-bin.txt.in b/cmake/cpack/deb/packages/kodi-bin.txt.in
index 2ece66f..0e31451 100644
--- a/cmake/cpack/deb/packages/kodi-bin.txt.in
+++ b/cmake/cpack/deb/packages/kodi-bin.txt.in
@@ -15,7 +15,7 @@ PACKAGE_ARCHITECTURE
15PACKAGE_SECTION video 15PACKAGE_SECTION video
16PACKAGE_PRIORITY optional 16PACKAGE_PRIORITY optional
17PACKAGE_SHLIBDEPS ON 17PACKAGE_SHLIBDEPS ON
18PACKAGE_DEPENDS 18PACKAGE_DEPENDS
19PACKAGE_RECOMMENDS 19PACKAGE_RECOMMENDS
20PACKAGE_SUGGESTS 20PACKAGE_SUGGESTS
21PACKAGE_BREAKS xbmc-bin (<< 2:14.0~git20141019), xbmc-common 21PACKAGE_BREAKS xbmc-bin (<< 2:14.0~git20141019), xbmc-common
diff --git a/cmake/cpack/deb/packages/kodi-tools-texturepacker.txt.in b/cmake/cpack/deb/packages/kodi-tools-texturepacker.txt.in
index 36e8297..79c1f0f 100644
--- a/cmake/cpack/deb/packages/kodi-tools-texturepacker.txt.in
+++ b/cmake/cpack/deb/packages/kodi-tools-texturepacker.txt.in
@@ -15,7 +15,7 @@ PACKAGE_ARCHITECTURE
15PACKAGE_SECTION video 15PACKAGE_SECTION video
16PACKAGE_PRIORITY optional 16PACKAGE_PRIORITY optional
17PACKAGE_SHLIBDEPS ON 17PACKAGE_SHLIBDEPS ON
18PACKAGE_DEPENDS 18PACKAGE_DEPENDS
19PACKAGE_RECOMMENDS 19PACKAGE_RECOMMENDS
20PACKAGE_SUGGESTS 20PACKAGE_SUGGESTS
21PACKAGE_BREAKS 21PACKAGE_BREAKS
diff --git a/cmake/cpack/deb/packages/kodi.txt.in b/cmake/cpack/deb/packages/kodi.txt.in
index 90ae9ea..5ab8905 100644
--- a/cmake/cpack/deb/packages/kodi.txt.in
+++ b/cmake/cpack/deb/packages/kodi.txt.in
@@ -15,7 +15,7 @@ PACKAGE_ARCHITECTURE all
15PACKAGE_SECTION video 15PACKAGE_SECTION video
16PACKAGE_PRIORITY optional 16PACKAGE_PRIORITY optional
17PACKAGE_SHLIBDEPS 17PACKAGE_SHLIBDEPS
18PACKAGE_DEPENDS @APP_NAME_LC@-bin (>= @CPACK_DEBIAN_PACKAGE_VERSION@), @APP_NAME_LC@-bin (<< @CPACK_DEBIAN_PACKAGE_VERSION@.1~), curl, libcurl4 | libcurl3, mesa-utils, x11-utils, fonts-liberation | ttf-liberation, fonts-dejavu-core | ttf-dejavu-core, python-bluez | python-lightblue, python-imaging | python-pil, python-simplejson, libass9 | libass5 | libass4, libgif5 | libgif7, libssh-4 | libssh2-1, libnfs8 | libnfs4 | libnfs1, libbluray1 | libbluray2, libshairplay0, libvorbisfile3, libaacs0, libcec4, libgnutls30 | libgnutls-deb0-28 | libgnutls28 | libgnutls26, libxslt1.1, libyajl2 18PACKAGE_DEPENDS @APP_NAME_LC@-bin (>= @CPACK_DEBIAN_PACKAGE_VERSION@), @APP_NAME_LC@-bin (<< @CPACK_DEBIAN_PACKAGE_VERSION@.1~), curl, libcurl4 | libcurl3, mesa-utils, x11-utils, fonts-liberation | ttf-liberation, fonts-dejavu-core | ttf-dejavu-core, python-bluez | python-lightblue, python-imaging | python-pil, python-simplejson, libass9 | libass5 | libass4, libgif5 | libgif7, libnfs8 | libnfs4 | libnfs1, libbluray1 | libbluray2, libshairplay0, libvorbisfile3, libaacs0, libcec4, libgnutls30 | libgnutls-deb0-28 | libgnutls28 | libgnutls26, libxslt1.1, libyajl2
19PACKAGE_RECOMMENDS libvdpau1, libva-intel-vaapi-driver, libva1 19PACKAGE_RECOMMENDS libvdpau1, libva-intel-vaapi-driver, libva1
20PACKAGE_SUGGESTS @APP_NAME_LC@-pvr-mythtv, @APP_NAME_LC@-pvr-vuplus, @APP_NAME_LC@-pvr-vdr-vnsi, @APP_NAME_LC@-pvr-njoy, @APP_NAME_LC@-pvr-nextpvr, @APP_NAME_LC@-pvr-mediaportal-tvserver, @APP_NAME_LC@-pvr-tvheadend-hts, @APP_NAME_LC@-pvr-dvbviewer, @APP_NAME_LC@-pvr-argustv, @APP_NAME_LC@-pvr-iptvsimple, @APP_NAME_LC@-audioencoder-vorbis, @APP_NAME_LC@-audioencoder-flac, @APP_NAME_LC@-audioencoder-lame 20PACKAGE_SUGGESTS @APP_NAME_LC@-pvr-mythtv, @APP_NAME_LC@-pvr-vuplus, @APP_NAME_LC@-pvr-vdr-vnsi, @APP_NAME_LC@-pvr-njoy, @APP_NAME_LC@-pvr-nextpvr, @APP_NAME_LC@-pvr-mediaportal-tvserver, @APP_NAME_LC@-pvr-tvheadend-hts, @APP_NAME_LC@-pvr-dvbviewer, @APP_NAME_LC@-pvr-argustv, @APP_NAME_LC@-pvr-iptvsimple, @APP_NAME_LC@-audioencoder-vorbis, @APP_NAME_LC@-audioencoder-flac, @APP_NAME_LC@-audioencoder-lame
21PACKAGE_BREAKS xbmc (<< 2:14.0~git20141019), xbmc-data, xbmc-standalone 21PACKAGE_BREAKS xbmc (<< 2:14.0~git20141019), xbmc-data, xbmc-standalone
diff --git a/cmake/installdata/ios/certificates.txt b/cmake/installdata/common/certificates.txt
index 14e74a7..14e74a7 100644
--- a/cmake/installdata/ios/certificates.txt
+++ b/cmake/installdata/common/certificates.txt
diff --git a/cmake/installdata/ios/packaging.txt b/cmake/installdata/ios/packaging.txt
index ce990b5..3d5ae4a 100644
--- a/cmake/installdata/ios/packaging.txt
+++ b/cmake/installdata/ios/packaging.txt
@@ -1,3 +1,3 @@
1LICENSE.gpl 1LICENSE.md
2privacy-policy.txt 2privacy-policy.txt
3xbmc/platform/darwin/Credits.html 3xbmc/platform/darwin/Credits.html
diff --git a/cmake/installdata/osx/certificates.txt b/cmake/installdata/osx/certificates.txt
deleted file mode 100644
index 14e74a7..0000000
--- a/cmake/installdata/osx/certificates.txt
+++ /dev/null
@@ -1 +0,0 @@
1tools/depends/target/openssl/cacert.pem system/certs \ No newline at end of file
diff --git a/cmake/installdata/osx/packaging.txt b/cmake/installdata/osx/packaging.txt
index f869e4c..f9ae368 100644
--- a/cmake/installdata/osx/packaging.txt
+++ b/cmake/installdata/osx/packaging.txt
@@ -1,4 +1,4 @@
1LICENSE.gpl 1LICENSE.md
2privacy-policy.txt 2privacy-policy.txt
3xbmc/platform/darwin/Credits.html 3xbmc/platform/darwin/Credits.html
4tools/darwin/packaging/media/osx/icon.iconset/* 4tools/darwin/packaging/media/osx/icon.iconset/*
diff --git a/cmake/installdata/windowsstore/certificates.txt b/cmake/installdata/windowsstore/certificates.txt
deleted file mode 100644
index 14e74a7..0000000
--- a/cmake/installdata/windowsstore/certificates.txt
+++ /dev/null
@@ -1 +0,0 @@
1tools/depends/target/openssl/cacert.pem system/certs \ No newline at end of file
diff --git a/cmake/messages/flatbuffers/retroplayer.txt b/cmake/messages/flatbuffers/retroplayer.txt
new file mode 100644
index 0000000..3d42d5c
--- /dev/null
+++ b/cmake/messages/flatbuffers/retroplayer.txt
@@ -0,0 +1 @@
xbmc/cores/RetroPlayer/messages cores/RetroPlayer/messages
diff --git a/cmake/modules/FindAML.cmake b/cmake/modules/FindAML.cmake
index 602f5d9..89d1fd9 100644
--- a/cmake/modules/FindAML.cmake
+++ b/cmake/modules/FindAML.cmake
@@ -3,7 +3,7 @@
3# ------- 3# -------
4# Finds the AML codec 4# Finds the AML codec
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# AML_FOUND - system has AML 8# AML_FOUND - system has AML
9# AML_INCLUDE_DIRS - the AML include directory 9# AML_INCLUDE_DIRS - the AML include directory
diff --git a/cmake/modules/FindASS.cmake b/cmake/modules/FindASS.cmake
index 2d592fa..cb9d732 100644
--- a/cmake/modules/FindASS.cmake
+++ b/cmake/modules/FindASS.cmake
@@ -3,7 +3,7 @@
3# ------- 3# -------
4# Finds the ASS library 4# Finds the ASS library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# ASS_FOUND - system has ASS 8# ASS_FOUND - system has ASS
9# ASS_INCLUDE_DIRS - the ASS include directory 9# ASS_INCLUDE_DIRS - the ASS include directory
diff --git a/cmake/modules/FindAlsa.cmake b/cmake/modules/FindAlsa.cmake
index ae05817..fdc7db8 100644
--- a/cmake/modules/FindAlsa.cmake
+++ b/cmake/modules/FindAlsa.cmake
@@ -3,7 +3,7 @@
3# -------- 3# --------
4# Finds the Alsa library 4# Finds the Alsa library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# ALSA_FOUND - system has Alsa 8# ALSA_FOUND - system has Alsa
9# ALSA_INCLUDE_DIRS - the Alsa include directory 9# ALSA_INCLUDE_DIRS - the Alsa include directory
diff --git a/cmake/modules/FindAvahi.cmake b/cmake/modules/FindAvahi.cmake
index 068b292..e0e6689 100644
--- a/cmake/modules/FindAvahi.cmake
+++ b/cmake/modules/FindAvahi.cmake
@@ -3,7 +3,7 @@
3# --------- 3# ---------
4# Finds the avahi library 4# Finds the avahi library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# AVAHI_FOUND - system has avahi 8# AVAHI_FOUND - system has avahi
9# AVAHI_INCLUDE_DIRS - the avahi include directory 9# AVAHI_INCLUDE_DIRS - the avahi include directory
diff --git a/cmake/modules/FindBluetooth.cmake b/cmake/modules/FindBluetooth.cmake
index a69980d..7ca99bb 100644
--- a/cmake/modules/FindBluetooth.cmake
+++ b/cmake/modules/FindBluetooth.cmake
@@ -3,7 +3,7 @@
3# --------- 3# ---------
4# Finds the Bluetooth library 4# Finds the Bluetooth library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# BLUETOOTH_FOUND - system has Bluetooth 8# BLUETOOTH_FOUND - system has Bluetooth
9# BLUETOOTH_INCLUDE_DIRS - the Bluetooth include directory 9# BLUETOOTH_INCLUDE_DIRS - the Bluetooth include directory
diff --git a/cmake/modules/FindBluray.cmake b/cmake/modules/FindBluray.cmake
index 3c29f54..58a9a91 100644
--- a/cmake/modules/FindBluray.cmake
+++ b/cmake/modules/FindBluray.cmake
@@ -3,7 +3,7 @@
3# ---------- 3# ----------
4# Finds the libbluray library 4# Finds the libbluray library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# BLURAY_FOUND - system has libbluray 8# BLURAY_FOUND - system has libbluray
9# BLURAY_INCLUDE_DIRS - the libbluray include directory 9# BLURAY_INCLUDE_DIRS - the libbluray include directory
@@ -30,20 +30,13 @@ if(NOT BLURAY_VERSION AND EXISTS ${BLURAY_INCLUDE_DIR}/libbluray/bluray-version.
30 unset(_bluray_version_str) 30 unset(_bluray_version_str)
31endif() 31endif()
32 32
33include(FindPackageHandleStandardArgs) 33find_library(BLURAY_LIBRARY NAMES bluray libbluray
34if(NOT WIN32) 34 PATHS ${PC_BLURAY_LIBDIR})
35 find_library(BLURAY_LIBRARY NAMES bluray
36 PATHS ${PC_BLURAY_LIBDIR})
37 35
38 find_package_handle_standard_args(Bluray 36include(FindPackageHandleStandardArgs)
39 REQUIRED_VARS BLURAY_LIBRARY BLURAY_INCLUDE_DIR BLURAY_VERSION 37find_package_handle_standard_args(Bluray
40 VERSION_VAR BLURAY_VERSION) 38 REQUIRED_VARS BLURAY_LIBRARY BLURAY_INCLUDE_DIR BLURAY_VERSION
41else() 39 VERSION_VAR BLURAY_VERSION)
42 # Dynamically loaded DLL
43 find_package_handle_standard_args(Bluray
44 REQUIRED_VARS BLURAY_INCLUDE_DIR
45 VERSION_VAR BLURAY_VERSION)
46endif()
47 40
48if(BLURAY_FOUND) 41if(BLURAY_FOUND)
49 set(BLURAY_LIBRARIES ${BLURAY_LIBRARY}) 42 set(BLURAY_LIBRARIES ${BLURAY_LIBRARY})
diff --git a/cmake/modules/FindCEC.cmake b/cmake/modules/FindCEC.cmake
index bd6fd1d..00b2e12 100644
--- a/cmake/modules/FindCEC.cmake
+++ b/cmake/modules/FindCEC.cmake
@@ -3,7 +3,7 @@
3# ------- 3# -------
4# Finds the libCEC library 4# Finds the libCEC library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# CEC_FOUND - system has libCEC 8# CEC_FOUND - system has libCEC
9# CEC_INCLUDE_DIRS - the libCEC include directory 9# CEC_INCLUDE_DIRS - the libCEC include directory
@@ -33,20 +33,13 @@ if(NOT CEC_FIND_VERSION)
33 set(CEC_FIND_VERSION 4.0.0) 33 set(CEC_FIND_VERSION 4.0.0)
34endif() 34endif()
35 35
36include(FindPackageHandleStandardArgs) 36find_library(CEC_LIBRARY NAMES cec
37if(NOT WIN32) 37 PATHS ${PC_CEC_LIBDIR})
38 find_library(CEC_LIBRARY NAMES cec
39 PATHS ${PC_CEC_LIBDIR})
40 38
41 find_package_handle_standard_args(CEC 39include(FindPackageHandleStandardArgs)
42 REQUIRED_VARS CEC_LIBRARY CEC_INCLUDE_DIR 40find_package_handle_standard_args(CEC
43 VERSION_VAR CEC_VERSION) 41 REQUIRED_VARS CEC_LIBRARY CEC_INCLUDE_DIR
44else() 42 VERSION_VAR CEC_VERSION)
45 # Dynamically loaded DLL
46 find_package_handle_standard_args(CEC
47 REQUIRED_VARS CEC_INCLUDE_DIR
48 VERSION_VAR CEC_VERSION)
49endif()
50 43
51if(CEC_FOUND) 44if(CEC_FOUND)
52 set(CEC_LIBRARIES ${CEC_LIBRARY}) 45 set(CEC_LIBRARIES ${CEC_LIBRARY})
diff --git a/cmake/modules/FindCWiid.cmake b/cmake/modules/FindCWiid.cmake
index 88cfbef..af9e391 100644
--- a/cmake/modules/FindCWiid.cmake
+++ b/cmake/modules/FindCWiid.cmake
@@ -3,7 +3,7 @@
3# --------- 3# ---------
4# Finds the CWiid library 4# Finds the CWiid library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# CWIID_FOUND - system has CWiid 8# CWIID_FOUND - system has CWiid
9# CWIID_INCLUDE_DIRS - the CWiid include directory 9# CWIID_INCLUDE_DIRS - the CWiid include directory
diff --git a/cmake/modules/FindCdio.cmake b/cmake/modules/FindCdio.cmake
index cce7f2a..91ba7bc 100644
--- a/cmake/modules/FindCdio.cmake
+++ b/cmake/modules/FindCdio.cmake
@@ -3,7 +3,7 @@
3# -------- 3# --------
4# Finds the cdio library 4# Finds the cdio library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# CDIO_FOUND - system has cdio 8# CDIO_FOUND - system has cdio
9# CDIO_INCLUDE_DIRS - the cdio include directory 9# CDIO_INCLUDE_DIRS - the cdio include directory
diff --git a/cmake/modules/FindCurl.cmake b/cmake/modules/FindCurl.cmake
index 17c1f01..6ccf44a 100644
--- a/cmake/modules/FindCurl.cmake
+++ b/cmake/modules/FindCurl.cmake
@@ -3,7 +3,7 @@
3# -------- 3# --------
4# Finds the Curl library 4# Finds the Curl library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# CURL_FOUND - system has Curl 8# CURL_FOUND - system has Curl
9# CURL_INCLUDE_DIRS - the Curl include directory 9# CURL_INCLUDE_DIRS - the Curl include directory
diff --git a/cmake/modules/FindDBus.cmake b/cmake/modules/FindDBus.cmake
index 9ea4f8f..df3edc5 100644
--- a/cmake/modules/FindDBus.cmake
+++ b/cmake/modules/FindDBus.cmake
@@ -3,7 +3,7 @@
3# ------- 3# -------
4# Finds the DBUS library 4# Finds the DBUS library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# DBUS_FOUND - system has DBUS 8# DBUS_FOUND - system has DBUS
9# DBUS_INCLUDE_DIRS - the DBUS include directory 9# DBUS_INCLUDE_DIRS - the DBUS include directory
diff --git a/cmake/modules/FindEGL.cmake b/cmake/modules/FindEGL.cmake
index 331ac39..0b73eb8 100644
--- a/cmake/modules/FindEGL.cmake
+++ b/cmake/modules/FindEGL.cmake
@@ -3,7 +3,7 @@
3# ------- 3# -------
4# Finds the EGL library 4# Finds the EGL library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# EGL_FOUND - system has EGL 8# EGL_FOUND - system has EGL
9# EGL_INCLUDE_DIRS - the EGL include directory 9# EGL_INCLUDE_DIRS - the EGL include directory
diff --git a/cmake/modules/FindFFMPEG.cmake b/cmake/modules/FindFFMPEG.cmake
index e2fbe8d..ef74671 100644
--- a/cmake/modules/FindFFMPEG.cmake
+++ b/cmake/modules/FindFFMPEG.cmake
@@ -18,7 +18,7 @@
18# usage: -DWITH_FFMPEG=/path/to/ffmpeg_install_prefix 18# usage: -DWITH_FFMPEG=/path/to/ffmpeg_install_prefix
19# 19#
20# -------- 20# --------
21# This module will will define the following variables: 21# This module will define the following variables:
22# 22#
23# FFMPEG_FOUND - system has FFmpeg 23# FFMPEG_FOUND - system has FFmpeg
24# FFMPEG_INCLUDE_DIRS - FFmpeg include directory 24# FFMPEG_INCLUDE_DIRS - FFmpeg include directory
@@ -33,14 +33,14 @@
33# 33#
34 34
35# required ffmpeg library versions 35# required ffmpeg library versions
36set(REQUIRED_FFMPEG_VERSION 3.4) 36set(REQUIRED_FFMPEG_VERSION 4.0)
37set(_avcodec_ver ">=57.107.100") 37set(_avcodec_ver ">=58.18.100")
38set(_avfilter_ver ">=6.107.100") 38set(_avfilter_ver ">=7.16.100")
39set(_avformat_ver ">=57.83.100") 39set(_avformat_ver ">=58.12.100")
40set(_avutil_ver ">=55.78.100") 40set(_avutil_ver ">=56.14.100")
41set(_swscale_ver ">=4.8.100") 41set(_swscale_ver ">=5.1.100")
42set(_swresample_ver ">=2.9.100") 42set(_swresample_ver ">=3.1.100")
43set(_postproc_ver ">=54.7.100") 43set(_postproc_ver ">=55.1.100")
44 44
45 45
46# Allows building with external ffmpeg not found in system paths, 46# Allows building with external ffmpeg not found in system paths,
@@ -229,6 +229,11 @@ if(NOT FFMPEG_FOUND)
229 message(STATUS "FFMPEG_URL: ${FFMPEG_URL}") 229 message(STATUS "FFMPEG_URL: ${FFMPEG_URL}")
230 endif() 230 endif()
231 231
232 set(FFMPEG_OPTIONS -DENABLE_CCACHE=${ENABLE_CCACHE}
233 -DCCACHE_PROGRAM=${CCACHE_PROGRAM}
234 -DENABLE_VAAPI=${ENABLE_VAAPI}
235 -DENABLE_VDPAU=${ENABLE_VDPAU})
236
232 if(KODI_DEPENDSBUILD) 237 if(KODI_DEPENDSBUILD)
233 set(CROSS_ARGS -DDEPENDS_PATH=${DEPENDS_PATH} 238 set(CROSS_ARGS -DDEPENDS_PATH=${DEPENDS_PATH}
234 -DPKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE} 239 -DPKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE}
@@ -237,6 +242,8 @@ if(NOT FFMPEG_FOUND)
237 -DOS=${OS} 242 -DOS=${OS}
238 -DCMAKE_AR=${CMAKE_AR}) 243 -DCMAKE_AR=${CMAKE_AR})
239 endif() 244 endif()
245 set(LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS})
246 list(APPEND LINKER_FLAGS ${SYSTEM_LDFLAGS})
240 247
241 externalproject_add(ffmpeg 248 externalproject_add(ffmpeg
242 URL ${FFMPEG_URL} 249 URL ${FFMPEG_URL}
@@ -255,8 +262,9 @@ if(NOT FFMPEG_FOUND)
255 -DENABLE_CCACHE=${ENABLE_CCACHE} 262 -DENABLE_CCACHE=${ENABLE_CCACHE}
256 -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} 263 -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
257 -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} 264 -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
258 -DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS} 265 -DCMAKE_EXE_LINKER_FLAGS=${LINKER_FLAGS}
259 ${CROSS_ARGS} 266 ${CROSS_ARGS}
267 ${FFMPEG_OPTIONS}
260 PATCH_COMMAND ${CMAKE_COMMAND} -E copy 268 PATCH_COMMAND ${CMAKE_COMMAND} -E copy
261 ${CMAKE_SOURCE_DIR}/tools/depends/target/ffmpeg/CMakeLists.txt 269 ${CMAKE_SOURCE_DIR}/tools/depends/target/ffmpeg/CMakeLists.txt
262 <SOURCE_DIR> && 270 <SOURCE_DIR> &&
diff --git a/cmake/modules/FindFlatBuffers.cmake b/cmake/modules/FindFlatBuffers.cmake
new file mode 100644
index 0000000..6f7e6a2
--- /dev/null
+++ b/cmake/modules/FindFlatBuffers.cmake
@@ -0,0 +1,72 @@
1# FindFlatBuffers
2# --------
3# Find the FlatBuffers schema compiler and headers
4#
5# This will define the following variables:
6#
7# FLATBUFFERS_FOUND - system has FlatBuffers compiler and headers
8# FLATBUFFERS_FLATC_EXECUTABLE - the flatc compiler executable
9# FLATBUFFERS_INCLUDE_DIRS - the FlatFuffers include directory
10# FLATBUFFERS_MESSAGES_INCLUDE_DIR - the directory for generated headers
11
12if(ENABLE_INTERNAL_FLATBUFFERS)
13 include(ExternalProject)
14 file(STRINGS ${CMAKE_SOURCE_DIR}/tools/depends/native/flatbuffers-native/Makefile VER REGEX "^[ ]*VERSION[ ]*=.+$")
15 string(REGEX REPLACE "^[ ]*VERSION[ ]*=[ ]*" "" FLATBUFFERS_VER "${VER}")
16
17 # Allow user to override the download URL with a local tarball
18 # Needed for offline build envs
19 if(FLATBUFFERS_URL)
20 get_filename_component(FLATBUFFERS_URL "${FLATBUFFERS_URL}" ABSOLUTE)
21 else()
22 set(FLATBUFFERS_URL http://mirrors.kodi.tv/build-deps/sources/flatbuffers-${FLATBUFFERS_VER}.tar.gz)
23 endif()
24 if(VERBOSE)
25 message(STATUS "FLATBUFFERS_URL: ${FLATBUFFERS_URL}")
26 endif()
27
28 set(FLATBUFFERS_FLATC_EXECUTABLE ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/bin/flatc CACHE INTERNAL "FlatBuffer compiler")
29 set(FLATBUFFERS_INCLUDE_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/include CACHE INTERNAL "FlatBuffer include dir")
30
31 externalproject_add(flatbuffers
32 URL ${FLATBUFFERS_URL}
33 DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download
34 PREFIX ${CORE_BUILD_DIR}/flatbuffers
35 CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}
36 -DCMAKE_BUILD_TYPE=Release
37 -DFLATBUFFERS_CODE_COVERAGE=OFF
38 -DFLATBUFFERS_BUILD_TESTS=OFF
39 -DFLATBUFFERS_INSTALL=ON
40 -DFLATBUFFERS_BUILD_FLATLIB=OFF
41 -DFLATBUFFERS_BUILD_FLATC=ON
42 -DFLATBUFFERS_BUILD_FLATHASH=OFF
43 -DFLATBUFFERS_BUILD_GRPCTEST=OFF
44 -DFLATBUFFERS_BUILD_SHAREDLIB=OFF
45 "${EXTRA_ARGS}"
46 PATCH_COMMAND patch -p1 < ${CORE_SOURCE_DIR}/tools/depends/native/flatbuffers-native/0001-Fix-compiler-warning.patch
47 BUILD_BYPRODUCTS ${FLATBUFFERS_FLATC_EXECUTABLE})
48 set_target_properties(flatbuffers PROPERTIES FOLDER "External Projects"
49 INTERFACE_INCLUDE_DIRECTORIES ${FLATBUFFERS_INCLUDE_DIR})
50else()
51 find_program(FLATBUFFERS_FLATC_EXECUTABLE NAMES flatc)
52 find_path(FLATBUFFERS_INCLUDE_DIR NAMES flatbuffers/flatbuffers.h)
53endif()
54
55include(FindPackageHandleStandardArgs)
56find_package_handle_standard_args(FlatBuffers
57 REQUIRED_VARS FLATBUFFERS_FLATC_EXECUTABLE FLATBUFFERS_INCLUDE_DIR
58 VERSION_VAR FLATBUFFERS_VER)
59
60if(FLATBUFFERS_FOUND)
61 set(FLATBUFFERS_MESSAGES_INCLUDE_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/cores/RetroPlayer/messages CACHE INTERNAL "Generated FlatBuffer headers")
62 set(FLATBUFFERS_INCLUDE_DIRS ${FLATBUFFERS_INCLUDE_DIR} ${FLATBUFFERS_MESSAGES_INCLUDE_DIR})
63
64 if(NOT TARGET flatbuffers)
65 add_library(flatbuffers UNKNOWN IMPORTED)
66 set_target_properties(flatbuffers PROPERTIES
67 FOLDER "External Projects"
68 INTERFACE_INCLUDE_DIRECTORIES ${FLATBUFFERS_INCLUDE_DIR})
69 endif()
70endif()
71
72mark_as_advanced(FLATBUFFERS_FLATC_EXECUTABLE FLATBUFFERS_INCLUDE_DIR)
diff --git a/cmake/modules/FindFmt.cmake b/cmake/modules/FindFmt.cmake
index 5e47509..df18d85 100644
--- a/cmake/modules/FindFmt.cmake
+++ b/cmake/modules/FindFmt.cmake
@@ -30,7 +30,7 @@ if(ENABLE_INTERNAL_FMT)
30 30
31 if(APPLE) 31 if(APPLE)
32 set(EXTRA_ARGS "-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}") 32 set(EXTRA_ARGS "-DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}")
33 endif() 33 endif()
34 34
35 set(FMT_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/libfmt.a) 35 set(FMT_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/libfmt.a)
36 set(FMT_INCLUDE_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/include) 36 set(FMT_INCLUDE_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/include)
@@ -90,14 +90,13 @@ if(FMT_FOUND)
90 set(FMT_LIBRARIES ${FMT_LIBRARY}) 90 set(FMT_LIBRARIES ${FMT_LIBRARY})
91 set(FMT_INCLUDE_DIRS ${FMT_INCLUDE_DIR}) 91 set(FMT_INCLUDE_DIRS ${FMT_INCLUDE_DIR})
92 92
93 if(NOT TARGET Fmt::Fmt) 93 if(NOT TARGET fmt)
94 add_library(Fmt::Fmt UNKNOWN IMPORTED) 94 add_library(fmt UNKNOWN IMPORTED)
95 set_target_properties(Fmt::Fmt PROPERTIES 95 set_target_properties(fmt PROPERTIES
96 IMPORTED_LOCATION "${FMT_LIBRARY}" 96 IMPORTED_LOCATION "${FMT_LIBRARY}"
97 INTERFACE_INCLUDE_DIRECTORIES "${FMT_INCLUDE_DIR}") 97 INTERFACE_INCLUDE_DIRECTORIES "${FMT_INCLUDE_DIR}")
98 endif() 98 endif()
99endif() 99endif()
100 100
101mark_as_advanced(FMT_INCLUDE_DIR FMT_LIBRARY)
102
103endif() 101endif()
102mark_as_advanced(FMT_INCLUDE_DIR FMT_LIBRARY)
diff --git a/cmake/modules/FindFreeType.cmake b/cmake/modules/FindFreeType.cmake
index fb4c668..8a39555 100644
--- a/cmake/modules/FindFreeType.cmake
+++ b/cmake/modules/FindFreeType.cmake
@@ -3,7 +3,7 @@
3# ------------ 3# ------------
4# Finds the FreeType library 4# Finds the FreeType library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# FREETYPE_FOUND - system has FreeType 8# FREETYPE_FOUND - system has FreeType
9# FREETYPE_INCLUDE_DIRS - the FreeType include directory 9# FREETYPE_INCLUDE_DIRS - the FreeType include directory
diff --git a/cmake/modules/FindFriBidi.cmake b/cmake/modules/FindFriBidi.cmake
index dcaeb48..91f3994 100644
--- a/cmake/modules/FindFriBidi.cmake
+++ b/cmake/modules/FindFriBidi.cmake
@@ -3,7 +3,7 @@
3# ----------- 3# -----------
4# Finds the GNU FriBidi library 4# Finds the GNU FriBidi library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# FRIBIDI_FOUND - system has FriBidi 8# FRIBIDI_FOUND - system has FriBidi
9# FRIBIDI_INCLUDE_DIRS - the FriBidi include directory 9# FRIBIDI_INCLUDE_DIRS - the FriBidi include directory
diff --git a/cmake/modules/FindGBM.cmake b/cmake/modules/FindGBM.cmake
index ac95241..37a26a7 100644
--- a/cmake/modules/FindGBM.cmake
+++ b/cmake/modules/FindGBM.cmake
@@ -2,7 +2,7 @@
2# ---------- 2# ----------
3# Finds the GBM library 3# Finds the GBM library
4# 4#
5# This will will define the following variables:: 5# This will define the following variables::
6# 6#
7# GBM_FOUND - system has GBM 7# GBM_FOUND - system has GBM
8# GBM_INCLUDE_DIRS - the GBM include directory 8# GBM_INCLUDE_DIRS - the GBM include directory
@@ -29,11 +29,35 @@ find_package_handle_standard_args(GBM
29 REQUIRED_VARS GBM_LIBRARY GBM_INCLUDE_DIR 29 REQUIRED_VARS GBM_LIBRARY GBM_INCLUDE_DIR
30 VERSION_VAR GBM_VERSION) 30 VERSION_VAR GBM_VERSION)
31 31
32include(CheckCSourceCompiles)
33set(CMAKE_REQUIRED_LIBRARIES ${GBM_LIBRARY})
34check_c_source_compiles("#include <gbm.h>
35
36 int main()
37 {
38 gbm_bo_map(NULL, 0, 0, 0, 0, GBM_BO_TRANSFER_WRITE, NULL, NULL);
39 }
40 " GBM_HAS_BO_MAP)
41
42check_c_source_compiles("#include <gbm.h>
43
44 int main()
45 {
46 gbm_surface_create_with_modifiers(NULL, 0, 0, 0, NULL, 0);
47 }
48 " GBM_HAS_MODIFIERS)
49
32if(GBM_FOUND) 50if(GBM_FOUND)
33 set(GBM_LIBRARIES ${GBM_LIBRARY}) 51 set(GBM_LIBRARIES ${GBM_LIBRARY})
34 set(GBM_INCLUDE_DIRS ${GBM_INCLUDE_DIR}) 52 set(GBM_INCLUDE_DIRS ${GBM_INCLUDE_DIR})
35 set(GBM_DEFINITIONS -DHAVE_GBM=1) 53 set(GBM_DEFINITIONS -DHAVE_GBM=1)
36 if(NOT TARGET GBM::GBM) 54 if(GBM_HAS_BO_MAP)
55 list(APPEND GBM_DEFINITIONS -DHAS_GBM_BO_MAP=1)
56 endif()
57 if(GBM_HAS_MODIFIERS)
58 list(APPEND GBM_DEFINITIONS -DHAS_GBM_MODIFIERS=1)
59 endif()
60 if(NOT TARGET GBM::GBM)
37 add_library(GBM::GBM UNKNOWN IMPORTED) 61 add_library(GBM::GBM UNKNOWN IMPORTED)
38 set_target_properties(GBM::GBM PROPERTIES 62 set_target_properties(GBM::GBM PROPERTIES
39 IMPORTED_LOCATION "${GBM_LIBRARY}" 63 IMPORTED_LOCATION "${GBM_LIBRARY}"
diff --git a/cmake/modules/FindGIF.cmake b/cmake/modules/FindGIF.cmake
index 8649bd4..1c616e0 100644
--- a/cmake/modules/FindGIF.cmake
+++ b/cmake/modules/FindGIF.cmake
@@ -3,7 +3,7 @@
3# ------- 3# -------
4# Finds the libgif library 4# Finds the libgif library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# GIF_FOUND - system has libgif 8# GIF_FOUND - system has libgif
9# GIF_INCLUDE_DIRS - the libgif include directory 9# GIF_INCLUDE_DIRS - the libgif include directory
diff --git a/cmake/modules/FindGLX.cmake b/cmake/modules/FindGLX.cmake
index 77c8fce..ab74dfd 100644
--- a/cmake/modules/FindGLX.cmake
+++ b/cmake/modules/FindGLX.cmake
@@ -3,7 +3,7 @@
3# ----- 3# -----
4# Finds the GLX library 4# Finds the GLX library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# GLX_FOUND - system has GLX 8# GLX_FOUND - system has GLX
9# GLX_INCLUDE_DIRS - the GLX include directory 9# GLX_INCLUDE_DIRS - the GLX include directory
diff --git a/cmake/modules/FindIconv.cmake b/cmake/modules/FindIconv.cmake
index 8ee01fb..ae7d8d7 100644
--- a/cmake/modules/FindIconv.cmake
+++ b/cmake/modules/FindIconv.cmake
@@ -3,7 +3,7 @@
3# -------- 3# --------
4# Finds the ICONV library 4# Finds the ICONV library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# ICONV_FOUND - system has ICONV 8# ICONV_FOUND - system has ICONV
9# ICONV_INCLUDE_DIRS - the ICONV include directory 9# ICONV_INCLUDE_DIRS - the ICONV include directory
diff --git a/cmake/modules/FindLCMS2.cmake b/cmake/modules/FindLCMS2.cmake
index 5ec7a77..7cc1497 100644
--- a/cmake/modules/FindLCMS2.cmake
+++ b/cmake/modules/FindLCMS2.cmake
@@ -3,7 +3,7 @@
3# ----------- 3# -----------
4# Finds the LCMS Color Management library 4# Finds the LCMS Color Management library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# LCMS2_FOUND - system has LCMS Color Management 8# LCMS2_FOUND - system has LCMS Color Management
9# LCMS2_INCLUDE_DIRS - the LCMS Color Management include directory 9# LCMS2_INCLUDE_DIRS - the LCMS Color Management include directory
diff --git a/cmake/modules/FindLibDRM.cmake b/cmake/modules/FindLibDRM.cmake
index 35d632e..ec30920 100644
--- a/cmake/modules/FindLibDRM.cmake
+++ b/cmake/modules/FindLibDRM.cmake
@@ -3,7 +3,7 @@
3# ---------- 3# ----------
4# Finds the LibDRM library 4# Finds the LibDRM library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# LIBDRM_FOUND - system has LibDRM 8# LIBDRM_FOUND - system has LibDRM
9# LIBDRM_INCLUDE_DIRS - the LibDRM include directory 9# LIBDRM_INCLUDE_DIRS - the LibDRM include directory
@@ -14,7 +14,7 @@
14# LibDRM::LibDRM - The LibDRM library 14# LibDRM::LibDRM - The LibDRM library
15 15
16if(PKG_CONFIG_FOUND) 16if(PKG_CONFIG_FOUND)
17 pkg_check_modules(PC_LIBDRM libdrm QUIET) 17 pkg_check_modules(PC_LIBDRM libdrm>=2.4.71 QUIET)
18endif() 18endif()
19 19
20find_path(LIBDRM_INCLUDE_DIR NAMES drm.h 20find_path(LIBDRM_INCLUDE_DIR NAMES drm.h
diff --git a/cmake/modules/FindLibDvd.cmake b/cmake/modules/FindLibDvd.cmake
index 5c72826..bd08b94 100644
--- a/cmake/modules/FindLibDvd.cmake
+++ b/cmake/modules/FindLibDvd.cmake
@@ -76,9 +76,6 @@ else()
76 endforeach() 76 endforeach()
77 77
78 set(DVDREAD_CFLAGS "${DVDREAD_CFLAGS} -I${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include") 78 set(DVDREAD_CFLAGS "${DVDREAD_CFLAGS} -I${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/include")
79 if(CMAKE_CROSSCOMPILING)
80 set(EXTRA_FLAGS "CC=${CMAKE_C_COMPILER}")
81 endif()
82 79
83 if(APPLE) 80 if(APPLE)
84 set(CMAKE_LD_FLAGS "-framework IOKit -framework CoreFoundation") 81 set(CMAKE_LD_FLAGS "-framework IOKit -framework CoreFoundation")
@@ -113,7 +110,7 @@ else()
113 --with-pic 110 --with-pic
114 --prefix=<INSTALL_DIR> 111 --prefix=<INSTALL_DIR>
115 --libdir=<INSTALL_DIR>/lib 112 --libdir=<INSTALL_DIR>/lib
116 "${EXTRA_FLAGS}" 113 "CC=${CMAKE_C_COMPILER}"
117 "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}" 114 "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}"
118 "LDFLAGS=${CMAKE_LD_FLAGS}" 115 "LDFLAGS=${CMAKE_LD_FLAGS}"
119 BUILD_BYPRODUCTS ${DVDCSS_LIBRARY}) 116 BUILD_BYPRODUCTS ${DVDCSS_LIBRARY})
@@ -154,7 +151,7 @@ else()
154 --with-pic 151 --with-pic
155 --prefix=<INSTALL_DIR> 152 --prefix=<INSTALL_DIR>
156 --libdir=<INSTALL_DIR>/lib 153 --libdir=<INSTALL_DIR>/lib
157 "${EXTRA_FLAGS}" 154 "CC=${CMAKE_C_COMPILER}"
158 "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}" 155 "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}"
159 "LDFLAGS=${CMAKE_LD_FLAGS}" 156 "LDFLAGS=${CMAKE_LD_FLAGS}"
160 BUILD_BYPRODUCTS ${DVDREAD_LIBRARY}) 157 BUILD_BYPRODUCTS ${DVDREAD_LIBRARY})
@@ -198,7 +195,7 @@ else()
198 --with-pic 195 --with-pic
199 --prefix=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd 196 --prefix=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd
200 --libdir=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib 197 --libdir=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib
201 "${EXTRA_FLAGS}" 198 "CC=${CMAKE_C_COMPILER}"
202 "LDFLAGS=${CMAKE_LD_FLAGS} -L${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib" 199 "LDFLAGS=${CMAKE_LD_FLAGS} -L${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/libdvd/lib"
203 "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}" 200 "CFLAGS=${CMAKE_C_FLAGS} ${DVDREAD_CFLAGS}"
204 "DVDREAD_CFLAGS=${DVDREAD_CFLAGS}" 201 "DVDREAD_CFLAGS=${DVDREAD_CFLAGS}"
@@ -245,4 +242,4 @@ else()
245 endif() 242 endif()
246 set(LIBDVD_LIBRARIES ${LIBDVD_LIBRARIES} CACHE STRING "libdvd libraries" FORCE) 243 set(LIBDVD_LIBRARIES ${LIBDVD_LIBRARIES} CACHE STRING "libdvd libraries" FORCE)
247 set(LIBDVD_FOUND 1 CACHE BOOL "libdvd found" FORCE) 244 set(LIBDVD_FOUND 1 CACHE BOOL "libdvd found" FORCE)
248endif() \ No newline at end of file 245endif()
diff --git a/cmake/modules/FindLibInput.cmake b/cmake/modules/FindLibInput.cmake
new file mode 100644
index 0000000..069df5f
--- /dev/null
+++ b/cmake/modules/FindLibInput.cmake
@@ -0,0 +1,36 @@
1#.rst:
2# FindLibinput
3# --------
4# Finds the libinput library
5#
6# This will define the following variables::
7#
8# LIBINPUT_FOUND - system has libinput
9# LIBINPUT_INCLUDE_DIRS - the libinput include directory
10# LIBINPUT_LIBRARIES - the libinput libraries
11# LIBINPUT_DEFINITIONS - the libinput compile definitions
12#
13
14if(PKG_CONFIG_FOUND)
15 pkg_check_modules(PC_LIBINPUT libinput QUIET)
16endif()
17
18find_path(LIBINPUT_INCLUDE_DIR NAMES libinput.h
19 PATHS ${PC_LIBINPUT_INCLUDEDIR})
20
21find_library(LIBINPUT_LIBRARY NAMES input
22 PATHS ${PC_LIBINPUT_LIBDIR})
23
24set(LIBINPUT_VERSION ${PC_LIBINPUT_VERSION})
25
26include(FindPackageHandleStandardArgs)
27find_package_handle_standard_args(LibInput
28 REQUIRED_VARS LIBINPUT_LIBRARY LIBINPUT_INCLUDE_DIR
29 VERSION_VAR LIBINPUT_VERSION)
30
31if(LIBINPUT_FOUND)
32 set(LIBINPUT_INCLUDE_DIRS ${LIBINPUT_INCLUDE_DIR})
33 set(LIBINPUT_LIBRARIES ${LIBINPUT_LIBRARY})
34endif()
35
36mark_as_advanced(LIBINPUT_INCLUDE_DIR LIBINPUT_LIBRARY)
diff --git a/cmake/modules/FindLibUSB.cmake b/cmake/modules/FindLibUSB.cmake
index e976bf4..17cf6ec 100644
--- a/cmake/modules/FindLibUSB.cmake
+++ b/cmake/modules/FindLibUSB.cmake
@@ -3,7 +3,7 @@
3# ---------- 3# ----------
4# Finds the USB library 4# Finds the USB library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# LIBUSB_FOUND - system has LibUSB 8# LIBUSB_FOUND - system has LibUSB
9# LIBUSB_INCLUDE_DIRS - the USB include directory 9# LIBUSB_INCLUDE_DIRS - the USB include directory
diff --git a/cmake/modules/FindLircClient.cmake b/cmake/modules/FindLircClient.cmake
index 528c38e..c469af5 100644
--- a/cmake/modules/FindLircClient.cmake
+++ b/cmake/modules/FindLircClient.cmake
@@ -2,7 +2,7 @@
2# ----------- 2# -----------
3# Finds the liblirc_client library 3# Finds the liblirc_client library
4# 4#
5# This will will define the following variables:: 5# This will define the following variables::
6# 6#
7# LIRCCLIENT_FOUND - if false, do not try to link to lirc_client 7# LIRCCLIENT_FOUND - if false, do not try to link to lirc_client
8# LIRCCLIENT_INCLUDE_DIRS - where to find lirc/lirc_client.h 8# LIRCCLIENT_INCLUDE_DIRS - where to find lirc/lirc_client.h
diff --git a/cmake/modules/FindLzo2.cmake b/cmake/modules/FindLzo2.cmake
index 4f7313f..5e3e686 100644
--- a/cmake/modules/FindLzo2.cmake
+++ b/cmake/modules/FindLzo2.cmake
@@ -3,7 +3,7 @@
3# -------- 3# --------
4# Finds the Lzo2 library 4# Finds the Lzo2 library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# LZO2_FOUND - system has Lzo2 8# LZO2_FOUND - system has Lzo2
9# LZO2_INCLUDE_DIRS - the Lzo2 include directory 9# LZO2_INCLUDE_DIRS - the Lzo2 include directory
diff --git a/cmake/modules/FindMDNS.cmake b/cmake/modules/FindMDNS.cmake
index 9294708..c2574c8 100644
--- a/cmake/modules/FindMDNS.cmake
+++ b/cmake/modules/FindMDNS.cmake
@@ -3,7 +3,7 @@
3# -------- 3# --------
4# Finds the mDNS library 4# Finds the mDNS library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# MDNS_FOUND - system has mDNS 8# MDNS_FOUND - system has mDNS
9# MDNS_INCLUDE_DIRS - the mDNS include directory 9# MDNS_INCLUDE_DIRS - the mDNS include directory
diff --git a/cmake/modules/FindMariaDBClient.cmake b/cmake/modules/FindMariaDBClient.cmake
index 1e5e736..8a28670 100644
--- a/cmake/modules/FindMariaDBClient.cmake
+++ b/cmake/modules/FindMariaDBClient.cmake
@@ -3,7 +3,7 @@
3# --------------- 3# ---------------
4# Finds the MariaDBClient library 4# Finds the MariaDBClient library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# MARIADBCLIENT_FOUND - system has MariaDBClient 8# MARIADBCLIENT_FOUND - system has MariaDBClient
9# MARIADBCLIENT_INCLUDE_DIRS - the MariaDBClient include directory 9# MARIADBCLIENT_INCLUDE_DIRS - the MariaDBClient include directory
diff --git a/cmake/modules/FindMicroHttpd.cmake b/cmake/modules/FindMicroHttpd.cmake
index d04878c..e6127f3 100644
--- a/cmake/modules/FindMicroHttpd.cmake
+++ b/cmake/modules/FindMicroHttpd.cmake
@@ -3,7 +3,7 @@
3# -------------- 3# --------------
4# Finds the MicroHttpd library 4# Finds the MicroHttpd library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# MICROHTTPD_FOUND - system has MicroHttpd 8# MICROHTTPD_FOUND - system has MicroHttpd
9# MICROHTTPD_INCLUDE_DIRS - the MicroHttpd include directory 9# MICROHTTPD_INCLUDE_DIRS - the MicroHttpd include directory
diff --git a/cmake/modules/FindMir.cmake b/cmake/modules/FindMir.cmake
deleted file mode 100644
index e66ff02..0000000
--- a/cmake/modules/FindMir.cmake
+++ /dev/null
@@ -1,33 +0,0 @@
1# FindMir
2# -------
3# Finds the Mir library
4#
5# This will will define the following variables::
6#
7# MIR_FOUND - the system has Mir
8# MIR_INCLUDE_DIRS - the Mir include directory
9# MIR_LIBRARIES - the Mir libraries
10# MIR_DEFINITIONS - the Mir definitions
11
12
13if(PKG_CONFIG_FOUND)
14 pkg_check_modules (PC_MIR mirclient>=0.26.2 QUIET)
15endif()
16
17find_path(MIR_INCLUDE_DIR NAMES mir_toolkit/mir_client_library.h
18 PATHS ${PC_MIR_INCLUDE_DIRS})
19
20find_library(MIR_LIBRARY NAMES mirclient
21 PATHS ${PC_MIR_LIBRARIES} ${PC_MIR_LIBRARY_DIRS})
22
23include (FindPackageHandleStandardArgs)
24find_package_handle_standard_args (Mir
25 REQUIRED_VARS MIR_LIBRARY MIR_INCLUDE_DIR)
26
27if (MIR_FOUND)
28 set(MIR_LIBRARIES ${MIR_LIBRARY})
29 set(MIR_INCLUDE_DIRS ${PC_MIR_INCLUDE_DIRS})
30 set(MIR_DEFINITIONS -DHAVE_MIR=1)
31endif()
32
33mark_as_advanced (MIR_LIBRARY MIR_INCLUDE_DIR)
diff --git a/cmake/modules/FindMySqlClient.cmake b/cmake/modules/FindMySqlClient.cmake
index 50db582..05d3f57 100644
--- a/cmake/modules/FindMySqlClient.cmake
+++ b/cmake/modules/FindMySqlClient.cmake
@@ -3,7 +3,7 @@
3# --------------- 3# ---------------
4# Finds the MySqlClient library 4# Finds the MySqlClient library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# MYSQLCLIENT_FOUND - system has MySqlClient 8# MYSQLCLIENT_FOUND - system has MySqlClient
9# MYSQLCLIENT_INCLUDE_DIRS - the MySqlClient include directory 9# MYSQLCLIENT_INCLUDE_DIRS - the MySqlClient include directory
diff --git a/cmake/modules/FindNFS.cmake b/cmake/modules/FindNFS.cmake
index b304bf3..36727c0 100644
--- a/cmake/modules/FindNFS.cmake
+++ b/cmake/modules/FindNFS.cmake
@@ -3,7 +3,7 @@
3# ------- 3# -------
4# Finds the libnfs library 4# Finds the libnfs library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# NFS_FOUND - system has libnfs 8# NFS_FOUND - system has libnfs
9# NFS_INCLUDE_DIRS - the libnfs include directory 9# NFS_INCLUDE_DIRS - the libnfs include directory
diff --git a/cmake/modules/FindOpenGLES.cmake b/cmake/modules/FindOpenGLES.cmake
index fac21bc..0191d9e 100644
--- a/cmake/modules/FindOpenGLES.cmake
+++ b/cmake/modules/FindOpenGLES.cmake
@@ -3,7 +3,7 @@
3# ------------ 3# ------------
4# Finds the OpenGLES2 library 4# Finds the OpenGLES2 library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# OPENGLES_FOUND - system has OpenGLES 8# OPENGLES_FOUND - system has OpenGLES
9# OPENGLES_INCLUDE_DIRS - the OpenGLES include directory 9# OPENGLES_INCLUDE_DIRS - the OpenGLES include directory
diff --git a/cmake/modules/FindOpenGl.cmake b/cmake/modules/FindOpenGl.cmake
index af1c433..cb695a6 100644
--- a/cmake/modules/FindOpenGl.cmake
+++ b/cmake/modules/FindOpenGl.cmake
@@ -3,7 +3,7 @@
3# ---------- 3# ----------
4# Finds the FindOpenGl library 4# Finds the FindOpenGl library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# OPENGL_FOUND - system has OpenGl 8# OPENGL_FOUND - system has OpenGl
9# OPENGL_INCLUDE_DIRS - the OpenGl include directory 9# OPENGL_INCLUDE_DIRS - the OpenGl include directory
diff --git a/cmake/modules/FindPCRE.cmake b/cmake/modules/FindPCRE.cmake
index 8babed3..d549d19 100644
--- a/cmake/modules/FindPCRE.cmake
+++ b/cmake/modules/FindPCRE.cmake
@@ -3,7 +3,7 @@
3# -------- 3# --------
4# Finds the PCRECPP library 4# Finds the PCRECPP library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# PCRE_FOUND - system has libpcrecpp 8# PCRE_FOUND - system has libpcrecpp
9# PCRE_INCLUDE_DIRS - the libpcrecpp include directory 9# PCRE_INCLUDE_DIRS - the libpcrecpp include directory
diff --git a/cmake/modules/FindPlist.cmake b/cmake/modules/FindPlist.cmake
index 0664c10..cd143e9 100644
--- a/cmake/modules/FindPlist.cmake
+++ b/cmake/modules/FindPlist.cmake
@@ -3,7 +3,7 @@
3# --------- 3# ---------
4# Finds the Plist library 4# Finds the Plist library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# PLIST_FOUND - system has Plist library 8# PLIST_FOUND - system has Plist library
9# PLIST_INCLUDE_DIRS - the Plist library include directory 9# PLIST_INCLUDE_DIRS - the Plist library include directory
diff --git a/cmake/modules/FindSSE.cmake b/cmake/modules/FindSSE.cmake
index b860dca..08e3630 100644
--- a/cmake/modules/FindSSE.cmake
+++ b/cmake/modules/FindSSE.cmake
@@ -1,4 +1,4 @@
1# Check if SSE instructions are available on the machine where 1# Check if SSE instructions are available on the machine where
2# the project is compiled. 2# the project is compiled.
3include(TestCXXAcceptsFlag) 3include(TestCXXAcceptsFlag)
4 4
@@ -74,7 +74,7 @@ elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
74 string(REGEX REPLACE "^.*(AVX2).*$" "\\1" _SSE_THERE ${CPUINFO}) 74 string(REGEX REPLACE "^.*(AVX2).*$" "\\1" _SSE_THERE ${CPUINFO})
75 string(COMPARE EQUAL "AVX2" "${_SSE_THERE}" _AVX2_TRUE) 75 string(COMPARE EQUAL "AVX2" "${_SSE_THERE}" _AVX2_TRUE)
76 CHECK_CXX_ACCEPTS_FLAG("-mavx2" _AVX2_OK) 76 CHECK_CXX_ACCEPTS_FLAG("-mavx2" _AVX2_OK)
77 endif() 77 endif()
78elseif(CMAKE_SYSTEM_NAME MATCHES "Android") 78elseif(CMAKE_SYSTEM_NAME MATCHES "Android")
79 if(CPU MATCHES "x86_64" OR CPU MATCHES "i.86") 79 if(CPU MATCHES "x86_64" OR CPU MATCHES "i.86")
80 set(_SSE_TRUE TRUE) 80 set(_SSE_TRUE TRUE)
diff --git a/cmake/modules/FindSSH.cmake b/cmake/modules/FindSSH.cmake
deleted file mode 100644
index bf3837e..0000000
--- a/cmake/modules/FindSSH.cmake
+++ /dev/null
@@ -1,47 +0,0 @@
1#.rst:
2# FindSSH
3# -------
4# Finds the SSH library
5#
6# This will will define the following variables::
7#
8# SSH_FOUND - system has SSH
9# SSH_INCLUDE_DIRS - the SSH include directory
10# SSH_LIBRARIES - the SSH libraries
11# SSH_DEFINITIONS - the SSH definitions
12#
13# and the following imported targets::
14#
15# SSH::SSH - The SSH library
16
17if(PKG_CONFIG_FOUND)
18 pkg_check_modules(PC_SSH libssh>=0.6 QUIET)
19endif()
20
21find_path(SSH_INCLUDE_DIR NAMES libssh/libssh.h
22 PATHS ${PC_SSH_INCLUDEDIR})
23find_library(SSH_LIBRARY NAMES ssh
24 PATHS ${PC_SSH_LIBDIR})
25
26set(SSH_VERSION ${PC_SSH_VERSION})
27
28include(FindPackageHandleStandardArgs)
29find_package_handle_standard_args(SSH
30 REQUIRED_VARS SSH_LIBRARY SSH_INCLUDE_DIR
31 VERSION_VAR SSH_VERSION)
32
33if(SSH_FOUND)
34 set(SSH_LIBRARIES ${SSH_LIBRARY})
35 set(SSH_INCLUDE_DIRS ${SSH_INCLUDE_DIR})
36 set(SSH_DEFINITIONS -DHAS_FILESYSTEM_SFTP=1)
37
38 if(NOT TARGET SSH::SSH)
39 add_library(SSH::SSH UNKNOWN IMPORTED)
40 set_target_properties(SSH::SSH PROPERTIES
41 IMPORTED_LOCATION "${SSH_LIBRARY}"
42 INTERFACE_INCLUDE_DIRECTORIES "${SSH_INCLUDE_DIR}"
43 INTERFACE_COMPILE_DEFINITIONS HAS_FILESYSTEM_SFTP=1)
44 endif()
45endif()
46
47mark_as_advanced(SSH_INCLUDE_DIR SSH_LIBRARY)
diff --git a/cmake/modules/FindSWIG.cmake b/cmake/modules/FindSWIG.cmake
index 523b49b..f9b27c2 100644
--- a/cmake/modules/FindSWIG.cmake
+++ b/cmake/modules/FindSWIG.cmake
@@ -3,7 +3,7 @@
3# -------- 3# --------
4# Finds the SWIG executable 4# Finds the SWIG executable
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# SWIG_FOUND - system has SWIG 8# SWIG_FOUND - system has SWIG
9# SWIG_EXECUTABLE - the SWIG executable 9# SWIG_EXECUTABLE - the SWIG executable
diff --git a/cmake/modules/FindSdl.cmake b/cmake/modules/FindSdl.cmake
index 81c1793..60959cb 100644
--- a/cmake/modules/FindSdl.cmake
+++ b/cmake/modules/FindSdl.cmake
@@ -3,7 +3,7 @@
3# ------- 3# -------
4# Finds the SDL library 4# Finds the SDL library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# SDL_FOUND - system has SDL 8# SDL_FOUND - system has SDL
9# SDL_INCLUDE_DIRS - the SDL include directory 9# SDL_INCLUDE_DIRS - the SDL include directory
diff --git a/cmake/modules/FindShairplay.cmake b/cmake/modules/FindShairplay.cmake
index 699fb7a..bbb3372 100644
--- a/cmake/modules/FindShairplay.cmake
+++ b/cmake/modules/FindShairplay.cmake
@@ -3,7 +3,7 @@
3# ------------- 3# -------------
4# Finds the Shairplay library 4# Finds the Shairplay library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# SHAIRPLAY_FOUND - system has Shairplay 8# SHAIRPLAY_FOUND - system has Shairplay
9# SHAIRPLAY_INCLUDE_DIRS - the Shairplay include directory 9# SHAIRPLAY_INCLUDE_DIRS - the Shairplay include directory
diff --git a/cmake/modules/FindSmbClient.cmake b/cmake/modules/FindSmbClient.cmake
index 9a8b197..70492ff 100644
--- a/cmake/modules/FindSmbClient.cmake
+++ b/cmake/modules/FindSmbClient.cmake
@@ -3,7 +3,7 @@
3# ------------- 3# -------------
4# Finds the SMB Client library 4# Finds the SMB Client library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# SMBCLIENT_FOUND - system has SmbClient 8# SMBCLIENT_FOUND - system has SmbClient
9# SMBCLIENT_INCLUDE_DIRS - the SmbClient include directory 9# SMBCLIENT_INCLUDE_DIRS - the SmbClient include directory
diff --git a/cmake/modules/FindSndio.cmake b/cmake/modules/FindSndio.cmake
index 5f08acd..992c0b1 100644
--- a/cmake/modules/FindSndio.cmake
+++ b/cmake/modules/FindSndio.cmake
@@ -3,7 +3,7 @@
3# --------- 3# ---------
4# Finds the Sndio Library 4# Finds the Sndio Library
5# 5#
6# This will will define the following variables: 6# This will define the following variables:
7# 7#
8# SNDIO_FOUND - system has sndio 8# SNDIO_FOUND - system has sndio
9# SNDIO_INCLUDE_DIRS - sndio include directory 9# SNDIO_INCLUDE_DIRS - sndio include directory
diff --git a/cmake/modules/FindSqlite3.cmake b/cmake/modules/FindSqlite3.cmake
index abde0cf..8fd9719 100644
--- a/cmake/modules/FindSqlite3.cmake
+++ b/cmake/modules/FindSqlite3.cmake
@@ -3,7 +3,7 @@
3# ----------- 3# -----------
4# Finds the SQLite3 library 4# Finds the SQLite3 library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# SQLITE3_FOUND - system has SQLite3 8# SQLITE3_FOUND - system has SQLite3
9# SQLITE3_INCLUDE_DIRS - the SQLite3 include directory 9# SQLITE3_INCLUDE_DIRS - the SQLite3 include directory
diff --git a/cmake/modules/FindTagLib.cmake b/cmake/modules/FindTagLib.cmake
index 8c8c2f3..ac7b7ec 100644
--- a/cmake/modules/FindTagLib.cmake
+++ b/cmake/modules/FindTagLib.cmake
@@ -3,7 +3,7 @@
3# ---------- 3# ----------
4# Finds the TagLib library 4# Finds the TagLib library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# TAGLIB_FOUND - system has TagLib 8# TAGLIB_FOUND - system has TagLib
9# TAGLIB_INCLUDE_DIRS - the TagLib include directory 9# TAGLIB_INCLUDE_DIRS - the TagLib include directory
diff --git a/cmake/modules/FindTinyXML.cmake b/cmake/modules/FindTinyXML.cmake
index 1220a94..5e9539e 100644
--- a/cmake/modules/FindTinyXML.cmake
+++ b/cmake/modules/FindTinyXML.cmake
@@ -3,7 +3,7 @@
3# ----------- 3# -----------
4# Finds the TinyXML library 4# Finds the TinyXML library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# TINYXML_FOUND - system has TinyXML 8# TINYXML_FOUND - system has TinyXML
9# TINYXML_INCLUDE_DIRS - the TinyXML include directory 9# TINYXML_INCLUDE_DIRS - the TinyXML include directory
diff --git a/cmake/modules/FindUDEV.cmake b/cmake/modules/FindUDEV.cmake
index 422c437..a884025 100644
--- a/cmake/modules/FindUDEV.cmake
+++ b/cmake/modules/FindUDEV.cmake
@@ -3,7 +3,7 @@
3# ------- 3# -------
4# Finds the UDEV library 4# Finds the UDEV library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# UDEV_FOUND - system has UDEV 8# UDEV_FOUND - system has UDEV
9# UDEV_INCLUDE_DIRS - the UDEV include directory 9# UDEV_INCLUDE_DIRS - the UDEV include directory
diff --git a/cmake/modules/FindUUID.cmake b/cmake/modules/FindUUID.cmake
index 173fac2..0c2ff5a 100644
--- a/cmake/modules/FindUUID.cmake
+++ b/cmake/modules/FindUUID.cmake
@@ -3,7 +3,7 @@
3# -------- 3# --------
4# Finds the libuuid library 4# Finds the libuuid library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# UUID_FOUND - system has libuuid 8# UUID_FOUND - system has libuuid
9# UUID_INCLUDE_DIRS - the libuuid include directory 9# UUID_INCLUDE_DIRS - the libuuid include directory
diff --git a/cmake/modules/FindVAAPI.cmake b/cmake/modules/FindVAAPI.cmake
index 157cec4..2111e4f 100644
--- a/cmake/modules/FindVAAPI.cmake
+++ b/cmake/modules/FindVAAPI.cmake
@@ -3,7 +3,7 @@
3# --------- 3# ---------
4# Finds the VAAPI library 4# Finds the VAAPI library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# VAAPI_FOUND - system has VAAPI 8# VAAPI_FOUND - system has VAAPI
9# VAAPI_INCLUDE_DIRS - the VAAPI include directory 9# VAAPI_INCLUDE_DIRS - the VAAPI include directory
diff --git a/cmake/modules/FindVDPAU.cmake b/cmake/modules/FindVDPAU.cmake
index b99e03f..b2c5482 100644
--- a/cmake/modules/FindVDPAU.cmake
+++ b/cmake/modules/FindVDPAU.cmake
@@ -3,7 +3,7 @@
3# --------- 3# ---------
4# Finds the VDPAU library 4# Finds the VDPAU library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# VDPAU_FOUND - system has VDPAU 8# VDPAU_FOUND - system has VDPAU
9# VDPAU_INCLUDE_DIRS - the VDPAU include directory 9# VDPAU_INCLUDE_DIRS - the VDPAU include directory
diff --git a/cmake/modules/FindWaylandProtocols.cmake b/cmake/modules/FindWaylandProtocols.cmake
index 0b96ff0..e74bb80 100644
--- a/cmake/modules/FindWaylandProtocols.cmake
+++ b/cmake/modules/FindWaylandProtocols.cmake
@@ -2,7 +2,7 @@
2# -------------------- 2# --------------------
3# Find wayland-protocols 3# Find wayland-protocols
4# 4#
5# This will will define the following variables:: 5# This will define the following variables::
6# 6#
7# WAYLAND_PROTOCOLS_DIR - directory containing the additional Wayland protocols 7# WAYLAND_PROTOCOLS_DIR - directory containing the additional Wayland protocols
8# from the wayland-protocols package 8# from the wayland-protocols package
diff --git a/cmake/modules/FindWaylandpp.cmake b/cmake/modules/FindWaylandpp.cmake
index 336e613..3cfc282 100644
--- a/cmake/modules/FindWaylandpp.cmake
+++ b/cmake/modules/FindWaylandpp.cmake
@@ -2,7 +2,7 @@
2# ------------- 2# -------------
3# Finds the waylandpp library 3# Finds the waylandpp library
4# 4#
5# This will will define the following variables:: 5# This will define the following variables::
6# 6#
7# WAYLANDPP_FOUND - the system has waylandpp 7# WAYLANDPP_FOUND - the system has waylandpp
8# WAYLANDPP_INCLUDE_DIRS - the waylandpp include directory 8# WAYLANDPP_INCLUDE_DIRS - the waylandpp include directory
@@ -10,15 +10,27 @@
10# WAYLANDPP_DEFINITIONS - the waylandpp definitions 10# WAYLANDPP_DEFINITIONS - the waylandpp definitions
11# WAYLANDPP_SCANNER - path to wayland-scanner++ 11# WAYLANDPP_SCANNER - path to wayland-scanner++
12 12
13pkg_check_modules(WAYLANDPP wayland-client++ wayland-egl++ wayland-cursor++) 13pkg_check_modules(PC_WAYLANDPP wayland-client++ wayland-egl++ wayland-cursor++ QUIET)
14pkg_check_modules(PC_WAYLANDPP_SCANNER wayland-scanner++) 14pkg_check_modules(PC_WAYLANDPP_SCANNER wayland-scanner++ QUIET)
15if(WAYLANDPP_FOUND) 15if(PC_WAYLANDPP_FOUND)
16 pkg_get_variable(PC_WAYLANDPP_PKGDATADIR wayland-client++ pkgdatadir) 16 pkg_get_variable(PC_WAYLANDPP_PKGDATADIR wayland-client++ pkgdatadir)
17endif() 17endif()
18if(PC_WAYLANDPP_SCANNER_FOUND) 18if(PC_WAYLANDPP_SCANNER_FOUND)
19 pkg_get_variable(PC_WAYLANDPP_SCANNER wayland-scanner++ wayland_scannerpp) 19 pkg_get_variable(PC_WAYLANDPP_SCANNER wayland-scanner++ wayland_scannerpp)
20endif() 20endif()
21 21
22find_path(WAYLANDPP_INCLUDE_DIR wayland-client.hpp PATHS ${PC_WAYLANDPP_INCLUDEDIR})
23
24find_library(WAYLANDPP_CLIENT_LIBRARY NAMES wayland-client++
25 PATHS ${PC_WAYLANDPP_LIBRARY_DIRS})
26
27find_library(WAYLANDPP_CURSOR_LIBRARY NAMES wayland-cursor++
28 PATHS ${PC_WAYLANDPP_LIBRARY_DIRS})
29
30find_library(WAYLANDPP_EGL NAMES wayland-egl++
31 PATHS ${PC_WAYLANDPP_LIBRARY_DIRS})
32
33
22# Promote to cache variables so all code can access it 34# Promote to cache variables so all code can access it
23set(WAYLANDPP_PROTOCOLS_DIR "${PC_WAYLANDPP_PKGDATADIR}/protocols" CACHE INTERNAL "") 35set(WAYLANDPP_PROTOCOLS_DIR "${PC_WAYLANDPP_PKGDATADIR}/protocols" CACHE INTERNAL "")
24 36
@@ -27,13 +39,23 @@ set(WAYLANDPP_PROTOCOLS_DIR "${PC_WAYLANDPP_PKGDATADIR}/protocols" CACHE INTERNA
27find_program(WAYLANDPP_SCANNER wayland-scanner++ PATHS ${PC_WAYLANDPP_SCANNER}) 39find_program(WAYLANDPP_SCANNER wayland-scanner++ PATHS ${PC_WAYLANDPP_SCANNER})
28 40
29include (FindPackageHandleStandardArgs) 41include (FindPackageHandleStandardArgs)
30find_package_handle_standard_args (Waylandpp 42find_package_handle_standard_args(Waylandpp
31 REQUIRED_VARS 43 REQUIRED_VARS WAYLANDPP_INCLUDE_DIR
32 WAYLANDPP_FOUND 44 WAYLANDPP_CLIENT_LIBRARY
33 WAYLANDPP_SCANNER 45 WAYLANDPP_CURSOR_LIBRARY
34 VERSION_VAR 46 WAYLANDPP_EGL
35 WAYLANDPP_wayland-client++_VERSION) 47 WAYLANDPP_SCANNER
36 48 VERSION_VAR WAYLANDPP_wayland-client++_VERSION)
37set(WAYLANDPP_DEFINITIONS -DHAVE_WAYLAND=1) 49
38# Also pass on library directories 50if(WAYLANDPP_FOUND)
39set(WAYLANDPP_LIBRARIES ${WAYLANDPP_LDFLAGS}) 51 set(WAYLANDPP_INCLUDE_DIRS ${WAYLANDPP_INCLUDE_DIR})
52 set(WAYLANDPP_LIBRARIES ${WAYLANDPP_CLIENT_LIBRARY}
53 ${WAYLANDPP_CURSOR_LIBRARY}
54 ${WAYLANDPP_EGL})
55 set(WAYLANDPP_DEFINITIONS -DHAVE_WAYLAND=1)
56endif()
57
58mark_as_advanced(WAYLANDPP_INCLUDE_DIR
59 WAYLANDPP_CLIENT_LIBRARY
60 WAYLANDPP_CURSOR_LIBRARY
61 WAYLANDPP_EGL WAYLANDPP_SCANNER)
diff --git a/cmake/modules/FindX.cmake b/cmake/modules/FindX.cmake
index 19bb770..a52f86f 100644
--- a/cmake/modules/FindX.cmake
+++ b/cmake/modules/FindX.cmake
@@ -3,7 +3,7 @@
3# ----- 3# -----
4# Finds the X11 library 4# Finds the X11 library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# X_FOUND - system has X11 8# X_FOUND - system has X11
9# X_INCLUDE_DIRS - the X11 include directory 9# X_INCLUDE_DIRS - the X11 include directory
diff --git a/cmake/modules/FindXRandR.cmake b/cmake/modules/FindXRandR.cmake
index 9feaedc..12f3478 100644
--- a/cmake/modules/FindXRandR.cmake
+++ b/cmake/modules/FindXRandR.cmake
@@ -3,7 +3,7 @@
3# ---------- 3# ----------
4# Finds the XRandR library 4# Finds the XRandR library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# XRANDR_FOUND - system has XRANDR 8# XRANDR_FOUND - system has XRANDR
9# XRANDR_INCLUDE_DIRS - the XRANDR include directory 9# XRANDR_INCLUDE_DIRS - the XRANDR include directory
diff --git a/cmake/modules/FindXSLT.cmake b/cmake/modules/FindXSLT.cmake
index f7fea9e..3637214 100644
--- a/cmake/modules/FindXSLT.cmake
+++ b/cmake/modules/FindXSLT.cmake
@@ -3,7 +3,7 @@
3# -------- 3# --------
4# Finds the XSLT library 4# Finds the XSLT library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# XSLT_FOUND - system has XSLT 8# XSLT_FOUND - system has XSLT
9# XSLT_INCLUDE_DIRS - the XSLT include directory 9# XSLT_INCLUDE_DIRS - the XSLT include directory
diff --git a/cmake/modules/FindXkbcommon.cmake b/cmake/modules/FindXkbcommon.cmake
index 2a84fe5..40cbb31 100644
--- a/cmake/modules/FindXkbcommon.cmake
+++ b/cmake/modules/FindXkbcommon.cmake
@@ -2,20 +2,39 @@
2# ----------- 2# -----------
3# Finds the libxkbcommon library 3# Finds the libxkbcommon library
4# 4#
5# This will will define the following variables:: 5# This will define the following variables::
6# 6#
7# XKBCOMMON_FOUND - the system has libxkbcommon 7# XKBCOMMON_FOUND - the system has libxkbcommon
8# XKBCOMMON_INCLUDE_DIRS - the libxkbcommon include directory 8# XKBCOMMON_INCLUDE_DIRS - the libxkbcommon include directory
9# XKBCOMMON_LIBRARIES - the libxkbcommon libraries 9# XKBCOMMON_LIBRARIES - the libxkbcommon libraries
10# XKBCOMMON_DEFINITIONS - the libxkbcommon definitions
11 10
12pkg_check_modules (XKBCOMMON xkbcommon) 11if(PKG_CONFIG_FOUND)
12 pkg_check_modules(PC_XKBCOMMON xkbcommon QUIET)
13endif()
13 14
14include (FindPackageHandleStandardArgs)
15find_package_handle_standard_args (Xkbcommon
16 REQUIRED_VARS
17 XKBCOMMON_FOUND)
18 15
19set(XKBCOMMON_DEFINITIONS -DHAVE_XKBCOMMON=1) 16find_path(XKBCOMMON_INCLUDE_DIR NAMES xkbcommon/xkbcommon.h
20set(XKBCOMMON_LIBRARIES ${XKBCOMMON_LDFLAGS}) 17 PATHS ${PC_XKBCOMMON_INCLUDEDIR})
21set(XKBCOMMON_INCLUDE_DIRS ${XKBCOMMON_INCLUDEDIR}) 18find_library(XKBCOMMON_LIBRARY NAMES xkbcommon
19 PATHS ${PC_XKBCOMMON_LIBDIR})
20
21set(XKBCOMMON_VERSION ${PC_XKBCOMMON_VERSION})
22
23include(FindPackageHandleStandardArgs)
24find_package_handle_standard_args(Xkbcommon
25 REQUIRED_VARS XKBCOMMON_LIBRARY XKBCOMMON_INCLUDE_DIR
26 VERSION_VAR XKBCOMMON_VERSION)
27
28if(XKBCOMMON_FOUND)
29 set(XKBCOMMON_INCLUDE_DIRS ${XKBCOMMON_INCLUDE_DIR})
30 set(XKBCOMMON_LIBRARIES ${XKBCOMMON_LIBRARY})
31
32 if(NOT TARGET XKBCOMMON::XKBCOMMON)
33 add_library(XKBCOMMON::XKBCOMMON UNKNOWN IMPORTED)
34 set_target_properties(XKBCOMMON::XKBCOMMON PROPERTIES
35 IMPORTED_LOCATION "${XKBCOMMON_LIBRARY}"
36 INTERFACE_INCLUDE_DIRECTORIES "${XKBCOMMON_INCLUDE_DIR}")
37 endif()
38endif()
39
40mark_as_advanced(XKBCOMMON_INCLUDE_DIR XKBCOMMON_LIBRARY)
diff --git a/cmake/modules/FindYajl.cmake b/cmake/modules/FindYajl.cmake
index c73a67b..d8793e6 100644
--- a/cmake/modules/FindYajl.cmake
+++ b/cmake/modules/FindYajl.cmake
@@ -3,7 +3,7 @@
3# -------- 3# --------
4# Finds the Yajl library 4# Finds the Yajl library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# YAJL_FOUND - system has Yajl 8# YAJL_FOUND - system has Yajl
9# YAJL_INCLUDE_DIRS - Yajl include directory 9# YAJL_INCLUDE_DIRS - Yajl include directory
diff --git a/cmake/modules/FindZip.cmake b/cmake/modules/FindZip.cmake
index ecac262..6ddf478 100644
--- a/cmake/modules/FindZip.cmake
+++ b/cmake/modules/FindZip.cmake
@@ -3,7 +3,7 @@
3# ----------- 3# -----------
4# Finds the Zip library 4# Finds the Zip library
5# 5#
6# This will will define the following variables:: 6# This will define the following variables::
7# 7#
8# ZIP_FOUND - system has Zip 8# ZIP_FOUND - system has Zip
9# ZIP_INCLUDE_DIRS - the Zip include directory 9# ZIP_INCLUDE_DIRS - the Zip include directory
diff --git a/cmake/modules/Findfstrcmp.cmake b/cmake/modules/Findfstrcmp.cmake
new file mode 100644
index 0000000..f0c15d3
--- /dev/null
+++ b/cmake/modules/Findfstrcmp.cmake
@@ -0,0 +1,80 @@
1#.rst:
2# Findfstrcmp
3# --------
4# Finds the fstrcmp library
5#
6# This will define the following variables::
7#
8# FSTRCMP_FOUND - system has libfstrcmp
9# FSTRCMP_INCLUDE_DIRS - the libfstrcmp include directory
10# FSTRCMP_LIBRARIES - the libfstrcmp libraries
11#
12
13if(ENABLE_INTERNAL_FSTRCMP)
14 include(ExternalProject)
15 file(STRINGS ${CMAKE_SOURCE_DIR}/tools/depends/target/libfstrcmp/Makefile VER)
16 string(REGEX MATCH "VERSION=[^ ]*" FSTRCMP_VER "${VER}")
17 list(GET FSTRCMP_VER 0 FSTRCMP_VER)
18 string(SUBSTRING "${FSTRCMP_VER}" 8 -1 FSTRCMP_VER)
19
20 # allow user to override the download URL with a local tarball
21 # needed for offline build envs
22 if(FSTRCMP_URL)
23 get_filename_component(FSTRCMP_URL "${FSTRCMP_URL}" ABSOLUTE)
24 else()
25 set(FSTRCMP_URL http://mirrors.kodi.tv/build-deps/sources/fstrcmp-${FSTRCMP_VER}.tar.gz)
26 endif()
27 if(VERBOSE)
28 message(STATUS "FSTRCMPURL: ${FSTRCMP_URL}")
29 endif()
30
31 set(FSTRCMP_LIBRARY ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/libfstrcmp.a)
32 set(FSTRCMP_INCLUDE_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/include)
33 externalproject_add(fstrcmp
34 URL ${FSTRCMP_URL}
35 DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/download
36 PREFIX ${CORE_BUILD_DIR}/fstrcmp
37 CONFIGURE_COMMAND autoreconf -vif && ./configure --prefix ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}
38 BUILD_BYPRODUCTS ${FSTRCMP_LIBRARY}
39 BUILD_IN_SOURCE 1)
40 set_target_properties(fstrcmp PROPERTIES FOLDER "External Projects")
41
42 include(FindPackageHandleStandardArgs)
43 find_package_handle_standard_args(fstrcmp
44 REQUIRED_VARS FSTRCMP_LIBRARY FSTRCMP_INCLUDE_DIR
45 VERSION_VAR FSTRCMP_VER)
46
47 set(FSTRCMP_LIBRARIES -Wl,-Bstatic ${FSTRCMP_LIBRARY} -Wl,-Bdynamic)
48 set(FSTRCMP_INCLUDE_DIRS ${FSTRCMP_INCLUDE_DIR})
49else()
50 if(PKG_CONFIG_FOUND)
51 pkg_check_modules(PC_FSTRCMP fstrcmp QUIET)
52 endif()
53
54 find_path(FSTRCMP_INCLUDE_DIR NAMES fstrcmp.h
55 PATHS ${PC_FSTRCMP_INCLUDEDIR})
56
57 find_library(FSTRCMP_LIBRARY NAMES fstrcmp
58 PATHS ${PC_FSTRCMP_LIBDIR})
59
60 set(FSTRCMP_VERSION ${PC_FSTRCMP_VERSION})
61
62 include(FindPackageHandleStandardArgs)
63 find_package_handle_standard_args(fstrcmp
64 REQUIRED_VARS FSTRCMP_LIBRARY FSTRCMP_INCLUDE_DIR
65 VERSION_VAR FSTRCMP_VERSION)
66
67 if(FSTRCMP_FOUND)
68 set(FSTRCMP_INCLUDE_DIRS ${FSTRCMP_INCLUDE_DIR})
69 set(FSTRCMP_LIBRARIES ${FSTRCMP_LIBRARY})
70 endif()
71
72 if(NOT TARGET fstrcmp)
73 add_library(fstrcmp UNKNOWN IMPORTED)
74 set_target_properties(fstrcmp PROPERTIES
75 IMPORTED_LOCATION "${FSTRCMP_LIBRARY}"
76 INTERFACE_INCLUDE_DIRECTORIES "${FSTRCMP_INCLUDE_DIR}")
77 endif()
78endif()
79
80mark_as_advanced(FSTRCMP_INCLUDE_DIR FSTRCMP_LIBRARY)
diff --git a/cmake/platform/freebsd/gbm.cmake b/cmake/platform/freebsd/gbm.cmake
new file mode 100644
index 0000000..b273a06
--- /dev/null
+++ b/cmake/platform/freebsd/gbm.cmake
@@ -0,0 +1 @@
include(cmake/platform/linux/gbm.cmake)
diff --git a/cmake/platform/freebsd/rbpi.cmake b/cmake/platform/freebsd/rbpi.cmake
new file mode 100644
index 0000000..f095693
--- /dev/null
+++ b/cmake/platform/freebsd/rbpi.cmake
@@ -0,0 +1 @@
include(cmake/platform/linux/rbpi.cmake)
diff --git a/cmake/platform/linux/aml.cmake b/cmake/platform/linux/aml.cmake
index 82e242b..a151226 100644
--- a/cmake/platform/linux/aml.cmake
+++ b/cmake/platform/linux/aml.cmake
@@ -1,3 +1,3 @@
1set(PLATFORM_REQUIRED_DEPS OpenGLES AML EGL) 1set(PLATFORM_REQUIRED_DEPS OpenGLES AML EGL LibInput Xkbcommon)
2set(APP_RENDER_SYSTEM gles) 2set(APP_RENDER_SYSTEM gles)
3list(APPEND PLATFORM_DEFINES -DMESA_EGL_NO_X11_HEADERS) 3list(APPEND PLATFORM_DEFINES -DMESA_EGL_NO_X11_HEADERS)
diff --git a/cmake/platform/linux/gbm.cmake b/cmake/platform/linux/gbm.cmake
index d8e73d0..e5b44ad 100644
--- a/cmake/platform/linux/gbm.cmake
+++ b/cmake/platform/linux/gbm.cmake
@@ -1,4 +1,17 @@
1set(PLATFORM_REQUIRED_DEPS OpenGLES EGL GBM LibDRM) 1set(PLATFORM_REQUIRED_DEPS EGL GBM LibDRM LibInput Xkbcommon)
2set(PLATFORM_OPTIONAL_DEPS VAAPI) 2set(PLATFORM_OPTIONAL_DEPS VAAPI)
3set(APP_RENDER_SYSTEM gles) 3
4list(APPEND PLATFORM_DEFINES -DMESA_EGL_NO_X11_HEADERS -DPLATFORM_SETTINGS_FILE=gbm.xml) 4set(GBM_RENDER_SYSTEM "" CACHE STRING "Render system to use with GBM: \"gl\" or \"gles\"")
5
6if(GBM_RENDER_SYSTEM STREQUAL "gl")
7 list(APPEND PLATFORM_REQUIRED_DEPS OpenGl)
8 set(APP_RENDER_SYSTEM gl)
9elseif(GBM_RENDER_SYSTEM STREQUAL "gles")
10 list(APPEND PLATFORM_REQUIRED_DEPS OpenGLES)
11 set(APP_RENDER_SYSTEM gles)
12else()
13 message(SEND_ERROR "You need to decide whether you want to use GL- or GLES-based rendering in combination with the GBM windowing system. Please set GBM_RENDER_SYSTEM to either \"gl\" or \"gles\". For normal desktop systems, you will usually want to use \"gl\".")
14endif()
15
16# __GBM__ is needed by eglplatform.h in case it is included before gbm.h
17list(APPEND PLATFORM_DEFINES -DMESA_EGL_NO_X11_HEADERS -D__GBM__=1 -DPLATFORM_SETTINGS_FILE=gbm.xml)
diff --git a/cmake/platform/linux/mir.cmake b/cmake/platform/linux/mir.cmake
deleted file mode 100644
index 0e672a9..0000000
--- a/cmake/platform/linux/mir.cmake
+++ /dev/null
@@ -1,3 +0,0 @@
1set(PLATFORM_REQUIRED_DEPS OpenGl EGL Mir LibDRM)
2set(PLATFORM_OPTIONAL_DEPS VAAPI OpenGLES)
3set(APP_RENDER_SYSTEM gl)
diff --git a/cmake/platform/linux/rbpi.cmake b/cmake/platform/linux/rbpi.cmake
index fa9a1dc..3dde57d 100644
--- a/cmake/platform/linux/rbpi.cmake
+++ b/cmake/platform/linux/rbpi.cmake
@@ -1,3 +1,3 @@
1set(PLATFORM_REQUIRED_DEPS OpenGLES EGL MMAL) 1set(PLATFORM_REQUIRED_DEPS OpenGLES EGL MMAL LibInput Xkbcommon)
2set(APP_RENDER_SYSTEM gles) 2set(APP_RENDER_SYSTEM gles)
3list(APPEND PLATFORM_DEFINES -D_ARMEL -DTARGET_RASPBERRY_PI) 3list(APPEND PLATFORM_DEFINES -D_ARMEL -DTARGET_RASPBERRY_PI)
diff --git a/cmake/platform/linux/wayland.cmake b/cmake/platform/linux/wayland.cmake
index f42dbf5..97cff67 100644
--- a/cmake/platform/linux/wayland.cmake
+++ b/cmake/platform/linux/wayland.cmake
@@ -15,5 +15,7 @@ endif()
15 15
16set(PLATFORM_GLOBAL_TARGET_DEPS generate-wayland-extra-protocols) 16set(PLATFORM_GLOBAL_TARGET_DEPS generate-wayland-extra-protocols)
17set(WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}") 17set(WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}")
18# WL_EGL_PLATFORM is needed by eglplatform.h in case it is included before wayland-egl.h
19list(APPEND PLATFORM_DEFINES -DWL_EGL_PLATFORM=1 -DPLATFORM_SETTINGS_FILE=wayland.xml)
18# for wayland-extra-protocols.hpp 20# for wayland-extra-protocols.hpp
19include_directories("${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}") 21include_directories("${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}")
diff --git a/cmake/platform/linux/x11.cmake b/cmake/platform/linux/x11.cmake
index 09cebde..72d9640 100644
--- a/cmake/platform/linux/x11.cmake
+++ b/cmake/platform/linux/x11.cmake
@@ -1,3 +1,4 @@
1set(PLATFORM_REQUIRED_DEPS OpenGl EGL X XRandR LibDRM) 1set(PLATFORM_REQUIRED_DEPS OpenGl EGL X XRandR LibDRM)
2set(PLATFORM_OPTIONAL_DEPS VAAPI VDPAU GLX) 2set(PLATFORM_OPTIONAL_DEPS VAAPI VDPAU GLX)
3set(APP_RENDER_SYSTEM gl) 3set(APP_RENDER_SYSTEM gl)
4list(APPEND PLATFORM_DEFINES -DPLATFORM_SETTINGS_FILE=x11.xml) \ No newline at end of file
diff --git a/cmake/scripts/android/Install.cmake b/cmake/scripts/android/Install.cmake
index cc53607..a0fa155 100644
--- a/cmake/scripts/android/Install.cmake
+++ b/cmake/scripts/android/Install.cmake
@@ -151,6 +151,8 @@ foreach(lib IN LISTS required_dyload dyload_optional ITEMS Shairplay)
151 add_bundle_file(${DEPENDS_PATH}/lib/${lib_so} ${libdir} "") 151 add_bundle_file(${DEPENDS_PATH}/lib/${lib_so} ${libdir} "")
152 endif() 152 endif()
153endforeach() 153endforeach()
154add_bundle_file(${ASS_LIBRARY} ${libdir} "")
155add_bundle_file(${BLURAY_LIBRARY} ${libdir} "")
154add_bundle_file(${SMBCLIENT_LIBRARY} ${libdir} "") 156add_bundle_file(${SMBCLIENT_LIBRARY} ${libdir} "")
155 157
156# Main targets from Makefile.in 158# Main targets from Makefile.in
diff --git a/cmake/scripts/common/AddonHelpers.cmake b/cmake/scripts/common/AddonHelpers.cmake
index 5470940..4bb4c98 100644
--- a/cmake/scripts/common/AddonHelpers.cmake
+++ b/cmake/scripts/common/AddonHelpers.cmake
@@ -1,9 +1,9 @@
1# Workaround for the fact that cpack's filenames are not customizable. 1# Workaround for the fact that cpack's filenames are not customizable.
2# Each add-on is added as a separate component to facilitate zip/tgz packaging. 2# Each add-on is added as a separate component to facilitate zip/tgz packaging.
3# The filenames are always of the form basename-component, which is 3# The filenames are always of the form basename-component, which is
4# incompatible with the addonid-version scheme we want. This hack renames 4# incompatible with the addonid-version scheme we want. This hack renames
5# the files from the file names generated by the 'package' target. 5# the files from the file names generated by the 'package' target.
6# Sadly we cannot extend the 'package' target, as it is a builtin target, see 6# Sadly we cannot extend the 'package' target, as it is a builtin target, see
7# http://public.kitware.com/Bug/view.php?id=8438 7# http://public.kitware.com/Bug/view.php?id=8438
8# Thus, we have to add an 'addon-package' target. 8# Thus, we have to add an 'addon-package' target.
9get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) 9get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
@@ -32,7 +32,7 @@ macro (addon_version dir prefix)
32 file(READ ${dir}/addon.xml ADDONXML) 32 file(READ ${dir}/addon.xml ADDONXML)
33 endif() 33 endif()
34 34
35 string(REGEX MATCH "<addon[^>]*version.?=.?.[0-9\\.]+" VERSION_STRING ${ADDONXML}) 35 string(REGEX MATCH "<addon[^>]*version.?=.?.[0-9\\.]+" VERSION_STRING ${ADDONXML})
36 string(REGEX REPLACE ".*version=.([0-9\\.]+).*" "\\1" ${prefix}_VERSION ${VERSION_STRING}) 36 string(REGEX REPLACE ".*version=.([0-9\\.]+).*" "\\1" ${prefix}_VERSION ${VERSION_STRING})
37 message(STATUS ${prefix}_VERSION=${${prefix}_VERSION}) 37 message(STATUS ${prefix}_VERSION=${${prefix}_VERSION})
38endmacro() 38endmacro()
@@ -62,7 +62,7 @@ macro (build_addon target prefix libs)
62 # include path name already complete 62 # include path name already complete
63 list(APPEND USED_SOURCES ${${prefix}_HEADERS}) 63 list(APPEND USED_SOURCES ${${prefix}_HEADERS})
64 else() 64 else()
65 # add the complete include path to begin 65 # add the complete include path to begin
66 foreach(hdr_file ${${prefix}_HEADERS}) 66 foreach(hdr_file ${${prefix}_HEADERS})
67 list(APPEND USED_SOURCES ${PROJECT_SOURCE_DIR}/${hdr_file}) 67 list(APPEND USED_SOURCES ${PROJECT_SOURCE_DIR}/${hdr_file})
68 endforeach() 68 endforeach()
@@ -86,19 +86,19 @@ macro (build_addon target prefix libs)
86 # include path name already complete 86 # include path name already complete
87 list(APPEND USED_SOURCES ${${prefix}_SOURCES}) 87 list(APPEND USED_SOURCES ${${prefix}_SOURCES})
88 else() 88 else()
89 # add the complete include path to begin 89 # add the complete include path to begin
90 foreach(src_file ${${prefix}_SOURCES}) 90 foreach(src_file ${${prefix}_SOURCES})
91 list(APPEND USED_SOURCES ${PROJECT_SOURCE_DIR}/${src_file}) 91 list(APPEND USED_SOURCES ${PROJECT_SOURCE_DIR}/${src_file})
92 endforeach() 92 endforeach()
93 endif() 93 endif()
94 94
95 # Set defines used in addon.xml.in and read from versions.h to set add-on 95 # Set defines used in addon.xml.in and read from versions.h to set add-on
96 # version parts automatically 96 # version parts automatically
97 file(STRINGS ${KODI_INCLUDE_DIR}/versions.h BIN_ADDON_PARTS) 97 file(STRINGS ${KODI_INCLUDE_DIR}/versions.h BIN_ADDON_PARTS)
98 foreach(loop_var ${BIN_ADDON_PARTS}) 98 foreach(loop_var ${BIN_ADDON_PARTS})
99 # Only pass strings with "#define ADDON_" from versions.h 99 # Only pass strings with "#define ADDON_" from versions.h
100 if(loop_var MATCHES "#define ADDON_") 100 if(loop_var MATCHES "#define ADDON_")
101 string(REGEX REPLACE "\\\n" " " loop_var ${loop_var}) # remove header line breaks 101 string(REGEX REPLACE "\\\n" " " loop_var ${loop_var}) # remove header line breaks
102 string(REGEX REPLACE "#define " "" loop_var ${loop_var}) # remove the #define name from string 102 string(REGEX REPLACE "#define " "" loop_var ${loop_var}) # remove the #define name from string
103 string(REGEX MATCHALL "[//a-zA-Z0-9._-]+" loop_var "${loop_var}") # separate the define values to a list 103 string(REGEX MATCHALL "[//a-zA-Z0-9._-]+" loop_var "${loop_var}") # separate the define values to a list
104 104
@@ -157,7 +157,8 @@ macro (build_addon target prefix libs)
157 target_link_libraries(${target} ${${libs}}) 157 target_link_libraries(${target} ${${libs}})
158 set_target_properties(${target} PROPERTIES VERSION ${${prefix}_VERSION} 158 set_target_properties(${target} PROPERTIES VERSION ${${prefix}_VERSION}
159 SOVERSION ${APP_VERSION_MAJOR}.${APP_VERSION_MINOR} 159 SOVERSION ${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}
160 PREFIX "") 160 PREFIX ""
161 POSITION_INDEPENDENT_CODE 1)
161 if(OS STREQUAL "android") 162 if(OS STREQUAL "android")
162 set_target_properties(${target} PROPERTIES PREFIX "lib") 163 set_target_properties(${target} PROPERTIES PREFIX "lib")
163 endif() 164 endif()
@@ -384,7 +385,7 @@ if(HAVE_LTO)
384 if(USE_LTO) 385 if(USE_LTO)
385 add_options(ALL_LANGUAGES ALL_BUILDS "-flto") 386 add_options(ALL_LANGUAGES ALL_BUILDS "-flto")
386 endif() 387 endif()
387endif() 388endif()
388 389
389# set this to try linking dependencies as static as possible 390# set this to try linking dependencies as static as possible
390if(ADDONS_PREFER_STATIC_LIBS) 391if(ADDONS_PREFER_STATIC_LIBS)
diff --git a/cmake/scripts/common/ArchSetup.cmake b/cmake/scripts/common/ArchSetup.cmake
index c97929e..4704193 100644
--- a/cmake/scripts/common/ArchSetup.cmake
+++ b/cmake/scripts/common/ArchSetup.cmake
@@ -55,7 +55,7 @@ macro(check_builtin func var)
55endmacro() 55endmacro()
56 56
57 57
58# -------- Main script --------- 58# -------- Main script ---------
59message(STATUS "System type: ${CMAKE_SYSTEM_NAME}") 59message(STATUS "System type: ${CMAKE_SYSTEM_NAME}")
60 60
61if(WITH_CPU) 61if(WITH_CPU)
@@ -157,7 +157,8 @@ if(PLATFORM_DEFINES)
157 add_options(ALL_LANGUAGES ALL_BUILDS ${PLATFORM_DEFINES}) 157 add_options(ALL_LANGUAGES ALL_BUILDS ${PLATFORM_DEFINES})
158endif() 158endif()
159 159
160if(CMAKE_BUILD_TYPE STREQUAL "Debug") 160if(NOT MSVC)
161 add_options (ALL_LANGUAGES DEBUG "-g" "-D_DEBUG" "-Wall") 161 add_options(ALL_LANGUAGES ALL_BUILDS "-Wall")
162 add_options(ALL_LANGUAGES DEBUG "-g" "-D_DEBUG")
162endif() 163endif()
163 164
diff --git a/cmake/scripts/common/CheckTargetPlatform.cmake b/cmake/scripts/common/CheckTargetPlatform.cmake
index 82ee668..526e4bd 100644
--- a/cmake/scripts/common/CheckTargetPlatform.cmake
+++ b/cmake/scripts/common/CheckTargetPlatform.cmake
@@ -9,9 +9,9 @@ function(check_target_platform dir target_platform build)
9 if(EXISTS ${dir} AND EXISTS ${dir}/platforms.txt) 9 if(EXISTS ${dir} AND EXISTS ${dir}/platforms.txt)
10 # get all the specified platforms 10 # get all the specified platforms
11 file(STRINGS ${dir}/platforms.txt platforms) 11 file(STRINGS ${dir}/platforms.txt platforms)
12 12
13 list( LENGTH platforms listlen ) 13 list( LENGTH platforms listlen )
14 if(${listlen} EQUAL 1) 14 if(${listlen} EQUAL 1)
15 string(REPLACE " " ";" platforms ${platforms}) 15 string(REPLACE " " ";" platforms ${platforms})
16 endif() 16 endif()
17 17
diff --git a/cmake/scripts/common/HandleDepends.cmake b/cmake/scripts/common/HandleDepends.cmake
index fb110d6..47f7d9b 100644
--- a/cmake/scripts/common/HandleDepends.cmake
+++ b/cmake/scripts/common/HandleDepends.cmake
@@ -231,9 +231,23 @@ function(add_addon_depends addon searchpath)
231 -DCMAKE_INCLUDE_PATH=${OUTPUT_DIR}/include) 231 -DCMAKE_INCLUDE_PATH=${OUTPUT_DIR}/include)
232 endif() 232 endif()
233 233
234 set(DOWNLOAD_DIR ${BUILD_DIR}/download)
235 if(EXISTS ${dir}/${id}.sha256)
236 file(STRINGS ${dir}/${id}.sha256 sha256sum)
237 list(GET sha256sum 0 sha256sum)
238 set(URL_HASH_COMMAND URL_HASH SHA256=${sha256sum})
239 if(TARBALL_DIR)
240 set(DOWNLOAD_DIR ${TARBALL_DIR})
241 endif()
242 else()
243 unset(URL_HASH_COMMAND)
244 message(AUTHOR_WARNING "${dir}/${id}.sha256 is missing")
245 endif()
246
234 externalproject_add(${id} 247 externalproject_add(${id}
235 URL ${url} 248 URL ${url}
236 DOWNLOAD_DIR ${BUILD_DIR}/download 249 "${URL_HASH_COMMAND}"
250 DOWNLOAD_DIR ${DOWNLOAD_DIR}
237 CONFIGURE_COMMAND ${CONFIGURE_COMMAND} 251 CONFIGURE_COMMAND ${CONFIGURE_COMMAND}
238 "${EXTERNALPROJECT_SETUP}") 252 "${EXTERNALPROJECT_SETUP}")
239 endif() 253 endif()
diff --git a/cmake/scripts/common/Macros.cmake b/cmake/scripts/common/Macros.cmake
index c21069d..0d89dd3 100644
--- a/cmake/scripts/common/Macros.cmake
+++ b/cmake/scripts/common/Macros.cmake
@@ -468,7 +468,7 @@ function(core_optional_dyload_dep)
468 foreach(depspec ${ARGN}) 468 foreach(depspec ${ARGN})
469 set(_required False) 469 set(_required False)
470 split_dependency_specification(${depspec} dep version) 470 split_dependency_specification(${depspec} dep version)
471 setup_enable_switch() 471 setup_enable_switch()
472 if(${enable_switch} STREQUAL AUTO) 472 if(${enable_switch} STREQUAL AUTO)
473 find_package_with_ver(${dep} ${version}) 473 find_package_with_ver(${dep} ${version})
474 elseif(${${enable_switch}}) 474 elseif(${${enable_switch}})
@@ -662,7 +662,11 @@ function(core_find_git_rev stamp)
662 string(REPLACE "\"" "" DATE ${DATE}) 662 string(REPLACE "\"" "" DATE ${DATE})
663 string(REPLACE "-" "" DATE ${DATE}) 663 string(REPLACE "-" "" DATE ${DATE})
664 else() 664 else()
665 string(TIMESTAMP DATE "%Y%m%d" UTC) 665 if(EXISTS ${CMAKE_SOURCE_DIR}/BUILDDATE)
666 file(STRINGS ${CMAKE_SOURCE_DIR}/BUILDDATE DATE LIMIT_INPUT 8)
667 else()
668 string(TIMESTAMP DATE "%Y%m%d" UTC)
669 endif()
666 if(EXISTS ${CMAKE_SOURCE_DIR}/VERSION) 670 if(EXISTS ${CMAKE_SOURCE_DIR}/VERSION)
667 file(STRINGS ${CMAKE_SOURCE_DIR}/VERSION HASH LIMIT_INPUT 16) 671 file(STRINGS ${CMAKE_SOURCE_DIR}/VERSION HASH LIMIT_INPUT 16)
668 else() 672 else()
@@ -687,6 +691,7 @@ endfunction()
687# APP_NAME_UC - uppercased app name 691# APP_NAME_UC - uppercased app name
688# APP_PACKAGE - Android full package name 692# APP_PACKAGE - Android full package name
689# COMPANY_NAME - company name 693# COMPANY_NAME - company name
694# APP_WEBSITE - site url
690# APP_VERSION_MAJOR - the app version major 695# APP_VERSION_MAJOR - the app version major
691# APP_VERSION_MINOR - the app version minor 696# APP_VERSION_MINOR - the app version minor
692# APP_VERSION_TAG - the app version tag 697# APP_VERSION_TAG - the app version tag
@@ -711,7 +716,7 @@ macro(core_find_versions)
711 core_file_read_filtered(version_list ${CORE_SOURCE_DIR}/version.txt) 716 core_file_read_filtered(version_list ${CORE_SOURCE_DIR}/version.txt)
712 core_file_read_filtered(json_version ${CORE_SOURCE_DIR}/xbmc/interfaces/json-rpc/schema/version.txt) 717 core_file_read_filtered(json_version ${CORE_SOURCE_DIR}/xbmc/interfaces/json-rpc/schema/version.txt)
713 string(REGEX REPLACE "([^ ;]*) ([^;]*)" "\\1;\\2" version_list "${version_list};${json_version}") 718 string(REGEX REPLACE "([^ ;]*) ([^;]*)" "\\1;\\2" version_list "${version_list};${json_version}")
714 set(version_props 719 set(version_props
715 ADDON_API 720 ADDON_API
716 APP_NAME 721 APP_NAME
717 APP_PACKAGE 722 APP_PACKAGE
@@ -761,6 +766,9 @@ macro(core_find_versions)
761 # unset variables not used anywhere else 766 # unset variables not used anywhere else
762 unset(version_list) 767 unset(version_list)
763 unset(APP_APP_NAME) 768 unset(APP_APP_NAME)
769 unset(APP_COMPANY_NAME)
770 unset(APP_APP_PACKAGE)
771 unset(APP_JSONRPC_VERSION)
764 unset(BIN_ADDON_PARTS) 772 unset(BIN_ADDON_PARTS)
765 773
766 # bail if we can't parse version.txt 774 # bail if we can't parse version.txt
diff --git a/cmake/scripts/common/ProjectMacros.cmake b/cmake/scripts/common/ProjectMacros.cmake
index 641e047..fba5252 100644
--- a/cmake/scripts/common/ProjectMacros.cmake
+++ b/cmake/scripts/common/ProjectMacros.cmake
@@ -46,7 +46,7 @@ function(copy_skin_to_buildtree skin)
46endfunction() 46endfunction()
47 47
48# Get GTest tests as CMake tests. 48# Get GTest tests as CMake tests.
49# Copied from FindGTest.cmake 49# Copied from FindGTest.cmake
50# Thanks to Daniel Blezek <blezek@gmail.com> for the GTEST_ADD_TESTS code 50# Thanks to Daniel Blezek <blezek@gmail.com> for the GTEST_ADD_TESTS code
51function(GTEST_ADD_TESTS executable extra_args) 51function(GTEST_ADD_TESTS executable extra_args)
52 if(NOT ARGN) 52 if(NOT ARGN)
diff --git a/cmake/scripts/freebsd/ArchSetup.cmake b/cmake/scripts/freebsd/ArchSetup.cmake
index db11bf8..3d5599c 100644
--- a/cmake/scripts/freebsd/ArchSetup.cmake
+++ b/cmake/scripts/freebsd/ArchSetup.cmake
@@ -10,6 +10,15 @@ else()
10 set(ARCH x86_64-freebsd) 10 set(ARCH x86_64-freebsd)
11 elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i.86") 11 elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i.86")
12 set(ARCH x86-freebsd) 12 set(ARCH x86-freebsd)
13 elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL armv6)
14 set(ARCH armv6-freebsd)
15 set(NEON True)
16 elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL armv7)
17 set(ARCH armv7-freebsd)
18 set(NEON True)
19 elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64)
20 set(ARCH aarch64-freebsd)
21 set(NEON True)
13 else() 22 else()
14 message(WARNING "unknown CPU: ${CPU}") 23 message(WARNING "unknown CPU: ${CPU}")
15 endif() 24 endif()
diff --git a/cmake/scripts/freebsd/ExtraTargets.cmake b/cmake/scripts/freebsd/ExtraTargets.cmake
index 66383ab..9d5d214 100644
--- a/cmake/scripts/freebsd/ExtraTargets.cmake
+++ b/cmake/scripts/freebsd/ExtraTargets.cmake
@@ -1,29 +1 @@
1# xrandr include(cmake/scripts/linux/ExtraTargets.cmake)
2if(X_FOUND AND XRANDR_FOUND)
3 find_package(X QUIET)
4 find_package(XRandR QUIET)
5 add_executable(${APP_NAME_LC}-xrandr ${CMAKE_SOURCE_DIR}/xbmc-xrandr.c)
6 target_link_libraries(${APP_NAME_LC}-xrandr ${SYSTEM_LDFLAGS} ${X_LIBRARIES} m ${XRANDR_LIBRARIES})
7endif()
8
9# WiiRemote
10if(ENABLE_EVENTCLIENTS AND BLUETOOTH_FOUND)
11 find_package(CWiid QUIET)
12 if(CWIID_FOUND)
13 add_subdirectory(${CMAKE_SOURCE_DIR}/tools/EventClients/Clients/WiiRemote build/WiiRemote)
14 endif()
15endif()
16
17if(CORE_PLATFORM_NAME_LC STREQUAL "wayland")
18 # This cannot go into wayland.cmake since it requires the Wayland dependencies
19 # to already be resolved
20 set(PROTOCOL_XMLS "${WAYLAND_PROTOCOLS_DIR}/unstable/xdg-shell/xdg-shell-unstable-v6.xml"
21 "${WAYLAND_PROTOCOLS_DIR}/unstable/idle-inhibit/idle-inhibit-unstable-v1.xml")
22 add_custom_command(OUTPUT "${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}/wayland-extra-protocols.hpp" "${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}/wayland-extra-protocols.cpp"
23 COMMAND "${WAYLANDPP_SCANNER}" ${PROTOCOL_XMLS} "${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}/wayland-extra-protocols.hpp" "${WAYLAND_EXTRA_PROTOCOL_GENERATED_DIR}/wayland-extra-protocols.cpp"
24 DEPENDS "${WAYLANDPP_SCANNER}" ${PROTOCOL_XMLS}
25 COMMENT "Generating wayland-protocols C++ wrappers")
26
27 # Dummy target for dependencies
28 add_custom_target(generate-wayland-extra-protocols DEPENDS wayland-extra-protocols.hpp)
29endif()
diff --git a/cmake/scripts/freebsd/Macros.cmake b/cmake/scripts/freebsd/Macros.cmake
index 2fdbb25..ef5aed3 120000..100644
--- a/cmake/scripts/freebsd/Macros.cmake
+++ b/cmake/scripts/freebsd/Macros.cmake
@@ -1 +1,95 @@
1../linux/Macros.cmake \ No newline at end of file 1function(core_link_library lib wraplib)
2 set(export -Wl,--unresolved-symbols=ignore-all
3 `cat ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/cores/dll-loader/exports/wrapper.def`
4 ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/cores/dll-loader/exports/CMakeFiles/wrapper.dir/wrapper.c.o)
5 set(check_arg "")
6 if(TARGET ${lib})
7 set(target ${lib})
8 set(link_lib $<TARGET_FILE:${lib}>)
9 set(check_arg ${ARGV2})
10 set(data_arg ${ARGV3})
11 else()
12 set(target ${ARGV2})
13 set(link_lib ${lib})
14 set(check_arg ${ARGV3})
15 set(data_arg ${ARGV4})
16 endif()
17
18 # wrapper has to be adapted in order to support coverage.
19 if(CMAKE_BUILD_TYPE STREQUAL Coverage)
20 set(export "")
21 endif()
22
23 if(check_arg STREQUAL export)
24 set(export ${export}
25 -Wl,--version-script=${ARGV3})
26 elseif(check_arg STREQUAL extras)
27 foreach(arg ${data_arg})
28 list(APPEND export ${arg})
29 endforeach()
30 elseif(check_arg STREQUAL archives)
31 set(extra_libs ${data_arg})
32 endif()
33
34 string(REGEX REPLACE "[ ]+" ";" _flags "${CMAKE_SHARED_LINKER_FLAGS}")
35 get_filename_component(dir ${wraplib} DIRECTORY)
36 add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/${wraplib}-${ARCH}${CMAKE_SHARED_MODULE_SUFFIX}
37 COMMAND ${CMAKE_COMMAND} -E make_directory ${dir}
38 COMMAND ${CMAKE_C_COMPILER}
39 ARGS ${_flags} -Wl,--whole-archive
40 "${link_lib}" ${extra_libs}
41 -Wl,--no-whole-archive -lm
42 -Wl,-soname,${wraplib}-${ARCH}${CMAKE_SHARED_MODULE_SUFFIX}
43 -shared -o ${CMAKE_BINARY_DIR}/${wraplib}-${ARCH}${CMAKE_SHARED_MODULE_SUFFIX}
44 ${export}
45 DEPENDS ${target} wrapper.def wrapper)
46
47 get_filename_component(libname ${wraplib} NAME_WE)
48 add_custom_target(wrap_${libname} ALL DEPENDS ${CMAKE_BINARY_DIR}/${wraplib}-${ARCH}${CMAKE_SHARED_MODULE_SUFFIX})
49 set_target_properties(wrap_${libname} PROPERTIES FOLDER lib/wrapped)
50 add_dependencies(${APP_NAME_LC}-libraries wrap_${libname})
51
52 set(LIBRARY_FILES ${LIBRARY_FILES} ${CMAKE_BINARY_DIR}/${wraplib}-${ARCH}${CMAKE_SHARED_MODULE_SUFFIX} CACHE STRING "" FORCE)
53endfunction()
54
55function(find_soname lib)
56 cmake_parse_arguments(arg "REQUIRED" "" "" ${ARGN})
57
58 string(TOLOWER ${lib} liblow)
59 if(${lib}_LDFLAGS)
60 set(link_lib "${${lib}_LDFLAGS}")
61 else()
62 if(IS_ABSOLUTE "${${lib}_LIBRARIES}")
63 set(link_lib "${${lib}_LIBRARIES}")
64 else()
65 set(link_lib -l${${lib}_LIBRARIES})
66 endif()
67 endif()
68 execute_process(COMMAND ${CMAKE_C_COMPILER} -nostdlib -o /dev/null -Wl,-M ${link_lib}
69 COMMAND grep LOAD.*${liblow}
70 ERROR_QUIET
71 OUTPUT_VARIABLE ${lib}_FILENAME)
72 string(REPLACE "LOAD " "" ${lib}_FILENAME "${${lib}_FILENAME}")
73 string(STRIP "${${lib}_FILENAME}" ${lib}_FILENAME)
74 if(NOT ${lib}_FILENAME)
75 execute_process(COMMAND ${CMAKE_C_COMPILER} -nostdlib -o /dev/null -Wl,-t ${link_lib}
76 ERROR_QUIET
77 OUTPUT_VARIABLE _TMP_FILENAME)
78 string(REGEX MATCH ".*lib${liblow}.so" ${lib}_FILENAME ${_TMP_FILENAME})
79 endif()
80 if(${lib}_FILENAME)
81 execute_process(COMMAND ${CMAKE_OBJDUMP} -p ${${lib}_FILENAME}
82 COMMAND grep SONAME.*${liblow}
83 ERROR_QUIET
84 OUTPUT_VARIABLE ${lib}_SONAME)
85 string(REPLACE "SONAME " "" ${lib}_SONAME ${${lib}_SONAME})
86 string(STRIP ${${lib}_SONAME} ${lib}_SONAME)
87 if(VERBOSE)
88 message(STATUS "${lib} soname: ${${lib}_SONAME}")
89 endif()
90 set(${lib}_SONAME ${${lib}_SONAME} PARENT_SCOPE)
91 endif()
92 if(arg_REQUIRED AND NOT ${lib}_SONAME)
93 message(FATAL_ERROR "Could not find dynamically loadable library ${lib}")
94 endif()
95endfunction()
diff --git a/cmake/scripts/ios/Install.cmake b/cmake/scripts/ios/Install.cmake
index 587b24f..7b6c3de 100644
--- a/cmake/scripts/ios/Install.cmake
+++ b/cmake/scripts/ios/Install.cmake
@@ -66,7 +66,8 @@ add_custom_command(TARGET ${APP_NAME_LC} POST_BUILD
66 "WRAPPER_EXTENSION=app" 66 "WRAPPER_EXTENSION=app"
67 "SRCROOT=${CMAKE_BINARY_DIR}" 67 "SRCROOT=${CMAKE_BINARY_DIR}"
68 ${CMAKE_SOURCE_DIR}/tools/darwin/Support/copyframeworks-ios.command 68 ${CMAKE_SOURCE_DIR}/tools/darwin/Support/copyframeworks-ios.command
69 COMMAND "NATIVEPREFIX=${NATIVEPREFIX}" 69 COMMAND "XBMC_DEPENDS=${DEPENDS_PATH}"
70 "NATIVEPREFIX=${NATIVEPREFIX}"
70 "PLATFORM_NAME=${PLATFORM}" 71 "PLATFORM_NAME=${PLATFORM}"
71 "CODESIGNING_FOLDER_PATH=$<TARGET_FILE_DIR:${APP_NAME_LC}>" 72 "CODESIGNING_FOLDER_PATH=$<TARGET_FILE_DIR:${APP_NAME_LC}>"
72 "BUILT_PRODUCTS_DIR=$<TARGET_FILE_DIR:${APP_NAME_LC}>/.." 73 "BUILT_PRODUCTS_DIR=$<TARGET_FILE_DIR:${APP_NAME_LC}>/.."
diff --git a/cmake/scripts/linux/ArchSetup.cmake b/cmake/scripts/linux/ArchSetup.cmake
index fcee675..624edf6 100644
--- a/cmake/scripts/linux/ArchSetup.cmake
+++ b/cmake/scripts/linux/ArchSetup.cmake
@@ -108,10 +108,6 @@ if(CMAKE_BUILD_TYPE STREQUAL Coverage)
108 set(COVERAGE_EXCLUDES */test/* lib/* */lib/*) 108 set(COVERAGE_EXCLUDES */test/* lib/* */lib/*)
109endif() 109endif()
110 110
111if(ENABLE_MIR)
112 set(ENABLE_VDPAU OFF CACHE BOOL "Disabling VDPAU since no Mir support" FORCE)
113endif()
114
115if(ENABLE_GBM) 111if(ENABLE_GBM)
116 set(ENABLE_VDPAU OFF CACHE BOOL "Disabling VDPAU" FORCE) 112 set(ENABLE_VDPAU OFF CACHE BOOL "Disabling VDPAU" FORCE)
117endif() 113endif()
diff --git a/cmake/scripts/linux/Install.cmake b/cmake/scripts/linux/Install.cmake
index d6767bf..d64b98a 100644
--- a/cmake/scripts/linux/Install.cmake
+++ b/cmake/scripts/linux/Install.cmake
@@ -127,11 +127,17 @@ install(FILES ${CMAKE_SOURCE_DIR}/tools/Linux/packaging/media/icon256x256.png
127 DESTINATION ${datarootdir}/icons/hicolor/256x256/apps 127 DESTINATION ${datarootdir}/icons/hicolor/256x256/apps
128 COMPONENT kodi) 128 COMPONENT kodi)
129 129
130# Install firewalld service definitions
131install(FILES ${CMAKE_SOURCE_DIR}/tools/Linux/firewalld-services/kodi-eventserver.xml
132 ${CMAKE_SOURCE_DIR}/tools/Linux/firewalld-services/kodi-http.xml
133 ${CMAKE_SOURCE_DIR}/tools/Linux/firewalld-services/kodi-jsonrpc.xml
134 DESTINATION ${prefix}/lib/firewalld/services
135 COMPONENT kodi)
136
130# Install docs 137# Install docs
131install(FILES ${CMAKE_SOURCE_DIR}/copying.txt 138install(FILES ${CMAKE_SOURCE_DIR}/LICENSE.md
132 ${CMAKE_SOURCE_DIR}/LICENSE.GPL
133 ${CMAKE_SOURCE_DIR}/version.txt 139 ${CMAKE_SOURCE_DIR}/version.txt
134 ${CMAKE_SOURCE_DIR}/docs/README.linux 140 ${CMAKE_SOURCE_DIR}/docs/README.Linux.md
135 DESTINATION ${docdir} 141 DESTINATION ${docdir}
136 COMPONENT kodi) 142 COMPONENT kodi)
137 143
@@ -197,7 +203,7 @@ if(ENABLE_EVENTCLIENTS)
197 file(WRITE ${CMAKE_BINARY_DIR}/packages/deb/defs.py ICON_PATH="usr/share/pixmaps/${APP_NAME_LC}/") 203 file(WRITE ${CMAKE_BINARY_DIR}/packages/deb/defs.py ICON_PATH="usr/share/pixmaps/${APP_NAME_LC}/")
198 install(PROGRAMS ${CMAKE_BINARY_DIR}/packages/deb/defs.py 204 install(PROGRAMS ${CMAKE_BINARY_DIR}/packages/deb/defs.py
199 ${CMAKE_SOURCE_DIR}/tools/EventClients/lib/python/__init__.py 205 ${CMAKE_SOURCE_DIR}/tools/EventClients/lib/python/__init__.py
200 "${CMAKE_SOURCE_DIR}/tools/EventClients/Clients/PS3 BD Remote/ps3_remote.py" 206 ${CMAKE_SOURCE_DIR}/tools/EventClients/Clients/PS3BDRemote/ps3_remote.py
201 ${CMAKE_SOURCE_DIR}/tools/EventClients/lib/python/xbmcclient.py 207 ${CMAKE_SOURCE_DIR}/tools/EventClients/lib/python/xbmcclient.py
202 ${CMAKE_SOURCE_DIR}/tools/EventClients/lib/python/zeroconf.py 208 ${CMAKE_SOURCE_DIR}/tools/EventClients/lib/python/zeroconf.py
203 DESTINATION ${PYTHON_LIB_PATH}/${APP_NAME_LC} 209 DESTINATION ${PYTHON_LIB_PATH}/${APP_NAME_LC}
@@ -246,7 +252,7 @@ if(ENABLE_EVENTCLIENTS)
246 COMPONENT kodi-eventclients-dev) 252 COMPONENT kodi-eventclients-dev)
247 253
248 # Install kodi-eventclients-ps3 254 # Install kodi-eventclients-ps3
249 install(PROGRAMS "${CMAKE_SOURCE_DIR}/tools/EventClients/Clients/PS3 BD Remote/ps3_remote.py" 255 install(PROGRAMS ${CMAKE_SOURCE_DIR}/tools/EventClients/Clients/PS3BDRemote/ps3_remote.py
250 RENAME ${APP_NAME_LC}-ps3remote 256 RENAME ${APP_NAME_LC}-ps3remote
251 DESTINATION ${bindir} 257 DESTINATION ${bindir}
252 COMPONENT kodi-eventclients-ps3) 258 COMPONENT kodi-eventclients-ps3)
@@ -259,7 +265,7 @@ if(ENABLE_EVENTCLIENTS)
259 endif() 265 endif()
260 266
261 # Install kodi-eventclients-xbmc-send 267 # Install kodi-eventclients-xbmc-send
262 install(PROGRAMS "${CMAKE_SOURCE_DIR}/tools/EventClients/Clients/Kodi Send/kodi-send.py" 268 install(PROGRAMS ${CMAKE_SOURCE_DIR}/tools/EventClients/Clients/KodiSend/kodi-send.py
263 RENAME ${APP_NAME_LC}-send 269 RENAME ${APP_NAME_LC}-send
264 DESTINATION ${bindir} 270 DESTINATION ${bindir}
265 COMPONENT kodi-eventclients-xbmc-send) 271 COMPONENT kodi-eventclients-xbmc-send)
diff --git a/cmake/scripts/linux/Macros.cmake b/cmake/scripts/linux/Macros.cmake
index 9e8ebe6..37243a7 100644
--- a/cmake/scripts/linux/Macros.cmake
+++ b/cmake/scripts/linux/Macros.cmake
@@ -65,7 +65,7 @@ function(find_soname lib)
65 set(link_lib -l${${lib}_LIBRARIES}) 65 set(link_lib -l${${lib}_LIBRARIES})
66 endif() 66 endif()
67 endif() 67 endif()
68 execute_process(COMMAND ${CMAKE_C_COMPILER} -nostdlib -o /dev/null -Wl,-M ${link_lib} 68 execute_process(COMMAND ${CMAKE_C_COMPILER} -nostdlib -o /dev/null -Wl,-M ${link_lib}
69 COMMAND grep LOAD.*${liblow} 69 COMMAND grep LOAD.*${liblow}
70 ERROR_QUIET 70 ERROR_QUIET
71 OUTPUT_VARIABLE ${lib}_FILENAME) 71 OUTPUT_VARIABLE ${lib}_FILENAME)
diff --git a/cmake/scripts/osx/ArchSetup.cmake b/cmake/scripts/osx/ArchSetup.cmake
index d0c5506..9ba0596 100644
--- a/cmake/scripts/osx/ArchSetup.cmake
+++ b/cmake/scripts/osx/ArchSetup.cmake
@@ -36,5 +36,5 @@ list(APPEND DEPLIBS "-framework DiskArbitration" "-framework IOKit"
36 "-framework CoreGraphics" "-framework CoreMedia" 36 "-framework CoreGraphics" "-framework CoreMedia"
37 "-framework VideoToolbox") 37 "-framework VideoToolbox")
38 38
39set(CMAKE_OSX_DEPLOYMENT_TARGET 10.8) 39set(CMAKE_OSX_DEPLOYMENT_TARGET 10.9)
40set(CMAKE_XCODE_ATTRIBUTE_CLANG_LINK_OBJC_RUNTIME OFF) 40set(CMAKE_XCODE_ATTRIBUTE_CLANG_LINK_OBJC_RUNTIME OFF)
diff --git a/cmake/scripts/windows/ArchSetup.cmake b/cmake/scripts/windows/ArchSetup.cmake
index b3963a6..b94842f 100644
--- a/cmake/scripts/windows/ArchSetup.cmake
+++ b/cmake/scripts/windows/ArchSetup.cmake
@@ -87,9 +87,9 @@ foreach(_lib ${_nodefaultlibs_DEBUG})
87endforeach() 87endforeach()
88 88
89# DELAYLOAD option 89# DELAYLOAD option
90set(_delayloadlibs zlib.dll libmysql.dll libxslt.dll dnssd.dll dwmapi.dll ssh.dll sqlite3.dll 90set(_delayloadlibs zlib.dll libmysql.dll libxslt.dll dnssd.dll dwmapi.dll sqlite3.dll
91 avcodec-57.dll avfilter-6.dll avformat-57.dll avutil-55.dll 91 avcodec-58.dll avfilter-7.dll avformat-58.dll avutil-56.dll
92 postproc-54.dll swresample-2.dll swscale-4.dll d3dcompiler_47.dll) 92 postproc-55.dll swresample-3.dll swscale-5.dll d3dcompiler_47.dll)
93foreach(_lib ${_delayloadlibs}) 93foreach(_lib ${_delayloadlibs})
94 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DELAYLOAD:\"${_lib}\"") 94 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DELAYLOAD:\"${_lib}\"")
95endforeach() 95endforeach()
diff --git a/cmake/scripts/windowsstore/ArchSetup.cmake b/cmake/scripts/windowsstore/ArchSetup.cmake
index a663bb9..e3e46e7 100644
--- a/cmake/scripts/windowsstore/ArchSetup.cmake
+++ b/cmake/scripts/windowsstore/ArchSetup.cmake
@@ -1,5 +1,5 @@
1# Minimum SDK version we support 1# Minimum SDK version we support
2set(VS_MINIMUM_SDK_VERSION 10.0.14393.0) 2set(VS_MINIMUM_SDK_VERSION 10.0.16299.0)
3 3
4if(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION VERSION_LESS VS_MINIMUM_SDK_VERSION) 4if(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION VERSION_LESS VS_MINIMUM_SDK_VERSION)
5 message(FATAL_ERROR "Detected Windows SDK version is ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}.\n" 5 message(FATAL_ERROR "Detected Windows SDK version is ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}.\n"
@@ -25,7 +25,7 @@ elseif(_ARM_)
25else() 25else()
26 message(FATAL_ERROR "Unsupported architecture") 26 message(FATAL_ERROR "Unsupported architecture")
27endif() 27endif()
28 28
29unset(_X86_) 29unset(_X86_)
30unset(_AMD64_) 30unset(_AMD64_)
31unset(_ARM_) 31unset(_ARM_)
@@ -51,7 +51,7 @@ set(MINGW_LIBS_DIR ${CMAKE_SOURCE_DIR}/${DEPS_FOLDER_RELATIVE}/mingwlibs/win10-$
51# mingw libs 51# mingw libs
52list(APPEND CMAKE_SYSTEM_PREFIX_PATH ${MINGW_LIBS_DIR}) 52list(APPEND CMAKE_SYSTEM_PREFIX_PATH ${MINGW_LIBS_DIR})
53list(APPEND CMAKE_SYSTEM_LIBRARY_PATH ${MINGW_LIBS_DIR}/bin) 53list(APPEND CMAKE_SYSTEM_LIBRARY_PATH ${MINGW_LIBS_DIR}/bin)
54# dependencies 54# dependencies
55list(APPEND CMAKE_SYSTEM_PREFIX_PATH ${DEPENDENCIES_DIR}) 55list(APPEND CMAKE_SYSTEM_PREFIX_PATH ${DEPENDENCIES_DIR})
56# for python 56# for python
57set(PYTHON_INCLUDE_DIR ${DEPENDENCIES_DIR}/include/python) 57set(PYTHON_INCLUDE_DIR ${DEPENDENCIES_DIR}/include/python)
@@ -63,6 +63,7 @@ add_options(CXX ALL_BUILDS "/wd\"4996\"")
63add_options(CXX ALL_BUILDS "/wd\"4146\"") 63add_options(CXX ALL_BUILDS "/wd\"4146\"")
64add_options(CXX ALL_BUILDS "/wd\"4251\"") 64add_options(CXX ALL_BUILDS "/wd\"4251\"")
65add_options(CXX ALL_BUILDS "/wd\"4668\"") 65add_options(CXX ALL_BUILDS "/wd\"4668\"")
66add_options(CXX ALL_BUILDS "/wd\"5033\"")
66set(ARCH_DEFINES -D_WINDOWS -DTARGET_WINDOWS -DTARGET_WINDOWS_STORE -DXBMC_EXPORT -DMS_UWP) 67set(ARCH_DEFINES -D_WINDOWS -DTARGET_WINDOWS -DTARGET_WINDOWS_STORE -DXBMC_EXPORT -DMS_UWP)
67if(NOT SDK_TARGET_ARCH STREQUAL arm) 68if(NOT SDK_TARGET_ARCH STREQUAL arm)
68 list(APPEND ARCH_DEFINES -D__SSE__ -D__SSE2__) 69 list(APPEND ARCH_DEFINES -D__SSE__ -D__SSE2__)
@@ -78,7 +79,7 @@ set(SYSTEM_DEFINES -DWIN32_LEAN_AND_MEAN -DNOMINMAX -DHAS_DX -D__STDC_CONSTANT_M
78list(APPEND SYSTEM_DEFINES -DHAS_WIN10_NETWORK) 79list(APPEND SYSTEM_DEFINES -DHAS_WIN10_NETWORK)
79 80
80# The /MP option enables /FS by default. 81# The /MP option enables /FS by default.
81set(CMAKE_CXX_FLAGS "/MP ${CMAKE_CXX_FLAGS} /ZW /EHsc /await") 82set(CMAKE_CXX_FLAGS "/MP ${CMAKE_CXX_FLAGS} /EHsc /await /std:c++latest")
82# Google Test needs to use shared version of runtime libraries 83# Google Test needs to use shared version of runtime libraries
83set(gtest_force_shared_crt ON CACHE STRING "" FORCE) 84set(gtest_force_shared_crt ON CACHE STRING "" FORCE)
84 85
@@ -90,20 +91,10 @@ set(gtest_force_shared_crt ON CACHE STRING "" FORCE)
90link_directories(${MINGW_LIBS_DIR}/lib 91link_directories(${MINGW_LIBS_DIR}/lib
91 ${DEPENDENCIES_DIR}/lib) 92 ${DEPENDENCIES_DIR}/lib)
92 93
93list(APPEND DEPLIBS d3d11.lib WS2_32.lib dxguid.lib dloadhelper.lib) 94list(APPEND DEPLIBS d3d11.lib WS2_32.lib dxguid.lib dloadhelper.lib WindowsApp.lib)
94if(ARCH STREQUAL win32 OR ARCH STREQUAL x64)
95 list(APPEND DEPLIBS DInput8.lib DSound.lib winmm.lib Mpr.lib Iphlpapi.lib PowrProf.lib setupapi.lib dwmapi.lib)
96endif()
97# NODEFAULTLIB option
98 95
99set(_nodefaultlibs_RELEASE libcmt) 96set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /WINMD:NO")
100set(_nodefaultlibs_DEBUG libcmt msvcrt) 97set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:msvcrt /DEBUG:FASTLINK /OPT:NOREF /OPT:NOICF")
101foreach(_lib ${_nodefaultlibs_RELEASE})
102 set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /NODEFAULTLIB:\"${_lib}\"")
103endforeach()
104foreach(_lib ${_nodefaultlibs_DEBUG})
105 set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:\"${_lib}\"")
106endforeach()
107 98
108# Make the Release version create a PDB 99# Make the Release version create a PDB
109set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi") 100set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")
@@ -117,13 +108,6 @@ set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} /ignore:4264")
117 108
118if(CMAKE_GENERATOR MATCHES "Visual Studio") 109if(CMAKE_GENERATOR MATCHES "Visual Studio")
119 set_property(GLOBAL PROPERTY USE_FOLDERS ON) 110 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
120
121 # Generate a batch file that opens Visual Studio with the necessary env variables set.
122 file(WRITE ${CMAKE_BINARY_DIR}/kodi-sln.bat
123 "@echo off\n"
124 "set KODI_HOME=%~dp0\n"
125 "set PATH=%~dp0\\system\n"
126 "start %~dp0\\${PROJECT_NAME}.sln")
127endif() 111endif()
128 112
129# -------- Build options --------- 113# -------- Build options ---------
diff --git a/cmake/scripts/windowsstore/Macros.cmake b/cmake/scripts/windowsstore/Macros.cmake
index 7240138..de89c62 100644
--- a/cmake/scripts/windowsstore/Macros.cmake
+++ b/cmake/scripts/windowsstore/Macros.cmake
@@ -70,11 +70,11 @@ macro(winstore_set_assets target)
70 set_property(SOURCE ${ASSET_FILES} PROPERTY VS_DEPLOYMENT_CONTENT 1) 70 set_property(SOURCE ${ASSET_FILES} PROPERTY VS_DEPLOYMENT_CONTENT 1)
71 set_property(SOURCE ${ASSET_FILES} PROPERTY VS_DEPLOYMENT_LOCATION "media") 71 set_property(SOURCE ${ASSET_FILES} PROPERTY VS_DEPLOYMENT_LOCATION "media")
72 source_group("media" FILES ${ASSET_FILES}) 72 source_group("media" FILES ${ASSET_FILES})
73 set(RESOURCES ${RESOURCES} ${ASSET_FILES} 73 set(RESOURCES ${RESOURCES} ${ASSET_FILES}
74 "${CMAKE_SOURCE_DIR}/tools/windows/packaging/uwp/kodi_temp_key.pfx") 74 "${CMAKE_SOURCE_DIR}/tools/windows/packaging/uwp/kodi_temp_key.pfx")
75 set(LICENSE_FILES 75
76 ${CMAKE_SOURCE_DIR}/LICENSE.GPL 76 set(LICENSE_FILES
77 ${CMAKE_SOURCE_DIR}/copying.txt 77 ${CMAKE_SOURCE_DIR}/LICENSE.md
78 ${CMAKE_SOURCE_DIR}/privacy-policy.txt) 78 ${CMAKE_SOURCE_DIR}/privacy-policy.txt)
79 if(EXISTS "${CMAKE_SOURCE_DIR}/known_issues.txt") 79 if(EXISTS "${CMAKE_SOURCE_DIR}/known_issues.txt")
80 list(APPEND LICENSE_FILES ${CMAKE_SOURCE_DIR}/known_issues.txt) 80 list(APPEND LICENSE_FILES ${CMAKE_SOURCE_DIR}/known_issues.txt)
@@ -108,7 +108,7 @@ macro(add_deployment_content_group path link match exclude)
108 " <Link>${_link}%(RecursiveDir)%(FileName)%(Extension)</Link>\n" 108 " <Link>${_link}%(RecursiveDir)%(FileName)%(Extension)</Link>\n"
109 " <DeploymentContent>true</DeploymentContent>\n" 109 " <DeploymentContent>true</DeploymentContent>\n"
110 " </EmbedResources>\n") 110 " </EmbedResources>\n")
111endmacro() 111endmacro()
112 112
113macro(winstore_append_props target) 113macro(winstore_append_props target)
114 # exclude debug dlls from packaging 114 # exclude debug dlls from packaging
@@ -126,7 +126,7 @@ macro(winstore_append_props target)
126 " </None>\n" 126 " </None>\n"
127 " </ItemGroup>\n") 127 " </ItemGroup>\n")
128 endforeach(_dll DEBUG_DLLS) 128 endforeach(_dll DEBUG_DLLS)
129 129
130 add_deployment_content_group($(BuildRootPath)/dlls "" *.dll "${DEBUG_DLLS_EXCLUDE}") 130 add_deployment_content_group($(BuildRootPath)/dlls "" *.dll "${DEBUG_DLLS_EXCLUDE}")
131 add_deployment_content_group($(BuildRootPath)/system system **/* "$(BuildRootPath)/**/shaders/**") 131 add_deployment_content_group($(BuildRootPath)/system system **/* "$(BuildRootPath)/**/shaders/**")
132 add_deployment_content_group($(BuildRootPath)/system/shaders system/shaders **/*.fx "") 132 add_deployment_content_group($(BuildRootPath)/system/shaders system/shaders **/*.fx "")
@@ -179,4 +179,4 @@ macro(winstore_add_target_properties target)
179 winstore_set_assets(${target}) 179 winstore_set_assets(${target})
180 winstore_generate_manifest(${target}) 180 winstore_generate_manifest(${target})
181 winstore_append_props(${target}) 181 winstore_append_props(${target})
182endmacro() \ No newline at end of file 182endmacro()
diff --git a/cmake/treedata/android/subdirs.txt b/cmake/treedata/android/subdirs.txt
index 7f7fef5..036fd24 100644
--- a/cmake/treedata/android/subdirs.txt
+++ b/cmake/treedata/android/subdirs.txt
@@ -6,10 +6,10 @@ xbmc/platform/posix platform/posix
6xbmc/platform/posix/filesystem platform/posix/filesystem 6xbmc/platform/posix/filesystem platform/posix/filesystem
7xbmc/platform/posix/utils platform/posix/utils 7xbmc/platform/posix/utils platform/posix/utils
8xbmc/platform/linux platform/linux 8xbmc/platform/linux platform/linux
9xbmc/platform/linux/network platform/linux/network
10xbmc/platform/linux/peripherals platform/linux/peripherals 9xbmc/platform/linux/peripherals platform/linux/peripherals
11xbmc/platform/android/activity platform/android/activity 10xbmc/platform/android/activity platform/android/activity
12xbmc/platform/android/bionic_supplement platform/android/bionicsupplement 11xbmc/platform/android/bionic_supplement platform/android/bionicsupplement
12xbmc/platform/android/drm platform/android/drm
13xbmc/platform/android/filesystem platform/android/filesystem 13xbmc/platform/android/filesystem platform/android/filesystem
14xbmc/platform/android/network platform/android/network 14xbmc/platform/android/network platform/android/network
15xbmc/platform/android/peripherals platform/android/peripherals 15xbmc/platform/android/peripherals platform/android/peripherals
diff --git a/cmake/treedata/common/drm.txt b/cmake/treedata/common/drm.txt
new file mode 100644
index 0000000..fbcc906
--- /dev/null
+++ b/cmake/treedata/common/drm.txt
@@ -0,0 +1 @@
xbmc/drm drm
diff --git a/cmake/treedata/common/games.txt b/cmake/treedata/common/games.txt
index 7b63f6a..7ae2d35 100644
--- a/cmake/treedata/common/games.txt
+++ b/cmake/treedata/common/games.txt
@@ -1,8 +1,7 @@
1xbmc/games games 1xbmc/games games
2xbmc/games/addons games/addons 2xbmc/games/addons games/addons
3xbmc/games/addons/input games/addons/input 3xbmc/games/addons/input games/addons/input
4xbmc/games/addons/playback games/addons/playback 4xbmc/games/addons/streams games/addons/streams
5xbmc/games/addons/savestates games/addons/savestates
6xbmc/games/controllers games/controllers 5xbmc/games/controllers games/controllers
7xbmc/games/controllers/dialogs games/controllers/dialogs 6xbmc/games/controllers/dialogs games/controllers/dialogs
8xbmc/games/controllers/guicontrols games/controllers/guicontrols 7xbmc/games/controllers/guicontrols games/controllers/guicontrols
diff --git a/cmake/treedata/common/retroplayer.txt b/cmake/treedata/common/retroplayer.txt
index 0239801..cf9c9c5 100644
--- a/cmake/treedata/common/retroplayer.txt
+++ b/cmake/treedata/common/retroplayer.txt
@@ -1,8 +1,15 @@
1xbmc/cores/RetroPlayer cores/RetroPlayer 1xbmc/cores/RetroPlayer cores/RetroPlayer
2xbmc/cores/RetroPlayer/audio cores/RetroPlayer/audio
3xbmc/cores/RetroPlayer/buffers cores/RetroPlayer/buffers
4xbmc/cores/RetroPlayer/buffers/video cores/RetroPlayer/buffers/video
2xbmc/cores/RetroPlayer/guibridge cores/RetroPlayer/guibridge 5xbmc/cores/RetroPlayer/guibridge cores/RetroPlayer/guibridge
3xbmc/cores/RetroPlayer/guicontrols cores/RetroPlayer/guicontrols 6xbmc/cores/RetroPlayer/guicontrols cores/RetroPlayer/guicontrols
4xbmc/cores/RetroPlayer/guiwindows cores/RetroPlayer/guiwindows 7xbmc/cores/RetroPlayer/guiwindows cores/RetroPlayer/guiwindows
8xbmc/cores/RetroPlayer/playback cores/RetroPlayer/playback
5xbmc/cores/RetroPlayer/process cores/RetroPlayer/process 9xbmc/cores/RetroPlayer/process cores/RetroPlayer/process
6xbmc/cores/RetroPlayer/rendering cores/RetroPlayer/rendering 10xbmc/cores/RetroPlayer/rendering cores/RetroPlayer/rendering
7xbmc/cores/RetroPlayer/rendering/VideoRenderers cores/RetroPlayer/rendering/VideoRenderers 11xbmc/cores/RetroPlayer/rendering/VideoRenderers cores/RetroPlayer/rendering/VideoRenderers
8xbmc/cores/RetroPlayer/rendering/VideoShaders cores/RetroPlayer/rendering/VideoShaders 12xbmc/cores/RetroPlayer/rendering/VideoShaders cores/RetroPlayer/rendering/VideoShaders
13xbmc/cores/RetroPlayer/savestates cores/RetroPlayer/savestates
14xbmc/cores/RetroPlayer/streams cores/RetroPlayer/streams
15xbmc/cores/RetroPlayer/streams/memory cores/RetroPlayer/streams/memory
diff --git a/cmake/treedata/freebsd/subdirs.txt b/cmake/treedata/freebsd/subdirs.txt
index fe0725c..e4edf23 100644
--- a/cmake/treedata/freebsd/subdirs.txt
+++ b/cmake/treedata/freebsd/subdirs.txt
@@ -1,6 +1,7 @@
1xbmc/platform/posix platform/posix 1xbmc/platform/posix platform/posix
2xbmc/platform/posix/filesystem platform/posix/filesystem 2xbmc/platform/posix/filesystem platform/posix/filesystem
3xbmc/platform/posix/utils platform/posix/utils 3xbmc/platform/posix/utils platform/posix/utils
4xbmc/platform/freebsd platform/freebsd
4xbmc/platform/linux platform/linux 5xbmc/platform/linux platform/linux
5xbmc/platform/linux/input platform/linux/input 6xbmc/platform/linux/input platform/linux/input
6xbmc/platform/linux/network platform/linux/network 7xbmc/platform/linux/network platform/linux/network
@@ -9,3 +10,6 @@ xbmc/platform/linux/powermanagement platform/linux/powermanagement
9xbmc/platform/linux/storage platform/linux/storage 10xbmc/platform/linux/storage platform/linux/storage
10xbmc/input/touch input/touch 11xbmc/input/touch input/touch
11xbmc/input/touch/generic input/touch/generic 12xbmc/input/touch/generic input/touch/generic
13xbmc/cores/RetroPlayer/process/rbpi cores/RetroPlayer/process/rbpi
14xbmc/cores/VideoPlayer/Process/rbpi cores/VideoPlayer/Process/rbpi
15xbmc/windowing/linux windowing/linux
diff --git a/cmake/treedata/optional/common/mir.txt b/cmake/treedata/optional/common/mir.txt
deleted file mode 100644
index d681e8b..0000000
--- a/cmake/treedata/optional/common/mir.txt
+++ /dev/null
@@ -1 +0,0 @@
1xbmc/windowing/mir windowing/mir # MIR
diff --git a/version.txt b/version.txt
index a9598ee..e9ee792 100644
--- a/version.txt
+++ b/version.txt
@@ -3,9 +3,9 @@ COMPANY_NAME XBMC Foundation
3WEBSITE http://kodi.tv 3WEBSITE http://kodi.tv
4VERSION_MAJOR 18 4VERSION_MAJOR 18
5VERSION_MINOR 0 5VERSION_MINOR 0
6VERSION_TAG ALPHA2 6VERSION_TAG BETA2
7VERSION_CODE 17.99.702 7VERSION_CODE 17.99.802
8ADDON_API 17.9.702 8ADDON_API 17.9.802
9APP_PACKAGE org.xbmc.kodi 9APP_PACKAGE org.xbmc.kodi
10PACKAGE_IDENTITY XBMCFoundation.Kodi 10PACKAGE_IDENTITY XBMCFoundation.Kodi
11PACKAGE_PUBLISHER C62BD90A-CDD8-477F-96C3-B25992247B97 11PACKAGE_PUBLISHER C62BD90A-CDD8-477F-96C3-B25992247B97
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/AddonBase.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/AddonBase.h
index 7abd8e1..42ce2e7 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/AddonBase.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/AddonBase.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with Kodi; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include <stdarg.h> /* va_list, va_start, va_arg, va_end */ 11#include <stdarg.h> /* va_list, va_start, va_arg, va_end */
23#include <cstdlib> 12#include <cstdlib>
24#include <cstring> 13#include <cstring>
@@ -263,11 +252,11 @@ public:
263 explicit CSettingValue(const void *settingValue) : m_settingValue(settingValue) {} 252 explicit CSettingValue(const void *settingValue) : m_settingValue(settingValue) {}
264 253
265 bool empty() const { return (m_settingValue == nullptr) ? true : false; } 254 bool empty() const { return (m_settingValue == nullptr) ? true : false; }
266 std::string GetString() const { return (char*)m_settingValue; } 255 std::string GetString() const { return (const char*)m_settingValue; }
267 int GetInt() const { return *(int*)m_settingValue; } 256 int GetInt() const { return *(const int*)m_settingValue; }
268 unsigned int GetUInt() const { return *(unsigned int*)m_settingValue; } 257 unsigned int GetUInt() const { return *(const unsigned int*)m_settingValue; }
269 bool GetBoolean() const { return *(bool*)m_settingValue; } 258 bool GetBoolean() const { return *(const bool*)m_settingValue; }
270 float GetFloat() const { return *(float*)m_settingValue; } 259 float GetFloat() const { return *(const float*)m_settingValue; }
271 260
272private: 261private:
273 const void *m_settingValue; 262 const void *m_settingValue;
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/Filesystem.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/Filesystem.h
index b089da3..3df6cec 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/Filesystem.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/Filesystem.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with Kodi; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "AddonBase.h" 11#include "AddonBase.h"
23 12
24#include <map> 13#include <map>
@@ -40,7 +29,7 @@
40 #define _SSIZE_T_DEFINED 29 #define _SSIZE_T_DEFINED
41#endif // !_SSIZE_T_DEFINED 30#endif // !_SSIZE_T_DEFINED
42#endif 31#endif
43 32
44#ifndef S_ISDIR 33#ifndef S_ISDIR
45 #define S_ISDIR(mode) ((((mode)) & 0170000) == (0040000)) 34 #define S_ISDIR(mode) ((((mode)) & 0170000) == (0040000))
46#endif 35#endif
@@ -895,7 +884,7 @@ namespace vfs
895 return strReturn; 884 return strReturn;
896 } 885 }
897 //---------------------------------------------------------------------------- 886 //----------------------------------------------------------------------------
898 887
899 //============================================================================ 888 //============================================================================
900 /// 889 ///
901 /// @ingroup cpp_kodi_vfs 890 /// @ingroup cpp_kodi_vfs
@@ -1231,7 +1220,7 @@ namespace vfs
1231 /// @ingroup cpp_kodi_vfs_CFile 1220 /// @ingroup cpp_kodi_vfs_CFile
1232 /// @brief Construct a new, unopened file 1221 /// @brief Construct a new, unopened file
1233 /// 1222 ///
1234 CFile() : m_file(nullptr) { } 1223 CFile() = default;
1235 //-------------------------------------------------------------------------- 1224 //--------------------------------------------------------------------------
1236 1225
1237 //========================================================================== 1226 //==========================================================================
@@ -1637,7 +1626,7 @@ namespace vfs
1637 //-------------------------------------------------------------------------- 1626 //--------------------------------------------------------------------------
1638 1627
1639 private: 1628 private:
1640 void* m_file; 1629 void* m_file = nullptr;
1641 }; 1630 };
1642 //@} 1631 //@}
1643 //---------------------------------------------------------------------------- 1632 //----------------------------------------------------------------------------
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/General.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/General.h
index 22d31f1..999ff6a 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/General.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/General.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with Kodi; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "AddonBase.h" 11#include "AddonBase.h"
23 12
24/* 13/*
@@ -188,8 +177,8 @@ namespace kodi {
188/// @return The localized message, or default if the add-on 177/// @return The localized message, or default if the add-on
189/// helper fails to return a message 178/// helper fails to return a message
190/// 179///
191/// @note Label id's \b 30000 to \b 30999 and \b 32000 to \b 32999 are related 180/// @note Label id's \b 30000 to \b 30999 and \b 32000 to \b 32999 are related
192/// to the add-on's own included strings from 181/// to the add-on's own included strings from
193/// <b>./resources/language/resource.language.??_??/strings.po</b> 182/// <b>./resources/language/resource.language.??_??/strings.po</b>
194/// All other strings are from Kodi core language files. 183/// All other strings are from Kodi core language files.
195/// 184///
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/Network.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/Network.h
index f27b710..73390c4 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/Network.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/Network.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "AddonBase.h" 11#include "AddonBase.h"
23 12
24/* 13/*
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/StreamCodec.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/StreamCodec.h
index 85de3ec..729cdc0 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/StreamCodec.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/StreamCodec.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2017 Team Kodi 2 * Copyright (C) 2017-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with Kodi; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22enum STREAMCODEC_PROFILE 11enum STREAMCODEC_PROFILE
23{ 12{
24 CodecProfileUnknown = 0, 13 CodecProfileUnknown = 0,
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/StreamCrypto.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/StreamCrypto.h
index f802f3b..dcb7896 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/StreamCrypto.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/StreamCrypto.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2017 Team Kodi 2 * Copyright (C) 2017-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with Kodi; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22typedef struct CRYPTO_INFO 11typedef struct CRYPTO_INFO
23{ 12{
24 enum CRYPTO_KEY_SYSTEM : uint8_t 13 enum CRYPTO_KEY_SYSTEM : uint8_t
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/AudioDecoder.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/AudioDecoder.h
index ca253ff..7407830 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/AudioDecoder.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/AudioDecoder.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with Kodi; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../AddonBase.h" 11#include "../AddonBase.h"
23#ifdef BUILD_KODI_ADDON 12#ifdef BUILD_KODI_ADDON
24#include "../AEChannelData.h" 13#include "../AEChannelData.h"
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/AudioEncoder.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/AudioEncoder.h
index 7d2464d..b98884e 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/AudioEncoder.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/AudioEncoder.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with Kodi; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../AddonBase.h" 11#include "../AddonBase.h"
23 12
24namespace kodi { namespace addon { class CInstanceAudioEncoder; }} 13namespace kodi { namespace addon { class CInstanceAudioEncoder; }}
@@ -136,10 +125,10 @@ namespace addon
136 //========================================================================== 125 //==========================================================================
137 /// \brief Write block of data 126 /// \brief Write block of data
138 /// 127 ///
139 /// \param[in] data Pointer to the array of elements to be 128 /// \param[in] data Pointer to the array of elements to be
140 /// written 129 /// written
141 /// \param[in] length Size in bytes to be written. 130 /// \param[in] length Size in bytes to be written.
142 /// \return The total number of bytes 131 /// \return The total number of bytes
143 /// successfully written is returned. 132 /// successfully written is returned.
144 int Write(const uint8_t* data, int length) 133 int Write(const uint8_t* data, int length)
145 { 134 {
@@ -154,7 +143,7 @@ namespace addon
154 /// 143 ///
155 /// \param[in] position the position that you want to seek to 144 /// \param[in] position the position that you want to seek to
156 /// \param[in] whence [optional] offset relative to 145 /// \param[in] whence [optional] offset relative to
157 /// You can set the value of whence to one 146 /// You can set the value of whence to one
158 /// of three things: 147 /// of three things:
159 /// | Value | int | Description | 148 /// | Value | int | Description |
160 /// |:--------:|:---:|:---------------------------------------------------| 149 /// |:--------:|:---:|:---------------------------------------------------|
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/ImageDecoder.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/ImageDecoder.h
index 5ccb859..09ac6c9 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/ImageDecoder.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/ImageDecoder.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with Kodi; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../AddonBase.h" 11#include "../AddonBase.h"
23 12
24namespace kodi { namespace addon { class CInstanceImageDecoder; }} 13namespace kodi { namespace addon { class CInstanceImageDecoder; }}
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Inputstream.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Inputstream.h
index 08d01ad..23a91e7 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Inputstream.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Inputstream.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with Kodi; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22/* 11/*
23 * Parts with a comment named "internal" are only used inside header and not 12 * Parts with a comment named "internal" are only used inside header and not
24 * used or accessed direct during add-on development! 13 * used or accessed direct during add-on development!
@@ -142,7 +131,7 @@ extern "C" {
142 const uint8_t *m_ExtraData; 131 const uint8_t *m_ExtraData;
143 unsigned int m_ExtraSize; 132 unsigned int m_ExtraSize;
144 133
145 char m_language[4]; /*!< @brief ISO 639 3-letter language code (empty string if undefined) */ 134 char m_language[64]; /*!< @brief RFC 5646 language code (empty string if undefined) */
146 135
147 unsigned int m_FpsScale; /*!< @brief Scale of 1000 and a rate of 29970 will result in 29.97 fps */ 136 unsigned int m_FpsScale; /*!< @brief Scale of 1000 and a rate of 29970 will result in 29.97 fps */
148 unsigned int m_FpsRate; 137 unsigned int m_FpsRate;
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Peripheral.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Peripheral.h
index 75be27e..78e572b 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Peripheral.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Peripheral.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2014-2017 Team Kodi 2 * Copyright (C) 2014-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this Program; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../AddonBase.h" 11#include "../AddonBase.h"
23 12
24namespace kodi { namespace addon { class CInstancePeripheral; }} 13namespace kodi { namespace addon { class CInstancePeripheral; }}
@@ -780,7 +769,7 @@ namespace addon
780 return addonInstance->toAddon.addonInstance->SendEvent(event); 769 return addonInstance->toAddon.addonInstance->SendEvent(event);
781 } 770 }
782 771
783 772
784 inline static PERIPHERAL_ERROR ADDON_GetJoystickInfo(const AddonInstance_Peripheral* addonInstance, unsigned int index, JOYSTICK_INFO* info) 773 inline static PERIPHERAL_ERROR ADDON_GetJoystickInfo(const AddonInstance_Peripheral* addonInstance, unsigned int index, JOYSTICK_INFO* info)
785 { 774 {
786 return addonInstance->toAddon.addonInstance->GetJoystickInfo(index, info); 775 return addonInstance->toAddon.addonInstance->GetJoystickInfo(index, info);
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/PeripheralUtils.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/PeripheralUtils.h
index c2efc05..9b2a43f 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/PeripheralUtils.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/PeripheralUtils.h
@@ -1,22 +1,11 @@
1/* 1/*
2 * Copyright (C) 2014-2017 Team Kodi 2 * Copyright (C) 2014-2018 Team Kodi
3 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
4 *
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
8 * any later version.
9 *
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this Program; see the file COPYING. If not, see
17 * <http://www.gnu.org/licenses/>.
18 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
19 */ 7 */
8
20#pragma once 9#pragma once
21 10
22#include "Peripheral.h" 11#include "Peripheral.h"
@@ -97,10 +86,7 @@ namespace addon
97 public: 86 public:
98 Peripheral(PERIPHERAL_TYPE type = PERIPHERAL_TYPE_UNKNOWN, const std::string& strName = "") : 87 Peripheral(PERIPHERAL_TYPE type = PERIPHERAL_TYPE_UNKNOWN, const std::string& strName = "") :
99 m_type(type), 88 m_type(type),
100 m_strName(strName), 89 m_strName(strName)
101 m_vendorId(0),
102 m_productId(0),
103 m_index(0)
104 { 90 {
105 } 91 }
106 92
@@ -149,9 +135,9 @@ namespace addon
149 private: 135 private:
150 PERIPHERAL_TYPE m_type; 136 PERIPHERAL_TYPE m_type;
151 std::string m_strName; 137 std::string m_strName;
152 uint16_t m_vendorId; 138 uint16_t m_vendorId = 0;
153 uint16_t m_productId; 139 uint16_t m_productId = 0;
154 unsigned int m_index; 140 unsigned int m_index = 0;
155 }; 141 };
156 142
157 typedef PeripheralVector<Peripheral, PERIPHERAL_INFO> Peripherals; 143 typedef PeripheralVector<Peripheral, PERIPHERAL_INFO> Peripherals;
@@ -259,12 +245,7 @@ namespace addon
259 Joystick(const std::string& provider = "", const std::string& strName = "") : 245 Joystick(const std::string& provider = "", const std::string& strName = "") :
260 Peripheral(PERIPHERAL_TYPE_JOYSTICK, strName), 246 Peripheral(PERIPHERAL_TYPE_JOYSTICK, strName),
261 m_provider(provider), 247 m_provider(provider),
262 m_requestedPort(NO_PORT_REQUESTED), 248 m_requestedPort(NO_PORT_REQUESTED)
263 m_buttonCount(0),
264 m_hatCount(0),
265 m_axisCount(0),
266 m_motorCount(0),
267 m_supportsPowerOff(false)
268 { 249 {
269 } 250 }
270 251
@@ -345,11 +326,11 @@ namespace addon
345 private: 326 private:
346 std::string m_provider; 327 std::string m_provider;
347 int m_requestedPort; 328 int m_requestedPort;
348 unsigned int m_buttonCount; 329 unsigned int m_buttonCount = 0;
349 unsigned int m_hatCount; 330 unsigned int m_hatCount = 0;
350 unsigned int m_axisCount; 331 unsigned int m_axisCount = 0;
351 unsigned int m_motorCount; 332 unsigned int m_motorCount = 0;
352 bool m_supportsPowerOff; 333 bool m_supportsPowerOff = false;
353 }; 334 };
354 335
355 typedef PeripheralVector<Joystick, JOYSTICK_INFO> Joysticks; 336 typedef PeripheralVector<Joystick, JOYSTICK_INFO> Joysticks;
@@ -402,12 +383,7 @@ namespace addon
402 */ 383 */
403 DriverPrimitive(JOYSTICK_DRIVER_PRIMITIVE_TYPE type, unsigned int driverIndex) : 384 DriverPrimitive(JOYSTICK_DRIVER_PRIMITIVE_TYPE type, unsigned int driverIndex) :
404 m_type(type), 385 m_type(type),
405 m_driverIndex(driverIndex), 386 m_driverIndex(driverIndex)
406 m_hatDirection(JOYSTICK_DRIVER_HAT_UNKNOWN),
407 m_center(0),
408 m_semiAxisDirection(JOYSTICK_DRIVER_SEMIAXIS_UNKNOWN),
409 m_range(1),
410 m_relPointerDirection(JOYSTICK_DRIVER_RELPOINTER_UNKNOWN)
411 { 387 {
412 } 388 }
413 389
@@ -415,16 +391,7 @@ namespace addon
415 /*! 391 /*!
416 * \brief Construct an invalid driver primitive 392 * \brief Construct an invalid driver primitive
417 */ 393 */
418 DriverPrimitive(void) : 394 DriverPrimitive(void) = default;
419 m_type(JOYSTICK_DRIVER_PRIMITIVE_TYPE_UNKNOWN),
420 m_driverIndex(0),
421 m_hatDirection(JOYSTICK_DRIVER_HAT_UNKNOWN),
422 m_center(0),
423 m_semiAxisDirection(JOYSTICK_DRIVER_SEMIAXIS_UNKNOWN),
424 m_range(1),
425 m_relPointerDirection(JOYSTICK_DRIVER_RELPOINTER_UNKNOWN)
426 {
427 }
428 395
429 /*! 396 /*!
430 * \brief Construct a driver primitive representing a joystick button 397 * \brief Construct a driver primitive representing a joystick button
@@ -441,11 +408,7 @@ namespace addon
441 DriverPrimitive(unsigned int hatIndex, JOYSTICK_DRIVER_HAT_DIRECTION direction) : 408 DriverPrimitive(unsigned int hatIndex, JOYSTICK_DRIVER_HAT_DIRECTION direction) :
442 m_type(JOYSTICK_DRIVER_PRIMITIVE_TYPE_HAT_DIRECTION), 409 m_type(JOYSTICK_DRIVER_PRIMITIVE_TYPE_HAT_DIRECTION),
443 m_driverIndex(hatIndex), 410 m_driverIndex(hatIndex),
444 m_hatDirection(direction), 411 m_hatDirection(direction)
445 m_center(0),
446 m_semiAxisDirection(JOYSTICK_DRIVER_SEMIAXIS_UNKNOWN),
447 m_range(1),
448 m_relPointerDirection(JOYSTICK_DRIVER_RELPOINTER_UNKNOWN)
449 { 412 {
450 } 413 }
451 414
@@ -456,11 +419,9 @@ namespace addon
456 DriverPrimitive(unsigned int axisIndex, int center, JOYSTICK_DRIVER_SEMIAXIS_DIRECTION direction, unsigned int range) : 419 DriverPrimitive(unsigned int axisIndex, int center, JOYSTICK_DRIVER_SEMIAXIS_DIRECTION direction, unsigned int range) :
457 m_type(JOYSTICK_DRIVER_PRIMITIVE_TYPE_SEMIAXIS), 420 m_type(JOYSTICK_DRIVER_PRIMITIVE_TYPE_SEMIAXIS),
458 m_driverIndex(axisIndex), 421 m_driverIndex(axisIndex),
459 m_hatDirection(JOYSTICK_DRIVER_HAT_UNKNOWN),
460 m_center(center), 422 m_center(center),
461 m_semiAxisDirection(direction), 423 m_semiAxisDirection(direction),
462 m_range(range), 424 m_range(range)
463 m_relPointerDirection(JOYSTICK_DRIVER_RELPOINTER_UNKNOWN)
464 { 425 {
465 } 426 }
466 427
@@ -477,13 +438,7 @@ namespace addon
477 */ 438 */
478 DriverPrimitive(std::string keycode) : 439 DriverPrimitive(std::string keycode) :
479 m_type(JOYSTICK_DRIVER_PRIMITIVE_TYPE_KEY), 440 m_type(JOYSTICK_DRIVER_PRIMITIVE_TYPE_KEY),
480 m_driverIndex(0), 441 m_keycode(std::move(keycode))
481 m_hatDirection(JOYSTICK_DRIVER_HAT_UNKNOWN),
482 m_center(0),
483 m_semiAxisDirection(JOYSTICK_DRIVER_SEMIAXIS_UNKNOWN),
484 m_range(1),
485 m_keycode(std::move(keycode)),
486 m_relPointerDirection(JOYSTICK_DRIVER_RELPOINTER_UNKNOWN)
487 { 442 {
488 } 443 }
489 444
@@ -501,23 +456,12 @@ namespace addon
501 */ 456 */
502 DriverPrimitive(JOYSTICK_DRIVER_RELPOINTER_DIRECTION direction) : 457 DriverPrimitive(JOYSTICK_DRIVER_RELPOINTER_DIRECTION direction) :
503 m_type(JOYSTICK_DRIVER_PRIMITIVE_TYPE_RELPOINTER_DIRECTION), 458 m_type(JOYSTICK_DRIVER_PRIMITIVE_TYPE_RELPOINTER_DIRECTION),
504 m_driverIndex(0),
505 m_hatDirection(JOYSTICK_DRIVER_HAT_UNKNOWN),
506 m_center(0),
507 m_semiAxisDirection(JOYSTICK_DRIVER_SEMIAXIS_UNKNOWN),
508 m_range(1),
509 m_relPointerDirection(direction) 459 m_relPointerDirection(direction)
510 { 460 {
511 } 461 }
512 462
513 explicit DriverPrimitive(const JOYSTICK_DRIVER_PRIMITIVE& primitive) : 463 explicit DriverPrimitive(const JOYSTICK_DRIVER_PRIMITIVE& primitive) :
514 m_type(primitive.type), 464 m_type(primitive.type)
515 m_driverIndex(0),
516 m_hatDirection(JOYSTICK_DRIVER_HAT_UNKNOWN),
517 m_center(0),
518 m_semiAxisDirection(JOYSTICK_DRIVER_SEMIAXIS_UNKNOWN),
519 m_range(1),
520 m_relPointerDirection(JOYSTICK_DRIVER_RELPOINTER_UNKNOWN)
521 { 465 {
522 switch (m_type) 466 switch (m_type)
523 { 467 {
@@ -677,14 +621,14 @@ namespace addon
677 } 621 }
678 622
679 private: 623 private:
680 JOYSTICK_DRIVER_PRIMITIVE_TYPE m_type; 624 JOYSTICK_DRIVER_PRIMITIVE_TYPE m_type = JOYSTICK_DRIVER_PRIMITIVE_TYPE_UNKNOWN;
681 unsigned int m_driverIndex; 625 unsigned int m_driverIndex = 0;
682 JOYSTICK_DRIVER_HAT_DIRECTION m_hatDirection; 626 JOYSTICK_DRIVER_HAT_DIRECTION m_hatDirection = JOYSTICK_DRIVER_HAT_UNKNOWN;
683 int m_center; 627 int m_center = 0;
684 JOYSTICK_DRIVER_SEMIAXIS_DIRECTION m_semiAxisDirection; 628 JOYSTICK_DRIVER_SEMIAXIS_DIRECTION m_semiAxisDirection = JOYSTICK_DRIVER_SEMIAXIS_UNKNOWN;
685 unsigned int m_range; 629 unsigned int m_range = 1;
686 std::string m_keycode; 630 std::string m_keycode;
687 JOYSTICK_DRIVER_RELPOINTER_DIRECTION m_relPointerDirection; 631 JOYSTICK_DRIVER_RELPOINTER_DIRECTION m_relPointerDirection = JOYSTICK_DRIVER_RELPOINTER_UNKNOWN;
688 }; 632 };
689 633
690 typedef PeripheralVector<DriverPrimitive, JOYSTICK_DRIVER_PRIMITIVE> DriverPrimitives; 634 typedef PeripheralVector<DriverPrimitive, JOYSTICK_DRIVER_PRIMITIVE> DriverPrimitives;
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Screensaver.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Screensaver.h
index 04821b2..c4f8005 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Screensaver.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Screensaver.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with Kodi; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../AddonBase.h" 11#include "../AddonBase.h"
23 12
24namespace kodi { namespace addon { class CInstanceScreensaver; }} 13namespace kodi { namespace addon { class CInstanceScreensaver; }}
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/VFS.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/VFS.h
index 637a991..3bdc059 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/VFS.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/VFS.h
@@ -1,23 +1,12 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2015 Team Kodi 2 * Copyright (C) 2015-2018 Team Kodi
4 *
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
8 * any later version.
9 *
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with Kodi; see the file COPYING. If not, see
17 * <http://www.gnu.org/licenses/>.
18 * 3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 * See LICENSES/README.md for more information.
19 */ 6 */
20 7
8#pragma once
9
21#include "../AddonBase.h" 10#include "../AddonBase.h"
22#include "../Filesystem.h" 11#include "../Filesystem.h"
23 12
@@ -578,7 +567,7 @@ namespace addon
578 int* num_entries, 567 int* num_entries,
579 char* rootpath) 568 char* rootpath)
580 { 569 {
581 std::string cppRootPath; 570 std::string cppRootPath;
582 std::vector<kodi::vfs::CDirEntry> addonEntries; 571 std::vector<kodi::vfs::CDirEntry> addonEntries;
583 bool ret = instance->toAddon.addonInstance->ContainsFiles(*url, addonEntries, cppRootPath); 572 bool ret = instance->toAddon.addonInstance->ContainsFiles(*url, addonEntries, cppRootPath);
584 if (ret) 573 if (ret)
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/VideoCodec.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/VideoCodec.h
index 8a8779a..9c33fbf 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/VideoCodec.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/VideoCodec.h
@@ -1,21 +1,9 @@
1/* 1/*
2 * Copyright (C) 2017 Team XBMC 2 * Copyright (C) 2017-2018 Team Kodi
3 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
4 *
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
8 * any later version.
9 *
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with XBMC; see the file COPYING. If not, see
17 * <http://www.gnu.org/licenses/>.
18 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
19 */ 7 */
20 8
21#pragma once 9#pragma once
@@ -53,12 +41,12 @@ extern "C"
53 } codec; 41 } codec;
54 42
55 STREAMCODEC_PROFILE codecProfile; 43 STREAMCODEC_PROFILE codecProfile;
56 44
57 //UnknownVideoFormat is terminator 45 //UnknownVideoFormat is terminator
58 VIDEOCODEC_FORMAT *videoFormats; 46 VIDEOCODEC_FORMAT *videoFormats;
59 47
60 uint32_t width, height; 48 uint32_t width, height;
61 49
62 const uint8_t *extraData; 50 const uint8_t *extraData;
63 unsigned int extraDataSize; 51 unsigned int extraDataSize;
64 52
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Visualization.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Visualization.h
index a2bef15..6c29693 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Visualization.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/Visualization.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with Kodi; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22/* 11/*
23 * Parts with a comment named "internal" are only used inside header and not 12 * Parts with a comment named "internal" are only used inside header and not
24 * used or accessed direct during add-on development! 13 * used or accessed direct during add-on development!
@@ -34,7 +23,7 @@ extern "C"
34struct AddonInstance_Visualization; 23struct AddonInstance_Visualization;
35 24
36typedef enum VIS_ACTION : unsigned int /* internal */ 25typedef enum VIS_ACTION : unsigned int /* internal */
37{ 26{
38 VIS_ACTION_NONE = 0, 27 VIS_ACTION_NONE = 0,
39 VIS_ACTION_NEXT_PRESET, 28 VIS_ACTION_NEXT_PRESET,
40 VIS_ACTION_PREV_PRESET, 29 VIS_ACTION_PREV_PRESET,
@@ -318,8 +307,7 @@ namespace addon
318 /// Used by an add-on that only supports visualizations. 307 /// Used by an add-on that only supports visualizations.
319 /// 308 ///
320 CInstanceVisualization() 309 CInstanceVisualization()
321 : IAddonInstance(ADDON_INSTANCE_VISUALIZATION), 310 : IAddonInstance(ADDON_INSTANCE_VISUALIZATION)
322 m_presetLockedByUser(false)
323 { 311 {
324 if (CAddonBase::m_interface->globalSingleInstance != nullptr) 312 if (CAddonBase::m_interface->globalSingleInstance != nullptr)
325 throw std::logic_error("kodi::addon::CInstanceVisualization: Cannot create multiple instances of add-on."); 313 throw std::logic_error("kodi::addon::CInstanceVisualization: Cannot create multiple instances of add-on.");
@@ -341,8 +329,7 @@ namespace addon
341 /// @warning Only use `instance` from the CreateInstance call 329 /// @warning Only use `instance` from the CreateInstance call
342 /// 330 ///
343 explicit CInstanceVisualization(KODI_HANDLE instance) 331 explicit CInstanceVisualization(KODI_HANDLE instance)
344 : IAddonInstance(ADDON_INSTANCE_VISUALIZATION), 332 : IAddonInstance(ADDON_INSTANCE_VISUALIZATION)
345 m_presetLockedByUser(false)
346 { 333 {
347 if (CAddonBase::m_interface->globalSingleInstance != nullptr) 334 if (CAddonBase::m_interface->globalSingleInstance != nullptr)
348 throw std::logic_error("kodi::addon::CInstanceVisualization: Creation of multiple together with single instance way is not allowed!"); 335 throw std::logic_error("kodi::addon::CInstanceVisualization: Creation of multiple together with single instance way is not allowed!");
@@ -690,7 +677,7 @@ namespace addon
690 { 677 {
691 addon->toAddon.addonInstance->AudioData(audioData, audioDataLength, freqData, freqDataLength); 678 addon->toAddon.addonInstance->AudioData(audioData, audioDataLength, freqData, freqDataLength);
692 } 679 }
693 680
694 inline static bool ADDON_IsDirty(const AddonInstance_Visualization* addon) 681 inline static bool ADDON_IsDirty(const AddonInstance_Visualization* addon)
695 { 682 {
696 return addon->toAddon.addonInstance->IsDirty(); 683 return addon->toAddon.addonInstance->IsDirty();
@@ -758,7 +745,7 @@ namespace addon
758 return addon->toAddon.addonInstance->IsLocked(); 745 return addon->toAddon.addonInstance->IsLocked();
759 } 746 }
760 747
761 bool m_presetLockedByUser; 748 bool m_presetLockedByUser = false;
762 AddonInstance_Visualization* m_instanceData; 749 AddonInstance_Visualization* m_instanceData;
763 }; 750 };
764 751
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/General.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/General.h
index f1df60d..30b6d89 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/General.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/General.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../AddonBase.h" 11#include "../AddonBase.h"
23#include "definitions.h" 12#include "definitions.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/ListItem.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/ListItem.h
index 13cf2d1..f13b96e 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/ListItem.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/ListItem.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../AddonBase.h" 11#include "../AddonBase.h"
23#include "definitions.h" 12#include "definitions.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/Window.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/Window.h
index c369c62..f188f34 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/Window.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/Window.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../AddonBase.h" 11#include "../AddonBase.h"
23#include "ListItem.h" 12#include "ListItem.h"
24 13
@@ -98,7 +87,7 @@ namespace gui
98 if (!m_controlHandle) 87 if (!m_controlHandle)
99 kodi::Log(ADDON_LOG_FATAL, "kodi::gui::CWindow can't create window class from Kodi !!!"); 88 kodi::Log(ADDON_LOG_FATAL, "kodi::gui::CWindow can't create window class from Kodi !!!");
100 m_interface->kodi_gui->window->set_callbacks(m_interface->kodiBase, m_controlHandle, this, 89 m_interface->kodi_gui->window->set_callbacks(m_interface->kodiBase, m_controlHandle, this,
101 CBOnInit, CBOnFocus, CBOnClick, CBOnAction, 90 CBOnInit, CBOnFocus, CBOnClick, CBOnAction,
102 CBGetContextButtons, CBOnContextButton); 91 CBGetContextButtons, CBOnContextButton);
103 } 92 }
104 //-------------------------------------------------------------------------- 93 //--------------------------------------------------------------------------
@@ -867,7 +856,7 @@ namespace gui
867 static_cast<CWindow*>(cbhdl)->GetContextButtons(itemNumber, buttonList); 856 static_cast<CWindow*>(cbhdl)->GetContextButtons(itemNumber, buttonList);
868 if (!buttonList.empty()) 857 if (!buttonList.empty())
869 { 858 {
870 unsigned int presentSize = buttonList.size(); 859 unsigned int presentSize = static_cast<unsigned int>(buttonList.size());
871 if (presentSize > *size) 860 if (presentSize > *size)
872 kodi::Log(ADDON_LOG_WARNING, "GetContextButtons: More as allowed '%i' entries present!", *size); 861 kodi::Log(ADDON_LOG_WARNING, "GetContextButtons: More as allowed '%i' entries present!", *size);
873 else 862 else
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Button.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Button.h
index 5892d24..a38de1a 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Button.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Button.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../../AddonBase.h" 11#include "../../AddonBase.h"
23#include "../Window.h" 12#include "../Window.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Edit.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Edit.h
index 83eeede..5d30160 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Edit.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Edit.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../../AddonBase.h" 11#include "../../AddonBase.h"
23#include "../Window.h" 12#include "../Window.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/FadeLabel.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/FadeLabel.h
index 82d17ff..aab8929 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/FadeLabel.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/FadeLabel.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../../AddonBase.h" 11#include "../../AddonBase.h"
23#include "../Window.h" 12#include "../Window.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Image.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Image.h
index 1179fab..a872ab0 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Image.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Image.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../../AddonBase.h" 11#include "../../AddonBase.h"
23#include "../Window.h" 12#include "../Window.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Label.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Label.h
index f74ac03..eecfd8b 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Label.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Label.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../../AddonBase.h" 11#include "../../AddonBase.h"
23#include "../Window.h" 12#include "../Window.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Progress.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Progress.h
index 44310ed..78880c4 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Progress.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Progress.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../../AddonBase.h" 11#include "../../AddonBase.h"
23#include "../Window.h" 12#include "../Window.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/RadioButton.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/RadioButton.h
index b87920d..1721759 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/RadioButton.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/RadioButton.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../../AddonBase.h" 11#include "../../AddonBase.h"
23#include "../Window.h" 12#include "../Window.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Rendering.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Rendering.h
index f80fcfa..b3dadcd 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Rendering.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Rendering.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../../AddonBase.h" 11#include "../../AddonBase.h"
23#include "../Window.h" 12#include "../Window.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/SettingsSlider.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/SettingsSlider.h
index e51433a..4f97ba5 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/SettingsSlider.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/SettingsSlider.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../../AddonBase.h" 11#include "../../AddonBase.h"
23#include "../Window.h" 12#include "../Window.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Slider.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Slider.h
index cbb9b8f..6eae70a 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Slider.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Slider.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../../AddonBase.h" 11#include "../../AddonBase.h"
23#include "../Window.h" 12#include "../Window.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Spin.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Spin.h
index b39cd06..f3017b5 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Spin.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/Spin.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../../AddonBase.h" 11#include "../../AddonBase.h"
23#include "../Window.h" 12#include "../Window.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/TextBox.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/TextBox.h
index 9d8976e..13ce1da 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/TextBox.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/controls/TextBox.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../../AddonBase.h" 11#include "../../AddonBase.h"
23#include "../Window.h" 12#include "../Window.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/definitions.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/definitions.h
index 1dd03cc..770a416 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/definitions.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/definitions.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include <string> 11#include <string>
23#include <time.h> 12#include <time.h>
24 13
@@ -223,7 +212,7 @@ typedef struct AddonToKodiFuncTable_kodi_gui_dialogKeyboard
223 bool (*send_text_to_active_keyboard)(void* kodiBase, const char* text, bool close_keyboard); 212 bool (*send_text_to_active_keyboard)(void* kodiBase, const char* text, bool close_keyboard);
224 bool (*is_keyboard_activated)(void* kodiBase); 213 bool (*is_keyboard_activated)(void* kodiBase);
225} AddonToKodiFuncTable_kodi_gui_dialogKeyboard; 214} AddonToKodiFuncTable_kodi_gui_dialogKeyboard;
226 215
227typedef struct AddonToKodiFuncTable_kodi_gui_dialogNumeric 216typedef struct AddonToKodiFuncTable_kodi_gui_dialogNumeric
228{ 217{
229 bool (*show_and_verify_new_password)(void* kodiBase, char** password); 218 bool (*show_and_verify_new_password)(void* kodiBase, char** password);
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/ContextMenu.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/ContextMenu.h
index 39b21b4..26d6386 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/ContextMenu.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/ContextMenu.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../definitions.h" 11#include "../definitions.h"
23#include "../../AddonBase.h" 12#include "../../AddonBase.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/ExtendedProgress.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/ExtendedProgress.h
index 5878958..417d5db 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/ExtendedProgress.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/ExtendedProgress.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../definitions.h" 11#include "../definitions.h"
23#include "../../AddonBase.h" 12#include "../../AddonBase.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/FileBrowser.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/FileBrowser.h
index 401a78d..bb1065d 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/FileBrowser.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/FileBrowser.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../definitions.h" 11#include "../definitions.h"
23#include "../../AddonBase.h" 12#include "../../AddonBase.h"
24 13
@@ -159,7 +148,7 @@ namespace dialogs
159 char* retString = nullptr; 148 char* retString = nullptr;
160 bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogFileBrowser->show_and_get_file_from_dir(CAddonBase::m_interface->toKodi->kodiBase, 149 bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogFileBrowser->show_and_get_file_from_dir(CAddonBase::m_interface->toKodi->kodiBase,
161 directory.c_str(), mask.c_str(), heading.c_str(), 150 directory.c_str(), mask.c_str(), heading.c_str(),
162 path.c_str(), &retString, useThumbs, 151 path.c_str(), &retString, useThumbs,
163 useFileDirectories, singleList); 152 useFileDirectories, singleList);
164 if (retString != nullptr) 153 if (retString != nullptr)
165 { 154 {
@@ -223,7 +212,7 @@ namespace dialogs
223 { 212 {
224 using namespace ::kodi::addon; 213 using namespace ::kodi::addon;
225 char* retString = nullptr; 214 char* retString = nullptr;
226 bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogFileBrowser->show_and_get_source(CAddonBase::m_interface->toKodi->kodiBase, path.c_str(), &retString, 215 bool ret = CAddonBase::m_interface->toKodi->kodi_gui->dialogFileBrowser->show_and_get_source(CAddonBase::m_interface->toKodi->kodiBase, path.c_str(), &retString,
227 allowNetworkShares, additionalShare.c_str(), type.c_str()); 216 allowNetworkShares, additionalShare.c_str(), type.c_str());
228 if (retString != nullptr) 217 if (retString != nullptr)
229 { 218 {
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Keyboard.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Keyboard.h
index 6d2b32b..76284d8 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Keyboard.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Keyboard.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../definitions.h" 11#include "../definitions.h"
23#include "../../AddonBase.h" 12#include "../../AddonBase.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Numeric.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Numeric.h
index 70e9e7b..4a8eccb 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Numeric.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Numeric.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../definitions.h" 11#include "../definitions.h"
23#include "../../AddonBase.h" 12#include "../../AddonBase.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/OK.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/OK.h
index 12799b7..a47880f 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/OK.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/OK.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../../AddonBase.h" 11#include "../../AddonBase.h"
23#include "../definitions.h" 12#include "../definitions.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Progress.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Progress.h
index 3f18499..bbaa98d 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Progress.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Progress.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../definitions.h" 11#include "../definitions.h"
23#include "../../AddonBase.h" 12#include "../../AddonBase.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Select.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Select.h
index 8276832..ba0db1d 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Select.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/Select.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../definitions.h" 11#include "../definitions.h"
23#include "../../AddonBase.h" 12#include "../../AddonBase.h"
24 13
@@ -39,7 +28,7 @@ typedef struct SSelectionEntry
39 /// 28 ///
40 /// There becomes selected always set to false. 29 /// There becomes selected always set to false.
41 /// 30 ///
42 SSelectionEntry() : selected(false) { } 31 SSelectionEntry() = default;
43 //---------------------------------------------------------------------------- 32 //----------------------------------------------------------------------------
44 33
45 /// Entry identfication string 34 /// Entry identfication string
@@ -50,7 +39,7 @@ typedef struct SSelectionEntry
50 39
51 /// Place where entry can be preselected and after return the from user 40 /// Place where entry can be preselected and after return the from user
52 /// selected is set. 41 /// selected is set.
53 bool selected; 42 bool selected = false;
54} SSelectionEntry; 43} SSelectionEntry;
55//------------------------------------------------------------------------------ 44//------------------------------------------------------------------------------
56 45
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/TextViewer.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/TextViewer.h
index c64bc1e..da38f7c 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/TextViewer.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/TextViewer.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2015-2016 Team KODI 2 * Copyright (C) 2015-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../definitions.h" 11#include "../definitions.h"
23#include "../../AddonBase.h" 12#include "../../AddonBase.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/YesNo.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/YesNo.h
index d9c34ff..c694bf5 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/YesNo.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/dialogs/YesNo.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team KODI 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../definitions.h" 11#include "../definitions.h"
23#include "../../AddonBase.h" 12#include "../../AddonBase.h"
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_dll.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_dll.h
index 79ca778..40979e5 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_dll.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_dll.h
@@ -1,24 +1,12 @@
1/* 1/*
2 * Copyright (C) 2014-2017 Team Kodi 2 * Copyright (C) 2014-2018 Team Kodi
3 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
4 *
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
8 * any later version.
9 *
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this Program; see the file COPYING. If not, see
17 * <http://www.gnu.org/licenses/>.
18 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
19 */ 7 */
20#ifndef KODI_GAME_DLL_H_ 8
21#define KODI_GAME_DLL_H_ 9#pragma once
22 10
23#include "kodi_game_types.h" 11#include "kodi_game_types.h"
24 12
@@ -40,7 +28,7 @@ GAME_ERROR LoadGame(const char* url);
40/*! 28/*!
41 * \brief Load a game that requires multiple files 29 * \brief Load a game that requires multiple files
42 * 30 *
43 * \param type The game stype 31 * \param type The game type
44 * \param urls An array of urls 32 * \param urls An array of urls
45 * \param urlCount The number of urls in the array 33 * \param urlCount The number of urls in the array
46 * 34 *
@@ -69,13 +57,13 @@ GAME_ERROR LoadStandalone(void);
69GAME_ERROR UnloadGame(void); 57GAME_ERROR UnloadGame(void);
70 58
71/*! 59/*!
72 * \brief Get information about the loaded game 60 * \brief Get timing information about the loaded game
73 * 61 *
74 * \param info The info structure to fill 62 * \param info The info structure to fill
75 * 63 *
76 * \return the error, or GAME_ERROR_NO_ERROR if info was filled 64 * \return the error, or GAME_ERROR_NO_ERROR if info was filled
77 */ 65 */
78GAME_ERROR GetGameInfo(game_system_av_info* info); 66GAME_ERROR GetGameTiming(game_system_timing* timing_info);
79 67
80/*! 68/*!
81 * \brief Get region of the loaded game 69 * \brief Get region of the loaded game
@@ -145,7 +133,7 @@ GAME_ERROR HwContextDestroy(void);
145bool HasFeature(const char* controller_id, const char* feature_name); 133bool HasFeature(const char* controller_id, const char* feature_name);
146 134
147/*! 135/*!
148 * \brief Get the input topolgy that specifies which controllers can be connected 136 * \brief Get the input topology that specifies which controllers can be connected
149 * 137 *
150 * \return The input topology, or null to use the default 138 * \return The input topology, or null to use the default
151 * 139 *
@@ -311,7 +299,7 @@ void __declspec(dllexport) get_addon(void* ptr)
311 pClient->toAddon.LoadGameSpecial = LoadGameSpecial; 299 pClient->toAddon.LoadGameSpecial = LoadGameSpecial;
312 pClient->toAddon.LoadStandalone = LoadStandalone; 300 pClient->toAddon.LoadStandalone = LoadStandalone;
313 pClient->toAddon.UnloadGame = UnloadGame; 301 pClient->toAddon.UnloadGame = UnloadGame;
314 pClient->toAddon.GetGameInfo = GetGameInfo; 302 pClient->toAddon.GetGameTiming = GetGameTiming;
315 pClient->toAddon.GetRegion = GetRegion; 303 pClient->toAddon.GetRegion = GetRegion;
316 pClient->toAddon.RequiresGameLoop = RequiresGameLoop; 304 pClient->toAddon.RequiresGameLoop = RequiresGameLoop;
317 pClient->toAddon.RunFrame = RunFrame; 305 pClient->toAddon.RunFrame = RunFrame;
@@ -337,4 +325,3 @@ void __declspec(dllexport) get_addon(void* ptr)
337} 325}
338#endif 326#endif
339 327
340#endif // KODI_GAME_DLL_H_
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_types.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_types.h
index 758b0fa..e3187d2 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_types.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_game_types.h
@@ -1,24 +1,12 @@
1/* 1/*
2 * Copyright (C) 2014-2017 Team Kodi 2 * Copyright (C) 2014-2018 Team Kodi
3 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
4 *
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
8 * any later version.
9 *
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this Program; see the file COPYING. If not, see
17 * <http://www.gnu.org/licenses/>.
18 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
19 */ 7 */
20#ifndef KODI_GAME_TYPES_H_ 8
21#define KODI_GAME_TYPES_H_ 9#pragma once
22 10
23#include "versions.h" 11#include "versions.h"
24#include "xbmc_addon_types.h" 12#include "xbmc_addon_types.h"
@@ -62,6 +50,8 @@
62extern "C" { 50extern "C" {
63#endif 51#endif
64 52
53/// @name Add-on types
54///{
65/*! Game add-on error codes */ 55/*! Game add-on error codes */
66typedef enum GAME_ERROR 56typedef enum GAME_ERROR
67{ 57{
@@ -74,50 +64,16 @@ typedef enum GAME_ERROR
74 GAME_ERROR_NOT_LOADED, // no game is loaded 64 GAME_ERROR_NOT_LOADED, // no game is loaded
75 GAME_ERROR_RESTRICTED, // game requires restricted resources 65 GAME_ERROR_RESTRICTED, // game requires restricted resources
76} GAME_ERROR; 66} GAME_ERROR;
67///}
77 68
78typedef enum GAME_STREAM_TYPE 69/// @name Audio stream
79{ 70///{
80 GAME_STREAM_UNKNOWN,
81 GAME_STREAM_AUDIO,
82 GAME_STREAM_VIDEO,
83} GAME_STREAM_TYPE;
84
85typedef enum GAME_PIXEL_FORMAT
86{
87 GAME_PIXEL_FORMAT_UNKNOWN,
88 GAME_PIXEL_FORMAT_YUV420P,
89 GAME_PIXEL_FORMAT_0RGB8888,
90 GAME_PIXEL_FORMAT_RGB565,
91 GAME_PIXEL_FORMAT_0RGB1555,
92} GAME_PIXEL_FORMAT;
93
94typedef enum GAME_VIDEO_CODEC
95{
96 GAME_VIDEO_CODEC_UNKNOWN,
97 GAME_VIDEO_CODEC_H264,
98 GAME_VIDEO_CODEC_THEORA,
99} GAME_VIDEO_CODEC;
100
101typedef enum GAME_VIDEO_ROTATION // Counter-clockwise
102{
103 GAME_VIDEO_ROTATION_0,
104 GAME_VIDEO_ROTATION_90,
105 GAME_VIDEO_ROTATION_180,
106 GAME_VIDEO_ROTATION_270,
107} GAME_VIDEO_ROTATION;
108
109typedef enum GAME_PCM_FORMAT 71typedef enum GAME_PCM_FORMAT
110{ 72{
111 GAME_PCM_FORMAT_UNKNOWN, 73 GAME_PCM_FORMAT_UNKNOWN,
112 GAME_PCM_FORMAT_S16NE, 74 GAME_PCM_FORMAT_S16NE,
113} GAME_PCM_FORMAT; 75} GAME_PCM_FORMAT;
114 76
115typedef enum GAME_AUDIO_CODEC
116{
117 GAME_AUDIO_CODEC_UNKNOWN,
118 GAME_AUDIO_CODEC_OPUS,
119} GAME_AUDIO_CODEC;
120
121typedef enum GAME_AUDIO_CHANNEL 77typedef enum GAME_AUDIO_CHANNEL
122{ 78{
123 GAME_CH_NULL, // Channel list terminator 79 GAME_CH_NULL, // Channel list terminator
@@ -143,50 +99,234 @@ typedef enum GAME_AUDIO_CHANNEL
143 GAME_CH_BROC, 99 GAME_CH_BROC,
144} GAME_AUDIO_CHANNEL; 100} GAME_AUDIO_CHANNEL;
145 101
146// TODO 102typedef struct game_stream_audio_properties
147typedef enum GAME_HW_FRAME_BUFFER 103{
104 GAME_PCM_FORMAT format;
105 const GAME_AUDIO_CHANNEL* channel_map;
106} ATTRIBUTE_PACKED game_stream_audio_properties;
107
108typedef struct game_stream_audio_packet
109{
110 const uint8_t *data;
111 size_t size;
112} ATTRIBUTE_PACKED game_stream_audio_packet;
113///}
114
115/// @name Video stream
116///{
117typedef enum GAME_PIXEL_FORMAT
118{
119 GAME_PIXEL_FORMAT_UNKNOWN,
120 GAME_PIXEL_FORMAT_0RGB8888,
121 GAME_PIXEL_FORMAT_RGB565,
122 GAME_PIXEL_FORMAT_0RGB1555,
123} GAME_PIXEL_FORMAT;
124
125typedef enum GAME_VIDEO_ROTATION
126{
127 GAME_VIDEO_ROTATION_0,
128 GAME_VIDEO_ROTATION_90_CCW,
129 GAME_VIDEO_ROTATION_180_CCW,
130 GAME_VIDEO_ROTATION_270_CCW,
131} GAME_VIDEO_ROTATION;
132
133typedef struct game_stream_video_properties
148{ 134{
149 GAME_HW_FRAME_BUFFER_VALID, // Pass this to game_video_refresh if rendering to hardware 135 GAME_PIXEL_FORMAT format;
150 GAME_HW_FRAME_BUFFER_DUPLICATE, // Passing NULL to game_video_refresh is still a frame dupe as normal 136 unsigned int nominal_width;
151 GAME_HW_FRAME_BUFFER_RENDER, 137 unsigned int nominal_height;
152} GAME_HW_FRAME_BUFFER; 138 unsigned int max_width;
139 unsigned int max_height;
140 float aspect_ratio; // If aspect_ratio is <= 0.0, an aspect ratio of nominal_width / nominal_height is assumed
141} ATTRIBUTE_PACKED game_stream_video_properties;
153 142
143typedef struct game_stream_video_packet
144{
145 unsigned int width;
146 unsigned int height;
147 GAME_VIDEO_ROTATION rotation;
148 const uint8_t *data;
149 size_t size;
150} ATTRIBUTE_PACKED game_stream_video_packet;
151///}
152
153/// @name Hardware framebuffer stream
154///{
154typedef enum GAME_HW_CONTEXT_TYPE 155typedef enum GAME_HW_CONTEXT_TYPE
155{ 156{
156 GAME_HW_CONTEXT_NONE, 157 GAME_HW_CONTEXT_NONE,
157 GAME_HW_CONTEXT_OPENGL, // OpenGL 2.x. Latest version available before 3.x+. Driver can choose to use latest compatibility context 158
158 GAME_HW_CONTEXT_OPENGLES2, // GLES 2.0 159 // OpenGL 2.x. Driver can choose to use latest compatibility context
159 GAME_HW_CONTEXT_OPENGL_CORE, // Modern desktop core GL context. Use major/minor fields to set GL version 160 GAME_HW_CONTEXT_OPENGL,
160 GAME_HW_CONTEXT_OPENGLES3, // GLES 3.0 161
162 // OpenGL ES 2.0
163 GAME_HW_CONTEXT_OPENGLES2,
164
165 // Modern desktop core GL context. Use major/minor fields to set GL version
166 GAME_HW_CONTEXT_OPENGL_CORE,
167
168 // OpenGL ES 3.0
169 GAME_HW_CONTEXT_OPENGLES3,
170
171 // OpenGL ES 3.1+. Set major/minor fields.
172 GAME_HW_CONTEXT_OPENGLES_VERSION,
173
174 // Vulkan
175 GAME_HW_CONTEXT_VULKAN
161} GAME_HW_CONTEXT_TYPE; 176} GAME_HW_CONTEXT_TYPE;
162 177
163typedef enum GAME_INPUT_EVENT_SOURCE 178typedef struct game_stream_hw_framebuffer_properties
164{ 179{
165 GAME_INPUT_EVENT_DIGITAL_BUTTON, 180 /*!
166 GAME_INPUT_EVENT_ANALOG_BUTTON, 181 * The API to use.
167 GAME_INPUT_EVENT_AXIS, 182 */
168 GAME_INPUT_EVENT_ANALOG_STICK, 183 GAME_HW_CONTEXT_TYPE context_type;
169 GAME_INPUT_EVENT_ACCELEROMETER,
170 GAME_INPUT_EVENT_KEY,
171 GAME_INPUT_EVENT_RELATIVE_POINTER,
172 GAME_INPUT_EVENT_ABSOLUTE_POINTER,
173 GAME_INPUT_EVENT_MOTOR,
174} GAME_INPUT_EVENT_SOURCE;
175 184
176typedef enum GAME_KEY_MOD 185 /*!
186 * Set if render buffers should have depth component attached.
187 *
188 * TODO: Obsolete
189 */
190 bool depth;
191
192 /*!
193 * Set if stencil buffers should be attached. If depth and stencil are true,
194 * a packed 24/8 buffer will be added. Only attaching stencil is invalid and
195 * will be ignored.
196 *
197 * TODO: Obsolete.
198 */
199 bool stencil;
200
201 /*!
202 * Use conventional bottom-left origin convention. If false, standard top-left
203 * origin semantics are used.
204 *
205 * TODO: Move to GL specific interface
206 */
207 bool bottom_left_origin;
208
209 /*!
210 * Major version number for core GL context or GLES 3.1+.
211 */
212 unsigned int version_major;
213
214 /*!
215 * Minor version number for core GL context or GLES 3.1+.
216 */
217 unsigned int version_minor;
218
219 /*!
220 * If this is true, the frontend will go very far to avoid resetting context
221 * in scenarios like toggling fullscreen, etc.
222 *
223 * TODO: Obsolete? Maybe frontend should just always assume this...
224 *
225 * The reset callback might still be called in extreme situations such as if
226 * the context is lost beyond recovery.
227 *
228 * For optimal stability, set this to false, and allow context to be reset at
229 * any time.
230 */
231 bool cache_context;
232
233 /*!
234 * Creates a debug context.
235 */
236 bool debug_context;
237} ATTRIBUTE_PACKED game_stream_hw_framebuffer_properties;
238
239typedef struct game_stream_hw_framebuffer_buffer
177{ 240{
178 GAME_KEY_MOD_NONE = 0x0000, 241 uintptr_t framebuffer;
242} ATTRIBUTE_PACKED game_stream_hw_framebuffer_buffer;
179 243
180 GAME_KEY_MOD_SHIFT = 0x0001, 244typedef struct game_stream_hw_framebuffer_packet
181 GAME_KEY_MOD_CTRL = 0x0002, 245{
182 GAME_KEY_MOD_ALT = 0x0004, 246 uintptr_t framebuffer;
183 GAME_KEY_MOD_META = 0x0008, 247} ATTRIBUTE_PACKED game_stream_hw_framebuffer_packet;
184 GAME_KEY_MOD_SUPER = 0x0010,
185 248
186 GAME_KEY_MOD_NUMLOCK = 0x0100, 249typedef void (*game_proc_address_t)(void);
187 GAME_KEY_MOD_CAPSLOCK = 0x0200, 250///}
188 GAME_KEY_MOD_SCROLLOCK = 0x0400, 251
189} GAME_KEY_MOD; 252/// @name Software framebuffer stream
253///{
254typedef game_stream_video_properties game_stream_sw_framebuffer_properties;
255
256typedef struct game_stream_sw_framebuffer_buffer
257{
258 GAME_PIXEL_FORMAT format;
259 uint8_t *data;
260 size_t size;
261} ATTRIBUTE_PACKED game_stream_sw_framebuffer_buffer;
262
263typedef game_stream_video_packet game_stream_sw_framebuffer_packet;
264///}
265
266/// @name Stream types
267///{
268typedef enum GAME_STREAM_TYPE
269{
270 GAME_STREAM_UNKNOWN,
271 GAME_STREAM_AUDIO,
272 GAME_STREAM_VIDEO,
273 GAME_STREAM_HW_FRAMEBUFFER,
274 GAME_STREAM_SW_FRAMEBUFFER,
275} GAME_STREAM_TYPE;
276
277/*!
278 * \brief Immutable stream metadata
279 *
280 * This metadata is provided when the stream is opened. If any stream
281 * properties change, a new stream must be opened.
282 */
283typedef struct game_stream_properties
284{
285 GAME_STREAM_TYPE type;
286 union
287 {
288 game_stream_audio_properties audio;
289 game_stream_video_properties video;
290 game_stream_hw_framebuffer_properties hw_framebuffer;
291 game_stream_sw_framebuffer_properties sw_framebuffer;
292 };
293} ATTRIBUTE_PACKED game_stream_properties;
294
295/*!
296 * \brief Stream buffers for hardware rendering and zero-copy support
297 */
298typedef struct game_stream_buffer
299{
300 GAME_STREAM_TYPE type;
301 union
302 {
303 game_stream_hw_framebuffer_buffer hw_framebuffer;
304 game_stream_sw_framebuffer_buffer sw_framebuffer;
305 };
306} ATTRIBUTE_PACKED game_stream_buffer;
307
308/*!
309 * \brief Stream packet and ephemeral metadata
310 *
311 * This packet contains stream data and accompanying metadata. The metadata
312 * is ephemeral, meaning it only applies to the current packet and can change
313 * from packet to packet in the same stream.
314 */
315typedef struct game_stream_packet
316{
317 GAME_STREAM_TYPE type;
318 union
319 {
320 game_stream_audio_packet audio;
321 game_stream_video_packet video;
322 game_stream_hw_framebuffer_packet hw_framebuffer;
323 game_stream_sw_framebuffer_packet sw_framebuffer;
324 };
325} ATTRIBUTE_PACKED game_stream_packet;
326///}
327
328/// @name Game types
329///{
190 330
191/*! Returned from game_get_region() */ 331/*! Returned from game_get_region() */
192typedef enum GAME_REGION 332typedef enum GAME_REGION
@@ -262,14 +402,38 @@ typedef enum GAME_SIMD
262 GAME_SIMD_AVX2 = (1 << 12), 402 GAME_SIMD_AVX2 = (1 << 12),
263 GAME_SIMD_VFPU = (1 << 13), 403 GAME_SIMD_VFPU = (1 << 13),
264} GAME_SIMD; 404} GAME_SIMD;
405///}
406
407/// @name Input types
408///{
265 409
266typedef enum GAME_ROTATION 410typedef enum GAME_INPUT_EVENT_SOURCE
267{ 411{
268 GAME_ROTATION_0_CW, 412 GAME_INPUT_EVENT_DIGITAL_BUTTON,
269 GAME_ROTATION_90_CW, 413 GAME_INPUT_EVENT_ANALOG_BUTTON,
270 GAME_ROTATION_180_CW, 414 GAME_INPUT_EVENT_AXIS,
271 GAME_ROTATION_270_CW, 415 GAME_INPUT_EVENT_ANALOG_STICK,
272} GAME_ROTATION; 416 GAME_INPUT_EVENT_ACCELEROMETER,
417 GAME_INPUT_EVENT_KEY,
418 GAME_INPUT_EVENT_RELATIVE_POINTER,
419 GAME_INPUT_EVENT_ABSOLUTE_POINTER,
420 GAME_INPUT_EVENT_MOTOR,
421} GAME_INPUT_EVENT_SOURCE;
422
423typedef enum GAME_KEY_MOD
424{
425 GAME_KEY_MOD_NONE = 0x0000,
426
427 GAME_KEY_MOD_SHIFT = 0x0001,
428 GAME_KEY_MOD_CTRL = 0x0002,
429 GAME_KEY_MOD_ALT = 0x0004,
430 GAME_KEY_MOD_META = 0x0008,
431 GAME_KEY_MOD_SUPER = 0x0010,
432
433 GAME_KEY_MOD_NUMLOCK = 0x0100,
434 GAME_KEY_MOD_CAPSLOCK = 0x0200,
435 GAME_KEY_MOD_SCROLLOCK = 0x0400,
436} GAME_KEY_MOD;
273 437
274/*! 438/*!
275 * \brief Type of port on the virtual game console 439 * \brief Type of port on the virtual game console
@@ -418,46 +582,16 @@ typedef struct game_input_event
418 struct game_motor_event motor; 582 struct game_motor_event motor;
419 }; 583 };
420} ATTRIBUTE_PACKED game_input_event; 584} ATTRIBUTE_PACKED game_input_event;
585///}
421 586
422struct game_geometry 587/// @name Environment types
423{ 588///{
424 unsigned base_width; // Nominal video width of game
425 unsigned base_height; // Nominal video height of game
426 unsigned max_width; // Maximum possible width of game
427 unsigned max_height; // Maximum possible height of game
428 float aspect_ratio; // Nominal aspect ratio of game. If aspect_ratio is <= 0.0,
429 // an aspect ratio of base_width / base_height is assumed.
430 // A frontend could override this setting if desired.
431};
432
433struct game_system_timing 589struct game_system_timing
434{ 590{
435 double fps; // FPS of video content. 591 double fps; // FPS of video content.
436 double sample_rate; // Sampling rate of audio. 592 double sample_rate; // Sampling rate of audio.
437}; 593};
438 594///}
439struct game_system_av_info
440{
441 struct game_geometry geometry;
442 struct game_system_timing timing;
443};
444
445typedef void (*game_proc_address_t)(void);
446
447struct game_hw_info
448{
449 GAME_HW_CONTEXT_TYPE context_type; // Which API to use. Set by game client
450 bool depth; // Set if render buffers should have depth component attached
451 bool stencil; // Set if stencil buffers should be attached
452 // If depth and stencil are true, a packed 24/8 buffer will be added. Only attaching stencil is invalid and will be ignored
453 bool bottom_left_origin; // Use conventional bottom-left origin convention. Is false, standard top-left origin semantics are used
454 unsigned version_major; // Major version number for core GL context
455 unsigned version_minor; // Minor version number for core GL context
456 bool cache_context; // If this is true, the frontend will go very far to avoid resetting context in scenarios like toggling fullscreen, etc.
457 // The reset callback might still be called in extreme situations such as if the context is lost beyond recovery
458 // For optimal stability, set this to false, and allow context to be reset at any time
459 bool debug_context; // Creates a debug context
460};
461 595
462/*! Properties passed to the ADDON_Create() method of a game client */ 596/*! Properties passed to the ADDON_Create() method of a game client */
463typedef struct AddonProps_Game 597typedef struct AddonProps_Game
@@ -512,7 +646,7 @@ typedef struct AddonProps_Game
512} AddonProps_Game; 646} AddonProps_Game;
513 647
514typedef AddonProps_Game game_client_properties; 648typedef AddonProps_Game game_client_properties;
515 649
516/*! Structure to transfer the methods from kodi_game_dll.h to Kodi */ 650/*! Structure to transfer the methods from kodi_game_dll.h to Kodi */
517 651
518typedef struct AddonToKodiFuncTable_Game 652typedef struct AddonToKodiFuncTable_Game
@@ -520,16 +654,12 @@ typedef struct AddonToKodiFuncTable_Game
520 KODI_HANDLE kodiInstance; 654 KODI_HANDLE kodiInstance;
521 655
522 void (*CloseGame)(void* kodiInstance); 656 void (*CloseGame)(void* kodiInstance);
523 int (*OpenPixelStream)(void* kodiInstance, GAME_PIXEL_FORMAT format, unsigned int width, unsigned int height, GAME_VIDEO_ROTATION rotation); 657 void* (*OpenStream)(void*, const game_stream_properties*);
524 int (*OpenVideoStream)(void* kodiInstance, GAME_VIDEO_CODEC codec); 658 bool (*GetStreamBuffer)(void*, void*, unsigned int, unsigned int, game_stream_buffer*);
525 int (*OpenPCMStream)(void* kodiInstance, GAME_PCM_FORMAT format, const GAME_AUDIO_CHANNEL* channel_map); 659 void (*AddStreamData)(void*, void*, const game_stream_packet*);
526 int(*OpenAudioStream)(void* kodiInstance, GAME_AUDIO_CODEC codec, const GAME_AUDIO_CHANNEL* channel_map); 660 void (*ReleaseStreamBuffer)(void*, void*, game_stream_buffer*);
527 void (*AddStreamData)(void* kodiInstance, GAME_STREAM_TYPE stream, const uint8_t* data, unsigned int size); 661 void (*CloseStream)(void*, void*);
528 void (*CloseStream)(void* kodiInstance, GAME_STREAM_TYPE stream);
529 void (*EnableHardwareRendering)(void* kodiInstance, const game_hw_info* hw_info);
530 uintptr_t (*HwGetCurrentFramebuffer)(void* kodiInstance);
531 game_proc_address_t (*HwGetProcAddress)(void* kodiInstance, const char* symbol); 662 game_proc_address_t (*HwGetProcAddress)(void* kodiInstance, const char* symbol);
532 void (*RenderFrame)(void* kodiInstance);
533 bool (*InputEvent)(void* kodiInstance, const game_input_event* event); 663 bool (*InputEvent)(void* kodiInstance, const game_input_event* event);
534 664
535} AddonToKodiFuncTable_Game; 665} AddonToKodiFuncTable_Game;
@@ -540,7 +670,7 @@ typedef struct KodiToAddonFuncTable_Game
540 GAME_ERROR (__cdecl* LoadGameSpecial)(SPECIAL_GAME_TYPE, const char**, size_t); 670 GAME_ERROR (__cdecl* LoadGameSpecial)(SPECIAL_GAME_TYPE, const char**, size_t);
541 GAME_ERROR (__cdecl* LoadStandalone)(void); 671 GAME_ERROR (__cdecl* LoadStandalone)(void);
542 GAME_ERROR (__cdecl* UnloadGame)(void); 672 GAME_ERROR (__cdecl* UnloadGame)(void);
543 GAME_ERROR (__cdecl* GetGameInfo)(game_system_av_info*); 673 GAME_ERROR (__cdecl* GetGameTiming)(game_system_timing*);
544 GAME_REGION (__cdecl* GetRegion)(void); 674 GAME_REGION (__cdecl* GetRegion)(void);
545 bool (__cdecl* RequiresGameLoop)(void); 675 bool (__cdecl* RequiresGameLoop)(void);
546 GAME_ERROR (__cdecl* RunFrame)(void); 676 GAME_ERROR (__cdecl* RunFrame)(void);
@@ -573,4 +703,3 @@ typedef struct AddonInstance_Game
573} 703}
574#endif 704#endif
575 705
576#endif // KODI_GAME_TYPES_H_
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_vfs_types.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_vfs_types.h
index 8c02b99..233f682 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_vfs_types.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/kodi_vfs_types.h
@@ -1,21 +1,10 @@
1/* 1/*
2 * Copyright (C) 2015 Team Kodi 2 * Copyright (C) 2015-2018 Team Kodi
3 *
4 * This Program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2, or (at your option)
7 * any later version.
8 *
9 * This Program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with Kodi; see the file COPYING. If not, see
16 * <http://www.gnu.org/licenses/>.
17 * 3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 * See LICENSES/README.md for more information.
18 */ 6 */
7
19#pragma once 8#pragma once
20 9
21#ifndef TARGET_WINDOWS 10#ifndef TARGET_WINDOWS
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_game.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_game.h
index 2774afd..ca8cba9 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_game.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_game.h
@@ -1,22 +1,11 @@
1/* 1/*
2 * Copyright (C) 2014-2017 Team Kodi 2 * Copyright (C) 2014-2018 Team Kodi
3 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
4 *
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
8 * any later version.
9 *
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this Program; see the file COPYING. If not, see
17 * <http://www.gnu.org/licenses/>.
18 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
19 */ 7 */
8
20#pragma once 9#pragma once
21 10
22#include "libXBMC_addon.h" 11#include "libXBMC_addon.h"
@@ -65,72 +54,58 @@ public:
65 */ 54 */
66 void CloseGame(void) 55 void CloseGame(void)
67 { 56 {
68 return m_callbacks->toKodi.CloseGame(m_callbacks->toKodi.kodiInstance); 57 m_callbacks->toKodi.CloseGame(m_callbacks->toKodi.kodiInstance);
69 } 58 }
70 59
71 /*! 60 /*!
72 * \brief Create a video stream for pixel data 61 * \brief Create a stream for gameplay data
73 * 62 *
74 * \param format The type of pixel data accepted by this stream 63 * \param properties The stream properties
75 * \param width The frame width
76 * \param height The frame height
77 * \param rotation The rotation (counter-clockwise) of the video frames
78 * 64 *
79 * \return 0 on success or -1 if a video stream is already created 65 * \return A stream handle, or NULL on failure
80 */ 66 */
81 bool OpenPixelStream(GAME_PIXEL_FORMAT format, unsigned int width, unsigned int height, GAME_VIDEO_ROTATION rotation) 67 void* OpenStream(const game_stream_properties &properties)
82 { 68 {
83 return m_callbacks->toKodi.OpenPixelStream(m_callbacks->toKodi.kodiInstance, format, width, height, rotation) == 0; 69 return m_callbacks->toKodi.OpenStream(m_callbacks->toKodi.kodiInstance, &properties);
84 } 70 }
85 71
86 /*! 72 /*!
87 * \brief Create a video stream for encoded video data 73 * \brief Get a buffer for zero-copy stream data
88 * 74 *
89 * \param codec The video format accepted by this stream 75 * \param stream The stream handle
76 * \param width The framebuffer width, or 0 for no width specified
77 * \param height The framebuffer height, or 0 for no height specified
78 * \param[out] buffer The buffer, or unmodified if false is returned
90 * 79 *
91 * \return 0 on success or -1 if a video stream is already created 80 * If this returns true, buffer must be freed using ReleaseStreamBuffer().
81 *
82 * \return True if buffer was set, false otherwise
92 */ 83 */
93 bool OpenVideoStream(GAME_VIDEO_CODEC codec) 84 bool GetStreamBuffer(void *stream, unsigned int width, unsigned int height, game_stream_buffer &buffer)
94 { 85 {
95 return m_callbacks->toKodi.OpenVideoStream(m_callbacks->toKodi.kodiInstance, codec) == 0; 86 return m_callbacks->toKodi.GetStreamBuffer(m_callbacks->toKodi.kodiInstance, stream, width, height, &buffer);
96 } 87 }
97 88
98 /*! 89 /*!
99 * \brief Create an audio stream for PCM audio data 90 * \brief Add a data packet to a stream
100 *
101 * \param format The type of audio data accepted by this stream
102 * \param channel_map The channel layout terminated by GAME_CH_NULL
103 * 91 *
104 * \return 0 on success or -1 if an audio stream is already created 92 * \param stream The target stream
93 * \param packet The data packet
105 */ 94 */
106 bool OpenPCMStream(GAME_PCM_FORMAT format, const GAME_AUDIO_CHANNEL* channel_map) 95 void AddStreamData(void *stream, const game_stream_packet &packet)
107 {
108 return m_callbacks->toKodi.OpenPCMStream(m_callbacks->toKodi.kodiInstance, format, channel_map) == 0;
109 }
110
111 /*!
112 * \brief Create an audio stream for encoded audio data
113 *
114 * \param codec The audio format accepted by this stream
115 * \param channel_map The channel layout terminated by GAME_CH_NULL
116 *
117 * \return 0 on success or -1 if an audio stream is already created
118 */
119 bool OpenAudioStream(GAME_AUDIO_CODEC codec, const GAME_AUDIO_CHANNEL* channel_map)
120 { 96 {
121 return m_callbacks->toKodi.OpenAudioStream(m_callbacks->toKodi.kodiInstance, codec, channel_map) == 0; 97 m_callbacks->toKodi.AddStreamData(m_callbacks->toKodi.kodiInstance, stream, &packet);
122 } 98 }
123 99
124 /*! 100 /*!
125 * \brief Add a data packet to an audio or video stream 101 * \brief Free an allocated buffer
126 * 102 *
127 * \param stream The target stream 103 * \param stream The stream handle
128 * \param data The data packet 104 * \param buffer The buffer returned from GetStreamBuffer()
129 * \param size The size of the data
130 */ 105 */
131 void AddStreamData(GAME_STREAM_TYPE stream, const uint8_t* data, unsigned int size) 106 void ReleaseStreamBuffer(void *stream, game_stream_buffer &buffer)
132 { 107 {
133 m_callbacks->toKodi.AddStreamData(m_callbacks->toKodi.kodiInstance, stream, data, size); 108 m_callbacks->toKodi.ReleaseStreamBuffer(m_callbacks->toKodi.kodiInstance, stream, &buffer);
134 } 109 }
135 110
136 /*! 111 /*!
@@ -138,7 +113,7 @@ public:
138 * 113 *
139 * \param stream The stream to close 114 * \param stream The stream to close
140 */ 115 */
141 void CloseStream(GAME_STREAM_TYPE stream) 116 void CloseStream(void *stream)
142 { 117 {
143 m_callbacks->toKodi.CloseStream(m_callbacks->toKodi.kodiInstance, stream); 118 m_callbacks->toKodi.CloseStream(m_callbacks->toKodi.kodiInstance, stream);
144 } 119 }
@@ -146,26 +121,6 @@ public:
146 // -- Hardware rendering callbacks ------------------------------------------- 121 // -- Hardware rendering callbacks -------------------------------------------
147 122
148 /*! 123 /*!
149 * \brief Enable hardware rendering
150 *
151 * \param hw_info A struct of properties for the hardware rendering system
152 */
153 void EnableHardwareRendering(const struct game_hw_info* hw_info)
154 {
155 return m_callbacks->toKodi.EnableHardwareRendering(m_callbacks->toKodi.kodiInstance, hw_info);
156 }
157
158 /*!
159 * \brief Get the framebuffer for rendering
160 *
161 * \return The framebuffer
162 */
163 uintptr_t HwGetCurrentFramebuffer(void)
164 {
165 return m_callbacks->toKodi.HwGetCurrentFramebuffer(m_callbacks->toKodi.kodiInstance);
166 }
167
168 /*!
169 * \brief Get a symbol from the hardware context 124 * \brief Get a symbol from the hardware context
170 * 125 *
171 * \param symbol The symbol's name 126 * \param symbol The symbol's name
@@ -177,14 +132,6 @@ public:
177 return m_callbacks->toKodi.HwGetProcAddress(m_callbacks->toKodi.kodiInstance, sym); 132 return m_callbacks->toKodi.HwGetProcAddress(m_callbacks->toKodi.kodiInstance, sym);
178 } 133 }
179 134
180 /*!
181 * \brief Called when a frame is being rendered
182 */
183 void RenderFrame()
184 {
185 return m_callbacks->toKodi.RenderFrame(m_callbacks->toKodi.kodiInstance);
186 }
187
188 // --- Input callbacks ------------------------------------------------------- 135 // --- Input callbacks -------------------------------------------------------
189 136
190 /*! 137 /*!
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_guilib.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_guilib.h
index 045d5fe..ff51c98 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_guilib.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libKODI_guilib.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2013 Team XBMC 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with XBMC; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include <string> 11#include <string>
23#include <vector> 12#include <vector>
24#include <string.h> 13#include <string.h>
@@ -539,7 +528,7 @@ public:
539 528
540 return m_cb->Control_Spin_GetValue(m_Handle->addonData, m_controlHandle); 529 return m_cb->Control_Spin_GetValue(m_Handle->addonData, m_controlHandle);
541 } 530 }
542 531
543 void SetValue(int iValue) 532 void SetValue(int iValue)
544 { 533 {
545 if (m_controlHandle) 534 if (m_controlHandle)
@@ -730,7 +719,7 @@ public:
730 { 719 {
731 m_controlHandle = m_cb->Window_GetControl_SettingsSlider(m_Handle->addonData, m_Window->GetControlHandle(), controlId); 720 m_controlHandle = m_cb->Window_GetControl_SettingsSlider(m_Handle->addonData, m_Window->GetControlHandle(), controlId);
732 } 721 }
733 722
734 ~CAddonGUISettingsSliderControl(void) override = default; 723 ~CAddonGUISettingsSliderControl(void) override = default;
735 724
736 void SetVisible(bool yesNo) 725 void SetVisible(bool yesNo)
@@ -906,7 +895,7 @@ inline bool CAddonGUIRenderingControl::OnDirtyCB(GUIHANDLE cbhdl)
906{ 895{
907 return static_cast<CAddonGUIRenderingControl*>(cbhdl)->Dirty(); 896 return static_cast<CAddonGUIRenderingControl*>(cbhdl)->Dirty();
908} 897}
909 898
910class CHelper_libKODI_guilib 899class CHelper_libKODI_guilib
911{ 900{
912public: 901public:
@@ -931,7 +920,7 @@ public:
931 m_Callbacks = (KodiAPI::GUI::CB_GUILib*)m_Handle->GUILib_RegisterMe(m_Handle->addonData); 920 m_Callbacks = (KodiAPI::GUI::CB_GUILib*)m_Handle->GUILib_RegisterMe(m_Handle->addonData);
932 if (!m_Callbacks) 921 if (!m_Callbacks)
933 fprintf(stderr, "libKODI_guilib-ERROR: GUILib_RegisterMe can't get callback table from Kodi !!!\n"); 922 fprintf(stderr, "libKODI_guilib-ERROR: GUILib_RegisterMe can't get callback table from Kodi !!!\n");
934 923
935 return m_Callbacks != nullptr; 924 return m_Callbacks != nullptr;
936 } 925 }
937 926
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h
index 271df98..43e3022 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2013 Team XBMC 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with XBMC; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include <string> 11#include <string>
23#include <vector> 12#include <vector>
24#include <string.h> 13#include <string.h>
@@ -195,7 +184,7 @@ namespace ADDON
195 m_Callbacks = (KodiAPI::AddOn::CB_AddOnLib*)m_Handle->AddOnLib_RegisterMe(m_Handle->addonData); 184 m_Callbacks = (KodiAPI::AddOn::CB_AddOnLib*)m_Handle->AddOnLib_RegisterMe(m_Handle->addonData);
196 if (!m_Callbacks) 185 if (!m_Callbacks)
197 fprintf(stderr, "libXBMC_addon-ERROR: AddOnLib_RegisterMe can't get callback table from Kodi !!!\n"); 186 fprintf(stderr, "libXBMC_addon-ERROR: AddOnLib_RegisterMe can't get callback table from Kodi !!!\n");
198 187
199 return m_Callbacks != nullptr; 188 return m_Callbacks != nullptr;
200 } 189 }
201 190
@@ -203,14 +192,18 @@ namespace ADDON
203 * @brief Add a message to XBMC's log. 192 * @brief Add a message to XBMC's log.
204 * @param loglevel The log level of the message. 193 * @param loglevel The log level of the message.
205 * @param format The format of the message to pass to XBMC. 194 * @param format The format of the message to pass to XBMC.
195 * @note This method uses limited buffer (16k) for the formatted output.
196 * So data, which will not fit into it, will be silently discarded.
206 */ 197 */
207 void Log(const addon_log_t loglevel, const char *format, ... ) 198 void Log(const addon_log_t loglevel, const char *format, ... )
208 { 199 {
209 char buffer[16384]; 200 char buffer[16384];
201 static constexpr size_t len = sizeof (buffer) - 1;
210 va_list args; 202 va_list args;
211 va_start (args, format); 203 va_start (args, format);
212 vsprintf (buffer, format, args); 204 vsnprintf (buffer, len, format, args);
213 va_end (args); 205 va_end (args);
206 buffer[len] = '\0'; // to be sure it's null-terminated
214 m_Callbacks->Log(m_Handle->addonData, loglevel, buffer); 207 m_Callbacks->Log(m_Handle->addonData, loglevel, buffer);
215 } 208 }
216 209
@@ -297,7 +290,7 @@ namespace ADDON
297 { 290 {
298 m_Callbacks->FreeString(m_Handle->addonData, str); 291 m_Callbacks->FreeString(m_Handle->addonData, str);
299 } 292 }
300 293
301 /*! 294 /*!
302 * @brief Free the memory used by arr including its elements 295 * @brief Free the memory used by arr including its elements
303 * @param arr The string array to free 296 * @param arr The string array to free
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_pvr.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_pvr.h
index 11ea50c..2a94f75 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_pvr.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_pvr.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2013 Team XBMC 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with XBMC; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include <string> 11#include <string>
23#include <vector> 12#include <vector>
24#include <string.h> 13#include <string.h>
@@ -61,7 +50,7 @@ public:
61 m_Callbacks = (AddonInstance_PVR*)m_Handle->PVRLib_RegisterMe(m_Handle->addonData); 50 m_Callbacks = (AddonInstance_PVR*)m_Handle->PVRLib_RegisterMe(m_Handle->addonData);
62 if (!m_Callbacks) 51 if (!m_Callbacks)
63 fprintf(stderr, "libXBMC_pvr-ERROR: PVRLib_register_me can't get callback table from Kodi !!!\n"); 52 fprintf(stderr, "libXBMC_pvr-ERROR: PVRLib_register_me can't get callback table from Kodi !!!\n");
64 53
65 return m_Callbacks != NULL; 54 return m_Callbacks != NULL;
66 } 55 }
67 56
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/platform/android/System.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/platform/android/System.h
index bee00ef..aad3a28 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/platform/android/System.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/platform/android/System.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2018 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include "../../AddonBase.h" 11#include "../../AddonBase.h"
23 12
24/* 13/*
@@ -34,13 +23,14 @@
34 */ 23 */
35 24
36static const char* INTERFACE_ANDROID_SYSTEM_NAME = "ANDROID_SYSTEM"; 25static const char* INTERFACE_ANDROID_SYSTEM_NAME = "ANDROID_SYSTEM";
37static const char* INTERFACE_ANDROID_SYSTEM_VERSION = "1.0.0"; 26static const char* INTERFACE_ANDROID_SYSTEM_VERSION = "1.0.1";
38static const char* INTERFACE_ANDROID_SYSTEM_VERSION_MIN = "1.0.0"; 27static const char* INTERFACE_ANDROID_SYSTEM_VERSION_MIN = "1.0.1";
39 28
40struct AddonToKodiFuncTable_android_system 29struct AddonToKodiFuncTable_android_system
41{ 30{
42 void* (*get_jni_env)(); 31 void* (*get_jni_env)();
43 int (*get_sdk_version)(); 32 int (*get_sdk_version)();
33 const char *(*get_class_name)();
44}; 34};
45 35
46//============================================================================== 36//==============================================================================
@@ -99,6 +89,22 @@ namespace platform
99 return 0; 89 return 0;
100 } 90 }
101 91
92 //============================================================================
93 ///
94 /// \ingroup cpp_kodi_platform
95 /// @brief request the android main class name e.g. org.xbmc.kodi.
96 ///
97 /// @param[in]:
98 /// @return package class name
99 ///
100 inline std::string GetClassName()
101 {
102 if (m_interface)
103 return m_interface->get_class_name();
104
105 return std::string();
106 }
107
102 private: 108 private:
103 AddonToKodiFuncTable_android_system *m_interface; 109 AddonToKodiFuncTable_android_system *m_interface;
104 }; 110 };
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/tools/DllHelper.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/tools/DllHelper.h
index 232f67d..1ae1a0e 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/tools/DllHelper.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/tools/DllHelper.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2017 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with Kodi; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include <string> 11#include <string>
23#include <kodi/AddonBase.h> 12#include <kodi/AddonBase.h>
24 13
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/versions.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/versions.h
index b61cb35..227717c 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/versions.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/versions.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2016-2017 Team KODI 2 * Copyright (C) 2016-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with KODI; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include <string.h> 11#include <string.h>
23 12
24#define STR_HELPER(x) #x 13#define STR_HELPER(x) #x
@@ -86,8 +75,8 @@
86#define ADDON_INSTANCE_VERSION_AUDIOENCODER_XML_ID "kodi.binary.instance.audioencoder" 75#define ADDON_INSTANCE_VERSION_AUDIOENCODER_XML_ID "kodi.binary.instance.audioencoder"
87#define ADDON_INSTANCE_VERSION_AUDIOENCODER_DEPENDS "addon-instance/AudioEncoder.h" 76#define ADDON_INSTANCE_VERSION_AUDIOENCODER_DEPENDS "addon-instance/AudioEncoder.h"
88 77
89#define ADDON_INSTANCE_VERSION_GAME "1.0.36" 78#define ADDON_INSTANCE_VERSION_GAME "1.0.38"
90#define ADDON_INSTANCE_VERSION_GAME_MIN "1.0.36" 79#define ADDON_INSTANCE_VERSION_GAME_MIN "1.0.38"
91#define ADDON_INSTANCE_VERSION_GAME_XML_ID "kodi.binary.instance.game" 80#define ADDON_INSTANCE_VERSION_GAME_XML_ID "kodi.binary.instance.game"
92#define ADDON_INSTANCE_VERSION_GAME_DEPENDS "kodi_game_dll.h" \ 81#define ADDON_INSTANCE_VERSION_GAME_DEPENDS "kodi_game_dll.h" \
93 "kodi_game_types.h" \ 82 "kodi_game_types.h" \
@@ -98,8 +87,8 @@
98#define ADDON_INSTANCE_VERSION_IMAGEDECODER_XML_ID "kodi.binary.instance.imagedecoder" 87#define ADDON_INSTANCE_VERSION_IMAGEDECODER_XML_ID "kodi.binary.instance.imagedecoder"
99#define ADDON_INSTANCE_VERSION_IMAGEDECODER_DEPENDS "addon-instance/ImageDecoder.h" 88#define ADDON_INSTANCE_VERSION_IMAGEDECODER_DEPENDS "addon-instance/ImageDecoder.h"
100 89
101#define ADDON_INSTANCE_VERSION_INPUTSTREAM "2.0.6" 90#define ADDON_INSTANCE_VERSION_INPUTSTREAM "2.0.7"
102#define ADDON_INSTANCE_VERSION_INPUTSTREAM_MIN "2.0.6" 91#define ADDON_INSTANCE_VERSION_INPUTSTREAM_MIN "2.0.7"
103#define ADDON_INSTANCE_VERSION_INPUTSTREAM_XML_ID "kodi.binary.instance.inputstream" 92#define ADDON_INSTANCE_VERSION_INPUTSTREAM_XML_ID "kodi.binary.instance.inputstream"
104#define ADDON_INSTANCE_VERSION_INPUTSTREAM_DEPENDS "addon-instance/Inputstream.h" 93#define ADDON_INSTANCE_VERSION_INPUTSTREAM_DEPENDS "addon-instance/Inputstream.h"
105 94
@@ -109,8 +98,8 @@
109#define ADDON_INSTANCE_VERSION_PERIPHERAL_DEPENDS "addon-instance/Peripheral.h" \ 98#define ADDON_INSTANCE_VERSION_PERIPHERAL_DEPENDS "addon-instance/Peripheral.h" \
110 "addon-instance/PeripheralUtils.h" 99 "addon-instance/PeripheralUtils.h"
111 100
112#define ADDON_INSTANCE_VERSION_PVR "5.9.0" 101#define ADDON_INSTANCE_VERSION_PVR "5.10.1"
113#define ADDON_INSTANCE_VERSION_PVR_MIN "5.9.0" 102#define ADDON_INSTANCE_VERSION_PVR_MIN "5.10.0"
114#define ADDON_INSTANCE_VERSION_PVR_XML_ID "kodi.binary.instance.pvr" 103#define ADDON_INSTANCE_VERSION_PVR_XML_ID "kodi.binary.instance.pvr"
115#define ADDON_INSTANCE_VERSION_PVR_DEPENDS "xbmc_pvr_dll.h" \ 104#define ADDON_INSTANCE_VERSION_PVR_DEPENDS "xbmc_pvr_dll.h" \
116 "xbmc_pvr_types.h" \ 105 "xbmc_pvr_types.h" \
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_dll.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_dll.h
index f8247d9..e9e7d9a 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_dll.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_dll.h
@@ -1,25 +1,13 @@
1#pragma once
2
3/* 1/*
4 * Copyright (C) 2005-2015 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
5 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
6 *
7 * This Program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2, or (at your option)
10 * any later version.
11 *
12 * This Program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with Kodi; see the file COPYING. If not, see
19 * <http://www.gnu.org/licenses/>.
20 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
21 */ 7 */
22 8
9#pragma once
10
23#include "AddonBase.h" 11#include "AddonBase.h"
24 12
25#ifdef __cplusplus 13#ifdef __cplusplus
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_types.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_types.h
index d1e7a50..bfd85c2 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_types.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_addon_types.h
@@ -1,23 +1,11 @@
1#pragma once
2
3/* 1/*
4 * Copyright (C) 2005-2015 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
5 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
6 *
7 * This Program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2, or (at your option)
10 * any later version.
11 *
12 * This Program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with Kodi; see the file COPYING. If not, see
19 * <http://www.gnu.org/licenses/>.
20 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
21 */ 7 */
22 8
9#pragma once
10
23#include "AddonBase.h" // compatibility fallback 11#include "AddonBase.h" // compatibility fallback
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_epg_types.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_epg_types.h
index c0a900b..7b11ed8 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_epg_types.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_epg_types.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2005-2013 Team XBMC 2 * Copyright (C) 2005-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with XBMC; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22#include <string.h> 11#include <string.h>
23#include <time.h> 12#include <time.h>
24 13
@@ -56,7 +45,7 @@
56#define EPG_EVENT_CONTENTMASK_USERDEFINED 0xF0 45#define EPG_EVENT_CONTENTMASK_USERDEFINED 0xF0
57//@} 46//@}
58 47
59/* Set EPGTAG.iGenreType to EPG_GENRE_USE_STRING to transfer genre strings to XBMC */ 48/* Set EPGTAG.iGenreType to EPG_GENRE_USE_STRING to transfer genre strings to Kodi */
60#define EPG_GENRE_USE_STRING 0x100 49#define EPG_GENRE_USE_STRING 0x100
61 50
62/* Separator to use in strings containing different tokens, for example writers, directors, actors of an event. */ 51/* Separator to use in strings containing different tokens, for example writers, directors, actors of an event. */
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h
index d36effa..8c509ac 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_dll.h
@@ -1,25 +1,13 @@
1#pragma once
2
3/* 1/*
4 * Copyright (C) 2005-2015 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
5 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
6 *
7 * This Program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2, or (at your option)
10 * any later version.
11 *
12 * This Program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with Kodi; see the file COPYING. If not, see
19 * <http://www.gnu.org/licenses/>.
20 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
21 */ 7 */
22 8
9#pragma once
10
23#include "xbmc_addon_dll.h" 11#include "xbmc_addon_dll.h"
24#include "xbmc_pvr_types.h" 12#include "xbmc_pvr_types.h"
25 13
@@ -35,7 +23,7 @@ extern "C"
35 //@{ 23 //@{
36 /*! 24 /*!
37 * Get the list of features that this add-on provides. 25 * Get the list of features that this add-on provides.
38 * Called by XBMC to query the add-on's capabilities. 26 * Called by Kodi to query the add-on's capabilities.
39 * Used to check which options should be presented in the UI, which methods to call, etc. 27 * Used to check which options should be presented in the UI, which methods to call, etc.
40 * All capabilities that the add-on supports should be set to true. 28 * All capabilities that the add-on supports should be set to true.
41 * @param pCapabilities The add-on's capabilities. 29 * @param pCapabilities The add-on's capabilities.
@@ -83,18 +71,19 @@ extern "C"
83 //@} 71 //@}
84 72
85 /*! @name PVR EPG methods 73 /*! @name PVR EPG methods
86 * @remarks Only used by XBMC if bSupportsEPG is set to true. 74 * @remarks Only used by Kodi if bSupportsEPG is set to true.
87 */ 75 */
88 //@{ 76 //@{
89 /*! 77 /*!
90 * Request the EPG for a channel from the backend. 78 * Request the EPG for a channel from the backend.
91 * EPG entries are added to XBMC by calling TransferEpgEntry() on the callback. 79 * EPG entries are added to Kodi by calling TransferEpgEntry() on the callback.
92 * @param handle Handle to pass to the callback method. 80 * @param handle Handle to pass to the callback method.
93 * @param channel The channel to get the EPG table for. 81 * @param channel The channel to get the EPG table for.
94 * @param iStart Get events after this time (UTC). 82 * @param iStart Get events after this time (UTC).
95 * @param iEnd Get events before this time (UTC). 83 * @param iEnd Get events before this time (UTC).
96 * @return PVR_ERROR_NO_ERROR if the table has been fetched successfully. 84 * @return PVR_ERROR_NO_ERROR if the table has been fetched successfully.
97 * @remarks Required if bSupportsEPG is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 85 * @remarks Required if bSupportsEPG is set to true.
86 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
98 */ 87 */
99 PVR_ERROR GetEPGForChannel(ADDON_HANDLE handle, const PVR_CHANNEL& channel, time_t iStart, time_t iEnd); 88 PVR_ERROR GetEPGForChannel(ADDON_HANDLE handle, const PVR_CHANNEL& channel, time_t iStart, time_t iEnd);
100 89
@@ -112,18 +101,20 @@ extern "C"
112 * @param tag the epg tag to check. 101 * @param tag the epg tag to check.
113 * @param [out] bIsPlayable Set to true if the tag can be played. 102 * @param [out] bIsPlayable Set to true if the tag can be played.
114 * @return PVR_ERROR_NO_ERROR if bIsPlayable has been set successfully. 103 * @return PVR_ERROR_NO_ERROR if bIsPlayable has been set successfully.
115 * @remarks Required if add-on supports playing epg tags. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 104 * @remarks Required if add-on supports playing epg tags.
105 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
116 */ 106 */
117 PVR_ERROR IsEPGTagPlayable(const EPG_TAG* tag, bool* bIsPlayable); 107 PVR_ERROR IsEPGTagPlayable(const EPG_TAG* tag, bool* bIsPlayable);
118 108
119 /*! 109 /*!
120 * Retrieve the edit decision list (EDL) of an EPG tag on the backend. 110 * Retrieve the edit decision list (EDL) of an EPG tag on the backend.
121 * @param epgTag The EPG tag. 111 * @param epgTag The EPG tag.
122 * @param edl out: The function has to write the EDL list into this array. 112 * @param edl out: The function has to write the EDL into this array.
123 * @param size in: The maximum size of the EDL, out: the actual size of the EDL. 113 * @param size in: The maximum size of the EDL, out: the actual size of the EDL.
124 * @return PVR_ERROR_NO_ERROR if the EDL was successfully read. 114 * @return PVR_ERROR_NO_ERROR if the EDL was successfully read or no EDL exists.
125 * @remarks Required if bSupportsEpgEdl is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 115 * @remarks Required if bSupportsEpgEdl is set to true.
126 */ 116 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
117 */
127 PVR_ERROR GetEPGTagEdl(const EPG_TAG* epgTag, PVR_EDL_ENTRY edl[], int *size); 118 PVR_ERROR GetEPGTagEdl(const EPG_TAG* epgTag, PVR_EDL_ENTRY edl[], int *size);
128 119
129 /*! 120 /*!
@@ -132,14 +123,16 @@ extern "C"
132 * @param[inout] properties in: an array for the properties to return, out: the properties required to play the stream. 123 * @param[inout] properties in: an array for the properties to return, out: the properties required to play the stream.
133 * @param[inout] iPropertiesCount in: the size of the properties array, out: the number of properties returned. 124 * @param[inout] iPropertiesCount in: the size of the properties array, out: the number of properties returned.
134 * @return PVR_ERROR_NO_ERROR if the stream is available. 125 * @return PVR_ERROR_NO_ERROR if the stream is available.
135 * @remarks Required if add-on supports playing epg tags. In this case your implementation must fill the property PVR_STREAM_PROPERTY_STREAMURL with the URL Kodi should resolve to playback the epg tag. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 126 * @remarks Required if add-on supports playing epg tags.
127 * In this case your implementation must fill the property PVR_STREAM_PROPERTY_STREAMURL with the URL Kodi should resolve to playback the epg tag.
128 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
136 */ 129 */
137 PVR_ERROR GetEPGTagStreamProperties(const EPG_TAG* tag, PVR_NAMED_VALUE* properties, unsigned int* iPropertiesCount); 130 PVR_ERROR GetEPGTagStreamProperties(const EPG_TAG* tag, PVR_NAMED_VALUE* properties, unsigned int* iPropertiesCount);
138 131
139 //@} 132 //@}
140 133
141 /*! @name PVR channel group methods 134 /*! @name PVR channel group methods
142 * @remarks Only used by XBMC is bSupportsChannelGroups is set to true. 135 * @remarks Only used by Kodi if bSupportsChannelGroups is set to true.
143 * If a group or one of the group members changes after the initial import, or if a new one was added, then the add-on 136 * If a group or one of the group members changes after the initial import, or if a new one was added, then the add-on
144 * should call TriggerChannelGroupsUpdate() 137 * should call TriggerChannelGroupsUpdate()
145 */ 138 */
@@ -147,27 +140,30 @@ extern "C"
147 /*! 140 /*!
148 * Get the total amount of channel groups on the backend if it supports channel groups. 141 * Get the total amount of channel groups on the backend if it supports channel groups.
149 * @return The amount of channels, or -1 on error. 142 * @return The amount of channels, or -1 on error.
150 * @remarks Required if bSupportsChannelGroups is set to true. Return -1 if this add-on won't provide this function. 143 * @remarks Required if bSupportsChannelGroups is set to true.
144 * Return -1 if this add-on won't provide this function.
151 */ 145 */
152 int GetChannelGroupsAmount(void); 146 int GetChannelGroupsAmount(void);
153 147
154 /*! 148 /*!
155 * Request the list of all channel groups from the backend if it supports channel groups. 149 * Request the list of all channel groups from the backend if it supports channel groups.
156 * Channel group entries are added to XBMC by calling TransferChannelGroup() on the callback. 150 * Channel group entries are added to Kodi by calling TransferChannelGroup() on the callback.
157 * @param handle Handle to pass to the callback method. 151 * @param handle Handle to pass to the callback method.
158 * @param bRadio True to get the radio channel groups, false to get the TV channel groups. 152 * @param bRadio True to get the radio channel groups, false to get the TV channel groups.
159 * @return PVR_ERROR_NO_ERROR if the list has been fetched successfully. 153 * @return PVR_ERROR_NO_ERROR if the list has been fetched successfully.
160 * @remarks Required if bSupportsChannelGroups is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 154 * @remarks Required if bSupportsChannelGroups is set to true.
155 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
161 */ 156 */
162 PVR_ERROR GetChannelGroups(ADDON_HANDLE handle, bool bRadio); 157 PVR_ERROR GetChannelGroups(ADDON_HANDLE handle, bool bRadio);
163 158
164 /*! 159 /*!
165 * Request the list of all group members of a group from the backend if it supports channel groups. 160 * Request the list of all group members of a group from the backend if it supports channel groups.
166 * Member entries are added to XBMC by calling TransferChannelGroupMember() on the callback. 161 * Member entries are added to Kodi by calling TransferChannelGroupMember() on the callback.
167 * @param handle Handle to pass to the callback method. 162 * @param handle Handle to pass to the callback method.
168 * @param group The group to get the members for. 163 * @param group The group to get the members for.
169 * @return PVR_ERROR_NO_ERROR if the list has been fetched successfully. 164 * @return PVR_ERROR_NO_ERROR if the list has been fetched successfully.
170 * @remarks Required if bSupportsChannelGroups is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 165 * @remarks Required if bSupportsChannelGroups is set to true.
166 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
171 */ 167 */
172 PVR_ERROR GetChannelGroupMembers(ADDON_HANDLE handle, const PVR_CHANNEL_GROUP& group); 168 PVR_ERROR GetChannelGroupMembers(ADDON_HANDLE handle, const PVR_CHANNEL_GROUP& group);
173 //@} 169 //@}
@@ -181,20 +177,21 @@ extern "C"
181 /*! 177 /*!
182 * Show the channel scan dialog if this backend supports it. 178 * Show the channel scan dialog if this backend supports it.
183 * @return PVR_ERROR_NO_ERROR if the dialog was displayed successfully. 179 * @return PVR_ERROR_NO_ERROR if the dialog was displayed successfully.
184 * @remarks Required if bSupportsChannelScan is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 180 * @remarks Required if bSupportsChannelScan is set to true.
181 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
185 * @note see libKODI_guilib.h about related parts 182 * @note see libKODI_guilib.h about related parts
186 */ 183 */
187 PVR_ERROR OpenDialogChannelScan(void); 184 PVR_ERROR OpenDialogChannelScan(void);
188 185
189 /*! 186 /*!
190 * @return The total amount of channels on the backend, or -1 on error. 187 * @return The total amount of channels on the backend, or -1 on error.
191 * @remarks Valid implementation required. 188 * @remarks Valid implementation required.
192 */ 189 */
193 int GetChannelsAmount(void); 190 int GetChannelsAmount(void);
194 191
195 /*! 192 /*!
196 * Request the list of all channels from the backend. 193 * Request the list of all channels from the backend.
197 * Channel entries are added to XBMC by calling TransferChannelEntry() on the callback. 194 * Channel entries are added to Kodi by calling TransferChannelEntry() on the callback.
198 * @param handle Handle to pass to the callback method. 195 * @param handle Handle to pass to the callback method.
199 * @param bRadio True to get the radio channels, false to get the TV channels. 196 * @param bRadio True to get the radio channels, false to get the TV channels.
200 * @return PVR_ERROR_NO_ERROR if the list has been fetched successfully. 197 * @return PVR_ERROR_NO_ERROR if the list has been fetched successfully.
@@ -216,7 +213,8 @@ extern "C"
216 * Rename a channel on the backend. 213 * Rename a channel on the backend.
217 * @param channel The channel to rename, containing the new channel name. 214 * @param channel The channel to rename, containing the new channel name.
218 * @return PVR_ERROR_NO_ERROR if the channel has been renamed successfully. 215 * @return PVR_ERROR_NO_ERROR if the channel has been renamed successfully.
219 * @remarks Optional, and only used if bSupportsChannelSettings is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 216 * @remarks Optional, and only used if bSupportsChannelSettings is set to true.
217 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
220 */ 218 */
221 PVR_ERROR RenameChannel(const PVR_CHANNEL& channel); 219 PVR_ERROR RenameChannel(const PVR_CHANNEL& channel);
222 220
@@ -240,7 +238,7 @@ extern "C"
240 //@} 238 //@}
241 239
242 /** @name PVR recording methods 240 /** @name PVR recording methods
243 * @remarks Only used by XBMC is bSupportsRecordings is set to true. 241 * @remarks Only used by Kodi if bSupportsRecordings is set to true.
244 * If a recording changes after the initial import, or if a new one was added, 242 * If a recording changes after the initial import, or if a new one was added,
245 * then the add-on should call TriggerRecordingUpdate() 243 * then the add-on should call TriggerRecordingUpdate()
246 */ 244 */
@@ -254,11 +252,12 @@ extern "C"
254 252
255 /*! 253 /*!
256 * Request the list of all recordings from the backend, if supported. 254 * Request the list of all recordings from the backend, if supported.
257 * Recording entries are added to XBMC by calling TransferRecordingEntry() on the callback. 255 * Recording entries are added to Kodi by calling TransferRecordingEntry() on the callback.
258 * @param handle Handle to pass to the callback method. 256 * @param handle Handle to pass to the callback method.
259 * @param deleted if set return deleted recording (called if bSupportsRecordingsUndelete set to true) 257 * @param deleted if set return deleted recording (called if bSupportsRecordingsUndelete set to true)
260 * @return PVR_ERROR_NO_ERROR if the recordings have been fetched successfully. 258 * @return PVR_ERROR_NO_ERROR if the recordings have been fetched successfully.
261 * @remarks Required if bSupportsRecordings is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 259 * @remarks Required if bSupportsRecordings is set to true.
260 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
262 */ 261 */
263 PVR_ERROR GetRecordings(ADDON_HANDLE handle, bool deleted); 262 PVR_ERROR GetRecordings(ADDON_HANDLE handle, bool deleted);
264 263
@@ -266,7 +265,8 @@ extern "C"
266 * Delete a recording on the backend. 265 * Delete a recording on the backend.
267 * @param recording The recording to delete. 266 * @param recording The recording to delete.
268 * @return PVR_ERROR_NO_ERROR if the recording has been deleted successfully. 267 * @return PVR_ERROR_NO_ERROR if the recording has been deleted successfully.
269 * @remarks Optional, and only used if bSupportsRecordings is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 268 * @remarks Optional, and only used if bSupportsRecordings is set to true.
269 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
270 */ 270 */
271 PVR_ERROR DeleteRecording(const PVR_RECORDING& recording); 271 PVR_ERROR DeleteRecording(const PVR_RECORDING& recording);
272 272
@@ -274,7 +274,8 @@ extern "C"
274 * Undelete a recording on the backend. 274 * Undelete a recording on the backend.
275 * @param recording The recording to undelete. 275 * @param recording The recording to undelete.
276 * @return PVR_ERROR_NO_ERROR if the recording has been undeleted successfully. 276 * @return PVR_ERROR_NO_ERROR if the recording has been undeleted successfully.
277 * @remarks Optional, and only used if bSupportsRecordingsUndelete is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 277 * @remarks Optional, and only used if bSupportsRecordingsUndelete is set to true.
278 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
278 */ 279 */
279 PVR_ERROR UndeleteRecording(const PVR_RECORDING& recording); 280 PVR_ERROR UndeleteRecording(const PVR_RECORDING& recording);
280 281
@@ -288,7 +289,8 @@ extern "C"
288 * Rename a recording on the backend. 289 * Rename a recording on the backend.
289 * @param recording The recording to rename, containing the new name. 290 * @param recording The recording to rename, containing the new name.
290 * @return PVR_ERROR_NO_ERROR if the recording has been renamed successfully. 291 * @return PVR_ERROR_NO_ERROR if the recording has been renamed successfully.
291 * @remarks Optional, and only used if bSupportsRecordings is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 292 * @remarks Optional, and only used if bSupportsRecordings is set to true.
293 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
292 */ 294 */
293 PVR_ERROR RenameRecording(const PVR_RECORDING& recording); 295 PVR_ERROR RenameRecording(const PVR_RECORDING& recording);
294 296
@@ -296,7 +298,8 @@ extern "C"
296 * Set the lifetime of a recording on the backend. 298 * Set the lifetime of a recording on the backend.
297 * @param recording The recording to change the lifetime for. recording.iLifetime contains the new lieftime value. 299 * @param recording The recording to change the lifetime for. recording.iLifetime contains the new lieftime value.
298 * @return PVR_ERROR_NO_ERROR if the recording's lifetime has been set successfully. 300 * @return PVR_ERROR_NO_ERROR if the recording's lifetime has been set successfully.
299 * @remarks Required if bSupportsRecordingsLifetimeChange is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 301 * @remarks Required if bSupportsRecordingsLifetimeChange is set to true.
302 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
300 */ 303 */
301 PVR_ERROR SetRecordingLifetime(const PVR_RECORDING* recording); 304 PVR_ERROR SetRecordingLifetime(const PVR_RECORDING* recording);
302 305
@@ -305,49 +308,54 @@ extern "C"
305 * @param recording The recording to change the play count. 308 * @param recording The recording to change the play count.
306 * @param count Play count. 309 * @param count Play count.
307 * @return PVR_ERROR_NO_ERROR if the recording's play count has been set successfully. 310 * @return PVR_ERROR_NO_ERROR if the recording's play count has been set successfully.
308 * @remarks Required if bSupportsRecordingPlayCount is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 311 * @remarks Required if bSupportsRecordingPlayCount is set to true.
312 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
309 */ 313 */
310 PVR_ERROR SetRecordingPlayCount(const PVR_RECORDING& recording, int count); 314 PVR_ERROR SetRecordingPlayCount(const PVR_RECORDING& recording, int count);
311 315
312 /*! 316 /*!
313 * Set the last watched position of a recording on the backend. 317 * Set the last watched position of a recording on the backend.
314 * @param recording The recording. 318 * @param recording The recording.
315 * @param position The last watched position in seconds 319 * @param position The last watched position in seconds
316 * @return PVR_ERROR_NO_ERROR if the position has been stored successfully. 320 * @return PVR_ERROR_NO_ERROR if the position has been stored successfully.
317 * @remarks Required if bSupportsLastPlayedPosition is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 321 * @remarks Required if bSupportsLastPlayedPosition is set to true.
318 */ 322 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
323 */
319 PVR_ERROR SetRecordingLastPlayedPosition(const PVR_RECORDING& recording, int lastplayedposition); 324 PVR_ERROR SetRecordingLastPlayedPosition(const PVR_RECORDING& recording, int lastplayedposition);
320 325
321 /*! 326 /*!
322 * Retrieve the last watched position of a recording on the backend. 327 * Retrieve the last watched position of a recording on the backend.
323 * @param recording The recording. 328 * @param recording The recording.
324 * @return The last watched position in seconds or -1 on error 329 * @return The last watched position in seconds or -1 on error
325 * @remarks Required if bSupportsRecordingPlayCount is set to true. Return -1 if this add-on won't provide this function. 330 * @remarks Required if bSupportsRecordingPlayCount is set to true.
326 */ 331 * Return -1 if this add-on won't provide this function.
332 */
327 int GetRecordingLastPlayedPosition(const PVR_RECORDING& recording); 333 int GetRecordingLastPlayedPosition(const PVR_RECORDING& recording);
328 334
329 /*! 335 /*!
330 * Retrieve the edit decision list (EDL) of a recording on the backend. 336 * Retrieve the edit decision list (EDL) of a recording on the backend.
331 * @param recording The recording. 337 * @param recording The recording.
332 * @param edl out: The function has to write the EDL list into this array. 338 * @param edl out: The function has to write the EDL into this array.
333 * @param size in: The maximum size of the EDL, out: the actual size of the EDL. 339 * @param size in: The maximum size of the EDL, out: the actual size of the EDL.
334 * @return PVR_ERROR_NO_ERROR if the EDL was successfully read. 340 * @return PVR_ERROR_NO_ERROR if the EDL was successfully read or no EDL exists.
335 * @remarks Required if bSupportsRecordingEdl is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 341 * @remarks Required if bSupportsRecordingEdl is set to true.
336 */ 342 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
343 */
337 PVR_ERROR GetRecordingEdl(const PVR_RECORDING& recording, PVR_EDL_ENTRY edl[], int *size); 344 PVR_ERROR GetRecordingEdl(const PVR_RECORDING& recording, PVR_EDL_ENTRY edl[], int *size);
338 345
339 /*! 346 /*!
340 * Retrieve the timer types supported by the backend. 347 * Retrieve the timer types supported by the backend.
341 * @param types out: The function has to write the definition of the supported timer types into this array. 348 * @param types out: The function has to write the definition of the supported timer types into this array.
342 * @param typesCount in: The maximum size of the list, out: the actual size of the list. default: PVR_ADDON_TIMERTYPE_ARRAY_SIZE 349 * @param typesCount in: The maximum size of the list, out: the actual size of the list. default: PVR_ADDON_TIMERTYPE_ARRAY_SIZE
343 * @return PVR_ERROR_NO_ERROR if the types were successfully written to the array. 350 * @return PVR_ERROR_NO_ERROR if the types were successfully written to the array.
344 * @remarks Required if bSupportsTimers is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 351 * @remarks Required if bSupportsTimers is set to true.
345 */ 352 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
353 */
346 PVR_ERROR GetTimerTypes(PVR_TIMER_TYPE types[], int *typesCount); 354 PVR_ERROR GetTimerTypes(PVR_TIMER_TYPE types[], int *typesCount);
347 355
348 //@} 356 //@}
349 /** @name PVR timer methods 357 /** @name PVR timer methods
350 * @remarks Only used by XBMC is bSupportsTimers is set to true. 358 * @remarks Only used by Kodi if bSupportsTimers is set to true.
351 * If a timer changes after the initial import, or if a new one was added, 359 * If a timer changes after the initial import, or if a new one was added,
352 * then the add-on should call TriggerTimerUpdate() 360 * then the add-on should call TriggerTimerUpdate()
353 */ 361 */
@@ -360,10 +368,11 @@ extern "C"
360 368
361 /*! 369 /*!
362 * Request the list of all timers from the backend if supported. 370 * Request the list of all timers from the backend if supported.
363 * Timer entries are added to XBMC by calling TransferTimerEntry() on the callback. 371 * Timer entries are added to Kodi by calling TransferTimerEntry() on the callback.
364 * @param handle Handle to pass to the callback method. 372 * @param handle Handle to pass to the callback method.
365 * @return PVR_ERROR_NO_ERROR if the list has been fetched successfully. 373 * @return PVR_ERROR_NO_ERROR if the list has been fetched successfully.
366 * @remarks Required if bSupportsTimers is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 374 * @remarks Required if bSupportsTimers is set to true.
375 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
367 */ 376 */
368 PVR_ERROR GetTimers(ADDON_HANDLE handle); 377 PVR_ERROR GetTimers(ADDON_HANDLE handle);
369 378
@@ -371,7 +380,8 @@ extern "C"
371 * Add a timer on the backend. 380 * Add a timer on the backend.
372 * @param timer The timer to add. 381 * @param timer The timer to add.
373 * @return PVR_ERROR_NO_ERROR if the timer has been added successfully. 382 * @return PVR_ERROR_NO_ERROR if the timer has been added successfully.
374 * @remarks Required if bSupportsTimers is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 383 * @remarks Required if bSupportsTimers is set to true.
384 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
375 */ 385 */
376 PVR_ERROR AddTimer(const PVR_TIMER& timer); 386 PVR_ERROR AddTimer(const PVR_TIMER& timer);
377 387
@@ -380,7 +390,8 @@ extern "C"
380 * @param timer The timer to delete. 390 * @param timer The timer to delete.
381 * @param bForceDelete Set to true to delete a timer that is currently recording a program. 391 * @param bForceDelete Set to true to delete a timer that is currently recording a program.
382 * @return PVR_ERROR_NO_ERROR if the timer has been deleted successfully. 392 * @return PVR_ERROR_NO_ERROR if the timer has been deleted successfully.
383 * @remarks Required if bSupportsTimers is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 393 * @remarks Required if bSupportsTimers is set to true.
394 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
384 */ 395 */
385 PVR_ERROR DeleteTimer(const PVR_TIMER& timer, bool bForceDelete); 396 PVR_ERROR DeleteTimer(const PVR_TIMER& timer, bool bForceDelete);
386 397
@@ -388,7 +399,8 @@ extern "C"
388 * Update the timer information on the backend. 399 * Update the timer information on the backend.
389 * @param timer The timer to update. 400 * @param timer The timer to update.
390 * @return PVR_ERROR_NO_ERROR if the timer has been updated successfully. 401 * @return PVR_ERROR_NO_ERROR if the timer has been updated successfully.
391 * @remarks Required if bSupportsTimers is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 402 * @remarks Required if bSupportsTimers is set to true.
403 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
392 */ 404 */
393 PVR_ERROR UpdateTimer(const PVR_TIMER& timer); 405 PVR_ERROR UpdateTimer(const PVR_TIMER& timer);
394 406
@@ -400,7 +412,8 @@ extern "C"
400 * Open a live stream on the backend. 412 * Open a live stream on the backend.
401 * @param channel The channel to stream. 413 * @param channel The channel to stream.
402 * @return True if the stream has been opened successfully, false otherwise. 414 * @return True if the stream has been opened successfully, false otherwise.
403 * @remarks Required if bHandlesInputStream or bHandlesDemuxing is set to true. Return false if this add-on won't provide this function. 415 * @remarks Required if bHandlesInputStream or bHandlesDemuxing is set to true.
416 * Return false if this add-on won't provide this function.
404 */ 417 */
405 bool OpenLiveStream(const PVR_CHANNEL& channel); 418 bool OpenLiveStream(const PVR_CHANNEL& channel);
406 419
@@ -415,7 +428,8 @@ extern "C"
415 * @param pBuffer The buffer to store the data in. 428 * @param pBuffer The buffer to store the data in.
416 * @param iBufferSize The amount of bytes to read. 429 * @param iBufferSize The amount of bytes to read.
417 * @return The amount of bytes that were actually read from the stream. 430 * @return The amount of bytes that were actually read from the stream.
418 * @remarks Required if bHandlesInputStream is set to true. Return -1 if this add-on won't provide this function. 431 * @remarks Required if bHandlesInputStream is set to true.
432 * Return -1 if this add-on won't provide this function.
419 */ 433 */
420 int ReadLiveStream(unsigned char* pBuffer, unsigned int iBufferSize); 434 int ReadLiveStream(unsigned char* pBuffer, unsigned int iBufferSize);
421 435
@@ -424,29 +438,34 @@ extern "C"
424 * @param iPosition The position to seek to. 438 * @param iPosition The position to seek to.
425 * @param iWhence ? 439 * @param iWhence ?
426 * @return The new position. 440 * @return The new position.
427 * @remarks Optional, and only used if bHandlesInputStream is set to true. Return -1 if this add-on won't provide this function. 441 * @remarks Optional, and only used if bHandlesInputStream is set to true.
442 * Return -1 if this add-on won't provide this function.
428 */ 443 */
429 long long SeekLiveStream(long long iPosition, int iWhence = SEEK_SET); 444 long long SeekLiveStream(long long iPosition, int iWhence = SEEK_SET);
430 445
431 /*! 446 /*!
447 * Obtain the length of a live stream.
432 * @return The total length of the stream that's currently being read. 448 * @return The total length of the stream that's currently being read.
433 * @remarks Optional, and only used if bHandlesInputStream is set to true. Return -1 if this add-on won't provide this function. 449 * @remarks Optional, and only used if bHandlesInputStream is set to true.
450 * Return -1 if this add-on won't provide this function.
434 */ 451 */
435 long long LengthLiveStream(void); 452 long long LengthLiveStream(void);
436 453
437 /*! 454 /*!
438 * Get the signal status of the stream that's currently open. 455 * Get the signal status of the stream that's currently open.
439 * @param signalStatus The signal status. 456 * @param signalStatus The signal status.
440 * @return True if the signal status has been read successfully, false otherwise. 457 * @return PVR_ERROR_NO_ERROR if the signal status has been read successfully, false otherwise.
441 * @remarks Optional, and only used if PVR_ADDON_CAPABILITIES::bHandlesInputStream or PVR_ADDON_CAPABILITIES::bHandlesDemuxing is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 458 * @remarks Optional, and only used if PVR_ADDON_CAPABILITIES::bHandlesInputStream or PVR_ADDON_CAPABILITIES::bHandlesDemuxing is set to true.
459 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
442 */ 460 */
443 PVR_ERROR SignalStatus(PVR_SIGNAL_STATUS& signalStatus); 461 PVR_ERROR SignalStatus(PVR_SIGNAL_STATUS& signalStatus);
444 462
445 /*! 463 /*!
446 * Get the descramble information of the stream that's currently open. 464 * Get the descramble information of the stream that's currently open.
447 * @param[out] descrambleInfo The descramble information. 465 * @param [out] descrambleInfo The descramble information.
448 * @return True if the decramble information has been read successfully, false otherwise. 466 * @return PVR_ERROR_NO_ERROR if the descramble information has been read successfully, false otherwise.
449 * @remarks Optional, and only used if PVR_ADDON_CAPABILITIES::bSupportsDescrambleInfo is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 467 * @remarks Optional, and only used if PVR_ADDON_CAPABILITIES::bSupportsDescrambleInfo is set to true.
468 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
450 */ 469 */
451 PVR_ERROR GetDescrambleInfo(PVR_DESCRAMBLE_INFO* descrambleInfo); 470 PVR_ERROR GetDescrambleInfo(PVR_DESCRAMBLE_INFO* descrambleInfo);
452 471
@@ -456,7 +475,9 @@ extern "C"
456 * @param[inout] properties in: an array for the properties to return, out: the properties required to play the stream. 475 * @param[inout] properties in: an array for the properties to return, out: the properties required to play the stream.
457 * @param[inout] iPropertiesCount in: the size of the properties array, out: the number of properties returned. 476 * @param[inout] iPropertiesCount in: the size of the properties array, out: the number of properties returned.
458 * @return PVR_ERROR_NO_ERROR if the stream is available. 477 * @return PVR_ERROR_NO_ERROR if the stream is available.
459 * @remarks Required if PVR_ADDON_CAPABILITIES::bSupportsTV or PVR_ADDON_CAPABILITIES::bSupportsRadio are set to true and PVR_ADDON_CAPABILITIES::bHandlesInputStream is set to false. In this case the implementation must fill the property PVR_STREAM_PROPERTY_STREAMURL with the URL Kodi should resolve to playback the channel. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 478 * @remarks Required if PVR_ADDON_CAPABILITIES::bSupportsTV or PVR_ADDON_CAPABILITIES::bSupportsRadio are set to true and PVR_ADDON_CAPABILITIES::bHandlesInputStream is set to false.
479 * In this case the implementation must fill the property PVR_STREAM_PROPERTY_STREAMURL with the URL Kodi should resolve to playback the channel.
480 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
460 */ 481 */
461 PVR_ERROR GetChannelStreamProperties(const PVR_CHANNEL* channel, PVR_NAMED_VALUE* properties, unsigned int* iPropertiesCount); 482 PVR_ERROR GetChannelStreamProperties(const PVR_CHANNEL* channel, PVR_NAMED_VALUE* properties, unsigned int* iPropertiesCount);
462 483
@@ -466,7 +487,9 @@ extern "C"
466 * @param[inout] properties in: an array for the properties to return, out: the properties required to play the stream. 487 * @param[inout] properties in: an array for the properties to return, out: the properties required to play the stream.
467 * @param[inout] iPropertiesCount in: the size of the properties array, out: the number of properties returned. 488 * @param[inout] iPropertiesCount in: the size of the properties array, out: the number of properties returned.
468 * @return PVR_ERROR_NO_ERROR if the stream is available. 489 * @return PVR_ERROR_NO_ERROR if the stream is available.
469 * @remarks Required if PVR_ADDON_CAPABILITIES::bSupportsRecordings is set to true and the add-on does not implement recording stream functions (OpenRecordedStream, ...). In this case your implementation must fill the property PVR_STREAM_PROPERTY_STREAMURL with the URL Kodi should resolve to playback the recording. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 490 * @remarks Required if PVR_ADDON_CAPABILITIES::bSupportsRecordings is set to true and the add-on does not implement recording stream functions (OpenRecordedStream, ...).
491 * In this case your implementation must fill the property PVR_STREAM_PROPERTY_STREAMURL with the URL Kodi should resolve to playback the recording.
492 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
470 */ 493 */
471 PVR_ERROR GetRecordingStreamProperties(const PVR_RECORDING* recording, PVR_NAMED_VALUE* properties, unsigned int* iPropertiesCount); 494 PVR_ERROR GetRecordingStreamProperties(const PVR_RECORDING* recording, PVR_NAMED_VALUE* properties, unsigned int* iPropertiesCount);
472 495
@@ -474,7 +497,8 @@ extern "C"
474 * Get the stream properties of the stream that's currently being read. 497 * Get the stream properties of the stream that's currently being read.
475 * @param pProperties The properties of the currently playing stream. 498 * @param pProperties The properties of the currently playing stream.
476 * @return PVR_ERROR_NO_ERROR if the properties have been fetched successfully. 499 * @return PVR_ERROR_NO_ERROR if the properties have been fetched successfully.
477 * @remarks Required if bHandlesInputStream or bHandlesDemuxing is set to true. Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. 500 * @remarks Required if bHandlesInputStream or bHandlesDemuxing is set to true.
501 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function.
478 */ 502 */
479 PVR_ERROR GetStreamProperties(PVR_STREAM_PROPERTIES* pProperties); 503 PVR_ERROR GetStreamProperties(PVR_STREAM_PROPERTIES* pProperties);
480 //@} 504 //@}
@@ -484,10 +508,22 @@ extern "C"
484 */ 508 */
485 //@{ 509 //@{
486 /*! 510 /*!
511 * Obtain the chunk size to use when reading streams.
512 * @param chunksize must be filled with the chunk size in bytes.
513 * @return PVR_ERROR_NO_ERROR if the chunk size has been fetched successfully.
514 * @remarks Optional, and only used if not reading from demuxer (=> DemuxRead) and
515 * PVR_ADDON_CAPABILITIES::bSupportsRecordings is true (=> ReadRecordedStream) or
516 * PVR_ADDON_CAPABILITIES::bHandlesInputStream is true (=> ReadLiveStream).
517 * Return PVR_ERROR_NOT_IMPLEMENTED if this add-on won't provide this function. In this case Kodi will decide on the chunk size to use.
518 */
519 PVR_ERROR GetStreamReadChunkSize(int* chunksize);
520
521 /*!
487 * Open a stream to a recording on the backend. 522 * Open a stream to a recording on the backend.
488 * @param recording The recording to open. 523 * @param recording The recording to open.
489 * @return True if the stream has been opened successfully, false otherwise. 524 * @return True if the stream has been opened successfully, false otherwise.
490 * @remarks Optional, and only used if bSupportsRecordings is set to true. Return false if this add-on won't provide this function. 525 * @remarks Optional, and only used if bSupportsRecordings is set to true.
526 * Return false if this add-on won't provide this function.
491 */ 527 */
492 bool OpenRecordedStream(const PVR_RECORDING& recording); 528 bool OpenRecordedStream(const PVR_RECORDING& recording);
493 529
@@ -502,7 +538,8 @@ extern "C"
502 * @param pBuffer The buffer to store the data in. 538 * @param pBuffer The buffer to store the data in.
503 * @param iBufferSize The amount of bytes to read. 539 * @param iBufferSize The amount of bytes to read.
504 * @return The amount of bytes that were actually read from the stream. 540 * @return The amount of bytes that were actually read from the stream.
505 * @remarks Optional, and only used if bSupportsRecordings is set to true, but required if OpenRecordedStream() is implemented. Return -1 if this add-on won't provide this function. 541 * @remarks Optional, and only used if bSupportsRecordings is set to true, but required if OpenRecordedStream() is implemented.
542 * Return -1 if this add-on won't provide this function.
506 */ 543 */
507 int ReadRecordedStream(unsigned char* pBuffer, unsigned int iBufferSize); 544 int ReadRecordedStream(unsigned char* pBuffer, unsigned int iBufferSize);
508 545
@@ -511,19 +548,23 @@ extern "C"
511 * @param iPosition The position to seek to. 548 * @param iPosition The position to seek to.
512 * @param iWhence ? 549 * @param iWhence ?
513 * @return The new position. 550 * @return The new position.
514 * @remarks Optional, and only used if bSupportsRecordings is set to true. Return -1 if this add-on won't provide this function. 551 * @remarks Optional, and only used if bSupportsRecordings is set to true.
552 * Return -1 if this add-on won't provide this function.
515 */ 553 */
516 long long SeekRecordedStream(long long iPosition, int iWhence = SEEK_SET); 554 long long SeekRecordedStream(long long iPosition, int iWhence = SEEK_SET);
517 555
518 /*! 556 /*!
557 * Obtain the length of a recorded stream.
519 * @return The total length of the stream that's currently being read. 558 * @return The total length of the stream that's currently being read.
520 * @remarks Optional, and only used if bSupportsRecordings is set to true. Return -1 if this add-on won't provide this function. 559 * @remarks Optional, and only used if bSupportsRecordings is set to true.
560 * Return -1 if this add-on won't provide this function.
521 */ 561 */
522 long long LengthRecordedStream(void); 562 long long LengthRecordedStream(void);
563
523 //@} 564 //@}
524 565
525 /** @name PVR demultiplexer methods 566 /** @name PVR demultiplexer methods
526 * @remarks Only used by XBMC is bHandlesDemuxing is set to true. 567 * @remarks Only used by Kodi if bHandlesDemuxing is set to true.
527 */ 568 */
528 //@{ 569 //@{
529 /*! 570 /*!
@@ -549,47 +590,49 @@ extern "C"
549 * @return The next packet. 590 * @return The next packet.
550 * If there is no next packet, then the add-on should return the 591 * If there is no next packet, then the add-on should return the
551 * packet created by calling AllocateDemuxPacket(0) on the callback. 592 * packet created by calling AllocateDemuxPacket(0) on the callback.
552 * If the stream changed and XBMC's player needs to be reinitialised, 593 * If the stream changed and Kodi's player needs to be reinitialised,
553 * then, the add-on should call AllocateDemuxPacket(0) on the 594 * then, the add-on should call AllocateDemuxPacket(0) on the
554 * callback, and set the streamid to DMX_SPECIALID_STREAMCHANGE and 595 * callback, and set the streamid to DMX_SPECIALID_STREAMCHANGE and
555 * return the value. 596 * return the value.
556 * The add-on should return NULL if an error occured. 597 * The add-on should return NULL if an error occured.
557 * @remarks Required if bHandlesDemuxing is set to true. Return NULL if this add-on won't provide this function. 598 * @remarks Required if bHandlesDemuxing is set to true.
599 * Return NULL if this add-on won't provide this function.
558 */ 600 */
559 DemuxPacket* DemuxRead(void); 601 DemuxPacket* DemuxRead(void);
560 //@} 602 //@}
561 603
562 /*! 604 /*!
563 * Check if the backend support pausing the currently playing stream 605 * Check if the backend support pausing the currently playing stream
564 * This will enable/disable the pause button in XBMC based on the return value 606 * This will enable/disable the pause button in Kodi based on the return value
565 * @return false if the PVR addon/backend does not support pausing, true if possible 607 * @return false if the PVR addon/backend does not support pausing, true if possible
566 */ 608 */
567 bool CanPauseStream(); 609 bool CanPauseStream();
568 610
569 /*! 611 /*!
570 * Check if the backend supports seeking for the currently playing stream 612 * Check if the backend supports seeking for the currently playing stream
571 * This will enable/disable the rewind/forward buttons in XBMC based on the return value 613 * This will enable/disable the rewind/forward buttons in Kodi based on the return value
572 * @return false if the PVR addon/backend does not support seeking, true if possible 614 * @return false if the PVR addon/backend does not support seeking, true if possible
573 */ 615 */
574 bool CanSeekStream(); 616 bool CanSeekStream();
575 617
576 /*! 618 /*!
577 * @brief Notify the pvr addon that XBMC (un)paused the currently playing stream 619 * @brief Notify the pvr addon that Kodi (un)paused the currently playing stream
578 */ 620 */
579 void PauseStream(bool bPaused); 621 void PauseStream(bool bPaused);
580 622
581 /*! 623 /*!
582 * Notify the pvr addon/demuxer that XBMC wishes to seek the stream by time 624 * Notify the pvr addon/demuxer that Kodi wishes to seek the stream by time
583 * @param time The absolute time since stream start 625 * @param time The absolute time since stream start
584 * @param backwards True to seek to keyframe BEFORE time, else AFTER 626 * @param backwards True to seek to keyframe BEFORE time, else AFTER
585 * @param startpts can be updated to point to where display should start 627 * @param startpts can be updated to point to where display should start
586 * @return True if the seek operation was possible 628 * @return True if the seek operation was possible
587 * @remarks Optional, and only used if addon has its own demuxer. Return False if this add-on won't provide this function. 629 * @remarks Optional, and only used if addon has its own demuxer.
630 * Return False if this add-on won't provide this function.
588 */ 631 */
589 bool SeekTime(double time, bool backwards, double *startpts); 632 bool SeekTime(double time, bool backwards, double *startpts);
590 633
591 /*! 634 /*!
592 * Notify the pvr addon/demuxer that XBMC wishes to change playback speed 635 * Notify the pvr addon/demuxer that Kodi wishes to change playback speed
593 * @param speed The requested playback speed 636 * @param speed The requested playback speed
594 * @remarks Optional, and only used if addon has its own demuxer. 637 * @remarks Optional, and only used if addon has its own demuxer.
595 */ 638 */
@@ -597,8 +640,7 @@ extern "C"
597 640
598 /*! 641 /*!
599 * Get the hostname of the pvr backend server 642 * Get the hostname of the pvr backend server
600 * @return hostname as ip address or alias. If backend does not 643 * @return hostname as ip address or alias. If backend does not utilize a server, return empty string.
601 * utilize a server, return empty string.
602 */ 644 */
603 const char* GetBackendHostname(); 645 const char* GetBackendHostname();
604 646
@@ -639,7 +681,7 @@ extern "C"
639 PVR_ERROR GetStreamTimes(PVR_STREAM_TIMES *times); 681 PVR_ERROR GetStreamTimes(PVR_STREAM_TIMES *times);
640 682
641 /*! 683 /*!
642 * Called by XBMC to assign the function pointers of this add-on to pClient. 684 * Called by Kodi to assign the function pointers of this add-on to pClient.
643 * @param ptr The struct to assign the function pointers to. 685 * @param ptr The struct to assign the function pointers to.
644 */ 686 */
645 void __declspec(dllexport) get_addon(void* ptr) 687 void __declspec(dllexport) get_addon(void* ptr)
@@ -731,5 +773,7 @@ extern "C"
731 pClient->toAddon.OnPowerSavingActivated = OnPowerSavingActivated; 773 pClient->toAddon.OnPowerSavingActivated = OnPowerSavingActivated;
732 pClient->toAddon.OnPowerSavingDeactivated = OnPowerSavingDeactivated; 774 pClient->toAddon.OnPowerSavingDeactivated = OnPowerSavingDeactivated;
733 pClient->toAddon.GetStreamTimes = GetStreamTimes; 775 pClient->toAddon.GetStreamTimes = GetStreamTimes;
776
777 pClient->toAddon.GetStreamReadChunkSize = GetStreamReadChunkSize;
734 }; 778 };
735}; 779};
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_types.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_types.h
index 32303d4..2a89fef 100644
--- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_types.h
+++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/xbmc_pvr_types.h
@@ -1,25 +1,13 @@
1#pragma once
2
3/* 1/*
4 * Copyright (C) 2005-2015 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
5 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
6 *
7 * This Program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2, or (at your option)
10 * any later version.
11 *
12 * This Program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with Kodi; see the file COPYING. If not, see
19 * <http://www.gnu.org/licenses/>.
20 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
21 */ 7 */
22 8
9#pragma once
10
23#ifndef TARGET_WINDOWS 11#ifndef TARGET_WINDOWS
24#ifndef __cdecl 12#ifndef __cdecl
25#define __cdecl 13#define __cdecl
@@ -36,7 +24,7 @@
36#include "xbmc_epg_types.h" 24#include "xbmc_epg_types.h"
37 25
38/*! @note Define "USE_DEMUX" at compile time if demuxing in the PVR add-on is used. 26/*! @note Define "USE_DEMUX" at compile time if demuxing in the PVR add-on is used.
39 * Also XBMC's "DVDDemuxPacket.h" file must be in the include path of the add-on, 27 * Also, "DVDDemuxPacket.h" file must be in the include path of the add-on,
40 * and the add-on should set bHandlesDemuxing to true. 28 * and the add-on should set bHandlesDemuxing to true.
41 */ 29 */
42#ifdef USE_DEMUX 30#ifdef USE_DEMUX
@@ -79,7 +67,8 @@ struct DemuxPacket;
79#define PVR_STREAM_MAX_PROPERTIES 20 67#define PVR_STREAM_MAX_PROPERTIES 20
80#define PVR_STREAM_PROPERTY_STREAMURL "streamurl" /*!< @brief the URL of the stream that should be played. */ 68#define PVR_STREAM_PROPERTY_STREAMURL "streamurl" /*!< @brief the URL of the stream that should be played. */
81#define PVR_STREAM_PROPERTY_INPUTSTREAMADDON "inputstreamaddon" /*!< @brief the name of the inputstream add-on that should be used by Kodi to play the stream denoted by PVR_STREAM_PROPERTY_STREAMURL. Leave blank to use Kodi's built-in playing capabilities. */ 69#define PVR_STREAM_PROPERTY_INPUTSTREAMADDON "inputstreamaddon" /*!< @brief the name of the inputstream add-on that should be used by Kodi to play the stream denoted by PVR_STREAM_PROPERTY_STREAMURL. Leave blank to use Kodi's built-in playing capabilities. */
82#define PVR_STREAM_PROPERTY_MIMETYPE "mimetype" /*!< @brief the Mime-Type of the stream that should be played. */ 70#define PVR_STREAM_PROPERTY_MIMETYPE "mimetype" /*!< @brief the MIME type of the stream that should be played. */
71#define PVR_STREAM_PROPERTY_ISREALTIMESTREAM "isrealtimestream" /*!< @brief "true" to denote that the stream that should be played is a realtime stream. Any other value indicates that this is no realtime stream.*/
83 72
84/* using the default avformat's MAX_STREAMS value to be safe */ 73/* using the default avformat's MAX_STREAMS value to be safe */
85#define PVR_STREAM_MAX_STREAMS 20 74#define PVR_STREAM_MAX_STREAMS 20
@@ -202,7 +191,7 @@ extern "C" {
202 { 191 {
203 PVR_ERROR_NO_ERROR = 0, /*!< @brief no error occurred */ 192 PVR_ERROR_NO_ERROR = 0, /*!< @brief no error occurred */
204 PVR_ERROR_UNKNOWN = -1, /*!< @brief an unknown error occurred */ 193 PVR_ERROR_UNKNOWN = -1, /*!< @brief an unknown error occurred */
205 PVR_ERROR_NOT_IMPLEMENTED = -2, /*!< @brief the method that XBMC called is not implemented by the add-on */ 194 PVR_ERROR_NOT_IMPLEMENTED = -2, /*!< @brief the method that Kodi called is not implemented by the add-on */
206 PVR_ERROR_SERVER_ERROR = -3, /*!< @brief the backend reported an error, or the add-on isn't connected */ 195 PVR_ERROR_SERVER_ERROR = -3, /*!< @brief the backend reported an error, or the add-on isn't connected */
207 PVR_ERROR_SERVER_TIMEOUT = -4, /*!< @brief the command was sent to the backend, but the response timed out */ 196 PVR_ERROR_SERVER_TIMEOUT = -4, /*!< @brief the command was sent to the backend, but the response timed out */
208 PVR_ERROR_REJECTED = -5, /*!< @brief the command was rejected by the backend */ 197 PVR_ERROR_REJECTED = -5, /*!< @brief the command was rejected by the backend */
@@ -312,7 +301,7 @@ extern "C" {
312 bool bSupportsChannelGroups; /*!< @brief true if this add-on supports channel groups */ 301 bool bSupportsChannelGroups; /*!< @brief true if this add-on supports channel groups */
313 bool bSupportsChannelScan; /*!< @brief true if this add-on support scanning for new channels on the backend */ 302 bool bSupportsChannelScan; /*!< @brief true if this add-on support scanning for new channels on the backend */
314 bool bSupportsChannelSettings; /*!< @brief true if this add-on supports the following functions: DeleteChannel, RenameChannel, DialogChannelSettings and DialogAddChannel */ 303 bool bSupportsChannelSettings; /*!< @brief true if this add-on supports the following functions: DeleteChannel, RenameChannel, DialogChannelSettings and DialogAddChannel */
315 bool bHandlesInputStream; /*!< @brief true if this add-on provides an input stream. false if XBMC handles the stream. */ 304 bool bHandlesInputStream; /*!< @brief true if this add-on provides an input stream. false if Kodi handles the stream. */
316 bool bHandlesDemuxing; /*!< @brief true if this add-on demultiplexes packets. */ 305 bool bHandlesDemuxing; /*!< @brief true if this add-on demultiplexes packets. */
317 bool bSupportsRecordingPlayCount; /*!< @brief true if the backend supports play count for recordings. */ 306 bool bSupportsRecordingPlayCount; /*!< @brief true if the backend supports play count for recordings. */
318 bool bSupportsLastPlayedPosition; /*!< @brief true if the backend supports store/retrieve of last played position for recordings. */ 307 bool bSupportsLastPlayedPosition; /*!< @brief true if the backend supports store/retrieve of last played position for recordings. */
@@ -628,7 +617,7 @@ extern "C" {
628 } AddonToKodiFuncTable_PVR; 617 } AddonToKodiFuncTable_PVR;
629 618
630 /*! 619 /*!
631 * @brief Structure to transfer the methods from xbmc_pvr_dll.h to XBMC 620 * @brief Structure to transfer the methods from xbmc_pvr_dll.h to Kodi
632 */ 621 */
633 typedef struct KodiToAddonFuncTable_PVR 622 typedef struct KodiToAddonFuncTable_PVR
634 { 623 {
@@ -706,6 +695,7 @@ extern "C" {
706 void (__cdecl* OnPowerSavingActivated)(void); 695 void (__cdecl* OnPowerSavingActivated)(void);
707 void (__cdecl* OnPowerSavingDeactivated)(void); 696 void (__cdecl* OnPowerSavingDeactivated)(void);
708 PVR_ERROR (__cdecl* GetStreamTimes)(PVR_STREAM_TIMES*); 697 PVR_ERROR (__cdecl* GetStreamTimes)(PVR_STREAM_TIMES*);
698 PVR_ERROR (__cdecl* GetStreamReadChunkSize)(int*);
709 } KodiToAddonFuncTable_PVR; 699 } KodiToAddonFuncTable_PVR;
710 700
711 typedef struct AddonInstance_PVR 701 typedef struct AddonInstance_PVR
diff --git a/xbmc/cores/AudioEngine/Utils/AEChannelData.h b/xbmc/cores/AudioEngine/Utils/AEChannelData.h
index 6b64f0d..71010bb 100644
--- a/xbmc/cores/AudioEngine/Utils/AEChannelData.h
+++ b/xbmc/cores/AudioEngine/Utils/AEChannelData.h
@@ -1,24 +1,13 @@
1#pragma once
2/* 1/*
3 * Copyright (C) 2010-2013 Team XBMC 2 * Copyright (C) 2010-2018 Team Kodi
4 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
5 *
6 * This Program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This Program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with XBMC; see the file COPYING. If not, see
18 * <http://www.gnu.org/licenses/>.
19 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
20 */ 7 */
21 8
9#pragma once
10
22/** 11/**
23 * The possible channels 12 * The possible channels
24 */ 13 */
diff --git a/xbmc/cores/VideoPlayer/Interface/Addon/DemuxCrypto.h b/xbmc/cores/VideoPlayer/Interface/Addon/DemuxCrypto.h
index e38e247..b48ef34 100644
--- a/xbmc/cores/VideoPlayer/Interface/Addon/DemuxCrypto.h
+++ b/xbmc/cores/VideoPlayer/Interface/Addon/DemuxCrypto.h
@@ -1,22 +1,10 @@
1/* 1/*
2* Copyright (C) 2005-2016 Team XBMC 2 * Copyright (C) 2005-2018 Team Kodi
3* http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
4* 4 *
5* This Program is free software; you can redistribute it and/or modify 5 * SPDX-License-Identifier: GPL-2.0-or-later
6* it under the terms of the GNU General Public License as published by 6 * See LICENSES/README.md for more information.
7* the Free Software Foundation; either version 2, or (at your option) 7 */
8* any later version.
9*
10* This Program is distributed in the hope that it will be useful,
11* but WITHOUT ANY WARRANTY; without even the implied warranty of
12* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13* GNU General Public License for more details.
14*
15* You should have received a copy of the GNU General Public License
16* along with XBMC; see the file COPYING. If not, see
17* <http://www.gnu.org/licenses/>.
18*
19*/
20 8
21#pragma once 9#pragma once
22 10
@@ -48,6 +36,13 @@ struct DemuxCryptoSession
48 delete[] sessionId; 36 delete[] sessionId;
49 } 37 }
50 38
39 bool operator == (const DemuxCryptoSession &other) const
40 {
41 return sessionIdSize == other.sessionIdSize &&
42 keySystem == other.keySystem &&
43 memcmp(sessionId, other.sessionId, sessionIdSize) == 0;
44 };
45
51 // encryped stream infos 46 // encryped stream infos
52 char * sessionId; 47 char * sessionId;
53 uint16_t sessionIdSize; 48 uint16_t sessionIdSize;
diff --git a/xbmc/cores/VideoPlayer/Interface/Addon/DemuxPacket.h b/xbmc/cores/VideoPlayer/Interface/Addon/DemuxPacket.h
index b7404a3..5aed400 100644
--- a/xbmc/cores/VideoPlayer/Interface/Addon/DemuxPacket.h
+++ b/xbmc/cores/VideoPlayer/Interface/Addon/DemuxPacket.h
@@ -1,25 +1,13 @@
1#pragma once
2
3/* 1/*
4 * Copyright (C) 2012-2013 Team XBMC 2 * Copyright (C) 2012-2018 Team Kodi
5 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
6 *
7 * This Program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2, or (at your option)
10 * any later version.
11 *
12 * This Program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with XBMC; see the file COPYING. If not, see
19 * <http://www.gnu.org/licenses/>.
20 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
21 */ 7 */
22 8
9#pragma once
10
23#include "TimingConstants.h" 11#include "TimingConstants.h"
24#include <cstdint> 12#include <cstdint>
25#include <memory> 13#include <memory>
diff --git a/xbmc/cores/VideoPlayer/Interface/Addon/TimingConstants.h b/xbmc/cores/VideoPlayer/Interface/Addon/TimingConstants.h
index 209897e..0672002 100644
--- a/xbmc/cores/VideoPlayer/Interface/Addon/TimingConstants.h
+++ b/xbmc/cores/VideoPlayer/Interface/Addon/TimingConstants.h
@@ -1,31 +1,19 @@
1#pragma once
2
3/* 1/*
4* Copyright (C) 2017 Team XBMC 2 * Copyright (C) 2017-2018 Team Kodi
5* http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
6* 4 *
7* This Program is free software; you can redistribute it and/or modify 5 * SPDX-License-Identifier: GPL-2.0-or-later
8* it under the terms of the GNU General Public License as published by 6 * See LICENSES/README.md for more information.
9* the Free Software Foundation; either version 2, or (at your option) 7 */
10* any later version. 8
11* 9#pragma once
12* This Program is distributed in the hope that it will be useful,
13* but WITHOUT ANY WARRANTY; without even the implied warranty of
14* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15* GNU General Public License for more details.
16*
17* You should have received a copy of the GNU General Public License
18* along with XBMC; see the file COPYING. If not, see
19* <http://www.gnu.org/licenses/>.
20*
21*/
22 10
23#define DVD_TIME_BASE 1000000 11#define DVD_TIME_BASE 1000000
24#define DVD_NOPTS_VALUE 0xFFF0000000000000 12#define DVD_NOPTS_VALUE 0xFFF0000000000000
25 13
26#define DVD_TIME_TO_MSEC(x) ((int)((double)(x) * 1000 / DVD_TIME_BASE)) 14constexpr int DVD_TIME_TO_MSEC(double x) { return static_cast<int>(x * 1000 / DVD_TIME_BASE); }
27#define DVD_SEC_TO_TIME(x) ((double)(x) * DVD_TIME_BASE) 15constexpr double DVD_SEC_TO_TIME(double x) { return x * DVD_TIME_BASE; }
28#define DVD_MSEC_TO_TIME(x) ((double)(x) * DVD_TIME_BASE / 1000) 16constexpr double DVD_MSEC_TO_TIME(double x) { return x * DVD_TIME_BASE / 1000; }
29 17
30#define DVD_PLAYSPEED_PAUSE 0 // frame stepping 18#define DVD_PLAYSPEED_PAUSE 0 // frame stepping
31#define DVD_PLAYSPEED_NORMAL 1000 19#define DVD_PLAYSPEED_NORMAL 1000
diff --git a/xbmc/filesystem/IFileTypes.h b/xbmc/filesystem/IFileTypes.h
index 3962c0c..7470b15 100644
--- a/xbmc/filesystem/IFileTypes.h
+++ b/xbmc/filesystem/IFileTypes.h
@@ -1,21 +1,9 @@
1/* 1/*
2 * Copyright (C) 2005-2013 Team XBMC 2 * Copyright (C) 2005-2018 Team Kodi
3 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
4 *
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
8 * any later version.
9 *
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with XBMC; see the file COPYING. If not, see
17 * <http://www.gnu.org/licenses/>.
18 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
19 */ 7 */
20 8
21#pragma once 9#pragma once
diff --git a/xbmc/input/ActionIDs.h b/xbmc/input/ActionIDs.h
index 5db1ffc..12a5334 100644
--- a/xbmc/input/ActionIDs.h
+++ b/xbmc/input/ActionIDs.h
@@ -1,22 +1,11 @@
1/* 1/*
2 * Copyright (C) 2005-2017 Team Kodi 2 * Copyright (C) 2005-2018 Team Kodi
3 * http://kodi.tv 3 * This file is part of Kodi - https://kodi.tv
4 *
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
8 * any later version.
9 *
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this Program; see the file COPYING. If not, see
17 * <http://www.gnu.org/licenses/>.
18 * 4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
19 */ 7 */
8
20#pragma once 9#pragma once
21 10
22/** 11/**
@@ -104,6 +93,7 @@
104 93
105#define ACTION_PLAYER_PROCESS_INFO 69 //!< show player process info (video decoder, pixel format, pvr signal strength and the like 94#define ACTION_PLAYER_PROCESS_INFO 69 //!< show player process info (video decoder, pixel format, pvr signal strength and the like
106#define ACTION_PLAYER_PROGRAM_SELECT 70 95#define ACTION_PLAYER_PROGRAM_SELECT 70
96#define ACTION_PLAYER_RESOLUTION_SELECT 71
107#define ACTION_SMALL_STEP_BACK 76 //!< jumps a few seconds back during playback of movie. Can b used in videoFullScreen.xml window id=2005 97#define ACTION_SMALL_STEP_BACK 76 //!< jumps a few seconds back during playback of movie. Can b used in videoFullScreen.xml window id=2005
108 98
109#define ACTION_PLAYER_FORWARD 77 //!< FF in current file played. global action, can be used anywhere 99#define ACTION_PLAYER_FORWARD 77 //!< FF in current file played. global action, can be used anywhere
@@ -277,6 +267,8 @@
277 267
278#define ACTION_TOGGLE_FONT 249 //!< Toggle font. Used in TextViewer dialog 268#define ACTION_TOGGLE_FONT 249 //!< Toggle font. Used in TextViewer dialog
279 269
270#define ACTION_VIDEO_NEXT_STREAM 250 //!< Cycle video streams. Used in videofullscreen.
271
280// Voice actions 272// Voice actions
281#define ACTION_VOICE_RECOGNIZE 300 273#define ACTION_VOICE_RECOGNIZE 300
282 274
diff --git a/xbmc/input/XBMC_vkeys.h b/xbmc/input/XBMC_vkeys.h
index 4e3787c..496f336 100644
--- a/xbmc/input/XBMC_vkeys.h
+++ b/xbmc/input/XBMC_vkeys.h
@@ -1,27 +1,15 @@
1/* 1/*
2 SDL - Simple DirectMedia Layer 2 * SDL - Simple DirectMedia Layer
3 Copyright (C) 1997-2009 Sam Lantinga 3 * Copyright (C) 1997-2009 Sam Lantinga
4 *
5 * SPDX-License-Identifier: LGPL-2.1-or-later
6 * See LICENSES/README.md for more information.
7 *
8 * Sam Lantinga
9 * slouken@libsdl.org
10 */
4 11
5 This library is free software; you can redistribute it and/or 12#pragma once
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with XBMC; see the file COPYING. If not, see
17 <http://www.gnu.org/licenses/>.
18
19 Sam Lantinga
20 slouken@libsdl.org
21*/
22
23#ifndef XBMC_vkeys_h
24#define XBMC_vkeys_h
25 13
26// The XBMC_vkey identifies a key that is mapped to an action or function. 14// The XBMC_vkey identifies a key that is mapped to an action or function.
27// The keysym.sym generated by SDL_KEYDOWN is mapped to a vkey and the vkey 15// The keysym.sym generated by SDL_KEYDOWN is mapped to a vkey and the vkey
@@ -283,4 +271,3 @@ typedef enum {
283#define VK_OEM_102 0xE2 271#define VK_OEM_102 0xE2
284#endif 272#endif
285 273
286#endif // XBMC_vkeys_h
diff --git a/xbmc/interfaces/json-rpc/schema/version.txt b/xbmc/interfaces/json-rpc/schema/version.txt
index 35bc503..94db005 100644
--- a/xbmc/interfaces/json-rpc/schema/version.txt
+++ b/xbmc/interfaces/json-rpc/schema/version.txt
@@ -1 +1 @@
JSONRPC_VERSION 9.2.0 JSONRPC_VERSION 9.6.0