From patchwork Mon Jul 27 16:30:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gwenhael Goavec-Merou X-Patchwork-Id: 1337078 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=busybox.net (client-ip=140.211.166.138; helo=whitealder.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=trabucayre.com Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BFlj36vtmz9sRN for ; Tue, 28 Jul 2020 02:32:55 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id C4574869BF; Mon, 27 Jul 2020 16:32:53 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Vk3sfq8Azj3t; Mon, 27 Jul 2020 16:32:51 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by whitealder.osuosl.org (Postfix) with ESMTP id A6BA187758; Mon, 27 Jul 2020 16:32:51 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 911391BF387 for ; Mon, 27 Jul 2020 16:32:49 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 8B65787758 for ; Mon, 27 Jul 2020 16:32:49 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eg2uEqd5kesy for ; Mon, 27 Jul 2020 16:32:48 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from smtp2-g21.free.fr (smtp2-g21.free.fr [212.27.42.2]) by whitealder.osuosl.org (Postfix) with ESMTPS id D719D869BF for ; Mon, 27 Jul 2020 16:32:47 +0000 (UTC) Received: from x230.trabucayre.com (unknown [IPv6:2a01:e34:efc8:1080:3e97:eff:fe89:644f]) by smtp2-g21.free.fr (Postfix) with ESMTP id 019122003A4; Mon, 27 Jul 2020 18:32:42 +0200 (CEST) From: Gwenhael Goavec-Merou To: buildroot@buildroot.org Date: Mon, 27 Jul 2020 18:30:39 +0200 Message-Id: <20200727163039.15873-1-gwenj@trabucayre.com> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Subject: [Buildroot] [PATCH v2] package/librtlsdr: bump to last commit X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jason Pruitt , Gwenhael Goavec-Merou Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" From: Gwenhael Goavec-Merou 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 --- Changes v1 -> v2: - update BR2_PACKAGE_LIBRTLSDR_ZEROCOPY option. Now it's enabled by default. - Message updated to inform about potential crash. --- ...sable_shared_library_target_in_build.patch | 94 ++++++++++++------- package/librtlsdr/Config.in | 8 ++ package/librtlsdr/librtlsdr.hash | 2 +- package/librtlsdr/librtlsdr.mk | 8 +- 4 files changed, 75 insertions(+), 37 deletions(-) diff --git a/package/librtlsdr/0001-disable_shared_library_target_in_build.patch b/package/librtlsdr/0001-disable_shared_library_target_in_build.patch index b9f53d2393..376aa23344 100644 --- a/package/librtlsdr/0001-disable_shared_library_target_in_build.patch +++ b/package/librtlsdr/0001-disable_shared_library_target_in_build.patch @@ -1,44 +1,46 @@ -From d47e3aed12414be59bf77177c93853ec4b24d705 Mon Sep 17 00:00:00 2001 -From: Fabrice Fontaine -Date: Sat, 2 Jun 2018 16:53:36 +0200 +From c8878472bf84c656979ea1d07e7ed55b0aa2c939 Mon Sep 17 00:00:00 2001 +From: Gwenhael Goavec-Merou +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 Signed-off-by: Fabrice Fontaine +Signed-off-by: Gwenhael Goavec-Merou --- - 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 diff --git a/package/librtlsdr/Config.in b/package/librtlsdr/Config.in index c2bf1a9fb1..238659a782 100644 --- a/package/librtlsdr/Config.in +++ b/package/librtlsdr/Config.in @@ -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" diff --git a/package/librtlsdr/librtlsdr.hash b/package/librtlsdr/librtlsdr.hash index e7b0e84f4a..920a755033 100644 --- a/package/librtlsdr/librtlsdr.hash +++ b/package/librtlsdr/librtlsdr.hash @@ -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 diff --git a/package/librtlsdr/librtlsdr.mk b/package/librtlsdr/librtlsdr.mk index 500ccc5d17..16f2632789 100644 --- a/package/librtlsdr/librtlsdr.mk +++ b/package/librtlsdr/librtlsdr.mk @@ -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.