{"action":"created","issue":{"url":"https://api.github.com/repos/xbmc/xbmc/issues/11833","repository_url":"https://api.github.com/repos/xbmc/xbmc","labels_url":"https://api.github.com/repos/xbmc/xbmc/issues/11833/labels{/name}","comments_url":"https://api.github.com/repos/xbmc/xbmc/issues/11833/comments","events_url":"https://api.github.com/repos/xbmc/xbmc/issues/11833/events","html_url":"https://github.com/xbmc/xbmc/pull/11833","id":213028038,"number":11833,"title":"Use spdlog for logging","user":{"login":"Montellese","id":75864,"avatar_url":"https://avatars2.githubusercontent.com/u/75864?v=3","gravatar_id":"","url":"https://api.github.com/users/Montellese","html_url":"https://github.com/Montellese","followers_url":"https://api.github.com/users/Montellese/followers","following_url":"https://api.github.com/users/Montellese/following{/other_user}","gists_url":"https://api.github.com/users/Montellese/gists{/gist_id}","starred_url":"https://api.github.com/users/Montellese/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Montellese/subscriptions","organizations_url":"https://api.github.com/users/Montellese/orgs","repos_url":"https://api.github.com/users/Montellese/repos","events_url":"https://api.github.com/users/Montellese/events{/privacy}","received_events_url":"https://api.github.com/users/Montellese/received_events","type":"User","site_admin":false},"labels":[{"id":276941522,"url":"https://api.github.com/repos/xbmc/xbmc/labels/Logging","name":"Logging","color":"009800","default":false},{"id":400751192,"url":"https://api.github.com/repos/xbmc/xbmc/labels/v18%20Leia","name":"v18 Leia","color":"fbca04","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/xbmc/xbmc/milestones/95","html_url":"https://github.com/xbmc/xbmc/milestone/95","labels_url":"https://api.github.com/repos/xbmc/xbmc/milestones/95/labels","id":2166828,"number":95,"title":"L 18.0-alpha1","description":"","creator":{"login":"MartijnKaijser","id":907436,"avatar_url":"https://avatars2.githubusercontent.com/u/907436?v=3","gravatar_id":"","url":"https://api.github.com/users/MartijnKaijser","html_url":"https://github.com/MartijnKaijser","followers_url":"https://api.github.com/users/MartijnKaijser/followers","following_url":"https://api.github.com/users/MartijnKaijser/following{/other_user}","gists_url":"https://api.github.com/users/MartijnKaijser/gists{/gist_id}","starred_url":"https://api.github.com/users/MartijnKaijser/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MartijnKaijser/subscriptions","organizations_url":"https://api.github.com/users/MartijnKaijser/orgs","repos_url":"https://api.github.com/users/MartijnKaijser/repos","events_url":"https://api.github.com/users/MartijnKaijser/events{/privacy}","received_events_url":"https://api.github.com/users/MartijnKaijser/received_events","type":"User","site_admin":false},"open_issues":7,"closed_issues":477,"state":"open","created_at":"2016-11-30T16:58:49Z","updated_at":"2017-03-10T08:24:02Z","due_on":"2017-03-31T07:00:00Z","closed_at":null},"comments":6,"created_at":"2017-03-09T12:51:56Z","updated_at":"2017-03-10T09:07:18Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/xbmc/xbmc/pulls/11833","html_url":"https://github.com/xbmc/xbmc/pull/11833","diff_url":"https://github.com/xbmc/xbmc/pull/11833.diff","patch_url":"https://github.com/xbmc/xbmc/pull/11833.patch"},"body":"This replaces our homemade logging implementation with [spdlog](https://github.com/gabime/spdlog) which is a header-only C++11 logging library which depends on the recently introduced [{fmt}](https://github.com/fmtlib/fmt) library (so we can use the exact same formatting style).\r\n\r\nI only tested this on Windows and Linux so far. It should compile on Android but I didn't runtime test it. OSX/iOS is completely untested. Please take a look at the following platform-specific interface implementations:\r\n* POXIS: https://github.com/xbmc/xbmc/commit/dccc02073c3ad9088b80348a6e44dc456155a9e3#diff-a862c7434b0614fad35e45406ab477d4\r\n* Darwin: https://github.com/xbmc/xbmc/commit/dccc02073c3ad9088b80348a6e44dc456155a9e3#diff-616ffcf8daa5bad68c294971c149117b\r\n* Android: https://github.com/xbmc/xbmc/commit/dccc02073c3ad9088b80348a6e44dc456155a9e3#diff-4de9b444ed50f7831abc986d45ef8fda\r\n* Windows: https://github.com/xbmc/xbmc/commit/dccc02073c3ad9088b80348a6e44dc456155a9e3#diff-26243219725e225f0e126ab73069f522\r\n\r\nFor Ubuntu there is a `libspdlog-dev` package available for Xenial at http://packages.ubuntu.com/xenial/libdevel/libspdlog-dev but I wasn't able to figure out which version it actually is because it says 1.6 but that's not a valid release of spdlog. ~~But I adjusted the code to work with it nonetheless (had to work around a missing feature in the Ubuntu package).~~ Unfortunately it is not at all compatible with version 0.11.0 I used for this PR because it is missing several include files and some essential methods in the logger implementation.\r\n\r\n## Motivation and Context\r\nThe advantage of a standard logging implementation is that we don't have to maintain our own implementation and they are well tested.\r\nspdlog comes with a set of sinks that cover all of our use cases (console/file/adb logging/VS/... logging) and more that we might want to use in the future (file rotation, ...). Furthermore it supports named loggers which should make logging in the code much easier and also make the log file easier to read because every class/instance follows the same guidelines (right now every class logs their class name differently or not at all). As an example I've implemented a named logger for the `CWebServer` class in 9ed2953de94f50cc578cfad1af18b873c33817e7.\r\n\r\nUsing templates I also managed to get rid of the difference between `Log` and `LogW` which makes the interface of `CLog` easier to use.\r\n\r\nI had to fix some log messages (all collected in 6f1e4a6fb0e29fb693270335f1084cb36d41a9b6) because they didn't match in type and therefore weren't type safe.\r\n\r\n## How Has This Been Tested?\r\nLocal testing on windows.\r\n\r\n## Types of change\r\n- [ ] Bug fix (non-breaking change which fixes an issue)\r\n- [x] New feature (non-breaking change which adds functionality)\r\n- [ ] Breaking change (fix or feature that would cause existing functionality to change)\r\n\r\n## Checklist:\r\n- [x] My code follows the [Code guidelines](https://codedocs.xyz/xbmc/xbmc/code_guidelines.html) of this project \r\n- [ ] My change requires a change to the documentation, either Doxygen or wiki\r\n- [ ] I have updated the documentation accordingly\r\n- [x] I have read the [CONTRIBUTING](https://github.com/xbmc/xbmc/blob/master/CONTRIBUTING.md) document\r\n- [ ] I have added tests to cover my change\r\n- [x] All new and existing tests passed\r\n"},"comment":{"url":"https://api.github.com/repos/xbmc/xbmc/issues/comments/285616036","html_url":"https://github.com/xbmc/xbmc/pull/11833#issuecomment-285616036","issue_url":"https://api.github.com/repos/xbmc/xbmc/issues/11833","id":285616036,"user":{"login":"MilhouseVH","id":805038,"avatar_url":"https://avatars3.githubusercontent.com/u/805038?v=3","gravatar_id":"","url":"https://api.github.com/users/MilhouseVH","html_url":"https://github.com/MilhouseVH","followers_url":"https://api.github.com/users/MilhouseVH/followers","following_url":"https://api.github.com/users/MilhouseVH/following{/other_user}","gists_url":"https://api.github.com/users/MilhouseVH/gists{/gist_id}","starred_url":"https://api.github.com/users/MilhouseVH/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MilhouseVH/subscriptions","organizations_url":"https://api.github.com/users/MilhouseVH/orgs","repos_url":"https://api.github.com/users/MilhouseVH/repos","events_url":"https://api.github.com/users/MilhouseVH/events{/privacy}","received_events_url":"https://api.github.com/users/MilhouseVH/received_events","type":"User","site_admin":false},"created_at":"2017-03-10T09:07:18Z","updated_at":"2017-03-10T09:07:18Z","body":"When building on Ubuntu, this PR now fails with:\r\n```[100%] Building CXX object CMakeFiles/kodi.dir/xbmc/platform/posix/main.cpp.o\r\n/usr/bin/ccache /usr/bin/c++   -DNPT_CONFIG_ENABLE_LOGGING -I/home/neil/projects/kodi.git -I/home/neil/projects/kodi.git/lib -I/home/neil/projects/kodi.git/lib/gtest/include -I/home/neil/projects/kodi.git/xbmc -I/home/neil/projects/kodi.git/xbmc/linux -I/home/neil/projects/kodi.git/xbmc/cores/VideoPlayer -I/home/neil/projects/kodi.git/build -I/usr/include/freetype2 -I/home/neil/projects/kodi.git/build/cpluff/include -I/home/neil/projects/kodi.git/build/libdvd/include -I/usr/local/include -I/usr/include/lzo -I/home/neil/projects/kodi.git/build/include -I/usr/include/libxml2 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/samba-4.0 -I/usr/include/python2.7 -I/usr/include/libdrm -I/home/neil/projects/kodi.git/lib/libUPnP -I/home/neil/projects/kodi.git/lib/libUPnP/Platinum/Source/Core -I/home/neil/projects/kodi.git/lib/libUPnP/Platinum/Source/Platinum -I/home/neil/projects/kodi.git/lib/libUPnP/Platinum/Source/Devices/MediaConnect -I/home/neil/projects/kodi.git/lib/libUPnP/Platinum/Source/Devices/MediaRenderer -I/home/neil/projects/kodi.git/lib/libUPnP/Platinum/Source/Devices/MediaServer -I/home/neil/projects/kodi.git/lib/libUPnP/Platinum/Source/Extras -I/home/neil/projects/kodi.git/lib/libUPnP/Neptune/Source/Core -I/home/neil/projects/kodi.git/lib/libUPnP/Neptune/Source/System/Posix  -std=c++11 -O3 -DNDEBUG -s   -D_LINUX -DTARGET_POSIX -DTARGET_LINUX -DHAVE_SSE=1 -DHAVE_SSE2=1 -DHAVE_SSE3=1 -DHAVE_SSSE3=1 -DHAVE_SSE4_1=1 -D__STDC_CONSTANT_MACROS -D_FILE_DEFINED -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_STD__U16_STRING=1 -DHAVE_STD__U32_STRING=1 -DHAVE_CHAR16_T=1 -DHAVE_CHAR32_T=1 -DHAVE_STDINT_H=1 -DHAS_BUILTIN_SYNC_ADD_AND_FETCH=1 -DHAS_BUILTIN_SYNC_SUB_AND_FETCH=1 -DHAS_BUILTIN_SYNC_VAL_COMPARE_AND_SWAP=1 -DHAVE_INOTIFY=1 -DHAVE_POSIX_FADVISE=1 -DHAVE_LOCALTIME_R=1 -DHAVE_INTTYPES_H=1 -DSPDLOG_FMT_EXTERNAL -DSPDLOG_DEBUG_ON -I/usr/include/fribidi -DFFMPEG_VER_SHA=\\\"3.1.6-Krypton\\\" -DUSE_STATIC_FFMPEG=1 -DHAVE_LIBMICROHTTPD=1 -DHAVE_MYSQL=1 -DHAVE_LIBSSH=1 -DHAVE_LIBXSLT=1 -DHAVE_ALSA=1 -DUSE_ALSA=1 -DHAVE_LIBUDEV=1 -DHAVE_DBUS=1 -DHAVE_LIBSMBCLIENT=1 -DHAVE_LIBPULSE=1 -DHAS_PYTHON=1 -DHAVE_LIBBLURAY=1 -DHAVE_LIBPLIST=1 -DHAVE_LIBNFS=1 -DHAVE_OPENSSL=1 -DUSE_UPNP=1 -DHAVE_XBMC_NONFREE=1 -DHAS_DVD_DRIVE -DLIRC_DEVICE=\\\"/dev/lircd\\\" -DHAVE_LIRC=1 -DHAVE_LIBGL=1 -DHAVE_X11=1 -DHAVE_LIBXRANDR=1 -DHAVE_LIBEGL=1 -DBIN_INSTALL_PATH=\\\"/usr/local/lib/kodi\\\" -DINSTALL_PATH=\\\"/usr/local/share/kodi\\\" -std=c++11 -o CMakeFiles/kodi.dir/xbmc/platform/posix/main.cpp.o -c /home/neil/projects/kodi.git/xbmc/platform/posix/main.cpp\r\n[100%] Linking CXX executable kodi.bin\r\n/usr/bin/cmake -E cmake_link_script CMakeFiles/kodi.dir/link.txt --verbose=1\r\n/usr/bin/ccache /home/neil/projects/kodi.git/build/ffmpeg-link-wrapper /usr/bin/c++  -std=c++11 -O3 -DNDEBUG -s   -fuse-ld=gold CMakeFiles/kodi.dir/xbmc/platform/posix/main.cpp.o -o kodi.bin -rdynamic -Wl,--whole-archive build/network/httprequesthandler/python/network_httprequesthandlers_python.a build/network/httprequesthandler/network_httprequesthandlers.a build/network/upnp/network_upnp.a build/upnp/libupnp.a build/build/swig/libpython_binding.a build/interfaces/python/python_interface.a build/interfaces/legacy/wsgi/legacy_interface_wsgi.a build/interfaces/legacy/legacy_interface.a build/rendering/gl/rendering_gl.a build/unrarxlib/libunrarxlib.a build/network/dacp/network_dacp.a build/cdrip/cdrip.a build/posix/platform_posix.a build/windowing/X11/windowing_X11.a build/filesystem/posix/filesystem_posix.a build/storage/linux/storage_linux.a build/powermanagement/linux/powermanagement_linux.a build/peripherals/bus/linux/peripherals_bus_linux.a build/network/linux/network_linux.a build/input/touch/generic/input_touch_generic.a build/input/touch/input_touch.a build/input/linux/input_linux.a build/linuxsupport/linuxsupport.a build/cores/VideoPlayer/videorenderers/shaders/videoshaders.a build/cores/VideoPlayer/videorenderers/videorenderers.a build/cores/VideoPlayer/process/process.a build/cores/VideoPlayer/subtitles/dvdsubtitles.a build/cores/VideoPlayer/inputstreams/dvdinputstreams.a build/cores/VideoPlayer/demuxers/dvddemuxers.a build/cores/VideoPlayer/codecs/video/dvdvideocodecs.a build/cores/VideoPlayer/codecs/overlay/dvdoverlaycodecs.a build/cores/VideoPlayer/codecs/audio/dvdaudiocodecs.a build/cores/VideoPlayer/codecs/dvdcodecs.a build/cores/VideoPlayer/VideoPlayer.a build/video/windows/video_windows.a build/video/jobs/video_jobs.a build/video/dialogs/video_dialogs.a build/video/video.a build/windows/windows.a build/windowing/windowing.a build/view/view.a build/utils/utils.a build/threads/threads.a build/storage/storage.a build/rendering/rendering.a build/programs/programs.a build/powermanagement/powermanagement.a build/playlists/playlists.a build/platform/platform_common.a build/pictures/pictures.a build/messagingHelpers/messagingHelpers.a build/messaging/messaging.a build/media/media.a build/listproviders/listproviders.a build/input/mouse/generic/input_mouse_generic.a build/input/mouse/input_mouse.a build/input/keyboard/generic/input_keyboard_generic.a build/input/keyboard/input_keyboard.a build/input/joysticks/generic/input_joystick_generic.a build/input/joysticks/dialogs/input_joystick_dialogs.a build/input/joysticks/input_joystick.a build/input/input.a build/guilib/guilib.a build/epg/epg.a build/dialogs/dialogs.a build/dbwrappers/dbwrappers.a build/commons/commons.a build/addonCallbacks_PVR/addonInterface_PVR.a build/addonCallbacks_Peripheral/addonInterface_Peripheral.a build/addonCallbacks_InputStream/addonInterface_InputStream.a build/addonCallbacks_GUI/addonInterface_GUI.a build/addonCallbacks_Game/addonCallbacks_Game.a build/addonCallbacks_Codec/addonInterface_Codec.a build/addonCallbacks_AudioEngine/addonInterface_AudioEngine.a build/addonCallbacks_AudioDSP/addonInterface_AudioDSP.a build/addonCallbacks_Addon/addonInterface_Addon.a build/addonsBinaryInterfaces/addonsBinaryInterfaces.a build/addons/addons.a build/xbmc/xbmc.a build/settings/windows/settings_windows.a build/settings/lib/settings_lib.a build/settings/dialogs/settings_dialogs.a build/settings/settings.a build/pvr/windows/pvr_windows.a build/pvr/timers/pvr_timers.a build/pvr/recordings/pvr_recordings.a build/pvr/dialogs/pvr_dialogs.a build/pvr/channels/pvr_channels.a build/pvr/addons/pvr_addons.a build/pvr/pvr.a build/profiles/windows/profiles_windows.a build/profiles/dialogs/profiles_dialogs.a build/profiles/profiles.a build/peripherals/dialogs/peripherals_dialogs.a build/peripherals/devices/peripherals_devices.a build/peripherals/bus/virtual/peripheral_bus_virtual.a build/peripherals/bus/peripherals_bus.a build/peripherals/addons/peripherals_addons.a build/peripherals/peripherals.a build/network/websocket/network_websockets.a build/network/network.a build/music/windows/music_windows.a build/music/tags/music_tags.a build/music/infoscanner/music_infoscanner.a build/music/dialogs/music_dialogs.a build/music/music.a build/interfaces/json-rpc/jsonrpc_interface.a build/interfaces/info/info_interface.a build/interfaces/generic/generic_interface.a build/interfaces/builtins/interfaces_builtins.a build/interfaces/interfaces.a build/games/windows/gameswindows.a build/games/tags/gametags.a build/games/ports/gameports.a build/games/dialogs/gamedialogs.a build/games/controllers/windows/games_controller_windows.a build/games/controllers/guicontrols/games_controller_guicontrols.a build/games/controllers/dialogs/games_controller_dialogs.a build/games/controllers/games_controller.a build/games/addons/savestates/gamesavestates.a build/games/addons/playback/gameplayback.a build/games/addons/gameaddons.a build/games/games.a build/filesystem/musicdatabase/musicdatabasedirectory.a build/filesystem/videodatabase/videodatabasedirectory.a build/filesystem/filesystem.a build/kissfft/kissfft.a build/events/windows/events_windows.a build/events/events.a build/cores/RetroPlayer/retroplayer.a build/cores/playercorefactory/playercorefactory.a build/cores/paplayer/paplayer.a build/cores/externalplayer/externalplayer.a build/cores/dll-loader/exports/util/exports_utils.a build/cores/dll-loader/exports/dllexports.a build/cores/dll-loader/dllloader.a build/cores/audioengine/audioengine.a build/cores/cores.a -Wl,--no-whole-archive libkodi.a -lpthread -lsqlite3 -lfreetype -lpcrecpp -lpcre build/libdvd/lib/libdvdnav.a build/libdvd/lib/libdvdread.a build/libdvd/lib/libdvdcss.a -ltinyxml -lyajl -lcdio /usr/local/lib/libfmt.a -llzo2 -lfribidi -ltag build/lib/libcrossguid.a -luuid -lz -lmicrohttpd -lmicrohttpd -lgcrypt -lgnutls -lp11-kit -lgmp -lhogweed -lgmp -lnettle -ltasn1 -lidn -lp11-kit -lz -lmysqlclient -lssh -lxslt -lxml2 -lasound -ludev -ldbus-1 -lsmbclient -lpulse -lpulse-mainloop-glib -lcap -lpython2.7 -lpthread -ldl -lutil -lpython2.7 -lssl -lcrypto -lGL -lGLU -lX11 -lXext -lXrandr -ldrm -lEGL build/network/httprequesthandler/python/network_httprequesthandlers_python.a build/network/httprequesthandler/network_httprequesthandlers.a build/network/upnp/network_upnp.a build/build/swig/libpython_binding.a build/interfaces/python/python_interface.a build/interfaces/legacy/wsgi/legacy_interface_wsgi.a build/interfaces/legacy/legacy_interface.a build/rendering/gl/rendering_gl.a build/unrarxlib/libunrarxlib.a build/network/dacp/network_dacp.a build/cdrip/cdrip.a build/posix/platform_posix.a build/windowing/X11/windowing_X11.a build/filesystem/posix/filesystem_posix.a build/storage/linux/storage_linux.a build/powermanagement/linux/powermanagement_linux.a build/peripherals/bus/linux/peripherals_bus_linux.a build/network/linux/network_linux.a build/input/touch/generic/input_touch_generic.a build/input/touch/input_touch.a build/input/linux/input_linux.a build/linuxsupport/linuxsupport.a build/cores/VideoPlayer/videorenderers/shaders/videoshaders.a build/cores/VideoPlayer/videorenderers/videorenderers.a build/cores/VideoPlayer/process/process.a build/cores/VideoPlayer/subtitles/dvdsubtitles.a build/cores/VideoPlayer/inputstreams/dvdinputstreams.a build/cores/VideoPlayer/demuxers/dvddemuxers.a build/cores/VideoPlayer/codecs/video/dvdvideocodecs.a build/cores/VideoPlayer/codecs/overlay/dvdoverlaycodecs.a build/cores/VideoPlayer/codecs/audio/dvdaudiocodecs.a build/cores/VideoPlayer/codecs/dvdcodecs.a build/cores/VideoPlayer/VideoPlayer.a build/video/windows/video_windows.a build/video/jobs/video_jobs.a build/video/dialogs/video_dialogs.a build/video/video.a build/windows/windows.a build/windowing/windowing.a build/view/view.a build/utils/utils.a build/threads/threads.a build/storage/storage.a build/rendering/rendering.a build/programs/programs.a build/powermanagement/powermanagement.a build/playlists/playlists.a build/platform/platform_common.a build/pictures/pictures.a build/messagingHelpers/messagingHelpers.a build/messaging/messaging.a build/media/media.a build/listproviders/listproviders.a build/input/mouse/generic/input_mouse_generic.a build/input/mouse/input_mouse.a build/input/keyboard/generic/input_keyboard_generic.a build/input/keyboard/input_keyboard.a build/input/joysticks/generic/input_joystick_generic.a build/input/joysticks/dialogs/input_joystick_dialogs.a build/input/joysticks/input_joystick.a build/input/input.a build/guilib/guilib.a build/epg/epg.a build/dialogs/dialogs.a build/dbwrappers/dbwrappers.a build/commons/commons.a build/addonCallbacks_PVR/addonInterface_PVR.a build/addonCallbacks_Peripheral/addonInterface_Peripheral.a build/addonCallbacks_InputStream/addonInterface_InputStream.a build/addonCallbacks_GUI/addonInterface_GUI.a build/addonCallbacks_Game/addonCallbacks_Game.a build/addonCallbacks_Codec/addonInterface_Codec.a build/addonCallbacks_AudioEngine/addonInterface_AudioEngine.a build/addonCallbacks_AudioDSP/addonInterface_AudioDSP.a build/addonCallbacks_Addon/addonInterface_Addon.a build/addonsBinaryInterfaces/addonsBinaryInterfaces.a build/addons/addons.a build/xbmc/xbmc.a build/settings/windows/settings_windows.a build/settings/lib/settings_lib.a build/settings/dialogs/settings_dialogs.a build/settings/settings.a build/pvr/windows/pvr_windows.a build/pvr/timers/pvr_timers.a build/pvr/recordings/pvr_recordings.a build/pvr/dialogs/pvr_dialogs.a build/pvr/channels/pvr_channels.a build/pvr/addons/pvr_addons.a build/pvr/pvr.a build/profiles/windows/profiles_windows.a build/profiles/dialogs/profiles_dialogs.a build/profiles/profiles.a build/peripherals/dialogs/peripherals_dialogs.a build/peripherals/devices/peripherals_devices.a build/peripherals/bus/virtual/peripheral_bus_virtual.a build/peripherals/bus/peripherals_bus.a build/peripherals/addons/peripherals_addons.a build/peripherals/peripherals.a build/network/websocket/network_websockets.a build/network/network.a build/music/windows/music_windows.a build/music/tags/music_tags.a build/music/infoscanner/music_infoscanner.a build/music/dialogs/music_dialogs.a build/music/music.a build/interfaces/json-rpc/jsonrpc_interface.a build/interfaces/info/info_interface.a build/interfaces/generic/generic_interface.a build/interfaces/builtins/interfaces_builtins.a build/interfaces/interfaces.a build/games/windows/gameswindows.a build/games/tags/gametags.a build/games/ports/gameports.a build/games/dialogs/gamedialogs.a build/games/controllers/windows/games_controller_windows.a build/games/controllers/guicontrols/games_controller_guicontrols.a build/games/controllers/dialogs/games_controller_dialogs.a build/games/controllers/games_controller.a build/games/addons/savestates/gamesavestates.a build/games/addons/playback/gameplayback.a build/games/addons/gameaddons.a build/games/games.a build/filesystem/musicdatabase/musicdatabasedirectory.a build/filesystem/videodatabase/videodatabasedirectory.a build/filesystem/filesystem.a build/upnp/libupnp.a build/kissfft/kissfft.a build/events/windows/events_windows.a build/events/events.a build/cores/RetroPlayer/retroplayer.a build/cores/playercorefactory/playercorefactory.a build/cores/paplayer/paplayer.a build/cores/externalplayer/externalplayer.a build/cores/dll-loader/exports/util/exports_utils.a build/cores/dll-loader/exports/dllexports.a build/cores/dll-loader/dllloader.a build/cores/audioengine/audioengine.a build/cores/cores.a -lgmp -lhogweed -lnettle -ltasn1 -lidn -lz -lmysqlclient -lssh -lxslt -lxml2 -lasound -ludev -ldbus-1 -lsmbclient -lpulse -lpulse-mainloop-glib -lcap -lpython2.7 -lpthread -ldl -lutil -lpython2.7 -lssl -lcrypto -lGL -lGLU -lX11 -lXext -lXrandr -ldrm -lEGL\r\nbuild/games/addons/gameaddons.a(GameClient.cpp.o):GameClient.cpp:function GAME::CGameClient::NormalizeAudio(GAME::IGameAudioCallback*): error: undefined reference to 'GAME::CGameClientTiming::MAX_CORRECTION_FACTOR_PERCENT'\r\ncollect2: error: ld returned 1 exit status\r\nCMakeFiles/kodi.dir/build.make:431: recipe for target 'kodi.bin' failed\r\nmake[2]: *** [kodi.bin] Error 1\r\nmake[2]: Leaving directory '/home/neil/projects/kodi.git'\r\nCMakeFiles/Makefile2:506: recipe for target 'CMakeFiles/kodi.dir/all' failed\r\nmake[1]: *** [CMakeFiles/kodi.dir/all] Error 2\r\nmake[1]: Leaving directory '/home/neil/projects/kodi.git'\r\nMakefile:138: recipe for target 'all' failed\r\nmake: *** [all] Error 2\r\n```"}}
{"actor":{"display_login":"MilhouseVH"}}