package/librtlsdr: bump to last commit
authorGwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
Mon, 27 Jul 2020 16:30:39 +0000 (18:30 +0200)
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>
Thu, 6 Aug 2020 08:02:53 +0000 (10:02 +0200)
Last official release is 2 years ago.

Current master branch provides fixes and improvements:
- fix crash with usbfs mmap with usb controler has no DMA support and kernel < 5.6 [1].
- better SDR dongle configuration

This patch:
- bump librtlsdr to d794155ba65796a76cd0a436f9709f4601509320 (2020/03/18)
- adapt 0001-disable_shared_library_target_in_build.patch
  (http://lists.osmocom.org/pipermail/osmocom-sdr/2020-May/002075.html)
- add option to enable/disable zerocopy buffer on non arm platform

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/usb/core?h=v5.8-rc3&id=a0e710a7def471b8eb779ff551fc27701da49599

Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
package/librtlsdr/0001-disable_shared_library_target_in_build.patch
package/librtlsdr/Config.in
package/librtlsdr/librtlsdr.hash
package/librtlsdr/librtlsdr.mk

index b9f53d23933010e345534751391608d56cc40534..376aa233442a3bbaafae1b44a7c39b7d6d723a79 100644 (file)
@@ -1,44 +1,46 @@
-From d47e3aed12414be59bf77177c93853ec4b24d705 Mon Sep 17 00:00:00 2001
-From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
-Date: Sat, 2 Jun 2018 16:53:36 +0200
+From c8878472bf84c656979ea1d07e7ed55b0aa2c939 Mon Sep 17 00:00:00 2001
+From: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
+Date: Fri, 15 May 2020 16:14:48 +0200
 Subject: [PATCH] disable shared library target in build
 
 Disable shared library target if BUILD_SHARED_LIBS if OFF.
 
 Patch retrieved from
-https://git.buildroot.net/buildroot/tree/package/librtlsdr/0001-disable_shared_library_target_in_build.patch?h=2018.05
+https://git.buildroot.net/buildroot/tree/package/librtlsdr/0001-disable_shared_library_target_in_build.patch?h=2020.02.x
 
-Patch has been updated to work with 0.5.4 and to be able to keep current
+Patch has been updated to work with master and to be able to keep current
 behavior of building shared and static version of library if
 BUILD_SHARED_LIBS and BUILD_STATIC_LIBS are both set.
 Moreover, if BUILD_STATIC_LIBS is OFF, only shared version of library
 will be install.
 
-[Upstream status: https://github.com/steve-m/librtlsdr/pull/46]
+[Upstream status: http://lists.osmocom.org/pipermail/osmocom-sdr/2020-May/002075.html]
 
 Signed-off-by: Yuvaraj Patil <yuvaraj.patil@wipro.com>
 Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
 ---
- src/CMakeLists.txt | 24 ++++++++++++++++--------
- 1 file changed, 16 insertions(+), 8 deletions(-)
+ src/CMakeLists.txt | 30 +++++++++++++++++++++---------
+ 1 file changed, 21 insertions(+), 9 deletions(-)
 
 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index 07d64ab..2b7cbae 100644
+index 33faee7..d82fc87 100644
 --- a/src/CMakeLists.txt
 +++ b/src/CMakeLists.txt
-@@ -47,16 +47,22 @@ ENDIF(MSVC)
+@@ -18,6 +18,8 @@
  ########################################################################
  # Setup shared library variant
  ########################################################################
 +option(BUILD_SHARED_LIBS "Build shared library" ON)
 +if(BUILD_SHARED_LIBS)
- add_library(rtlsdr_shared SHARED ${rtlsdr_srcs})
- target_link_libraries(rtlsdr_shared ${LIBUSB_LIBRARIES})
- set_target_properties(rtlsdr_shared PROPERTIES DEFINE_SYMBOL "rtlsdr_EXPORTS")
- set_target_properties(rtlsdr_shared PROPERTIES OUTPUT_NAME rtlsdr)
- set_target_properties(rtlsdr_shared PROPERTIES SOVERSION ${MAJOR_VERSION})
- set_target_properties(rtlsdr_shared PROPERTIES VERSION ${LIBVER})
-+list(APPEND rtlsdr_lib rtlsdr_shared)
+ add_library(rtlsdr SHARED librtlsdr.c
+   tuner_e4k.c tuner_fc0012.c tuner_fc0013.c tuner_fc2580.c tuner_r82xx.c)
+ target_link_libraries(rtlsdr PkgConfig::LIBUSB)
+@@ -30,10 +32,14 @@ set_target_properties(rtlsdr PROPERTIES OUTPUT_NAME rtlsdr)
+ set_target_properties(rtlsdr PROPERTIES SOVERSION ${MAJOR_VERSION})
+ set_target_properties(rtlsdr PROPERTIES VERSION ${LIBVER})
+ generate_export_header(rtlsdr)
++list(APPEND rtlsdr_lib rtlsdr)
 +endif()
  
  ########################################################################
@@ -46,60 +48,82 @@ index 07d64ab..2b7cbae 100644
  ########################################################################
 +option(BUILD_STATIC_LIBS "Build static library" ON)
 +if(BUILD_STATIC_LIBS)
- add_library(rtlsdr_static STATIC ${rtlsdr_srcs})
- target_link_libraries(rtlsdr_static ${LIBUSB_LIBRARIES})
- set_property(TARGET rtlsdr_static APPEND PROPERTY COMPILE_DEFINITIONS "rtlsdr_STATIC" )
-@@ -64,6 +70,8 @@ if(NOT WIN32)
- # Force same library filename for static and shared variants of the library
+ add_library(rtlsdr_static STATIC librtlsdr.c
+   tuner_e4k.c tuner_fc0012.c tuner_fc0013.c tuner_fc2580.c tuner_r82xx.c)
+ target_link_libraries(rtlsdr_static PkgConfig::LIBUSB)
+@@ -47,6 +53,8 @@ if(NOT WIN32)
  set_target_properties(rtlsdr_static PROPERTIES OUTPUT_NAME rtlsdr)
  endif()
+ generate_export_header(rtlsdr_static)
 +list(APPEND rtlsdr_lib rtlsdr_static)
 +endif()
  
  ########################################################################
- # Setup libraries used in executables
-@@ -91,33 +99,33 @@ add_executable(rtl_fm rtl_fm.c)
- add_executable(rtl_eeprom rtl_eeprom.c)
+ # Set up Windows DLL resource files
+@@ -90,37 +98,37 @@ add_executable(rtl_eeprom rtl_eeprom.c)
  add_executable(rtl_adsb rtl_adsb.c)
  add_executable(rtl_power rtl_power.c)
--set(INSTALL_TARGETS rtlsdr_shared rtlsdr_static rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power)
-+set(INSTALL_TARGETS ${rtlsdr_lib} rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power)
+ add_executable(rtl_biast rtl_biast.c)
+-set(INSTALL_TARGETS rtlsdr rtlsdr_static rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power rtl_biast)
++set(INSTALL_TARGETS ${rtlsdr_lib} rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power rtl_biast)
  
--target_link_libraries(rtl_sdr rtlsdr_shared convenience_static
+-target_link_libraries(rtl_sdr rtlsdr convenience_static
 +target_link_libraries(rtl_sdr ${rtlsdr_lib} convenience_static
      ${LIBUSB_LIBRARIES}
      ${CMAKE_THREAD_LIBS_INIT}
  )
--target_link_libraries(rtl_tcp rtlsdr_shared convenience_static
+-target_link_libraries(rtl_tcp rtlsdr convenience_static
 +target_link_libraries(rtl_tcp ${rtlsdr_lib} convenience_static
      ${LIBUSB_LIBRARIES}
      ${CMAKE_THREAD_LIBS_INIT}
  )
--target_link_libraries(rtl_test rtlsdr_shared convenience_static
+-target_link_libraries(rtl_test rtlsdr convenience_static
 +target_link_libraries(rtl_test ${rtlsdr_lib} convenience_static
      ${LIBUSB_LIBRARIES}
      ${CMAKE_THREAD_LIBS_INIT}
  )
--target_link_libraries(rtl_fm rtlsdr_shared convenience_static
+-target_link_libraries(rtl_fm rtlsdr convenience_static
 +target_link_libraries(rtl_fm ${rtlsdr_lib} convenience_static
      ${LIBUSB_LIBRARIES}
      ${CMAKE_THREAD_LIBS_INIT}
  )
--target_link_libraries(rtl_eeprom rtlsdr_shared convenience_static
+-target_link_libraries(rtl_eeprom rtlsdr convenience_static
 +target_link_libraries(rtl_eeprom ${rtlsdr_lib} convenience_static
      ${LIBUSB_LIBRARIES}
      ${CMAKE_THREAD_LIBS_INIT}
  )
--target_link_libraries(rtl_adsb rtlsdr_shared convenience_static
+-target_link_libraries(rtl_adsb rtlsdr convenience_static
 +target_link_libraries(rtl_adsb ${rtlsdr_lib} convenience_static
      ${LIBUSB_LIBRARIES}
      ${CMAKE_THREAD_LIBS_INIT}
  )
--target_link_libraries(rtl_power rtlsdr_shared convenience_static
+-target_link_libraries(rtl_power rtlsdr convenience_static
 +target_link_libraries(rtl_power ${rtlsdr_lib} convenience_static
      ${LIBUSB_LIBRARIES}
      ${CMAKE_THREAD_LIBS_INIT}
  )
+-target_link_libraries(rtl_biast rtlsdr convenience_static
++target_link_libraries(rtl_biast ${rtlsdr_lib} convenience_static
+     ${LIBUSB_LIBRARIES}
+     ${CMAKE_THREAD_LIBS_INIT}
+ )
+@@ -156,12 +164,16 @@ endif()
+ ########################################################################
+ # Install built library files & utilities
+ ########################################################################
++if(BUILD_SHARED_LIBS)
+ install(TARGETS rtlsdr EXPORT RTLSDR-export
+   LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} # .so/.dylib file
+   )
++endif()
++if(BUILD_STATIC_LIBS)
+ install(TARGETS rtlsdr_static EXPORT RTLSDR-export
+   ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} # .so/.dylib file
+   )
++endif()
+ install(TARGETS rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power
+   DESTINATION ${CMAKE_INSTALL_BINDIR}
+   )
 -- 
-2.14.1
+2.26.2
 
index c2bf1a9fb10e73f96557233164d247bb64778202..238659a78246aa22e8a9743ced3f7643c7048177 100644 (file)
@@ -18,6 +18,14 @@ config BR2_PACKAGE_LIBRTLSDR_DETACH_DRIVER
          automatically detach any kernel driver associated to the
          RTL2832U USB device on startup if one is loaded.
 
+config BR2_PACKAGE_LIBRTLSDR_ZEROCOPY
+       bool "Enable usbfs zero-copy support"
+       default y
+       help
+         This option allows to use kernel usbfs mmap instead
+         of buffers in userspace. If you experiment crash with
+         kernel < 5.6, disable this option.
+
 endif
 
 comment "librtlsdr needs a toolchain w/ threads"
index e7b0e84f4a7130493dde27a250ee5f69a94a3baf..920a755033125911e6e29d52406b206d6ed3ec6e 100644 (file)
@@ -1,4 +1,4 @@
 # Locally calculated
-sha256 80a5155f3505bca8f1b808f8414d7dcd7c459b662a1cde84d3a2629a6e72ae55  librtlsdr-0.6.0.tar.gz
+sha256 78c20031287017d057941640dcf05cb7666cfedcfad1b4a1186ed00cabfabc2f  librtlsdr-d794155ba65796a76cd0a436f9709f4601509320.tar.gz
 # License file, locally calculated
 sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING
index 500ccc5d177766dbbabfd405bd2bf2f7f4c61a93..16f2632789afad76c77f51a47fc2e7f4f0ca06f2 100644 (file)
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-LIBRTLSDR_VERSION = 0.6.0
+LIBRTLSDR_VERSION = d794155ba65796a76cd0a436f9709f4601509320
 LIBRTLSDR_SITE = $(call github,steve-m,librtlsdr,$(LIBRTLSDR_VERSION))
 LIBRTLSDR_LICENSE = GPL-2.0+
 LIBRTLSDR_LICENSE_FILES = COPYING
@@ -28,6 +28,12 @@ ifeq ($(BR2_PACKAGE_LIBRTLSDR_DETACH_DRIVER),y)
 LIBRTLSDR_CONF_OPTS += -DDETACH_KERNEL_DRIVER=1
 endif
 
+ifeq ($(BR2_PACKAGE_LIBRTLSDR_ZEROCOPY),y)
+LIBRTLSDR_CONF_OPTS += -DENABLE_ZEROCOPY=ON
+else
+LIBRTLSDR_CONF_OPTS += -DENABLE_ZEROCOPY=OFF
+endif
+
 # In case of static-lib-only builds, CMake's FindThreads.cmake code tries to
 # get the right flags, checking first for -lpthreads, then -lpthread, and lastly
 # for -pthread.