Kodi Development 22.0
for Binary and Script based Add-Ons
 
Loading...
Searching...
No Matches
versions.h
1/*
2 * Copyright (C) 2016-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
8
9#pragma once
10
11#ifndef KODI_VERSIONS_H
12#define KODI_VERSIONS_H
13
14#include <string.h>
15
16#define STR_HELPER(x) #x
17#define STR(x) STR_HELPER(x)
18
19/*
20 *------------------------------------------------------------------------------
21 * Some parts on headers are only be used for Kodi itself and internally (not
22 * for add-on development).
23 *
24 * For this reason also no doxygen part with "///" defined there.
25 * -----------------------------------------------------------------------------
26 */
27
28/*
29 * Versions of all add-on globals and instances are defined below.
30 *
31 * This is added here and not in related header to prevent not
32 * needed includes during compile. Also have it here a better
33 * overview.
34 */
35
36// Ignore clang here, as this must be good in overview and as the main reason,
37// because cmake uses this area in this form to perform its addon dependency
38// check.
39// clang-format off
40#define ADDON_GLOBAL_VERSION_MAIN "2.0.3"
41#define ADDON_GLOBAL_VERSION_MAIN_MIN "2.0.3"
42#define ADDON_GLOBAL_VERSION_MAIN_XML_ID "kodi.binary.global.main"
43#define ADDON_GLOBAL_VERSION_MAIN_DEPENDS "AddonBase.h" \
44 "addon-instance/" \
45 "c-api/addon_base.h"
46
47#define ADDON_GLOBAL_VERSION_GENERAL "1.0.5"
48#define ADDON_GLOBAL_VERSION_GENERAL_MIN "1.0.4"
49#define ADDON_GLOBAL_VERSION_GENERAL_XML_ID "kodi.binary.global.general"
50#define ADDON_GLOBAL_VERSION_GENERAL_DEPENDS "General.h"
51
52#define ADDON_GLOBAL_VERSION_GUI "5.15.1"
53#define ADDON_GLOBAL_VERSION_GUI_MIN "5.15.0"
54#define ADDON_GLOBAL_VERSION_GUI_XML_ID "kodi.binary.global.gui"
55#define ADDON_GLOBAL_VERSION_GUI_DEPENDS "c-api/gui/input/action_ids.h" \
56 "c-api/gui/" \
57 "gui/"
58
59#define ADDON_GLOBAL_VERSION_AUDIOENGINE "1.1.1"
60#define ADDON_GLOBAL_VERSION_AUDIOENGINE_MIN "1.1.0"
61#define ADDON_GLOBAL_VERSION_AUDIOENGINE_XML_ID "kodi.binary.global.audioengine"
62#define ADDON_GLOBAL_VERSION_AUDIOENGINE_DEPENDS "AudioEngine.h" \
63 "c-api/audio_engine.h"
64
65#define ADDON_GLOBAL_VERSION_FILESYSTEM "1.1.11"
66#define ADDON_GLOBAL_VERSION_FILESYSTEM_MIN "1.1.11"
67#define ADDON_GLOBAL_VERSION_FILESYSTEM_XML_ID "kodi.binary.global.filesystem"
68#define ADDON_GLOBAL_VERSION_FILESYSTEM_DEPENDS "Filesystem.h" \
69 "c-api/filesystem.h" \
70 "gui/gl/Shader.h" \
71 "tools/DllHelper.h"
72
73#define ADDON_GLOBAL_VERSION_NETWORK "1.0.4"
74#define ADDON_GLOBAL_VERSION_NETWORK_MIN "1.0.0"
75#define ADDON_GLOBAL_VERSION_NETWORK_XML_ID "kodi.binary.global.network"
76#define ADDON_GLOBAL_VERSION_NETWORK_DEPENDS "Network.h" \
77 "c-api/network.h"
78
79#define ADDON_GLOBAL_VERSION_TOOLS "1.0.4"
80#define ADDON_GLOBAL_VERSION_TOOLS_MIN "1.0.0"
81#define ADDON_GLOBAL_VERSION_TOOLS_XML_ID "kodi.binary.global.tools"
82#define ADDON_GLOBAL_VERSION_TOOLS_DEPENDS "tools/DllHelper.h" \
83 "tools/EndTime.h" \
84 "tools/StringUtils.h" \
85 "tools/Thread.h" \
86 "tools/Timer.h"
87
88#define ADDON_INSTANCE_VERSION_AUDIODECODER "4.0.0"
89#define ADDON_INSTANCE_VERSION_AUDIODECODER_MIN "4.0.0"
90#define ADDON_INSTANCE_VERSION_AUDIODECODER_XML_ID "kodi.binary.instance.audiodecoder"
91#define ADDON_INSTANCE_VERSION_AUDIODECODER_DEPENDS "c-api/addon-instance/audiodecoder.h" \
92 "addon-instance/AudioDecoder.h"
93
94#define ADDON_INSTANCE_VERSION_AUDIOENCODER "3.0.0"
95#define ADDON_INSTANCE_VERSION_AUDIOENCODER_MIN "3.0.0"
96#define ADDON_INSTANCE_VERSION_AUDIOENCODER_XML_ID "kodi.binary.instance.audioencoder"
97#define ADDON_INSTANCE_VERSION_AUDIOENCODER_DEPENDS "c-api/addon-instance/audioencoder.h" \
98 "addon-instance/AudioEncoder.h"
99
100#define ADDON_INSTANCE_VERSION_GAME "8.0.0"
101#define ADDON_INSTANCE_VERSION_GAME_MIN "8.0.0"
102#define ADDON_INSTANCE_VERSION_GAME_XML_ID "kodi.binary.instance.game"
103#define ADDON_INSTANCE_VERSION_GAME_DEPENDS "c-api/addon-instance/game.h" \
104 "addon-instance/Game.h"
105
106#define ADDON_INSTANCE_VERSION_IMAGEDECODER "3.1.0"
107#define ADDON_INSTANCE_VERSION_IMAGEDECODER_MIN "3.1.0"
108#define ADDON_INSTANCE_VERSION_IMAGEDECODER_XML_ID "kodi.binary.instance.imagedecoder"
109#define ADDON_INSTANCE_VERSION_IMAGEDECODER_DEPENDS "c-api/addon-instance/imagedecoder.h" \
110 "addon-instance/ImageDecoder.h"
111
112#define ADDON_INSTANCE_VERSION_INPUTSTREAM "3.4.0"
113#define ADDON_INSTANCE_VERSION_INPUTSTREAM_MIN "3.4.0"
114#define ADDON_INSTANCE_VERSION_INPUTSTREAM_XML_ID "kodi.binary.instance.inputstream"
115#define ADDON_INSTANCE_VERSION_INPUTSTREAM_DEPENDS "c-api/addon-instance/inputstream.h" \
116 "c-api/addon-instance/inputstream/demux_packet.h" \
117 "c-api/addon-instance/inputstream/stream_codec.h" \
118 "c-api/addon-instance/inputstream/stream_constants.h" \
119 "c-api/addon-instance/inputstream/stream_crypto.h" \
120 "c-api/addon-instance/inputstream/timing_constants.h" \
121 "addon-instance/Inputstream.h" \
122 "addon-instance/inputstream/DemuxPacket.h" \
123 "addon-instance/inputstream/StreamCodec.h" \
124 "addon-instance/inputstream/StreamConstants.h" \
125 "addon-instance/inputstream/StreamCrypto.h" \
126 "addon-instance/inputstream/TimingConstants.h"
127
128#define ADDON_INSTANCE_VERSION_PERIPHERAL "3.0.2"
129#define ADDON_INSTANCE_VERSION_PERIPHERAL_MIN "3.0.0"
130#define ADDON_INSTANCE_VERSION_PERIPHERAL_XML_ID "kodi.binary.instance.peripheral"
131#define ADDON_INSTANCE_VERSION_PERIPHERAL_DEPENDS "addon-instance/Peripheral.h" \
132 "addon-instance/PeripheralUtils.h"
133
134#define ADDON_INSTANCE_VERSION_PVR "9.2.0"
135#define ADDON_INSTANCE_VERSION_PVR_MIN "9.2.0"
136#define ADDON_INSTANCE_VERSION_PVR_XML_ID "kodi.binary.instance.pvr"
137#define ADDON_INSTANCE_VERSION_PVR_DEPENDS "c-api/addon-instance/pvr.h" \
138 "c-api/addon-instance/pvr/pvr_channel_groups.h" \
139 "c-api/addon-instance/pvr/pvr_channels.h" \
140 "c-api/addon-instance/pvr/pvr_defines.h" \
141 "c-api/addon-instance/pvr/pvr_edl.h" \
142 "c-api/addon-instance/pvr/pvr_epg.h" \
143 "c-api/addon-instance/pvr/pvr_general.h" \
144 "c-api/addon-instance/pvr/pvr_menu_hook.h" \
145 "c-api/addon-instance/pvr/pvr_providers.h" \
146 "c-api/addon-instance/pvr/pvr_recordings.h" \
147 "c-api/addon-instance/pvr/pvr_stream.h" \
148 "c-api/addon-instance/pvr/pvr_timers.h" \
149 "addon-instance/PVR.h" \
150 "addon-instance/pvr/ChannelGroups.h" \
151 "addon-instance/pvr/Channels.h" \
152 "addon-instance/pvr/EDL.h" \
153 "addon-instance/pvr/EPG.h" \
154 "addon-instance/pvr/General.h" \
155 "addon-instance/pvr/MenuHook.h" \
156 "addon-instance/pvr/Providers.h" \
157 "addon-instance/pvr/Recordings.h" \
158 "addon-instance/pvr/Stream.h" \
159 "addon-instance/pvr/Timers.h"
160
161#define ADDON_INSTANCE_VERSION_SCREENSAVER "2.2.0"
162#define ADDON_INSTANCE_VERSION_SCREENSAVER_MIN "2.2.0"
163#define ADDON_INSTANCE_VERSION_SCREENSAVER_XML_ID "kodi.binary.instance.screensaver"
164#define ADDON_INSTANCE_VERSION_SCREENSAVER_DEPENDS "c-api/addon-instance/screensaver.h" \
165 "addon-instance/Screensaver.h"
166
167#define ADDON_INSTANCE_VERSION_SHADERPRESET "1.1.0"
168#define ADDON_INSTANCE_VERSION_SHADERPRESET_MIN "1.1.0"
169#define ADDON_INSTANCE_VERSION_SHADERPRESET_XML_ID "kodi.binary.instance.shaderpreset"
170#define ADDON_INSTANCE_VERSION_SHADERPRESET_DEPENDS "addon-instance/ShaderPreset.h"
171
172#define ADDON_INSTANCE_VERSION_VFS "3.0.1"
173#define ADDON_INSTANCE_VERSION_VFS_MIN "3.0.1"
174#define ADDON_INSTANCE_VERSION_VFS_XML_ID "kodi.binary.instance.vfs"
175#define ADDON_INSTANCE_VERSION_VFS_DEPENDS "c-api/addon-instance/vfs.h" \
176 "addon-instance/VFS.h"
177
178#define ADDON_INSTANCE_VERSION_VISUALIZATION "5.0.0"
179#define ADDON_INSTANCE_VERSION_VISUALIZATION_MIN "5.0.0"
180#define ADDON_INSTANCE_VERSION_VISUALIZATION_XML_ID "kodi.binary.instance.visualization"
181#define ADDON_INSTANCE_VERSION_VISUALIZATION_DEPENDS "addon-instance/Visualization.h" \
182 "c-api/addon-instance/visualization.h"
183
184#define ADDON_INSTANCE_VERSION_VIDEOCODEC "2.2.1"
185#define ADDON_INSTANCE_VERSION_VIDEOCODEC_MIN "2.1.0"
186#define ADDON_INSTANCE_VERSION_VIDEOCODEC_XML_ID "kodi.binary.instance.videocodec"
187#define ADDON_INSTANCE_VERSION_VIDEOCODEC_DEPENDS "c-api/addon-instance/video_codec.h" \
188 "c-api/addon-instance/inputstream/stream_codec.h" \
189 "c-api/addon-instance/inputstream/stream_crypto.h" \
190 "addon-instance/VideoCodec.h" \
191 "addon-instance/inputstream/StreamCodec.h" \
192 "addon-instance/inputstream/StreamCrypto.h"
193// clang-format on
194
195//==============================================================================
208typedef enum ADDON_TYPE
209{
210 /* addon global parts */
211 ADDON_GLOBAL_MAIN = 0,
212 ADDON_GLOBAL_GUI = 1,
213 ADDON_GLOBAL_AUDIOENGINE = 2,
214 ADDON_GLOBAL_GENERAL = 3,
215 ADDON_GLOBAL_NETWORK = 4,
216 ADDON_GLOBAL_FILESYSTEM = 5,
217 ADDON_GLOBAL_TOOLS = 6,
218 // Last used global id, used in loops to check versions.
219 // Need to change if new global type becomes added!
220 ADDON_GLOBAL_MAX = 6,
221
222 /* addon instance types */
223
226
229
232
235
238
241
244
247
250
253
256
259} ADDON_TYPE;
261//------------------------------------------------------------------------------
262
263#ifdef __cplusplus
264extern "C"
265{
266 namespace kodi
267 {
268 namespace addon
269 {
270#endif
271
280 inline const char* GetTypeVersion(int type)
281 {
282 /*
283 * #ifdef's below becomes set by cmake, no set by hand needed.
284 */
285 switch (type)
286 {
287 /* addon global parts */
288 case ADDON_GLOBAL_MAIN:
289 return ADDON_GLOBAL_VERSION_MAIN;
290#if !defined(BUILD_KODI_ADDON) || defined(ADDON_GLOBAL_VERSION_GENERAL_USED)
291 case ADDON_GLOBAL_GENERAL:
292 return ADDON_GLOBAL_VERSION_GENERAL;
293#endif
294#if !defined(BUILD_KODI_ADDON) || defined(ADDON_GLOBAL_VERSION_GUI_USED)
295 case ADDON_GLOBAL_GUI:
296 return ADDON_GLOBAL_VERSION_GUI;
297#endif
298#if !defined(BUILD_KODI_ADDON) || defined(ADDON_GLOBAL_VERSION_AUDIOENGINE_USED)
299 case ADDON_GLOBAL_AUDIOENGINE:
300 return ADDON_GLOBAL_VERSION_AUDIOENGINE;
301#endif
302#if !defined(BUILD_KODI_ADDON) || defined(ADDON_GLOBAL_VERSION_FILESYSTEM_USED)
303 case ADDON_GLOBAL_FILESYSTEM:
304 return ADDON_GLOBAL_VERSION_FILESYSTEM;
305#endif
306#if !defined(BUILD_KODI_ADDON) || defined(ADDON_GLOBAL_VERSION_NETWORK_USED)
307 case ADDON_GLOBAL_NETWORK:
308 return ADDON_GLOBAL_VERSION_NETWORK;
309#endif
310#if !defined(BUILD_KODI_ADDON) || defined(ADDON_GLOBAL_VERSION_TOOLS_USED)
311 case ADDON_GLOBAL_TOOLS:
312 return ADDON_GLOBAL_VERSION_TOOLS;
313#endif
314
315 /* addon type instances */
316#if !defined(BUILD_KODI_ADDON) || defined(ADDON_INSTANCE_VERSION_AUDIODECODER_USED)
318 return ADDON_INSTANCE_VERSION_AUDIODECODER;
319#endif
320#if !defined(BUILD_KODI_ADDON) || defined(ADDON_INSTANCE_VERSION_AUDIOENCODER_USED)
322 return ADDON_INSTANCE_VERSION_AUDIOENCODER;
323#endif
324#if !defined(BUILD_KODI_ADDON) || defined(ADDON_INSTANCE_VERSION_GAME_USED)
326 return ADDON_INSTANCE_VERSION_GAME;
327#endif
328#if !defined(BUILD_KODI_ADDON) || defined(ADDON_INSTANCE_VERSION_IMAGEDECODER_USED)
330 return ADDON_INSTANCE_VERSION_IMAGEDECODER;
331#endif
332#if !defined(BUILD_KODI_ADDON) || defined(ADDON_INSTANCE_VERSION_INPUTSTREAM_USED)
334 return ADDON_INSTANCE_VERSION_INPUTSTREAM;
335#endif
336#if !defined(BUILD_KODI_ADDON) || defined(ADDON_INSTANCE_VERSION_PERIPHERAL_USED)
338 return ADDON_INSTANCE_VERSION_PERIPHERAL;
339#endif
340#if !defined(BUILD_KODI_ADDON) || defined(ADDON_INSTANCE_VERSION_PVR_USED)
342 return ADDON_INSTANCE_VERSION_PVR;
343#endif
344#if !defined(BUILD_KODI_ADDON) || defined(ADDON_INSTANCE_VERSION_SCREENSAVER_USED)
346 return ADDON_INSTANCE_VERSION_SCREENSAVER;
347#endif
348#if !defined(BUILD_KODI_ADDON) || defined(ADDON_INSTANCE_VERSION_SHADERPRESET_USED)
350 return ADDON_INSTANCE_VERSION_SHADERPRESET;
351#endif
352#if !defined(BUILD_KODI_ADDON) || defined(ADDON_INSTANCE_VERSION_VFS_USED)
354 return ADDON_INSTANCE_VERSION_VFS;
355#endif
356#if !defined(BUILD_KODI_ADDON) || defined(ADDON_INSTANCE_VERSION_VISUALIZATION_USED)
358 return ADDON_INSTANCE_VERSION_VISUALIZATION;
359#endif
360#if !defined(BUILD_KODI_ADDON) || defined(ADDON_INSTANCE_VERSION_VIDEOCODEC_USED)
362 return ADDON_INSTANCE_VERSION_VIDEOCODEC;
363#endif
364 }
365 return "0.0.0";
366 }
367
376 inline const char* GetTypeMinVersion(int type)
377 {
378 switch (type)
379 {
380 /* addon global parts */
381 case ADDON_GLOBAL_MAIN:
382 return ADDON_GLOBAL_VERSION_MAIN_MIN;
383 case ADDON_GLOBAL_GUI:
384 return ADDON_GLOBAL_VERSION_GUI_MIN;
385 case ADDON_GLOBAL_GENERAL:
386 return ADDON_GLOBAL_VERSION_GENERAL_MIN;
387 case ADDON_GLOBAL_AUDIOENGINE:
388 return ADDON_GLOBAL_VERSION_AUDIOENGINE_MIN;
389 case ADDON_GLOBAL_FILESYSTEM:
390 return ADDON_GLOBAL_VERSION_FILESYSTEM_MIN;
391 case ADDON_GLOBAL_NETWORK:
392 return ADDON_GLOBAL_VERSION_NETWORK_MIN;
393 case ADDON_GLOBAL_TOOLS:
394 return ADDON_GLOBAL_VERSION_TOOLS_MIN;
395
396 /* addon type instances */
398 return ADDON_INSTANCE_VERSION_AUDIODECODER_MIN;
400 return ADDON_INSTANCE_VERSION_AUDIOENCODER_MIN;
402 return ADDON_INSTANCE_VERSION_GAME_MIN;
404 return ADDON_INSTANCE_VERSION_IMAGEDECODER_MIN;
406 return ADDON_INSTANCE_VERSION_INPUTSTREAM_MIN;
408 return ADDON_INSTANCE_VERSION_PERIPHERAL_MIN;
410 return ADDON_INSTANCE_VERSION_PVR_MIN;
412 return ADDON_INSTANCE_VERSION_SCREENSAVER_MIN;
414 return ADDON_INSTANCE_VERSION_SHADERPRESET_MIN;
416 return ADDON_INSTANCE_VERSION_VFS_MIN;
418 return ADDON_INSTANCE_VERSION_VISUALIZATION_MIN;
420 return ADDON_INSTANCE_VERSION_VIDEOCODEC_MIN;
421 }
422 return "0.0.0";
423 }
424
432 inline const char* GetTypeName(int type)
433 {
434 switch (type)
435 {
436 /* addon global parts */
437 case ADDON_GLOBAL_MAIN:
438 return "Addon";
439 case ADDON_GLOBAL_GUI:
440 return "GUI";
441 case ADDON_GLOBAL_GENERAL:
442 return "General";
443 case ADDON_GLOBAL_AUDIOENGINE:
444 return "AudioEngine";
445 case ADDON_GLOBAL_FILESYSTEM:
446 return "Filesystem";
447 case ADDON_GLOBAL_NETWORK:
448 return "Network";
449 case ADDON_GLOBAL_TOOLS:
450 return "Tools";
451
452 /* addon type instances */
454 return "AudioDecoder";
456 return "AudioEncoder";
458 return "Game";
460 return "ImageDecoder";
462 return "Inputstream";
464 return "Peripheral";
466 return "PVR";
468 return "ScreenSaver";
470 return "ShaderPreset";
472 return "Visualization";
474 return "VideoCodec";
475 }
476 return "unknown";
477 }
478
488 inline int GetTypeId(const char* name)
489 {
490 if (name)
491 {
492 if (strcmp(name, "addon") == 0)
493 return ADDON_GLOBAL_MAIN;
494 else if (strcmp(name, "general") == 0)
495 return ADDON_GLOBAL_GENERAL;
496 else if (strcmp(name, "gui") == 0)
497 return ADDON_GLOBAL_GUI;
498 else if (strcmp(name, "audioengine") == 0)
499 return ADDON_GLOBAL_AUDIOENGINE;
500 else if (strcmp(name, "filesystem") == 0)
501 return ADDON_GLOBAL_FILESYSTEM;
502 else if (strcmp(name, "network") == 0)
503 return ADDON_GLOBAL_NETWORK;
504 else if (strcmp(name, "tools") == 0)
505 return ADDON_GLOBAL_TOOLS;
506 else if (strcmp(name, "audiodecoder") == 0)
508 else if (strcmp(name, "audioencoder") == 0)
510 else if (strcmp(name, "game") == 0)
511 return ADDON_INSTANCE_GAME;
512 else if (strcmp(name, "imagedecoder") == 0)
514 else if (strcmp(name, "inputstream") == 0)
516 else if (strcmp(name, "peripheral") == 0)
518 else if (strcmp(name, "pvr") == 0)
519 return ADDON_INSTANCE_PVR;
520 else if (strcmp(name, "screensaver") == 0)
522 else if (strcmp(name, "shaderpreset") == 0)
524 else if (strcmp(name, "vfs") == 0)
525 return ADDON_INSTANCE_VFS;
526 else if (strcmp(name, "visualization") == 0)
528 else if (strcmp(name, "videocodec") == 0)
530 }
531 return -1;
532 }
533
534#ifdef __cplusplus
535 } /* namespace addon */
536 } /* namespace kodi */
537} /* extern "C" */
538#endif
539
540#endif /* !KODI_VERSIONS_H */
ADDON_TYPE
Definition versions.h:209
@ ADDON_INSTANCE_PVR
PVR client instance, see kodi::addon::CInstancePVRClient.
Definition versions.h:240
@ ADDON_INSTANCE_AUDIODECODER
Audio decoder instance, see kodi::addon::CInstanceAudioDecoder.
Definition versions.h:225
@ ADDON_INSTANCE_VISUALIZATION
Music visualization instance, see kodi::addon::CInstanceVisualization.
Definition versions.h:246
@ ADDON_INSTANCE_AUDIOENCODER
Audio encoder instance, see kodi::addon::CInstanceAudioEncoder.
Definition versions.h:228
@ ADDON_INSTANCE_SCREENSAVER
Screen saver instance, see kodi::addon::CInstanceScreensaver.
Definition versions.h:243
@ ADDON_INSTANCE_VFS
Virtual Filesystem (VFS) instance, see kodi::addon::CInstanceVFS.
Definition versions.h:249
@ ADDON_INSTANCE_INPUTSTREAM
Input stream instance, see kodi::addon::CInstanceInputStream.
Definition versions.h:234
@ ADDON_INSTANCE_VIDEOCODEC
Video codec instance, see kodi::addon::CInstanceVideoCodec.
Definition versions.h:255
@ ADDON_INSTANCE_PERIPHERAL
Peripheral instance, see kodi::addon::CInstancePeripheral.
Definition versions.h:237
@ ADDON_INSTANCE_SHADERPRESET
Shader preset instance, see kodi::addon::CInstanceShaderPreset.
Definition versions.h:258
@ ADDON_INSTANCE_GAME
Game instance, see kodi::addon::CInstanceGame.
Definition versions.h:231
@ ADDON_INSTANCE_IMAGEDECODER
Image decoder instance, see kodi::addon::CInstanceImageDecoder.
Definition versions.h:252