Bug 9596 - KODI: --enable-lirc needs "HAVE_LIRC" compiler definition to use the lirc subsystem
Summary: KODI: --enable-lirc needs "HAVE_LIRC" compiler definition to use the lirc sub...
Status: RESOLVED FIXED
Alias: None
Product: buildroot
Classification: Unclassified
Component: Other (show other bugs)
Version: unspecified
Hardware: All Linux
: P5 normal
Target Milestone: ---
Assignee: Bernd Kuhls
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-01-18 03:48 UTC by lipkegu
Modified: 2017-05-07 14:07 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description lipkegu 2017-01-18 03:48:03 UTC
When compiling kodi, with option --enable-lirc, the Lirc subsystem doesnt get initialized when "-DHAVE_LIRC isnt set. normaly --enable-lirc should set it but it doesnt.

Reproduce case: https://github.com/xbmc/xbmc/blob/8d4a5bba55638dfd0bdc5e7de34f3e5293f99933/xbmc/input/ButtonTranslator.cpp#L601

I removed the "HAVE_LIRC" definition from the code and the result was clear:

01:00:26.239 T:3016212480    INFO: Loading special://xbmc/system/Lircmap.xml
01:00:26.263 T:3016212480    INFO: * Adding remote mapping for device 'mceusb'
01:00:26.265 T:3016212480    INFO: * Adding remote mapping for device 'XboxDVDDongle'
01:00:26.265 T:3016212480    INFO: * Adding remote mapping for device 'Microsoft_Xbox'
01:00:26.266 T:3016212480    INFO: * Adding remote mapping for device 'PinnacleSysPCTVRemote'
01:00:26.266 T:3016212480    INFO: * Adding remote mapping for device 'anysee'
01:00:26.267 T:3016212480    INFO: * Adding remote mapping for device 'iMON-PAD'
01:00:26.267 T:3016212480    INFO: * Adding remote mapping for device 'Antec_Veris_RM200'
01:00:26.268 T:3016212480    INFO: * Adding remote mapping for device 'MCE_via_iMON'
01:00:26.268 T:3016212480    INFO: * Adding remote mapping for device 'TwinHanRemote'
01:00:26.269 T:3016212480    INFO: * Adding remote mapping for device 'linux-input-layer'
01:00:26.270 T:3016212480    INFO: * Linking remote mapping for 'linux-input-layer' to 'cx23885_remote'
01:00:26.270 T:3016212480    INFO: * Adding remote mapping for device 'mediacenter'
01:00:26.271 T:3016212480    INFO: * Adding remote mapping for device 'devinput'
01:00:26.276 T:3016212480    INFO: Loading special://profile/Lircmap.xml
01:00:26.282 T:3016212480    INFO: * Adding remote mapping for device 'mceusb'
01:00:26.283 T:3016212480    INFO: * Adding remote mapping for device 'devinput'
Comment 1 lipkegu 2017-01-18 03:59:16 UTC
Solution:

ifeq ($(BR2_PACKAGE_KODI_LIRC),y)
KODI_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags --libs egl` -DHAVE_LIRC"
KODI_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) `$(PKG_CONFIG_HOST_BINARY) --cflags --libs egl` -DHAVE_LIRC"
KODI_CONF_OPTS += --enable-lirc
else
KODI_CONF_OPTS += --disable-lirc
endif
Comment 2 Thomas Petazzoni 2017-02-26 14:28:18 UTC
I don't see why this is needed: when --enable-lirc is passed, and the lirc library is found, the configure script defines HAVE_LIRC:

AC_ARG_ENABLE([lirc],
  [AS_HELP_STRING([--disable-lirc],
  [disable lirc support (default is enabled)])],
  [AC_MSG_RESULT("Lirc disabled")],
  [AC_DEFINE([HAVE_LIRC], [1], ["Lirc enabled"])])

And then, when HAVE_LIRC is defined, HAS_LIRC gets defined by xbmc/system.h:

#ifdef HAVE_LIRC
#define HAS_LIRC
#endif

And HAS_LIRC is the define being tested at the code you point to.
Comment 3 Thomas Petazzoni 2017-02-26 15:56:53 UTC
Ok, so I had a closer look, and the configure.ac code is completely wrong:

AC_ARG_ENABLE([lirc],
  [AS_HELP_STRING([--disable-lirc],
  [disable lirc support (default is enabled)])],
  [AC_MSG_RESULT("Lirc disabled")],
  [AC_DEFINE([HAVE_LIRC], [1], ["Lirc enabled"])])

So what this does is:

 * If a --enable-lirc or --disable-lirc option is passed, prints "Lirc disabled"

 * If none of --enable-lirc or --disable-lirc is passed, it defines HAVE_LIRC.

As you can see, this is completely bogus. It should instead be something like:

AC_ARG_ENABLE([lirc],
  [AS_HELP_STRING([--disable-lirc],
  [disable lirc support (default is enabled)])],
  [use_lirc=$enableval])

if "${use_lirc}" = "yes" ; then
  AC_DEFINE([HAVE_LIRC], [1], ["Lirc enabled"])]
fi
Comment 4 Bernd Kuhls 2017-05-07 12:11:05 UTC
Meanwhile Kodi was bumped to 17.1, the build system was changed to CMake. Please try again and report whether the bug is solved or not, thanks!
Comment 5 Thomas Petazzoni 2017-05-07 14:07:49 UTC
OK, let's mark the bug as fixed. The bug submitter can reopen the bug if it still exists with Kodi 17.