package/libnfc: add sub-options to enable individual drivers
authorLouis Aussedat <aussedat.louis@gmail.com>
Mon, 9 Dec 2019 21:59:23 +0000 (22:59 +0100)
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>
Sat, 14 Dec 2019 22:48:18 +0000 (23:48 +0100)
Until now, the arygon and pn53x_usb were unconditionally enabled, and
there were no options to choose other drivers. Therefore, we had
sub-options for each individual driver, keeping arygon and pn53x_usb
enabled by default to preserve backward compatibility.

Also, due to this, the BR2_TOOLCHAIN_HAS_THREADS dependency on the
libnfc package is no longer needed, and is only needed for some of the
sub-options.

Signed-off-by: Louis Aussedat <aussedat.louis@gmail.com>
[Thomas:
 - drop the default ""
 - remove the top-level HAS_THREADS dependency, and move it down to
   the sub-options that need it
 - improve commit log]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
package/libnfc/Config.in
package/libnfc/libnfc.mk

index c8fe251459bd68f0576cf5d6111a2b5f1be55411..014ab94ce8f8e7d373a78e2681411f1981f8f140 100644 (file)
@@ -1,8 +1,5 @@
 config BR2_PACKAGE_LIBNFC
        bool "libnfc"
-       depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
-       select BR2_PACKAGE_LIBUSB
-       select BR2_PACKAGE_LIBUSB_COMPAT
        help
          Public platform independent Near Field Communication (NFC)
          library.
@@ -11,6 +8,68 @@ config BR2_PACKAGE_LIBNFC
 
 if BR2_PACKAGE_LIBNFC
 
+config BR2_PACKAGE_LIBNFC_ACR122_PCSC
+       bool "acr122_pcsc driver"
+       depends on BR2_TOOLCHAIN_HAS_THREADS # pcsc-lite
+       depends on BR2_USE_MMU # pcsc-lite
+       depends on !BR2_STATIC_LIBS # pcsc-lite
+       select BR2_PACKAGE_PCSC_LITE
+       help
+         support for acr112_pcsc driver
+
+comment "acr122_pcsc driver needs a toolchain w/ threads, dynamic library"
+       depends on BR2_USE_MMU
+       depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
+
+config BR2_PACKAGE_LIBNFC_ACR122_USB
+       bool "acr122_usb driver"
+       depends on BR2_TOOLCHAIN_HAS_THREADS
+       select BR2_PACKAGE_LIBUSB
+       select BR2_PACKAGE_LIBUSB_COMPAT
+       help
+         support for acr122_usb driver
+
+comment "acr122_usb driver needs a toolchain w/ threads"
+       depends on !BR2_TOOLCHAIN_HAS_THREADS
+
+config BR2_PACKAGE_LIBNFC_ACR122S
+       bool "acr122s driver"
+       help
+         support for acr122s driver
+
+config BR2_PACKAGE_LIBNFC_ARYGON
+       bool "arygon driver"
+       default y
+       help
+         support for arygon driver
+
+config BR2_PACKAGE_LIBNFC_PN532_I2C
+       bool "pn532_i2c driver"
+       help
+         support for pn532_i2c driver
+
+config BR2_PACKAGE_LIBNFC_PN532_SPI
+       bool "pn532_spi driver"
+       help
+         support for pn532_spi driver
+
+config BR2_PACKAGE_LIBNFC_PN532_UART
+       bool "pn532_uart driver"
+       help
+         support for pn532_uart driver
+
+config BR2_PACKAGE_LIBNFC_PN53X_USB
+       bool "pn53x_usb driver"
+       default y
+       depends on BR2_TOOLCHAIN_HAS_THREADS
+       select BR2_PACKAGE_LIBUSB
+       select BR2_PACKAGE_LIBUSB_COMPAT
+       help
+         support for pn53x_usb driver
+
+comment "pn53x_usb driver needs a toolchain w/ threads"
+       depends on !BR2_TOOLCHAIN_HAS_THREADS
+
 config BR2_PACKAGE_LIBNFC_EXAMPLES
        bool "build libnfc examples"
        select BR2_PACKAGE_READLINE
index b13fd69d827257249eb91c910730823b220fe97c..ca8700484b200343caef8e40895263008247e86f 100644 (file)
@@ -12,10 +12,46 @@ LIBNFC_LICENSE_FILES = COPYING
 LIBNFC_AUTORECONF = YES
 LIBNFC_INSTALL_STAGING = YES
 
-LIBNFC_DEPENDENCIES = host-pkgconf libusb libusb-compat
+LIBNFC_DEPENDENCIES = host-pkgconf
 
 # N.B. The acr122 driver requires pcsc-lite.
-LIBNFC_CONF_OPTS = --with-drivers=arygon,pn53x_usb
+ifeq ($(BR2_PACKAGE_LIBNFC_ACR122_PCSC),y)
+LIBNFC_DRIVER_LIST += acr122_pcsc
+LIBNFC_DEPENDENCIES += pcsc-lite
+endif
+
+ifeq ($(BR2_PACKAGE_LIBNFC_ACR122_USB),y)
+LIBNFC_DRIVER_LIST += acr122_usb
+LIBNFC_DEPENDENCIES += libusb libusb-compat
+endif
+
+ifeq ($(BR2_PACKAGE_LIBNFC_ACR122S),y)
+LIBNFC_DRIVER_LIST += acr122s
+endif
+
+ifeq ($(BR2_PACKAGE_LIBNFC_ARYGON),y)
+LIBNFC_DRIVER_LIST += arygon
+endif
+
+ifeq ($(BR2_PACKAGE_LIBNFC_PN532_I2C),y)
+LIBNFC_DRIVER_LIST += pn532_i2c
+endif
+
+ifeq ($(BR2_PACKAGE_LIBNFC_PN532_SPI),y)
+LIBNFC_DRIVER_LIST += pn532_spi
+endif
+
+ifeq ($(BR2_PACKAGE_LIBNFC_PN532_UART),y)
+LIBNFC_DRIVER_LIST += pn532_uart
+endif
+
+ifeq ($(BR2_PACKAGE_LIBNFC_PN53X_USB),y)
+LIBNFC_DRIVER_LIST += pn53x_usb
+LIBNFC_DEPENDENCIES += libusb libusb-compat
+endif
+
+LIBNFC_CONF_OPTS = \
+       --with-drivers=$(subst $(space),$(comma),$(strip $(LIBNFC_DRIVER_LIST)))
 
 ifeq ($(BR2_PACKAGE_LIBNFC_EXAMPLES),y)
 LIBNFC_CONF_OPTS += --enable-example