From 472bcd414a6cd3fe71d78a331f4b321427f9ecda Mon Sep 17 00:00:00 2001 From: Sylvain Munaut Date: Thu, 6 Jun 2013 22:52:40 +0200 Subject: [PATCH 1/3] firmware/build: Use gnu99 coding convention C99 doesn't require/support anonymous struct/unions in some GCC versions and those are used a lot. Signed-off-by: Sylvain Munaut --- firmware/common/Makefile_inc.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firmware/common/Makefile_inc.mk b/firmware/common/Makefile_inc.mk index 4b51f8fa..8917beda 100644 --- a/firmware/common/Makefile_inc.mk +++ b/firmware/common/Makefile_inc.mk @@ -50,7 +50,7 @@ OBJDUMP = $(PREFIX)-objdump GDB = $(PREFIX)-gdb TOOLCHAIN_DIR := $(shell dirname `which $(CC)`)/../$(PREFIX) -CFLAGS += -std=c99 -Os -g3 -Wall -Wextra -I$(LIBOPENCM3)/include -I../common \ +CFLAGS += -std=gnu99 -Os -g3 -Wall -Wextra -I$(LIBOPENCM3)/include -I../common \ -fno-common -mcpu=cortex-m4 -mthumb -MD \ -mfloat-abi=hard -mfpu=fpv4-sp-d16 \ $(HACKRF_OPTS) From 02509f2f44093f65181a61eca31ba05451c62b31 Mon Sep 17 00:00:00 2001 From: Sylvain Munaut Date: Thu, 6 Jun 2013 22:53:57 +0200 Subject: [PATCH 2/3] libhackrf: Add a pkgconfig .pc file to allow auto-discovery of prefix Shamelessly copied from librtlsdr. Signed-off-by: Sylvain Munaut --- host/libhackrf/CMakeLists.txt | 32 ++++++++++++++++++++++++++++++++ host/libhackrf/libhackrf.pc.in | 11 +++++++++++ 2 files changed, 43 insertions(+) create mode 100644 host/libhackrf/libhackrf.pc.in diff --git a/host/libhackrf/CMakeLists.txt b/host/libhackrf/CMakeLists.txt index fba159ce..649d861c 100644 --- a/host/libhackrf/CMakeLists.txt +++ b/host/libhackrf/CMakeLists.txt @@ -43,6 +43,38 @@ include_directories(${LIBUSB_INCLUDE_DIR} ${THREADS_PTHREADS_INCLUDE_DIR}) add_subdirectory(src) +######################################################################## +# Create Pkg Config File +######################################################################## +FOREACH(inc ${LIBUSB_INCLUDE_DIR}) + LIST(APPEND HACKRF_PC_CFLAGS "-I${inc}") +ENDFOREACH(inc) + +# use space-separation format for the pc file +STRING(REPLACE ";" " " HACKRF_PC_CFLAGS "${HACKRF_PC_CFLAGS}") +STRING(REPLACE ";" " " HACKRF_PC_LIBS "${HACKRF_PC_LIBS}") + +# unset these vars to avoid hard-coded paths to cross environment +IF(CMAKE_CROSSCOMPILING) + UNSET(HACKRF_PC_CFLAGS) + UNSET(HACKRF_PC_LIBS) +ENDIF(CMAKE_CROSSCOMPILING) + +set(prefix ${CMAKE_INSTALL_PREFIX}) +set(exec_prefix \${prefix}) +set(libdir \${exec_prefix}/lib) +set(includedir \${prefix}/include) + +CONFIGURE_FILE( + ${CMAKE_CURRENT_SOURCE_DIR}/libhackrf.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/libhackrf.pc +@ONLY) + +INSTALL( + FILES ${CMAKE_CURRENT_BINARY_DIR}/libhackrf.pc + DESTINATION lib/pkgconfig +) + ######################################################################## # Create uninstall target ######################################################################## diff --git a/host/libhackrf/libhackrf.pc.in b/host/libhackrf/libhackrf.pc.in new file mode 100644 index 00000000..5c9c18d4 --- /dev/null +++ b/host/libhackrf/libhackrf.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: HackRF Library +Description: C Utility Library +Version: @VERSION@ +Cflags: -I${includedir}/ @HACKRF_PC_CFLAGS@ +Libs: -L${libdir} -lhackrf +Libs.private: @HACKRF_PC_LIBS@ From fce132d266bff2139e54345c2ac36866c6f9b627 Mon Sep 17 00:00:00 2001 From: Sylvain Munaut Date: Thu, 6 Jun 2013 22:55:06 +0200 Subject: [PATCH 3/3] libhackrf: Fix early exit of transfer thread in case of syscal interruption libusb can return LIBUSB_ERROR_INTERRUPTED and it's not really an error, just a sign some syscall got interrupted by something. Don't abort on that. Signed-off-by: Sylvain Munaut --- host/libhackrf/src/hackrf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/host/libhackrf/src/hackrf.c b/host/libhackrf/src/hackrf.c index 410f8f3b..67c2d97b 100644 --- a/host/libhackrf/src/hackrf.c +++ b/host/libhackrf/src/hackrf.c @@ -894,7 +894,7 @@ static void* transfer_threadproc(void* arg) while( (device->streaming) && (do_exit == false) ) { error = libusb_handle_events_timeout(g_libusb_context, &timeout); - if( error != 0 ) + if( (error != 0) && (error != LIBUSB_ERROR_INTERRUPTED) ) { device->streaming = false; }