Merge pull request #357 from ra1nb0w/cmake

New cmake build
This commit is contained in:
f4exb 2019-05-31 03:47:33 +02:00 committed by GitHub
commit da82954e74
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
413 changed files with 4990 additions and 379320 deletions

84
.appveyor.yml Normal file
View File

@ -0,0 +1,84 @@
---
version: "{build}-{branch}"
clone_depth: 1
# maybe we can add arm
platform:
- x64
matrix:
fast_finish: false
environment:
matrix:
- TARGET: vs2017gui
APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
# RelWithDebInfo
configuration: Release
CMAKE_CUSTOM_OPTIONS: "-DENABLE_EXTERNAL_LIBRARIES=OFF"
CMAKE_GENERATOR: "Visual Studio 15 2017 Win64"
- TARGET: ubuntu1804sse41
APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804
CMAKE_CUSTOM_OPTIONS: "-DFORCE_SSE41=ON"
- TARGET: ubuntu1804server
APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804
CMAKE_CUSTOM_OPTIONS: "-DBUILD_GUI=OFF"
- TARGET: ubuntu1804external
APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804
CMAKE_CUSTOM_OPTIONS: "-DENABLE_EXTERNAL_LIBRARIES=ON"
# image:
# - &linux Ubuntu1804
# - matrix: { only: [ image: *linux ] }
for:
- matrix:
only:
- APPVEYOR_BUILD_WORKER_IMAGE: 'Visual Studio 2017'
cache:
- C:\ProgramData\chocolatey\bin
- C:\ProgramData\chocolatey\lib
#- C:\Tools\vcpkg\installed
install:
# the clone doesn't get submodules
- ps: git submodule update --init --recursive
before_build:
- ps: cmake . -G $(CMAKE_GENERATOR) $(CMAKE_CUSTOM_OPTIONS)
build:
parallel: true
project: $(APPVEYOR_BUILD_FOLDER)\$(APPVEYOR_PROJECT_NAME).sln
#test_script:
#- ps: '%APPVEYOR_BUILD_FOLDER%\%CONFIGURATION%\tests.exe'
- matrix:
only:
- APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu1804
cache:
- $HOME/external/
install:
- sh: sudo apt-get update
# not sdrplay with soapysdr; libairspyhf-dev is too old (no lna)
- sh: |
sudo apt-get -y install build-essential cmake git \
devscripts fakeroot debhelper libfftw3-dev qtbase5-dev libqt5opengl5-dev \
qttools5-dev qttools5-dev-tools qtmultimedia5-dev libqt5multimedia5-plugins \
libusb-1.0-0-dev libboost-all-dev librtlsdr-dev libasound2-dev libopencv-dev \
libsqlite3-dev libxml2-dev bison flex ffmpeg libpostproc-dev libavcodec-dev libavformat-dev \
libopus-dev libcodec2-dev libairspy-dev libhackrf-dev \
librtlsdr-dev liblimesuite-dev libbladerf-dev libsoapysdr-dev libiio-dev \
autoconf automake libtool
- sh: if [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_cm256cc.sh; fi
- sh: if [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_mbelib.sh; fi
- sh: if [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_serialdv.sh; fi
- sh: if [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_dsdcc.sh; fi
- sh: bash cmake/ci/build_perseus-sdr.sh
- sh: bash cmake/ci/build_xtrx-sdr.sh
- sh: bash cmake/ci/build_airspyhf.sh
before_build:
- sh: bash -c export
- sh: bash -c pwd
build_script:
- sh: bash cmake/ci/build_sdrangel.sh
test_script:
# debian build path
- sh: ./obj-x86_64-linux-gnu/sdrangelbench
deploy: off

1
.gitignore vendored
View File

@ -22,3 +22,4 @@ debian/debhelper-build-stamp
obj-x86_64-linux-gnu/*
**/venv*/
*.pyc
.DS_Store

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "external/windows"]
path = external/windows
url = https://github.com/ra1nb0w/sdrangel-windows-libraries.git

87
.travis.yml Normal file
View File

@ -0,0 +1,87 @@
matrix:
include:
- os: linux
dist: xenial
- os: linux
dist: xenial
env: CMAKE_CUSTOM_OPTIONS="-DBUILD_GUI=OFF"
- os: linux
dist: xenial
env: CMAKE_CUSTOM_OPTIONS="-DENABLE_EXTERNAL_LIBRARIES=ON"
- os: osx
osx_image: xcode10.2
- os: osx
osx_image: xcode9.4
- os: osx
osx_image: xcode8.3
- os: osx
osx_image: xcode7.3
git:
submodules: false
cache:
directories:
- $HOME/.macports-ci-ccache
language: cpp
addons:
apt:
update: true
# TODO need packages per distro
packages:
# needed by debuild
- build-essential
- cmake
- git
- devscripts
- fakeroot
- debhelper
- libfftw3-dev
- qtbase5-dev
- libqt5opengl5-dev
- qttools5-dev
- qttools5-dev-tools
- qtmultimedia5-dev
- libqt5multimedia5-plugins
- libusb-1.0-0-dev
- libboost-all-dev
- librtlsdr-dev
- libasound2-dev
- libopencv-dev
- libsqlite3-dev
- libxml2-dev
- bison
- flex
- ffmpeg
- libavcodec-dev
- libavformat-dev
- libopus-dev
- libcodec2-dev
- libairspy-dev
- libhackrf-dev
- librtlsdr-dev
install:
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then curl -LO https://raw.githubusercontent.com/GiovanniBussi/macports-ci/master/macports-ci; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then source ./macports-ci install; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then source macports-ci ccache; fi
# libiio disabled otherwise OpenBLAS compilation timeout
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sudo port -N -k install libiconv fftw-3-single libusb boost opencv ffmpeg libopus SoapySDR airspy airspyhf bladerf hackrf limesuite rtl-sdr SoapySDRPlay SoapyRemote SoapyAudio; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sudo port -N -k install perseus-sdr codec2 cm256cc; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then sudo port -N -k install dsdcc +mbelib; fi
# macOS 10.11 doesn't support newest Qt
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then if [[ "$TRAVIS_OSX_IMAGE" == "xcode7.3" ]]; then sudo port -N -k install qt59-qtmultimedia qt59-qttools; else sudo port -N -k install qt5-qtmultimedia qt5-qttools; fi; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then source macports-ci ccache --save; fi
# use codec2 from repository
#- if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_codec2.sh; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_cm256cc.sh; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_mbelib.sh; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_serialdv.sh; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_dsdcc.sh; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_perseus-sdr.sh; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_xtrx-sdr.sh; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ ! "${CMAKE_CUSTOM_OPTIONS}" =~ "ENABLE_EXTERNAL_LIBRARIES=ON" ]]; then bash cmake/ci/build_airspyhf.sh; fi
script:
- bash -c export
- bash -c pwd
- bash cmake/ci/build_sdrangel.sh
env:
- CMAKE_CUSTOM_OPTIONS="-DFORCE_SSE41=ON -DBUNDLE=ON -DENABLE_PACK_MIRSDRAPI=ON"

780
CHANGELOG Normal file
View File

@ -0,0 +1,780 @@
sdrangel (4.8.0-1) unstable; urgency=medium
* Local output plugin
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 10 May 2019 20:44:06 +0100
sdrangel (4.7.2-1) unstable; urgency=medium
* Unique DeviceAPI interface for sources and sinks
* REST API: fixes over last version
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 08 May 2019 22:14:18 +0100
sdrangel (4.7.1-1) unstable; urgency=medium
* SSB modulator: fixed compressor overloading
* REST API: tx, nbStreams and streamIndex names change
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Tue, 07 May 2019 14:14:18 +0100
sdrangel (4.7.0-1) unstable; urgency=medium
* New Frequency Tracker Rx channel plugin
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 05 May 2019 16:14:18 +0100
sdrangel (4.6.0-1) unstable; urgency=medium
* New LocalSink and LocalInput plugin pair to use sub basebands internally
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 02 May 2019 11:14:18 +0100
sdrangel (4.5.6-1) unstable; urgency=medium
* Remote channel sink: implemented decimation with possible center shift. Issue #331
* Remote input: fixed version display
* DSD demod: save PLL enable and autio mute in preset
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 28 Apr 2019 20:14:18 +0100
sdrangel (4.5.5-1) unstable; urgency=medium
* FreeDV: fixes in REST API
* LimeSDR: fixed Rx and Tx antenna labels for Lime mini
* HackRF output: fixed setting of Fc pos from REST API
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 20 Apr 2019 20:14:18 +0100
sdrangel (4.5.4-1) unstable; urgency=medium
* Fixed RTL-SDR gain setting sequence. Fixes issue #321.
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 05 Apr 2019 20:14:18 +0100
sdrangel (4.5.3-1) unstable; urgency=medium
* Fixed HackRF Rx/Tx frequency setting. Fixes issue #318.
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Mon, 01 Apr 2019 20:14:18 +0100
sdrangel (4.5.2-1) unstable; urgency=medium
* Send device and channel index in reverse API. Implements issue #312.
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Mon, 25 Mar 2019 20:14:18 +0100
sdrangel (4.5.1-1) unstable; urgency=medium
* DATV demod: implemented audio processing
* Perseus: fixed cold start flawed init sequence
* PlutoSDR: recognize networked devices
* FreeDV: internal FreeDV library to facilitate packaging
* Fixed some constness in qrtplib
* Fixed bug in Channel Analyzer deserialization. Fixes issue #314.
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 22 Mar 2019 20:14:18 +0100
sdrangel (4.5.0-1) unstable; urgency=medium
* Implemented a FreeDV modulator and demodulator
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 03 Mar 2019 20:14:18 +0100
sdrangel (4.4.5-1) unstable; urgency=medium
* UDP/RTP audio: added G722 and Opus support
* Debian build: fixed missing sources in dsdcc, libiio and limesuite
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Tue, 19 Feb 2019 22:14:18 +0100
sdrangel (4.4.4-1) unstable; urgency=medium
* SoapySDR: fixed some GUI issues
* UDP/RTP audio: added decimation and PCM A-law and Mu-law compression
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 15 Feb 2019 10:14:18 +0100
sdrangel (4.4.3-1) unstable; urgency=medium
* Migration of SDRDaemon* devices to Remote* devices
* PlutoSDR: get LP filter bandwidth from device
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 03 Feb 2019 10:14:18 +0100
sdrangel (4.4.2-1) unstable; urgency=medium
* Migration of Daemon* channels to Remote* channels
* XTRX: fixed GPS status retrieval
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 25 Jan 2019 21:14:18 +0100
sdrangel (4.4.1-1) unstable; urgency=medium
* AirspyHF: Implemented new settings that come along newer version of libairspyhf
* Fixed many glitches in the REST API device settings handling
* SoapySDR: on preset load match on serial or driver id for SoapySDR devices
* SerialDV: corrected cmake find module and improved SerialDV support error messages
* Make the settings location appear in the log and in the about panel of the GUI also
* Temptative XTRX fixes
* REST API examples: Added a randomize channel colors utility as a way to answer to issue #275
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 02 Jan 2019 21:14:18 +0100
sdrangel (4.4.0-1) unstable; urgency=medium
* XTRX support
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 02 Jan 2019 21:14:18 +0100
sdrangel (4.3.2-1) unstable; urgency=medium
* Reverse API to forward device and channel changes to external application
* Funcube dongle: fixed segfault when stopping device
* Channel analzyer: fixed rational downsampler range
* SoapySDR support: fixed memory leaks
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 09 Dec 2018 21:14:18 +0100
sdrangel (4.3.1-1) unstable; urgency=medium
* RTL-SDR: offset tuning support
* SoapySDR support: 250 ms minimum timeout
* LimeSDR REST API: support GPIO
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 30 Nov 2018 21:14:18 +0100
sdrangel (4.3.0-1) unstable; urgency=medium
* SoapySDR support
* BladeRF2 corrections
* Scope fixes possible seg fault and correct memory processing
* FCDPro/FCDProPlus critical fixes to make it work again
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 22 Nov 2018 21:14:18 +0100
sdrangel (4.2.4-1) unstable; urgency=medium
* LimeSDR: use LimeSuite 18.10.0 for builds
* DSD demod: use 1 dB steps for squelch
* Scope: fixed some trigger issues. Fixes issue #233
* Scope: implemented trigger holdoff. May fix more trigger issues.
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 27 Oct 2018 21:14:18 +0200
sdrangel (4.2.3-1) unstable; urgency=medium
* Scope: fixed channel rate affecting scope in memory mode. Issue #227
* Spectrum: limit depth to 1000 when in moving average mode to avoid RAM exhaustion
* Spectrum: reworked phosphor display controls. Re-implements issue #207
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 19 Oct 2018 21:14:18 +0200
sdrangel (4.2.2-1) unstable; urgency=medium
* Spectrum: option to get max over a number of FFTs. Implements issue #207
* File Input: fixed wrong times displays due to 32 bit integer ovevlow. Issue #206
* File Input: implemented play loop and playback acceleration
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 14 Oct 2018 21:14:18 +0200
sdrangel (4.2.1-1) unstable; urgency=medium
* FileRecord improvement with robust header and some fixes. Fixes issue #206
* BladeRF2 MO Tx fix so that the two channels are used effectively. Fixes issue #225
* NFM demod: set squelch step to 1 dB
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 10 Oct 2018 21:14:18 +0200
sdrangel (4.2.0-1) unstable; urgency=medium
* LibbladeRF 2.0 support with BladeRF Micro
* Scope: corrected trace memory index position
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 7 Oct 2018 21:14:18 +0200
sdrangel (4.1.0-1) unstable; urgency=medium
* Integrated SDRdaemon with a pair of new channel plugins
* Exchanged UDP sink and source names for better consistency
* Fixed AudioFifo to prevent deadlocks. Fixes issue #210
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 16 Sep 2018 21:14:18 +0200
sdrangel (4.0.7-1) unstable; urgency=medium
* Scope: removed old scope objects
* Web API: reduced HTTP server debug messages
* Sink plugins: corrected name getters and setters
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 19 Aug 2018 21:14:18 +0200
sdrangel (4.0.6-1) unstable; urgency=medium
* Web API: RTL-SDR: fixed RF bandwidth setting
* Web API: enhanced DV serial and AM demod interfaces
* Web API: fixed bug in PUT/PATCH of modulators not setting differentially
* Fixed power display going to floor value in some demods
* SSB modulator: fixed sample not reset when no modulation is present
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Tue, 07 Aug 2018 19:14:18 +0200
sdrangel (4.0.5-1) unstable; urgency=medium
* Web API: handle pre-flight requests
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 22 Jul 2018 09:14:18 +0200
sdrangel (4.0.4-1) unstable; urgency=medium
* Fixed PlutoSDR output sample width. Fixes issue #198
* Web API: implemented CORS
* Fix preset group delete not removing presets from the preset window
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 18 Jul 2018 19:14:18 +0200
sdrangel (4.0.3-1) unstable; urgency=medium
* Spectrum: linear mode for spectrum
* Scope: fixed power display overlay
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 08 Jul 2018 15:14:18 +0200
sdrangel (4.0.2-1) unstable; urgency=medium
* Spectrum: added averaging
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 01 Jul 2018 21:14:18 +0200
sdrangel (4.0.1-1) unstable; urgency=medium
* DSD demod: added NXDN support
* DATV demod: include it only if FFmpeg > 3.1 is installed
* Fixes for Arch. Manual merge of pull request #183
* Scope: new magnitude squared projection mainly for radioastronomy
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 23 Jun 2018 09:14:18 +0200
sdrangel (4.0.0-1) unstable; urgency=medium
* Finalization of REST API and server instance
* Removal of old ChannelAnalyzer and TCPSrc plugins
* Renamed Channel Analyzer NG to Channel Analyzer
* DATV demod: added missing AVUTIL cmake variables
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 09 Jun 2018 20:14:18 +0200
sdrangel (3.14.7-1) unstable; urgency=medium
* ChanelAnalyzerNG: added PLL option and source selection with auto correlation
* RTL-SDR: fixed inf/sup decimators
* AM demod: syncrhronous AM detection option
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 20 May 2018 20:14:18 +0200
sdrangel (3.14.6-1) unstable; urgency=medium
* Fixed keyboard input for negative values on realtive integer value dials
* Get rid of ugly native dialogs
* Inf/Sup frequency shift scheme change to be closer to device center frequency
* PlutoSDR input: fixed Inf/Sup frequency shift calculation
* File record default file name with ISO datetime stamp
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 11 May 2018 20:14:18 +0200
sdrangel (3.14.5-1) unstable; urgency=medium
* DSD demod: allow audio rates integer multiples of 8k other than 48k
* Added a benchmark program testing decimators
* Optimization of decimators using even/odd technique
* SSB mod: fixed channel unregistration
* AM demod: fixed delayed squelch
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 06 May 2018 20:14:18 +0200
sdrangel (3.14.4-1) unstable; urgency=medium
* AM demod: squelch buffer to open at start of valid squelch
* NFM demod: same as AM with squelch noise tail cut
* SSB demod: squelch buffer to cut squelch noise tail
* DSD demod: squelch buffer to open at start of valid squelch not loosing any samples
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 22 Apr 2018 17:14:18 +0200
sdrangel (3.14.3-1) unstable; urgency=medium
* LimeSDR: compiled with LimeSuite release 18.04.1
* LimeSDR: implemented transverter dialog (issue #157)
* UDP source and sink: make sure audio samples are always on 16 bits
* UDP source and sink: dialog elements for address and port
* Reviewed FFT destruction in many channel sources and sinks (issue #159)
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 20 Apr 2018 20:14:18 +0200
sdrangel (3.14.2-1) unstable; urgency=medium
* Web API: settings and report for all channel Tx plugins
* Server: AirspyHF, BladeRF and all channel Tx plugins support
* PVS-Studio static analysis corrections (4)
* NFM demod: fixed AF squelch and audio sample rate handling
* BFM demod: fixed segfault in RDS parser
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 15 Apr 2018 12:14:18 +0200
sdrangel (3.14.1-1) unstable; urgency=medium
* NFM: fixed lowpass filter initialization (CTCSS)
* DSD demod: set FM deviation independent from RF bandwidth
* DSD demod: implemented DMR negative with DSDcc v1.7.5
* DSD demod: implemented dialog to view the log of status text messages
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 01 Apr 2018 12:14:18 +0200
sdrangel (3.14.0-1) unstable; urgency=medium
* New audio devices management
* DATV demod: fixed message handling and thus screen initialization issue
* Removed UDP/RTP copy audio from channel sink plugins entirely
* Removed UDP address and port from Channel marker
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 30 Mar 2018 16:14:18 +0200
sdrangel (3.13.1-1) unstable; urgency=medium
* Web API: settings and report enry points for AM demod and AirspyHF
* Web API: client Python script scanner example
* LimeSDR: fixed channelA/B frequency setting with latest LimeSuite
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 25 Mar 2018 06:14:18 +0100
sdrangel (3.13.0-1) unstable; urgency=medium
* DATV (Digital Amateur TV) demodulator.
* Option to use RTP protocol for UDP audio for AM, NFM, SSB, WFM.
* LimeSDR: show NCO and center frequency actual values
* DSD demod: new simplified symbol scope display. Reworked GUI.
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 11 Mar 2018 06:14:18 +0100
sdrangel (3.12.0-1) unstable; urgency=medium
* Perseus support.
* 24 bit Rx DSP Debian builds
* DC and IQ correction fixes
* AirspyHF: fall back to official library support
* Test source: implemented phase imbalance
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 11 Feb 2018 12:14:18 +0100
sdrangel (3.11.1-1) unstable; urgency=medium
* Replaced hardcoded bit scaling literals by defines. 24 bit sample option.
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 28 Jan 2018 12:14:18 +0100
sdrangel (3.11.0-1) unstable; urgency=medium
* AirspyHF: support
* Refactored 8 bit samples shifting during decimation (RTL-SDR and HackRF Rx)
* RTL-SDR: implemented RF filter control (tuner bandwidth)
* Airspy, BladeRF, HackRF, PlutoSDR, RTLSDR, SDRPlay: fix for no decimation
* Test source input plugin for test of software internals
* GUI: show REST API URL in about dialog
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 20 Jan 2018 12:14:18 +0100
sdrangel (3.10.1-1) unstable; urgency=medium
* LimeSDR: fixed segfault when stopping one device in multiple stream confguration
* PlutoSDR: fixed segfault when stopping one device in multiple stream confguration
* Channel plugins: apply initial channel settings at construction and start
* SSB demod: refactored decimator filtering
* FileSource: fixed initialization of do apply settings flag possibly preventing start
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 07 Jan 2018 23:14:18 +0100
sdrangel (3.10.0-1) unstable; urgency=medium
* Implemented external command handling from the GUI
* AM, SSB demodulators and SSB modulator: fix sample rate handling
* Enhancements to presets processing and GUI
* Improved build and system info logging
* Web API: added function to set device set focus (GUI only)
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 07 Jan 2018 09:14:18 +0100
sdrangel (3.9.1-1) unstable; urgency=medium
* Transmission: make source channels working concurrently in multiple channel
* Transmission: connect source channel directly to device FIFO in single channel
* NFM, WFM modulators and UDP sink: fixes
* DSD demodulator: use lower cutoff for optional audio high pass filter
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Tue, 02 Jan 2018 18:14:18 +0100
sdrangel (3.9.0-1) unstable; urgency=medium
* Server: proof of concept
* DSD demodulator: added optional high pass filter on audio (uese dsdcc v1.7.3)
* Down/Up channelizers: enqeue MsgChannelizerNotification to sample sink/source
* Separate channel sample rate and offset frequency this data from settings
* Use specific method to apply channelizer sample rate and frequency offset changes
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 30 Dec 2017 17:14:18 +0100
sdrangel (3.8.6-1) unstable; urgency=medium
* LimeSDR: fixed second channel solo or first one streaming
* Web API: implemented some device plugins methods: RTLSDR, Lime
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 10 Dec 2017 12:14:18 +0100
sdrangel (3.8.5-1) unstable; urgency=medium
* SSB mod/demod: improve LSB/USB experience
* Web API: online static documentation page
* Web API: implemented all main window methods
* LimeSDR: fixed analog LP filter setting
* LimeSDR: builds done with LimeSuite commit 0167e64 to suport LimeSDR mini
* Debian: added installation of udev rules in postinst script
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 02 Dec 2017 12:14:18 +0100
sdrangel (3.8.4-1) unstable; urgency=medium
* Optimize channel marker signal handling. Applied to all mods and demods
* Fixed value dials direct digits setting
* Implemented minimal version of web API sever
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 18 Nov 2017 12:14:18 +0100
sdrangel (3.8.3-1) unstable; urgency=medium
* ChannelAnalyzerNG: fixed GUI displays when channel sample rate changes
* SSB demod: fixed low cutoff channel marker display
* LimeSDR: increased start/stop stream wait time to 50ms
* New logging system with optional copy to files
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 12 Nov 2017 18:14:18 +0100
sdrangel (3.8.2-1) unstable; urgency=medium
* WFM Demod: fixed segfault due to sequence of actions in demod constructor
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 08 Nov 2017 18:14:18 +0100
sdrangel (3.8.1-1) unstable; urgency=medium
* SSB Mod: refactored bandwidths settings and fixed segfault
* LimeSDR: implemented external clock reference input option
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 05 Nov 2017 18:14:18 +0100
sdrangel (3.8.0-1) unstable; urgency=medium
* Redesigned the device handling to accomodate multi channel devices like LimeSDR
* Refactoring: Separate DeviceAPI from the GUI
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 02 Nov 2017 18:14:18 +0100
sdrangel (3.7.8-1) unstable; urgency=medium
* PlutoSDR: restored and fixed Tx support
* LimeSDR: reworked the start/stop stream so it does not need the workaround delay
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 28 Oct 2017 18:14:18 +0100
sdrangel (3.7.7-1) unstable; urgency=medium
* PlutoSDR: removed Tx support
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 27 Oct 2017 23:14:18 +0200
sdrangel (3.7.6-1) unstable; urgency=medium
* LimeSDR: attempt to fix lockup conditions when Rx and Tx run concurrently
* LimeSDR: handle hardware decimation and sample rate Rx/Tx relation correctly
* Create sdrbase library own CMakeLists.txt
* Created sdrgui library and split off GUI stuff from sdrbase
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 21 Oct 2017 23:14:18 +0200
sdrangel (3.7.5-1) unstable; urgency=medium
* CW keyer: make ramp as 20% of dot length to smoothen even more
* Fixed BFM demod frequency shift
* GUI and demod separation step 1 full
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 14 Oct 2017 23:14:18 +0200
sdrangel (3.7.4-1) unstable; urgency=medium
* GUI and demod separation step 1 full
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 08 Oct 2017 23:14:18 +0200
sdrangel (3.7.3-1) unstable; urgency=medium
* For Airspy, Funcube Pro and Pro+, PlutoSDR Rx and Tx, RTLSDR:
* Button and dialog to set frequency translation for transverter operation
* GUI and demod separation step 1 partial
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 04 Oct 2017 23:14:18 +0200
sdrangel (3.7.2-1) unstable; urgency=medium
* PlutoSDR: Remove from device enumeration if device is not accessible
* RTLSDR: Fixed gains retrieval in the GUI
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 23 Sep 2017 05:14:18 +0200
sdrangel (3.7.1-1) unstable; urgency=medium
* PlutoSDR: Tx support
* LimeSDR: use version 17.09 of LimeSuite providing bug fixes
* GUI segregation: remove device source or sink lifecycle from the GUI
* GUI segregation: handle GUI and device buddy updates separately
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 21 Sep 2017 21:14:18 +0200
sdrangel (3.7.0-1) unstable; urgency=medium
* PlutoSDR: Rx support
* GUI segregation: preliminary works
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 17 Sep 2017 23:14:18 +0200
sdrangel (3.6.1-1) unstable; urgency=medium
* Basic channel settings dialog with title+color update and UDP parameters
* Applied to UDPSink, UDPSource, DSDDemod, AMDemod, BFMDemod, NFMDemod
* DSD, AM, NFM, BFM demods: added possibility to send AF via UDP
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 31 Aug 2017 23:14:18 +0200
sdrangel (3.6.0-1) unstable; urgency=medium
* UDPSink Tx plugin: new
* LimeSDR output: fixed Tx not stopping on stop (issue #50)
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 17 Aug 2017 23:14:18 +0200
sdrangel (3.5.5-1) unstable; urgency=medium
* Output plugins: use fixed time length for sample FIFO of ~0.25s
* Audio modulators: reduce audio input file buffer to 0.1s
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 13 Aug 2017 23:14:18 +0200
sdrangel (3.5.4-1) unstable; urgency=medium
* LimeSDR: fixed NCO lower boundary calculation by flooring to zero
* LimeSDR: corrected NCO de-tune when sample rate or hardware decim/interp changes
* All audio modulators: fixed audio input
* SSB modulator: added an audio compressor
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 06 Aug 2017 23:14:18 +0200
sdrangel (3.5.3-1) unstable; urgency=medium
* SSB demod: anded optional AGC
* ChannelAnalyzerNG: better handling of LSB in the UI
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Mon, 31 Jul 2017 09:14:18 +0200
sdrangel (3.5.2-1) unstable; urgency=medium
* HackRF: stop Rx before start Tx automatically and vice versa
* HackRF: added option on Rx to drive Tx frequency change
* SSB mod and demod: make UI displays consistent with DSB, USB and LSB modes
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 22 Jul 2017 09:14:18 +0200
sdrangel (3.5.1-1) unstable; urgency=medium
* LimeSDR input: added individual gains control and ADC rate display
* LimeSDR output: added DAC rate display
* LimeSDR all: added board temperature display
* Added pulseaudio and libqt5multimedia5-plugins in the Debian dependencies
* Updates to build on aarch64 in openSUSE
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 01 Jul 2017 19:14:18 +0200
sdrangel (3.5.0-1) unstable; urgency=medium
* SDRdaemonSink plugin connecting to a distant sdrdaemontx instance
* SDRdemonFEC plugin renamed to SDRdaemonSource
* SDRdaemon plugin deprecated and removed from the build and distributions
* Changed frequency thumbweels color scheme
* Activated compiler warnings and fixed warnings
* Lots of little GUI fixes
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Mon, 11 Jun 2017 19:14:18 +0200
sdrangel (3.4.5-1) unstable; urgency=medium
* Removed default constuctors in Moving average and AGC classes
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Mon, 11 May 2017 21:14:18 +0100
sdrangel (3.4.4-1) unstable; urgency=medium
* LimeSDR output: fixed timeout value on LMS_SendStream
* LimeSDR: various fixes to make it run smoothly
* LimeSDR: Windows 64 build
* LimeSDR: integrated Debian build
* cmake modules: search lib64 libraries
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Mon, 08 May 2017 21:14:18 +0100
sdrangel (3.4.3-1) unstable; urgency=medium
* DSD demod: use version 1.7.1 of dsdcc with PLL for symbol synchronization as an option
* LimeSDR: fixed antenna selection in both input and output plugins
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Mon, 08 May 2017 23:14:18 +0100
sdrangel (3.4.2-1) unstable; urgency=medium
* DSD demod: use version 1.7.0 of dsdcc with PLL for symbol synchronization
* DSD demod: kernel >= 4.4.52 workaround for SerialDV
* Code cleanup: cppchack and Eclipse warnings
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 26 Apr 2017 23:14:18 +0100
sdrangel (3.4.1-1) unstable; urgency=medium
* Optimization of halfband interpolation FIR fitler processing
* HackRF support: fixed start/stop sequence
* WFM Demod enhancement
* CW Keyer: specifiy char signedness to fix error with some compilers
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 26 Apr 2017 23:14:18 +0100
sdrangel (3.4.0-1) unstable; urgency=medium
* LimeSDR support with redesign of source and sink management
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Mon, 17 Apr 2017 23:14:18 +0100
sdrangel (3.3.4-1) unstable; urgency=medium
* ATV Demod: fixed issue #22. Segfault when starting the plugin while the
* source is running
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Mon, 10 Apr 2017 21:14:18 +0100
sdrangel (3.3.3-1) unstable; urgency=medium
* HackRF, BladeRF, RTLSDR plugins: continuous sample rate setting
* ATV: implemented narrow band modes
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 9 Apr 2017 23:14:18 +0100
sdrangel (3.3.2-1) unstable; urgency=medium
* ATV plugins: added 405 lines, 20 and 16 FPS modes
* ATV demodulator: added a scope panel in a tab combo with the TV screen
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 22 Mar 2017 23:14:18 +0100
sdrangel (3.3.1-1) unstable; urgency=medium
* ATV plugins: SSB and vestigiial sideband support
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 19 Mar 2017 23:14:18 +0100
sdrangel (3.3.0-1) unstable; urgency=medium
* NFM demod: new discriminator and optional FM deviation based squelch
* ATV modulator
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 15 Mar 2017 23:14:18 +0100
sdrangel (3.2.0-1) unstable; urgency=medium
* ATV demodulator for amateur Analog TV
* New channel analyzer Channel Analyzer NG with a new generation signal scope
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 02 Mar 2017 23:14:18 +0100
sdrangel (3.1.1-1) unstable; urgency=medium
* DSD demod: adapt to dsdcc version 1.6
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 13 Jan 2017 03:14:18 +0100
sdrangel (3.1.0-1) unstable; urgency=medium
* HackRF Tx support
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 08 Jan 2017 23:14:18 +0100
sdrangel (3.0.1-1) unstable; urgency=medium
* Fixed audio preferences dialog and handling
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 07 Jan 2017 11:14:18 +0100
sdrangel (3.0.0-1) unstable; urgency=medium
* Implemented real Tx devices (BladeRF and HackRF) for real transmission
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 01 Jan 2017 23:14:18 +0100
sdrangel (2.5.2-1) unstable; urgency=medium
* Changed modulators source device feeding
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 25 Dec 2016 23:14:18 +0100
sdrangel (2.5.1-1) unstable; urgency=medium
* WFM Modulator
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 18 Dec 2016 23:14:18 +0100
sdrangel (2.5.0-1) unstable; urgency=medium
* SSB Modulator
* CW Keyer
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 15 Dec 2016 23:14:18 +0100
sdrangel (2.4.0-1) unstable; urgency=medium
* NFM Modulator
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 05 Dec 2016 23:14:18 +0100
sdrangel (2.3.1-1) unstable; urgency=medium
* AM Modulator: support file input
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 27 Nov 2016 23:14:18 +0100
sdrangel (2.3.0-1) unstable; urgency=medium
* SDRplay support: new input source plugin
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 13 Nov 2016 23:14:18 +0100
sdrangel (2.2.2-1) unstable; urgency=medium
* Baseband Halfband FIR filter optimizations
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 11 Nov 2016 12:25:34 +0100
sdrangel (2.2.1-1) unstable; urgency=medium
* Baseband Tx support (phase 2)
* Code optimizations
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 02 Nov 2016 14:15:15 +0100
sdrangel (2.2.0-1) unstable; urgency=medium
* Initial release as a Debian package
* Embryonic Tx support (phase 1)
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Tue, 24 Oct 2016 23:15:15 +0200

View File

@ -1,322 +1,248 @@
cmake_minimum_required(VERSION 3.1.0)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.9")
message(FATAL_ERROR "SDRangel requires GCC version 4.9 or higher!")
# force 64bit on windows because we have only that library
# TODO discuss because, at this days, a dsp software should be 64bit
if(WIN32 AND NOT CMAKE_GENERATOR_PLATFORM AND NOT CMAKE_C_COMPILER AND NOT CMAKE_CXX_COMPILER)
set(CMAKE_GENERATOR_PLATFORM "x64" CACHE INTERNAL "")
endif()
# use, i.e. don't skip the full RPATH for the build tree
set(CMAKE_SKIP_BUILD_RPATH FALSE)
# when building, don't use the install RPATH already
# (but later on when installing)
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
# add the automatically determined parts of the RPATH
# which point to directories outside the build tree to the install RPATH
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
add_definitions(-DLINUX) # for compatibility with Android and Windows builds with QtCretino
option(V4L-RTL "Use Linux Kernel RTL-SDR Source." OFF)
option(V4L-MSI "Use Linux Kernel MSI2500 Source." OFF)
option(BUILD_TYPE "Build type (RELEASE, RELEASEWITHDBGINFO, DEBUG" RELEASE)
option(DEBUG_OUTPUT "Print debug messages" OFF)
option(SANITIZE_ADDRESS "Activate memory address sanitization" OFF)
option(HOST_RPI "Compiling on RPi" OFF)
option(RX_SAMPLE_24BIT "Internal 24 bit Rx DSP" OFF)
option(NO_DSP_SIMD "Do not use SIMD instructions for DSP even if available" OFF)
option(BUILD_SERVER "Build Server" ON)
option(BUILD_GUI "Build GUI" ON)
option(ENABLE_DISTRIBUTION "Compile for package distribution" OFF)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules)
project(sdrangel)
if (BUILD_TYPE MATCHES RELEASE)
set(CMAKE_BUILD_TYPE "Release")
elseif (BUILD_TYPE MATCHES RELEASEWITHDBGINFO)
set(CMAKE_BUILD_TYPE "ReleaseWithDebugInfo")
elseif (BUILD_TYPE MATCHES DEBUG)
set(CMAKE_BUILD_TYPE "Debug")
elseif (BUILD_TYPE MATCHES DEBIAN)
set(CMAKE_BUILD_TYPE "Release")
set(BUILD_DEBIAN TRUE)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules)
# disable only when needed
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# configure version
set(sdrangel_VERSION_MAJOR "4")
set(sdrangel_VERSION_MINOR "8")
set(sdrangel_VERSION_PATCH "0")
set(sdrangel_VERSION_SUFFIX "")
# SDRAngel cmake options
option(DEBUG_OUTPUT "Print debug messages" OFF)
option(SANITIZE_ADDRESS "Activate memory address sanitization" OFF)
option(RX_SAMPLE_24BIT "Internal 24 bit Rx DSP" ON)
option(BUILD_SERVER "Build Server" ON)
option(BUILD_GUI "Build GUI" ON)
option(BUNDLE "Enable distribution bundle" OFF)
option(FORCE_SSSE3 "Compile with SSSE3 instruction only" OFF)
option(FORCE_SSE41 "Compile with SSE4.1 instruction only" OFF)
option(ENABLE_AIRSPY "Enable AirSpy support" ON)
option(ENABLE_AIRSPYHF "Enable AirSpyHF support" ON)
option(ENABLE_BLADERF "Enable bladeRF support" ON)
option(ENABLE_FUNCUBE "Enable FUNcube support" ON)
option(ENABLE_HACKRF "Enable HackRF support" ON)
option(ENABLE_IIO "Enable liniio support like PlutoSDR" ON)
option(ENABLE_LIMESUITE "Enable limesuite support" ON)
option(ENABLE_MIRISDR "Enable LibMiri for old SDRPlay" ON)
option(ENABLE_PERSEUS "Enable perseus support" ON)
option(ENABLE_RTLSDR "Enable rtl-sdr support" ON)
option(ENABLE_SOAPYSDR "Enable SoapySDR support" ON)
option(ENABLE_XTRX "Enable XTRX support" ON)
option(ENABLE_PACK_MIRSDRAPI "Enable inclusion of the mirsdr-api library - for personal use only" OFF)
# on windows always build external libraries
if(WIN32)
option(ENABLE_EXTERNAL_LIBRARIES "Build external libraries" ON)
else()
set(CMAKE_BUILD_TYPE "Release")
option(ENABLE_EXTERNAL_LIBRARIES "Build external libraries" OFF)
endif()
set(QT_USE_QTOPENGL TRUE)
set(CMAKE_AUTOMOC ON)
# Set additional project information
set(COMPANY "f4exb")
add_definitions("-DCOMPANY=\"${COMPANY}\"")
set(APPLICATION_NAME "SDRangel")
add_definitions("-DAPPLICATION_NAME=\"${APPLICATION_NAME}\"")
set(APPLICATION_MAINTAINER="Edouard Griffiths, F4EXB <f4exb06@gmail.com>")
set(COPYRIGHT "Copyright (c) 2019 Edouard Griffiths. All rights reserved.")
add_definitions("-DCOPYRIGHT=\"${COPYRIGHT}\"")
set(IDENTIFIER "com.${COMPANY}.${APPLICATION_NAME}")
add_definitions("-DIDENTIFIER=\"${IDENTIFIER}\"")
if(APPLE AND EXISTS /usr/local/opt/qt5)
# Homebrew installs Qt5 (up to at least 5.9.1) in
# /usr/local/qt5, ensure it can be found by CMake since
# it is not in the default /usr/local prefix.
list(APPEND CMAKE_PREFIX_PATH "/usr/local/opt/qt5")
find_package(Git)
if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git/")
execute_process(COMMAND "${GIT_EXECUTABLE}" describe --tags
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
RESULT_VARIABLE res
OUTPUT_VARIABLE out
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT res)
string(REGEX REPLACE "^v([0-9]+)\.([0-9]+)\.([0-9]+)-" "" git_commit ${out})
set(sdrangel_VERSION_SUFFIX "-${git_commit}")
endif()
endif()
#find_package(Qt4 REQUIRED)
find_package(Qt5Core 5.0 REQUIRED)
find_package(Qt5Widgets 5.0 REQUIRED)
find_package(Qt5Multimedia 5.0 REQUIRED)
find_package(Qt5OpenGL 5.0 REQUIRED)
find_package(OpenGL REQUIRED)
find_package(PkgConfig)
find_package(Boost REQUIRED)
find_package(FFTW3F)
set(sdrangel_VERSION "${sdrangel_VERSION_MAJOR}.${sdrangel_VERSION_MINOR}.${sdrangel_VERSION_PATCH}${sdrangel_VERSION_SUFFIX}")
message(STATUS "${APPLICATION_NAME} Version: ${sdrangel_VERSION}")
add_definitions("-DSDRANGEL_LIB_VERSION=\"${sdrangel_VERSION_MAJOR}.${sdrangel_VERSION_MINOR}.${sdrangel_VERSION_PATCH}\"")
add_definitions("-DSDRANGEL_VERSION=\"${sdrangel_VERSION}\"")
if (NOT BUILD_DEBIAN)
find_package(LibDSDcc)
find_package(LibMbe)
find_package(SerialDV)
# configure CPACK infomation
set(CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "SDR Rx/Tx software for Airspy, Airspy HF+, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 and FunCube")
set(CPACK_PACKAGE_VENDOR "${COMPANY}")
set(CPACK_PACKAGE_CONTACT "https://github.com/f4exb/sdrangel")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/Readme.md")
set(CPACK_PACKAGE_VERSION "${sdrangel_VERSION_MAJOR}.${sdrangel_VERSION_MINOR}.${sdrangel_VERSION_PATCH}")
set(CPACK_PACKAGE_VERSION_MAJOR ${sdrangel_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${sdrangel_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${sdrangel_VERSION_PATCH})
set(CPACK_SOURCE_STRIP_FILES true)
set(CPACK_STRIP_FILES true)
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE")
set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/Readme.md")
set(CPACK_SOURCE_IGNORE_FILES "${PROJECT_BINARY_DIR};/.git/;.gitignore;menu.yml;.travis.yml;.appveyor.yml;default.nix;.envrc;TODOs.org;/.scripts/")
set(CPACK_SOURCE_GENERATOR "ZIP;TGZ")
# if we don't set build_type
if(NOT DEFINED CMAKE_BUILD_TYPE OR "${CMAKE_BUILD_TYPE}" STREQUAL "")
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
endif()
message(STATUS "Build type set to: ${CMAKE_BUILD_TYPE}")
# as default disable qDebug()
if(NOT DEBUG_OUTPUT)
add_definitions("-DQT_NO_DEBUG_OUTPUT")
endif()
# MacOS Compatibility
if(APPLE)
find_package(ICONV)
endif(APPLE)
##############################################################################
#include(${QT_USE_FILE})
if (DEBUG_OUTPUT)
set( QT_DEFINITIONS "${QT_DEFINITIONS}" )
# declare build structures
# !! change sdrbase/plugins/pluginmanager.cpp too !!
set(SDRANGEL_BINARY_BIN_DIR "${CMAKE_BINARY_DIR}/bin")
set(SDRANGEL_BINARY_LIB_DIR "${CMAKE_BINARY_DIR}/lib")
if(WIN32)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${SDRANGEL_BINARY_BIN_DIR}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
else()
set( QT_DEFINITIONS "${QT_DEFINITIONS} -DQT_NO_DEBUG_OUTPUT" )
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
endif()
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${SDRANGEL_BINARY_LIB_DIR}")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${SDRANGEL_BINARY_LIB_DIR}")
if(WIN32)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
set(BUILD_PLUGINS_RUNTIME_DIR "${SDRANGEL_BINARY_BIN_DIR}/plugins")
set(BUILD_PLUGINSSRV_RUNTIME_DIR "${SDRANGEL_BINARY_BIN_DIR}/pluginssrv")
endif()
set(BUILD_PLUGINS_DIR "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/plugins")
set(BUILD_PLUGINSSRV_DIR "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/pluginssrv")
# use only lib when create .app/.dmg
if(APPLE AND BUNDLE AND BUILD_GUI)
set(INSTALL_BIN_DIR ".")
set(INSTALL_LIB_DIR "lib")
set(INSTALL_DOC_DIR "doc")
else()
set(INSTALL_BIN_DIR "bin")
set(INSTALL_LIB_DIR "lib/${CMAKE_PROJECT_NAME}")
set(INSTALL_DOC_DIR "share/${CMAKE_PROJECT_NAME}")
endif()
set(INSTALL_PLUGINS_DIR "${INSTALL_LIB_DIR}/plugins")
set(INSTALL_PLUGINSSRV_DIR "${INSTALL_LIB_DIR}/pluginssrv")
set(EXTERNAL_BUILD_LIBRARIES "${CMAKE_BINARY_DIR}/external")
# custom libraries
set(CUSTOM_APPLE_INCLUDE "${CMAKE_SOURCE_DIR}/custom/apple" CACHE INTERNAL "")
set(CUSTOM_WINDOWS_INCLUDE "${CMAKE_SOURCE_DIR}/custom/windows" CACHE INTERNAL "")
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
set(LINUX TRUE)
# populate distribution name
# LSB_CODENAME will hold trusty for example
find_program(LSB_RELEASE_EXECUTABLE lsb_release)
if(LSB_RELEASE_EXECUTABLE)
execute_process(COMMAND ${LSB_RELEASE_EXECUTABLE} -cs
OUTPUT_VARIABLE LSB_CODENAME
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif()
configure_file("${CMAKE_SOURCE_DIR}/cmake/cpack/${CMAKE_PROJECT_NAME}.desktop.in"
"${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.desktop" @ONLY)
elseif(APPLE)
if("${CMAKE_OSX_DEPLOYMENT_TARGET}" STREQUAL "")
message(STATUS "Build for macOS target: local version")
else()
message(STATUS "Build for macOS target: ${CMAKE_OSX_DEPLOYMENT_TARGET}")
endif()
# prepend path to find_*()
set(CMAKE_FIND_ROOT_PATH "/opt/local")
set(CMAKE_MACOSX_RPATH ON)
message(STATUS "RPATH support: ${CMAKE_MACOSX_RPATH}")
configure_file("${CMAKE_SOURCE_DIR}/cmake/cpack/MacOSXBundleInfo.plist.in"
"${CMAKE_BINARY_DIR}/Info.plist" @ONLY)
elseif (WIN32)
# check compiler version
if(MSVC_VERSION GREATER 1919 AND MSVC_VERSION LESS 1910)
message(FATAL_ERROR "You must use Microsoft Visual Studio 2017 as compiler, aka MSVC 14.1")
endif()
# used on code but not defined on VS2017
add_definitions(-D__WINDOWS__)
# compile with full multicore
set(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} /MP")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
# find Qt folder
include(QtLocator)
# in alternative we can use ExternalProject
set(EXTERNAL_LIBRARY_FOLDER "${CMAKE_SOURCE_DIR}/external/windows")
set(BOOST_ROOT "${EXTERNAL_LIBRARY_FOLDER}/boost" CACHE INTERNAL "")
set(FFTW3F_FOUND ON CACHE INTERNAL "")
set(FFTW3F_INCLUDE_DIRS "${EXTERNAL_LIBRARY_FOLDER}/fftw-3/include" CACHE INTERNAL "")
set(FFTW3F_LIBRARIES "${EXTERNAL_LIBRARY_FOLDER}/fftw-3/libfftw3f-3.lib" CACHE INTERNAL "")
set(LIBUSB_INCLUDE_DIR "${EXTERNAL_LIBRARY_FOLDER}/libusb/include" CACHE INTERNAL "")
set(LIBUSB_LIBRARIES "${EXTERNAL_LIBRARY_FOLDER}/libusb/MS64/dll/libusb-1.0.lib" CACHE INTERNAL "")
set(OpenCV_DIR "${EXTERNAL_LIBRARY_FOLDER}/opencv" CACHE INTERNAL "")
set(PKG_CONFIG_EXECUTABLE "${EXTERNAL_LIBRARY_FOLDER}/pkg-config-lite/bin/pkg-config.exe" CACHE INTERNAL "")
# ffmpeg
set(FFMPEG_INCLUDE_DIRS "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/include" CACHE INTERNAL "")
#set(FFMPEG_LIBRARIES)
set(AVCODEC_INCLUDE_DIRS "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/include" CACHE INTERNAL "")
set(AVCODEC_LIBRARIES "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/lib/avcodec.lib" CACHE INTERNAL "")
set(AVFORMAT_INCLUDE_DIRS "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/include" CACHE INTERNAL "")
set(AVFORMAT_LIBRARIES "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/lib/avformat.lib" CACHE INTERNAL "")
set(AVUTIL_INCLUDE_DIRS "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/include" CACHE INTERNAL "")
set(AVUTIL_LIBRARIES "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/lib/avutil.lib" CACHE INTERNAL "")
set(SWRESAMPLE_INCLUDE_DIRS "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/include" CACHE INTERNAL "")
set(SWRESAMPLE_LIBRARIES "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/lib/swresample.lib" CACHE INTERNAL "")
set(SWSCALE_INCLUDE_DIRS "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/include" CACHE INTERNAL "")
set(SWSCALE_LIBRARIES "${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/lib/swscale.lib" CACHE INTERNAL "")
# used on fixup_bundle phase
set(WINDOWS_FIXUP_BUNDLE_LIB_DIRS
"${Qt5_DIR}/../../../bin"
"${EXTERNAL_LIBRARY_FOLDER}/fftw-3"
"${EXTERNAL_LIBRARY_FOLDER}/libusb/MS64/dll"
"${EXTERNAL_LIBRARY_FOLDER}/ffmpeg/bin"
)
endif()
add_definitions(${QT_DEFINITIONS})
# TODO: check if(DEFINED) and fix macports -D
# fix install path
set(CMAKE_INSTALL_RPATH
"${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB_DIR}" CACHE
PATH "Library Install RPath" FORCE)
# force full path
set(CMAKE_INSTALL_NAME_DIR
"${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB_DIR}" CACHE
PATH "Library Install Name Destination Directory" FORCE)
if(MSVC)
foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/bin_${OUTPUTCONFIG})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/bin_${OUTPUTCONFIG})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${CMAKE_BINARY_DIR}/bin_${OUTPUTCONFIG})
endforeach(OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES)
endif()
##############################################################################
if (HOST_RPI)
message( STATUS "Compiling on RPi" )
endif()
set(TEST_DIR ${PROJECT_SOURCE_DIR}/cmake/test)
# Clang or AppleClang (see CMP0025)
if(NOT DEFINED C_CLANG AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(C_CLANG 1)
endif()
if(NOT DEFINED C_GCC AND CMAKE_CXX_COMPILER_ID MATCHES "GNU")
set(C_GCC 1)
endif()
# Detect current compilation architecture and create standard definitions
# =======================================================================
include(CheckSymbolExists)
function(detect_architecture symbol arch)
if (NOT DEFINED ARCHITECTURE)
set(CMAKE_REQUIRED_QUIET 1)
check_symbol_exists("${symbol}" "" ARCHITECTURE_${arch})
unset(CMAKE_REQUIRED_QUIET)
# The output variable needs to be unique across invocations otherwise
# CMake's crazy scope rules will keep it defined
if (ARCHITECTURE_${arch})
set(ARCHITECTURE "${arch}" PARENT_SCOPE)
set(ARCHITECTURE_${arch} 1 PARENT_SCOPE)
add_definitions(-DARCHITECTURE_${arch}=1)
endif()
endif()
endfunction()
if (NOT ENABLE_GENERIC)
if (MSVC)
detect_architecture("_M_AMD64" x86_64)
detect_architecture("_M_IX86" x86)
detect_architecture("_M_ARM" ARM)
detect_architecture("_M_ARM64" ARM64)
else()
detect_architecture("__x86_64__" x86_64)
detect_architecture("__i386__" x86)
detect_architecture("__arm__" ARM)
detect_architecture("__aarch64__" ARM64)
endif()
endif()
if (NOT DEFINED ARCHITECTURE)
set(ARCHITECTURE "GENERIC")
set(ARCHITECTURE_GENERIC 1)
add_definitions(-DARCHITECTURE_GENERIC=1)
endif()
message(STATUS "Target architecture: ${ARCHITECTURE}")
# flag that set the minimum cpu flag requirements
# used to create re-distribuitable binary
if (ENABLE_DISTRIBUTION)
if (${ARCHITECTURE} MATCHES "x86_64|x86")
set(HAS_SSSE3 ON CACHE BOOL "SSSE3 SIMD enabled")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mssse3" )
message(STATUS "Use SSSE3 SIMD instructions")
add_definitions(-DUSE_SSSE3)
elseif(MSVC)
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /arch:SSSE3" )
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oi /GL /Ot /Ox /arch:SSSE3" )
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG" )
message(STATUS "Use MSVC SSSE3 SIMD instructions")
add_definitions (/D "_CRT_SECURE_NO_WARNINGS")
add_definitions(-DUSE_SSSE3)
endif()
elseif (${ARCHITECTURE} MATCHES "ARM|ARM64")
set(HAS_NEON ON CACHE BOOL "NEON SIMD enabled")
message(STATUS "Use NEON SIMD instructions")
add_definitions(-DUSE_NEON)
endif()
else ()
if (${ARCHITECTURE} MATCHES "x86_64|x86")
try_run(RUN_SSE2 COMPILE_SSE2 ${CMAKE_BINARY_DIR}/tmp ${TEST_DIR}/test_x86_sse2.cxx COMPILE_DEFINITIONS -msse2 -O0)
if(COMPILE_SSE2 AND RUN_SSE2 EQUAL 0)
set(HAS_SSE2 ON CACHE BOOL "Architecture has SSSE2 SIMD enabled")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2" )
message(STATUS "Use SSE2 SIMD instructions")
add_definitions(-DUSE_SSE2)
elseif(MSVC)
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /arch:SSE2" )
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oi /GL /Ot /Ox /arch:SSE2" )
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG" )
add_definitions (/D "_CRT_SECURE_NO_WARNINGS")
add_definitions(-DUSE_SSE2)
endif()
else()
set(HAS_SSE2 OFF CACHE BOOL "Architecture does not have SSSE2 SIMD enabled")
endif()
try_run(RUN_SSSE3 COMPILE_SSSE3 ${CMAKE_BINARY_DIR}/tmp ${TEST_DIR}/test_x86_ssse3.cxx COMPILE_DEFINITIONS -mssse3 -O0)
if(COMPILE_SSSE3 AND RUN_SSSE3 EQUAL 0)
set(HAS_SSSE3 ON CACHE BOOL "Architecture has SSSE3 SIMD enabled")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mssse3" )
message(STATUS "Use SSSE3 SIMD instructions")
add_definitions(-DUSE_SSSE3)
elseif(MSVC)
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /arch:SSSE3" )
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oi /GL /Ot /Ox /arch:SSSE3" )
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG" )
message(STATUS "Use MSVC SSSE3 SIMD instructions")
add_definitions (/D "_CRT_SECURE_NO_WARNINGS")
add_definitions(-DUSE_SSSE3)
endif()
else()
set(HAS_SSSE3 OFF CACHE BOOL "Architecture does not have SSSE3 SIMD enabled")
endif()
try_run(RUN_SSE4_1 COMPILE_SSE4_1 ${CMAKE_BINARY_DIR}/tmp ${TEST_DIR}/test_x86_sse41.cxx COMPILE_DEFINITIONS -msse4.1 -O0)
if(COMPILE_SSE4_1 AND RUN_SSE4_1 EQUAL 0)
set(HAS_SSE4_1 ON CACHE BOOL "Architecture has SSE 4.1 SIMD enabled")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -msse4.1" )
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -msse4.1" )
message(STATUS "Use SSE 4.1 SIMD instructions")
add_definitions(-DUSE_SSE4_1)
elseif(MSVC)
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /arch:SSE4_1" )
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oi /GL /Ot /Ox /arch:SSE4_1" )
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG" )
add_definitions (/D "_CRT_SECURE_NO_WARNINGS")
add_definitions(-DUSE_SSE4_1)
endif()
else()
set(HAS_SSE4_1 OFF CACHE BOOL "Architecture does not have SSE 4.1 SIMD enabled")
endif()
try_run(RUN_SSE4_2 COMPILE_SSE4_2 ${CMAKE_BINARY_DIR}/tmp ${TEST_DIR}/test_x86_sse42.cxx COMPILE_DEFINITIONS -msse4.2 -O0)
if(COMPILE_SSE4_2 AND RUN_SSE4_2 EQUAL 0)
set(HAS_SSE4_2 ON CACHE BOOL "Architecture has SSE 4.2 SIMD enabled")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -msse4.2" )
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -msse4.2" )
message(STATUS "Use SSE 4.2 SIMD instructions")
add_definitions(-DUSE_SSE4_2)
elseif(MSVC)
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /arch:SSE4_2" )
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oi /GL /Ot /Ox /arch:SSE4_2" )
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG" )
add_definitions (/D "_CRT_SECURE_NO_WARNINGS")
add_definitions(-DUSE_SSE4_2)
endif()
else()
set(HAS_SSE4_2 OFF CACHE BOOL "Architecture does not have SSE 4.2 SIMD enabled")
endif()
try_run(RUN_AVX COMPILE_AVX ${CMAKE_BINARY_DIR}/tmp ${TEST_DIR}/test_x86_avx.cxx COMPILE_DEFINITIONS -mavx -O0)
if(COMPILE_AVX AND RUN_AVX EQUAL 0)
set(HAS_AVX ON CACHE BOOL "Architecture has AVX SIMD enabled")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mavx" )
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -mavx" )
message(STATUS "Use AVX SIMD instructions")
add_definitions(-DUSE_AVX)
endif()
else()
set(HAS_AVX OFF CACHE BOOL "Architecture does not have AVX SIMD enabled")
endif()
try_run(RUN_AVX2 COMPILE_AVX2 ${CMAKE_BINARY_DIR}/tmp ${TEST_DIR}/test_x86_avx2.cxx COMPILE_DEFINITIONS -mavx2 -O0)
if(COMPILE_AVX2 AND RUN_AVX2 EQUAL 0)
set(HAS_AVX2 ON CACHE BOOL "Architecture has AVX2 SIMD enabled")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mavx2" )
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -mavx2" )
message(STATUS "Use AVX2 SIMD instructions")
add_definitions(-DUSE_AVX2)
endif()
else()
set(HAS_AVX2 OFF CACHE BOOL "Architecture does not have AVX2 SIMD enabled")
endif()
try_run(RUN_AVX512 COMPILE_AVX512 ${CMAKE_BINARY_DIR}/tmp ${TEST_DIR}/test_x86_avx512.cxx COMPILE_DEFINITIONS -mavx512f -O0)
if(COMPILE_AVX512 AND RUN_AVX512 EQUAL 0)
set(HAS_AVX512 ON CACHE BOOL "Architecture has AVX512 SIMD enabled")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mavx512f" )
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -mavx512f" )
message(STATUS "Use AVX512 SIMD instructions")
add_definitions(-DUSE_AVX512)
endif()
else()
set(HAS_AVX512 OFF CACHE BOOL "Architecture does not have AVX512 SIMD enabled")
endif()
elseif(ARCHITECTURE_ARM)
try_run(RUN_NEON COMPILE_NEON ${CMAKE_BINARY_DIR}/tmp ${TEST_DIR}/test_arm_neon.cxx COMPILE_DEFINITIONS -mfpu=neon -O0)
if(COMPILE_NEON AND RUN_NEON EQUAL 0)
set(HAS_NEON ON CACHE BOOL "Architecture has NEON SIMD enabled")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mfpu=neon" )
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -mfpu=neon" )
message(STATUS "Use NEON SIMD instructions")
add_definitions(-DUSE_NEON)
endif()
else()
set(HAS_NEON OFF CACHE BOOL "Architecture does not have NEON SIMD enabled")
endif()
elseif(ARCHITECTURE_ARM64)
# Advanced SIMD (aka NEON) is mandatory for AArch64
set(HAS_NEON ON CACHE BOOL "Architecture has NEON SIMD enabled")
message(STATUS "Use NEON SIMD instructions")
add_definitions(-DUSE_NEON)
endif()
endif()
# clear binary test folder
FILE(REMOVE_RECURSE ${CMAKE_BINARY_DIR}/tmp)
##############################################################################
# Compiler flags.
# enable 24 bit receiving path
if (RX_SAMPLE_24BIT)
message(STATUS "Compiling for 24 bit Rx DSP chain")
message(STATUS "Compiling for 24 bit Rx DSP chain")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DSDR_RX_SAMPLE_24BIT")
else()
message(STATUS "Compiling for 16 bit Rx DSP chain")
message(STATUS "Compiling for 16 bit Rx DSP chain")
endif()
if (SANITIZE_ADDRESS)
@ -328,225 +254,264 @@ if (SANITIZE_ADDRESS)
set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} -fsanitize=address")
endif()
if (NO_DSP_SIMD)
message(STATUS "Not compiling with SIMD instructions for DSP even if available")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DNO_DSP_SIMD")
else()
message(STATUS "Compiling with SIMD instructions for DSP if available")
endif()
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if (C_CLANG OR C_GCC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wvla -Woverloaded-virtual -ffast-math -ftree-vectorize ${EXTRA_FLAGS}")
elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
elseif (C_MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -W3 -MP ${EXTRA_FLAGS}")
endif()
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if (BUILD_DEBIAN)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmax-errors=1")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmax-errors=10")
endif()
if (C_CLANG)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ferror-limit=1")
elseif (C_GCC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmax-errors=1")
endif()
##############################################################################
# set compiler
include(FindCompiler)
execute_process(
COMMAND git describe --abbrev=8 --always --tags
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
add_definitions("-DGIT_COMMIT_HASH=${GIT_COMMIT_HASH}")
# find cpu flags (and set compiler)
include(FindCPUflags)
configure_file(
${CMAKE_SOURCE_DIR}/version.h.in
${CMAKE_BINARY_DIR}/generated/sdrangel_version.h
)
# Instruct CMake to run moc automatically when needed
set(CMAKE_AUTOMOC ON)
##############################################################################
# base libraries
add_subdirectory(sdrbase)
# Create code from a list of Qt designer ui files
set(CMAKE_AUTOUIC ON)
# https://cmake.org/cmake/help/v3.0/manual/cmake-qt.7.html#autorcc
set(CMAKE_AUTORCC TRUE)
# As moc files are generated in the binary dir,
# tell CMake to always look for includes there:
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Qt requirements
set(_required_qt_version "5.6.0")
find_package(Qt5 COMPONENTS Core REQUIRED)
find_package(Qt5 COMPONENTS Widgets REQUIRED)
find_package(Qt5 COMPONENTS Multimedia REQUIRED)
find_package(Qt5 COMPONENTS MultimediaWidgets REQUIRED)
# for the server we don't need OpenGL components
if (BUILD_GUI)
add_subdirectory(sdrgui)
find_package(OpenGL REQUIRED)
find_package(Qt5 COMPONENTS OpenGL REQUIRED)
endif()
if (BUILD_SERVER)
add_subdirectory(sdrsrv)
endif()
add_subdirectory(sdrbench)
add_subdirectory(httpserver)
add_subdirectory(logging)
add_subdirectory(qrtplib)
add_subdirectory(swagger)
include_directories(
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_BINARY_DIR}/generated
${CMAKE_SOURCE_DIR}/exports
${CMAKE_SOURCE_DIR}/sdrbase
${CMAKE_SOURCE_DIR}/sdrgui
${CMAKE_SOURCE_DIR}/logging
${OPENGL_INCLUDE_DIR}
)
##############################################################################
# External binary resources
include(${CMAKE_SOURCE_DIR}/cmake/include/Qt5ExternalResources.cmake)
qt5_add_external_resources(sdrbase.rcc sdrbase/resources/res.qrc)
##############################################################################
# main GUI application
if (BUILD_GUI)
set(sdrangel_SOURCES
app/main.cpp
)
# other requirements
find_package(PkgConfig REQUIRED)
find_package(Boost REQUIRED)
find_package(FFTW3F REQUIRED)
find_package(LibUSB REQUIRED) # used by so many packages
find_package(OpenCV REQUIRED core highgui imgproc) # channeltx/modatv
# unfortunately OpenCV library from windows doesn't set the cache option
if(WIN32)
SET(sdrangel_SOURCES ${sdrangel_SOURCES} sdrgui/resources/sdrangel.rc)
endif(WIN32)
set(OpenCV_INCLUDE_DIRS "${OpenCV_INCLUDE_DIRS}" CACHE INTERNAL "")
set(OpenCV_LIBS "${OpenCV_LIBS}" CACHE INTERNAL "")
add_executable(sdrangel
${sdrangel_SOURCES}
)
target_link_libraries(sdrangel
sdrbase
sdrgui
logging
${QT_LIBRARIES}
${OPENGL_LIBRARIES}
)
if(WIN32)
set_target_properties(sdrangel PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE")
set_target_properties(sdrangel PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:CONSOLE")
set_target_properties(sdrangel PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
set_target_properties(sdrangel PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
endif(WIN32)
target_link_libraries(sdrangel Qt5::Widgets Qt5::Multimedia)
# add libs folder for fixup_bundle()
get_filename_component(GFN_Boost_LIBS_DIR Boost_LIBS DIRECTORY)
get_filename_component(GFN_OpenCV_LIBS_DIR OpenCV_LIBS DIRECTORY)
set(WINDOWS_FIXUP_BUNDLE_LIB_DIRS
"${WINDOWS_FIXUP_BUNDLE_LIB_DIRS}"
"${GFN_Boost_LIBS_DIR}"
"${GFN_OpenCV_LIBS_DIR}"
)
endif()
##############################################################################
# main server application
if (BUILD_SERVER)
set(sdrangelsrv_SOURCES
appsrv/main.cpp
)
add_executable(sdrangelsrv
${sdrangelsrv_SOURCES}
)
target_include_directories(sdrangelsrv
PUBLIC ${CMAKE_SOURCE_DIR}/sdrsrv
)
target_link_libraries(sdrangelsrv
sdrbase
sdrsrv
logging
${QT_LIBRARIES}
)
target_link_libraries(sdrangelsrv Qt5::Multimedia)
# macOS compatibility
if(APPLE)
find_package(ICONV)
endif()
##############################################################################
# main benchmark application
# include external cmake if needed
if(ENABLE_EXTERNAL_LIBRARIES)
add_subdirectory(external)
else()
find_package(Codec2)
find_package(CM256cc)
find_package(LibMbe)
find_package(SerialDV)
find_package(LibDSDcc)
endif()
set(sdrangelbench_SOURCES
appbench/main.cpp
)
# Devices
if(ENABLE_AIRSPY)
find_package(LibAIRSPY)
endif()
if(ENABLE_AIRSPYHF)
find_package(LibAIRSPYHF)
endif()
if(ENABLE_BLADERF)
find_package(LibBLADERF 2.0)
endif()
if(ENABLE_HACKRF)
find_package(LibHACKRF)
endif()
if(ENABLE_LIMESUITE)
find_package(LimeSuite)
endif()
if(ENABLE_IIO) # PlutoSDR
find_package(LibIIO)
endif()
if(ENABLE_MIRISDR)
find_package(LibMiriSDR)
endif()
if(ENABLE_PERSEUS)
find_package(LibPerseus)
endif()
if(ENABLE_RTLSDR)
find_package(LibRTLSDR)
endif()
if(ENABLE_SOAPYSDR)
find_package(SoapySDR)
endif()
if(ENABLE_XTRX)
find_package(LibXTRX)
endif()
add_executable(sdrangelbench
${sdrangelbench_SOURCES}
)
target_include_directories(sdrangelbench
PUBLIC ${CMAKE_SOURCE_DIR}/sdrbench
)
target_link_libraries(sdrangelbench
sdrbench
logging
${QT_LIBRARIES}
)
target_compile_features(sdrangelbench PRIVATE cxx_generalized_initializers) # cmake >= 3.1.0
target_link_libraries(sdrangelbench Qt5::Multimedia)
##############################################################################
if (BUILD_DEBIAN)
add_subdirectory(cm256cc)
add_subdirectory(mbelib)
add_subdirectory(serialdv)
add_subdirectory(dsdcc)
add_subdirectory(libairspy)
add_subdirectory(libairspyhf)
add_subdirectory(libhackrf)
add_subdirectory(librtlsdr)
add_subdirectory(libbladerf)
add_subdirectory(liblimesuite)
add_subdirectory(libmirisdr)
add_subdirectory(libperseus)
add_subdirectory(libiio)
add_subdirectory(libsoapysdr)
endif (BUILD_DEBIAN)
find_package(Codec2)
if (CODEC2_FOUND)
add_subdirectory(libfreedv)
endif(CODEC2_FOUND)
add_subdirectory(devices)
if (BUILD_GUI)
add_subdirectory(plugins)
endif()
if (BUILD_SERVER)
add_subdirectory(pluginssrv)
endif()
if(LIBUSB_FOUND AND UNIX)
add_subdirectory(fcdhid)
if(ENABLE_FUNCUBE AND UNIX AND LIBUSB_FOUND)
add_subdirectory(fcdlib)
endif(LIBUSB_FOUND AND UNIX)
add_subdirectory(fcdhid)
endif()
##############################################################################
# base libraries
add_subdirectory(sdrbase)
add_subdirectory(httpserver)
add_subdirectory(logging)
add_subdirectory(qrtplib)
add_subdirectory(swagger)
add_subdirectory(devices)
# strange symbol dependency
# mainbench.obj : error LNK2001: unresolved external
# symbol "public: static float const decimation_scale<12>::scaleIn" (?scaleIn@?$decimation_scale@$0M@@@2MB)
if(NOT WIN32)
add_subdirectory(sdrbench)
endif()
#install targets
if (BUILD_GUI)
install(TARGETS sdrangel DESTINATION bin)
add_subdirectory(sdrgui)
add_subdirectory(plugins plugins)
endif()
if (BUILD_SERVER)
add_subdirectory(sdrsrv)
set(SERVER_MODE ON)
add_definitions(-DSERVER_MODE)
add_subdirectory(plugins pluginssrv)
remove_definitions(-DSERVER_MODE)
set(SERVER_MODE OFF)
endif()
# includes needed by the following target
include_directories(
${CMAKE_SOURCE_DIR}/sdrbase
${CMAKE_SOURCE_DIR}/exports
${CMAKE_SOURCE_DIR}/sdrgui
${CMAKE_SOURCE_DIR}/sdrsrv
${CMAKE_SOURCE_DIR}/sdrbench
${CMAKE_SOURCE_DIR}/logging
${OPENGL_INCLUDE_DIR}
)
############ build sdrangel benchmark ################
if(NOT WIN32)
set(sdrangelbench_SOURCES
appbench/main.cpp
)
add_executable(sdrangelbench
${sdrangelbench_SOURCES}
)
target_link_libraries(sdrangelbench
Qt5::Multimedia
sdrbench
logging
)
endif()
############ build sdrangel gui ################
if (BUILD_GUI)
set(sdrangel_SOURCES
app/main.cpp
sdrgui/resources/sdrangel.rc
)
add_executable(${CMAKE_PROJECT_NAME}
${sdrangel_SOURCES}
)
target_link_libraries(${CMAKE_PROJECT_NAME}
${OPENGL_LIBRARIES}
Qt5::Widgets
Qt5::Multimedia
sdrbase
sdrgui
logging
)
endif()
############ build sdrangel server ################
if (BUILD_SERVER)
set(sdrangelsrv_SOURCES
appsrv/main.cpp
)
add_executable(sdrangelsrv
${sdrangelsrv_SOURCES}
)
target_link_libraries(sdrangelsrv
Qt5::Multimedia
sdrbase
sdrsrv
logging
)
endif()
############ install ##################
if(NOT WIN32)
install(TARGETS sdrangelbench DESTINATION ${INSTALL_BIN_DIR})
endif()
if (BUILD_GUI)
install(TARGETS ${CMAKE_PROJECT_NAME} DESTINATION ${INSTALL_BIN_DIR})
endif()
if (BUILD_SERVER)
install(TARGETS sdrangelsrv DESTINATION bin)
install(TARGETS sdrangelsrv DESTINATION ${INSTALL_BIN_DIR})
endif()
# install documentation
# TODO maybe install readme for every plugins
if (LINUX OR APPLE)
install(FILES ${CMAKE_SOURCE_DIR}/Readme.md DESTINATION ${INSTALL_DOC_DIR})
endif()
if(APPLE)
install(FILES ${CMAKE_SOURCE_DIR}/CHANGELOG DESTINATION ${INSTALL_DOC_DIR})
install(FILES ${CMAKE_SOURCE_DIR}/LICENSE DESTINATION ${INSTALL_DOC_DIR})
endif()
install(TARGETS sdrangelbench DESTINATION bin)
#install(TARGETS sdrbase DESTINATION lib)
#install files and directories (linux specific)
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
install(DIRECTORY udev-rules DESTINATION share/sdrangel)
install(FILES udev-rules/install.sh DESTINATION share/sdrangel/udev-rules PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
install(FILES desktop/sdrangel.desktop DESTINATION share/applications)
install(FILES desktop/sdrangel_icon.png DESTINATION share/pixmaps)
if (LINUX)
install(FILES ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.desktop DESTINATION share/applications)
install(FILES ${CMAKE_SOURCE_DIR}/cmake/cpack/${CMAKE_PROJECT_NAME}_icon.png DESTINATION share/pixmaps)
endif()
# needed by REST API documentation
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/sdrbase.rcc DESTINATION bin)
##############################################################################
# uninstall target
############ uninstall target ################
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/include/uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake"
IMMEDIATE @ONLY)
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
COMMAND ${CMAKE_COMMAND} -P
${CMAKE_CURRENT_BINARY_DIR}/uninstall.cmake)
############ packaging ################
add_subdirectory(cmake/cpack)

View File

@ -1,63 +0,0 @@
# MacOS
## Prerequisites for OSX (Sierra):
- Qt (used 5.12)
- XCode with MacPorts
- HackRF One
We are only covering HackRF One, since is only the hardware I own.
In the future we will test RTL based: NooElec NESDR Nano 3(RTL2832U & R820T2).
### Project dir structure:
SDRangel-4.x:
+ build-sdrangel.macos-Desktop_Qt_5_12_0_clang_64bit-Release
+ sdrangel
+ deps
+ cm256cc
+ dsdcc
+ mbelib
+ nanomsg
+ boost_1_69_0/
### Environment preparation
Boost 1.69: Download and unpack
There are a few dependencies which can be installed through MacPorts:
```
sudo port install cmake hackrf-devel bladeRF rtl-sdr opencv
```
Clone other libs to deps folder:
##### cm256cc:
```
git clone https://github.com/f4exb/cm256cc.git
```
##### mbelib:
```
git clone https://github.com/szechyjs/mbelib.git
```
##### dsdcc:
```
git clone https://github.com/f4exb/dsdcc.git
```
## Build
Release build configuration with QT Creator
## Deployment
Go into release build directory, something like: ```build-sdrangel.macos-Desktop_Qt_***Release```
and run deployment script:
```../sdrangel/apple/deploy.sh```
## Run
from build directory:
```DYLD_LIBRARY_PATH=/opt/local/lib:.; ../MacOS/sdrangel```
or
```../sdrangel/apple/run.sh```

View File

@ -1,200 +0,0 @@
<h2>Building and installing SDRangel for Windows</h2>
<h3>Introduction, limitations, warnings...</h3>
This is new in version 1.1.3 and also experimental. Use at your own risk! This may or may not work on your machine and version of Windows. It was tested more or less successfully in native Windows 7, 8 and 10 however it does not work in a Virtualbox guest supposedly because it uses OpenGL ES 2.0 instead of the OpenGL desktop version (OpenGL 4.3) when it is running native and I think the OpenGL code in SDRangel is still not quite right to be compatible with the ES version (use of QtGLWidget instead of QtOpenGLWidget).
You should take note that the Windows scheduler is just a piece of crap and not suitable for near real time applications like SDRs. In any case you should make sure that the sdrangel.exe process does not take more than 35% of the global CPU (check this with Task Manager). Unload channel plugins if necessary. Promoting sdrangel.exe process to real time via Task Manager may or may not help but usually not. If you encounter any problem just grab a Linux installation CD or .iso file and get yourself a decent OS first. You have been warned!
There are no plugins for both flavours of Funcubes since it uses Alsa interface which is Linux exclusively. Changing for the Qt audio portable interface instead could be a solution that will be investigated in the future.
Please be aware that the Remote input/output plugin is not working well mainly due to the fact that it needs an OS with a decent scheduler and Windows is definitely not this sort of OS (see my previous warning). In fact depending on the case your mileage may vary however the Linux version works always beautifully so you know the options if you really want to use it!
<h3>Build environment</h3>
You will have to use QtCreator and its environment for that purpose. Build was done with the `Desktop_Qt_5_5_1_MinGW_32bit` tool-chain. Some other flavors might work. Please refer to Qt documentation for Qt Creator details.
You will need to add `CONFIG+=MINGW32` to the `qmake` options. In QtCreator open the `Projects` menu (the file icon on the left bar) and in the `Build steps` section open the `qmake` details collapsed section (click on the caret icon). Choose the build configuration for which you run the build (`debug` or `release`) and add `CONFIG+=MINGW32` to the `Additional arguments` line.
<h3>Dependencies</h3>
<h4>Boost</h4>
You only really need the Boost headers so there is no need to compile Boost itself. Just download an archive from the Boost website and unpack it somewhere. In our example it will be installed in `D:\boost_1_58_0`.
You then need to update the .pro files that depend on Boost. They are:
- `sdrbase\sdrbase.pro`
- `plugins\channel\chanalyzer\chanalyzer.pro`
Just update the following line with the location of your Boost installation:
- `CONFIG(MINGW32):INCLUDEPATH += "D:\boost_1_58_0"`
<h4>USB support (libusb)</h4>
You have to download an archive of libusb that supports MinGW32 from the following [location](https://sourceforge.net/projects/libusb/files/libusb-1.0/). You will have the choice among various versions and various archive formats in each version folder. It works with version `1.0.20`. In our example it will be installed in `D:\softs\libusb-1.0.20`.
You then need to update the .pro files that depend on libusb. They are:
- `libairspy\libairspy.pro`
- `libhackrf\libhackrf.pro`
- `librtlsdr\librtlsdr.pro`
- `libbladerf\libbladerf.pro`
Just update the following lines with the location of your libusb installation:
- `CONFIG(MINGW32):INCLUDEPATH += "D:\softs\libusb-1.0.20\include\libusb-1.0"`
- `CONFIG(MINGW32):LIBS += -LD:\softs\libusb-1.0.20\MinGW32\dll -llibusb-1.0`
<h4>Airspy library (libairspy)</h4>
Download the source code or clone the git repository somewhere. It our example it will be installed in `D:\softs\libairspy`. Copy the header files (`*.h`) from `D:\softs\libairspy\libairspy\src` to the directory above (`D:\softs\libairspy\libairspy`).
You then need to update the .pro files that depend on libairspy. They are:
- `libairspy\libairspy.pro`. Update the following line with the location of your libiarspy installation:
- `CONFIG(MINGW32):LIBAIRSPYSRC = "D:\softs\libairspy\libairspy"`
- `plugins\samplesource\airspy\airspy.pro`. Update the following line with the location of your libiarspy installation:
- `CONFIG(MINGW32):LIBAIRSPYSRC = "D:\softs\libairspy"`
<h4>HackRF library (libhackrf)</h4>
Download the source code or clone the git repository somewhere. It our example it will be installed in `D:\softs\hackrf`. Copy the header files (`*.h`) from `D:\softs\hackrf\host\libhackrf\src` to the directory above (`D:\softs\hackrf\host\libhackrf`).
You then need to update the .pro files that depend on libhackrf. They are:
- `libhackrf\libhackrf.pro`. Update the following line with the location of your libhackrf installation:
- `CONFIG(MINGW32):LIBHACKRFSRC = "D:\softs\hackrf\host\libhackrf"`
- `plugins\samplesource\hackrf\hackrf.pro`. Update the following line with the location of your libhackrf installation:
- `CONFIG(MINGW32):LIBHACKRFSRC = "D:\softs\hackrf\host"`
<h4>RTL-SDR library (librtlsdr)</h4>
Download the source code or clone the git repository somewhere. It our example it will be installed in `D:\softs\librtlsdr`.
You then need to update the .pro files that depend on librtlsdr. They are:
- `librtlsdr\librtlsdr.pro`. Update the following line with the location of your librtlsdr installation:
- `CONFIG(MINGW32):LIBRTLSDRSRC = "D:\softs\librtlsdr"`
- `plugins\samplesource\rtlsdr\rtlsdr.pro`. Update the following line with the location of your librtlsdr installation:
- `CONFIG(MINGW32):LIBRTLSDRSRC = "D:\softs\librtlsdr"`
<h4>BladeRF library (libbladerf)</h4>
You need to download the 1.5.1 version specifically that is found [here](https://github.com/Nuand/bladeRF/archive/libbladeRF_v1.5.1.zip). Unzip it somewhere say in `D:\softs` So it will be installed in `D:\softs\bladeRF-libbladeRF_v1.5.1`. If your installation directory is different you need to update the dependent .pro files:
- `libbladerf\libbladerf.pro`, update the following lines with the location of your bladeRF installation:
- `CONFIG(MINGW32):LIBBLADERFSRC = "D:\softs\bladeRF-libbladeRF_v1.5.1"`
- `CONFIG(MINGW32):LIBBLADERFCOMMONSRC = "D:\softs\bladeRF-libbladeRF_v1.5.1\host\common"`
- `CONFIG(MINGW32):LIBBLADERFLIBSRC = "D:\softs\bladeRF-libbladeRF_v1.5.1\host\libraries\libbladeRF"`
- `plugins\samplesource\bladerf\bladerf.pro`. Update the following line with the location of your BladeRF installation:
- `CONFIG(MINGW32):LIBBLADERFSRC = "D:\softs\bladeRF\host\libraries\libbladeRF\include"`
<h4>Libiio library (libiio) for PlutoSDR</h4>
This is needed for PlutoSDR support. It is found [here](https://github.com/analogdevicesinc/libiio) Clone it in `D:\softs` so that the source directory is `D:\softs\libiio`. The source path is declared in libiio.pro, devices.pro and plutosdrinput.pro:
- `CONFIG(MINGW32):LIBIIOSRC = "D:\softs\libiio"`
- `CONFIG(MINGW64):LIBIIOSRC = "D:\softs\libiio"`
Libiio has specific dependencies that should be installed. Copy commands are part of the installation bat files. You will find archives of the needed files [here](http://xmlsoft.org/sources/win32/). Relevant files are:
For win32:
iconv-1.9.2.win32.zip, libxml2-2.7.8.win32.zip, zlib-1.2.5.win32.zip. Unzip them in `D:\softs` so that the dlls can be found by the installation script at:
- `D:\softs\iconv-1.9.2.win32\bin\iconv.dll`
- `D:\softs\libxml2-2.7.8.win32\bin\libxml2.dll`
- `D:\softs\zlib-1.2.5\bin\zlib1.dll`
For win64:
First cd to the `64bit` subdirectory. Then download `libxml2-2.9.3-win32-x86_64.7z` and unzip it in `D:\softs` so that the dlls can be found by the installation script at `D:\softs\libxml2-2.9.3-win32-x86_64\bin\libxml2-2.dll`
<h3>Dependencies for DSD (Digital Speech Decoding) plugin</h3>
<h4>mbelib</h4>
You need to clone the [mbelib git repository](https://github.com/szechyjs/mbelib.git). Let's say you have cloned it to `D:\softs\mbelib`. If your cloned repository is different you will need to update the dependent .pro files:
- `mbelib\mbelib.pro`
- `dsdcc\dscc.pro`
- `plugins\channel\demoddsd\demodsd.pro`
Changing the following lines:
CONFIG(MINGW32):LIBMBELIBSRC = "D:\softs\mbelib"
CONFIG(MINGW64):LIBMBELIBSRC = "D:\softs\mbelib"
<h4>DSDcc</h4>
You need to clone the [DSDcc git repository](https://github.com/f4exb/dsdcc.git). Let's say you have cloned it to `D:\softs\dsdcc`. If your cloned repository is different you will need to update the dependent .pro files:
- `dsdcc\dscc.pro`
- `plugins\channel\demoddsd\demodsd.pro`
Changing the following lines:
CONFIG(MINGW32):LIBDSDCCSRC = "D:\softs\dsdcc"
CONFIG(MINGW64):LIBDSDCCSRC = "D:\softs\dsdcc"
<h3>Build</h3>
Basically you open the project in QtCreator by selecting the `sdrangel.windows.pro` file in the source root directory and run the `build` command from the menu. This will eventually produce the `sdrangel.exe` executable and dependent library and plug-in DLLs in various parts of the build directory. See the Installation paragraph next for details on installing all files in a single place.
<h3>Installation</h3>
Then comes the tedious part of packaging everything in a single place so that you will just have to click on `sdrangel.exe` in the file explorer to start. Please follow the next steps for this purpose.
- Make yourself an installation directory say `D:\Programs\sdrangel`
- Assume the build directory is `D:\development\build-sdrangel.windows-Desktop_Qt_5_5_1_MinGW_32bit-Release` (assuming you compiled SDRangel for release)
- Assume the source directory is `D:\development\sdrangel`
- From the Qt group in the Windows start menu select the `Qt 5.5 for Desktop (Mingw...` console box
- In this console type: `bin\windeployqt.exe --dir D:\Programs\sdrangel D:\development\build-sdrangel.windows-Desktop_Qt_5_5_1_MinGW_32bit-Release\app\release\sdrangel.exe D:\development\build-sdrangel.windows-Desktop_Qt_5_5_1_MinGW_32bit-Release\sdrbase\release\sdrbase.dll`
- This copies all dependencies for Qt but alas nothing from our software so you will have to do this yourself. In the same console cd to the root of the build directory and type:
- `D:\development\sdrangel\windows.install.bat release D:\Programs\sdrangel`
- use `debug` in the place of `release` if you built the debug version
<h3>Running</h3>
You will need to install Zadig to get USB support for hardware devices. Please refer to [Zadig website](http://zadig.akeo.ie/) for details. Basically if you get things working for SDR# or HDSDR then it will work with SDRangel.
<h3>MinGW64 tool-chain</h3>
It is possible to use a MinGW64 tool-chain by following these steps:
- Install MSys2 from [this page](http://msys2.github.io/). Follow all the steps.
- Install Qt5 from MSys2 command line:
- `pacman -Sy mingw-w64-x86_64-qt5`
- You cannot use the stock gcc/g++ because it is too new and not compatible with Qt 5.9. So you will have to fetch the 5.3.0 version from the archives:
- `wget http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gcc-libs-5.3.0-5-any.pkg.tar.xz`
- `wget http://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gcc-5.3.0-5-any.pkg.tar.xz`
- Install them in this order from the .xz package files:
- `pacman -U mingw-w64-x86_64-gcc-libs-5.3.0-5-any.pkg.tar.xz`
- `pacman -U mingw-w64-x86_64-gcc-5.3.0-5-any.pkg.tar.xz`
- Create a new "kit" in Qt Creator:
- Go to "Projects" sub-menu from the left menu bar
- Click on "Manage kits"
- In "Compilers" tab add a compiler naming it "MinGW64" for example. In the compiler path specify the path to `g++` in your MSys2 installation (ex: `D:\msys64\mingw64\bin\g++.exe`)
- In "Qt versions" tab add a Qt version and specify the path to the `qmake.exe` in your MSys2 installation (ex: `D:\msys64\mingw64\bin\qmake.exe`)
- In "Kits" tab add a new kit and name it "MinGW64" for example.
- In "Compiler" select the "MinGW64" compiler you created previously
- In "Qt version" select the Qt version you created previously
- You should now be able to use this "kit" for your build
- In the main "Build settings" panel:
- In the "Build steps" section add `CONFIG+=MINGW64` in the "Additional arguments"
- In the "Build steps" section in the "Make" subsection you will have to specify the same make as for the 32 bit build (ex: `D:\Qt\Tools\mingw530_32\bin\mingw32-make.exe`. The `make` provided by MSys2 does not work.
- Create a command console shortcut:
- Copy `D:\Qt\5.9.1\mingw53_32\bin\qtenv2.bat` to `D:\msys64\mingw64\bin`
- Edit it to match the MSys2 installation with these two active lines:
- `set PATH=D:\msys64\mingw64\bin;%PATH%`
- `cd /D D:\msys64\mingw64`
- Create a shortcut with target: `C:\Windows\System32\cmd.exe /A /Q /K D:\msys64\mingw64\bin\qtenv2.bat`
Use the `windeployqt.exe` of the MSys2 distribution to copy the base files to your target installation directory in a similar way as this is done for MinGW32 (see above):
- Open the command console with the shortcut you created
- In this console type: `bin\windeployqt.exe --dir D:\Programs\sdrangel64 D:\development\build-sdrangel.windows-MinGW64-Release\app\release\sdrangel.exe D:\development\build-sdrangel.windows-MinGW64-Release\sdrbase\release\sdrbase.dll`
The final packaging is done with the `windows64.install.bat` utility. Assuming `D:\development\sdrangel` is the root directory of your cloned source repository, `D:\msys64` is the installation directory of MSys2, `D:\softs\libusb-1.0.20\MinGW64` is your libusb installation directory and `D:\Programs\sdrangel64` is your target installation directory do: `D:\development\sdrangel\windows64.install.bat release D:\Programs\sdrangel`. Modify the script if your MSys2 and libusb locations are different.

View File

@ -1,35 +0,0 @@
#--------------------------------------------------------
#
# Pro file for Android and Windows builds with Qt Creator
#
#--------------------------------------------------------
QT += core gui multimedia opengl
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
QMAKE_CXXFLAGS += -std=c++11
TEMPLATE = app
TARGET = sdrangel
INCLUDEPATH += $$PWD/../exports
INCLUDEPATH += $$PWD/../sdrbase
INCLUDEPATH += $$PWD/../sdrgui
INCLUDEPATH += $$PWD/../logging
CONFIG(Release):build_subdir = release
CONFIG(Debug):build_subdir = debug
SOURCES += main.cpp
LIBS += -L../sdrgui/$${build_subdir} -lsdrgui
LIBS += -L../sdrbase/$${build_subdir} -lsdrbase
LIBS += -L../logging/$${build_subdir} -llogging
CONFIG(ANDROID):CONFIG += mobility
CONFIG(ANDROID):MOBILITY =
macx {
QMAKE_TARGET_BUNDLE_PREFIX = org.f4exb
QMAKE_BUNDLE = SDRangel
TARGET = SDRangel
ICON = sdrangel.apple.icns
}

View File

@ -26,11 +26,6 @@
#include "loggerwithfile.h"
#include "mainwindow.h"
#include "dsp/dsptypes.h"
#ifdef _MSC_VER
#define GIT_COMMIT_HASH_STR "v4.8.0"
#else
#include "sdrangel_version.h"
#endif
static int runQtApplication(int argc, char* argv[], qtwebapp::LoggerWithFile *logger)
{
@ -39,12 +34,12 @@ static int runQtApplication(int argc, char* argv[], qtwebapp::LoggerWithFile *lo
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
*/
QCoreApplication::setOrganizationName("f4exb");
QCoreApplication::setApplicationName("SDRangel");
QCoreApplication::setApplicationVersion(GIT_COMMIT_HASH_STR);
QCoreApplication::setOrganizationName(COMPANY);
QCoreApplication::setApplicationName(APPLICATION_NAME);
QCoreApplication::setApplicationVersion(SDRANGEL_VERSION);
#if QT_VERSION >= 0x050600
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); // DPI support
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); //HiDPI pixmaps
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); //HiDPI pixmaps
#endif
#if 1

Binary file not shown.

View File

@ -28,13 +28,13 @@
#include "loggerwithfile.h"
#include "mainbench.h"
#include "dsp/dsptypes.h"
#include "sdrangel_version.h"
void handler(int sig) {
fprintf(stderr, "quit the application by signal(%d).\n", sig);
QCoreApplication::quit();
}
#ifndef _WIN32
void catchUnixSignals(const std::vector<int>& quitSignals) {
sigset_t blocking_mask;
sigemptyset(&blocking_mask);
@ -52,61 +52,62 @@ void catchUnixSignals(const std::vector<int>& quitSignals) {
sigaction(*it, &sa, 0);
}
}
#endif
static int runQtApplication(int argc, char* argv[], qtwebapp::LoggerWithFile *logger)
{
QCoreApplication a(argc, argv);
QCoreApplication::setOrganizationName("f4exb");
QCoreApplication::setOrganizationName(COMPANY);
QCoreApplication::setApplicationName("SDRangelBench");
QCoreApplication::setApplicationVersion(GIT_COMMIT_HASH_STR);
QCoreApplication::setApplicationVersion(SDRANGEL_VERSION);
#ifndef _WIN32
int catchSignals[] = {SIGQUIT, SIGINT, SIGTERM, SIGHUP};
std::vector<int> vsig(catchSignals, catchSignals + sizeof(catchSignals) / sizeof(int));
catchUnixSignals(vsig);
#endif
ParserBench parser;
parser.parse(a);
#if QT_VERSION >= 0x050400
qInfo("%s %s Qt %s %db %s %s DSP Rx:%db Tx:%db PID %lld",
qPrintable(QCoreApplication::applicationName()),
qPrintable(QCoreApplication::applicationVersion()),
qPrintable(QString(QT_VERSION_STR)),
QT_POINTER_SIZE*8,
qPrintable(QSysInfo::currentCpuArchitecture()),
qPrintable(QSysInfo::prettyProductName()),
SDR_RX_SAMP_SZ,
SDR_TX_SAMP_SZ,
QCoreApplication::applicationPid());
qPrintable(QCoreApplication::applicationName()),
qPrintable(QCoreApplication::applicationVersion()),
qPrintable(QString(QT_VERSION_STR)),
QT_POINTER_SIZE*8,
qPrintable(QSysInfo::currentCpuArchitecture()),
qPrintable(QSysInfo::prettyProductName()),
SDR_RX_SAMP_SZ,
SDR_TX_SAMP_SZ,
QCoreApplication::applicationPid());
#else
qInfo("%s %s Qt %s %db DSP Rx:%db Tx:%db PID %lld",
qPrintable(QCoreApplication::applicationName()),
qPrintable((QCoreApplication::>applicationVersion()),
qPrintable(QString(QT_VERSION_STR)),
QT_POINTER_SIZE*8,
SDR_RX_SAMP_SZ,
SDR_TX_SAMP_SZ,
QCoreApplication::applicationPid());
qPrintable(QCoreApplication::applicationName()),
qPrintable((QCoreApplication::>applicationVersion()),
qPrintable(QString(QT_VERSION_STR)),
QT_POINTER_SIZE*8,
SDR_RX_SAMP_SZ,
SDR_TX_SAMP_SZ,
QCoreApplication::applicationPid());
#endif
MainBench m(logger, parser, &a);
MainBench m(logger, parser, &a);
// This will cause the application to exit when the main core is finished
QObject::connect(&m, SIGNAL(finished()), &a, SLOT(quit()));
// This will run the task from the application event loop
QTimer::singleShot(0, &m, SLOT(run()));
return a.exec();
}
int main(int argc, char* argv[])
{
qtwebapp::LoggerWithFile *logger = new qtwebapp::LoggerWithFile(qApp);
logger->installMsgHandler();
int res = runQtApplication(argc, argv, logger);
qWarning("SDRangel quit.");
return res;
}
// This will cause the application to exit when the main core is finished
QObject::connect(&m, SIGNAL(finished()), &a, SLOT(quit()));
// This will run the task from the application event loop
QTimer::singleShot(0, &m, SLOT(run()));
return a.exec();
}
int main(int argc, char* argv[])
{
qtwebapp::LoggerWithFile *logger = new qtwebapp::LoggerWithFile(qApp);
logger->installMsgHandler();
int res = runQtApplication(argc, argv, logger);
qWarning("SDRangel quit.");
return res;
}

View File

@ -1,43 +0,0 @@
/*
* APPLE Compatibility
*/
#ifdef __APPLE__
/**
* Missing POSIX Thread Barriers implementation
*/
#ifndef PTHREAD_BARRIER_H_
#define PTHREAD_BARRIER_H_
#include <pthread.h>
#include <errno.h>
typedef int pthread_barrierattr_t;
typedef struct
{
pthread_mutex_t mutex;
pthread_cond_t cond;
int count;
int tripCount;
} pthread_barrier_t;
int pthread_barrier_init(pthread_barrier_t *barrier, const pthread_barrierattr_t *attr, unsigned int count);
int pthread_barrier_destroy(pthread_barrier_t *barrier);
int pthread_barrier_wait(pthread_barrier_t *barrier);
#endif // PTHREAD_BARRIER_H_
// <time.h>
#ifndef CLOCK_REALTIME
# define CLOCK_REALTIME 0
#endif
#ifndef CLOCK_MONOTONIC
# define CLOCK_MONOTONIC 0
#endif
#endif // APPLE Compatibility

View File

@ -1,98 +0,0 @@
#!/bin/bash
SDRANGEL_VERSION="4.5.0"
QT_VERSION="5.12.1"
QT_HOME="/Applications/Qt/${QT_VERSION}"
# Run from build directory after build
APP_PATH="app/SDRangel.app"
test -d "${APP_PATH}/Contents" || { echo "Please build first or chdir to proper folder!"; exit 1; }
APP_LIB="${APP_PATH}/Contents/Frameworks"
APP_PLUGINS="${APP_LIB}/plugins"
mkdir -p $APP_PLUGINS
dply_lib()
{
cp -f $1 $APP_LIB
echo "DeployLIB: `basename $1` to ${APP_LIB}"
}
dply_plugin()
{
tmp=`dirname $1`
tmp=`dirname $tmp`
plugin_type=`basename $tmp`
plugin_path="${APP_PLUGINS}/${plugin_type}"
mkdir -p $plugin_path
cp -f $1 $plugin_path
echo "DeployPLUGIN: `basename $1` to ${plugin_path}"
}
add_dmg_entry()
{
cp -fv $1 "${DMG_MPATH}/${2}"
}
# 1st-pass: Gather libs & plugins
for i in `find . -name '*.dylib' -type f -not -path "./${APP_PATH}/*"`; do
if [[ $i == *"plugins/"* ]]; then
dply_plugin $i
else
dply_lib $i
fi
done
# Missing ones
dply_lib /opt/install/LimeSuite/lib/libLimeSuite.18.10-1.dylib
dply_lib /opt/local/lib/libnanomsg.5.0.0.dylib
dply_lib /usr/local/lib/libmirisdr.4.dylib
dply_lib /usr/local/lib/libSoapySDR.0.7.dylib
# 2nd-pass: Symlink libs
cd $APP_LIB
for i in `find . -name '*.1.0.0.dylib' -type f -not -path "./plugins/*"`; do
ln -sf $i "${i/.1.0.0.dylib/.1.0.dylib}"
ln -sf $i "${i/.1.0.0.dylib/.1.dylib}"
ln -sf $i "${i/.1.0.0.dylib/.dylib}"
done
cd ../../..
LIB_PATH="SDRangel.app/Contents/Frameworks"
CUR_PATH=`pwd`
cd $LIB_PATH
# Symbolic links
ln -sf "libnanomsg.5.0.0.dylib" "libnanomsg.5.dylib"
# Deploy DMG
cd $CUR_PATH
pwd
"${QT_HOME}/clang_64/bin/macdeployqt" ./SDRangel.app \
-always-overwrite \
-dmg \
-libpath=${LIB_PATH} \
-verbose=1
# Add other files to DMG
DMG_SRC="SDRangel.dmg"
DMG_RW_SRC=${DMG_SRC/.dmg/.rw.dmg}
DMG_TMP_A="/tmp/_dmg-attach"
hdiutil pmap $DMG_SRC
hdiutil convert $DMG_SRC -format UDRW -o $DMG_RW_SRC
hdiutil resize -limits $DMG_RW_SRC
hdiutil attach $DMG_RW_SRC > $DMG_TMP_A
DMG_MPATH=`cat $DMG_TMP_A | grep Volumes | awk '{ print $3 }'`
# Append files into filesystem
add_dmg_entry ../../../libiio/build/libiio-0.14.g17b73d3.pkg
add_dmg_entry ../../sdrangel/ReadmeMacOS.md
hdiutil detach $DMG_MPATH
# Publish version
VERIMAGIC="-v${SDRANGEL_VERSION}_`date +%Y%m%d_%H%M%S`-Qt${QT_VERSION}"
DMG_DEPLOY=${DMG_SRC/.dmg/${VERIMAGIC}.dmg}
hdiutil convert $DMG_RW_SRC -format UDBZ -o $DMG_DEPLOY
rm -f $DMG_RW_SRC
echo "DeployedDMG: ${DMG_DEPLOY}"
exit 0

View File

@ -21,19 +21,18 @@
#include <QSysInfo>
#include <signal.h>
#include <unistd.h>
#include <vector>
#include "loggerwithfile.h"
#include "maincore.h"
#include "dsp/dsptypes.h"
#include "sdrangel_version.h"
void handler(int sig) {
fprintf(stderr, "quit the application by signal(%d).\n", sig);
QCoreApplication::quit();
}
#ifndef _WIN32
void catchUnixSignals(const std::vector<int>& quitSignals) {
sigset_t blocking_mask;
sigemptyset(&blocking_mask);
@ -51,6 +50,7 @@ void catchUnixSignals(const std::vector<int>& quitSignals) {
sigaction(*it, &sa, 0);
}
}
#endif
static int runQtApplication(int argc, char* argv[], qtwebapp::LoggerWithFile *logger)
{
@ -58,52 +58,52 @@ static int runQtApplication(int argc, char* argv[], qtwebapp::LoggerWithFile *lo
QCoreApplication::setOrganizationName("f4exb");
QCoreApplication::setApplicationName("SDRangelSrv");
QCoreApplication::setApplicationVersion(GIT_COMMIT_HASH_STR);
QCoreApplication::setApplicationVersion(SDRANGEL_VERSION);
#ifndef _WIN32
int catchSignals[] = {SIGQUIT, SIGINT, SIGTERM, SIGHUP};
std::vector<int> vsig(catchSignals, catchSignals + sizeof(catchSignals) / sizeof(int));
catchUnixSignals(vsig);
#endif
MainParser parser;
parser.parse(a);
#if QT_VERSION >= 0x050400
qInfo("%s %s Qt %s %db %s %s DSP Rx:%db Tx:%db PID %lld",
qPrintable(QCoreApplication::applicationName()),
qPrintable(QCoreApplication::applicationVersion()),
qPrintable(QString(QT_VERSION_STR)),
QT_POINTER_SIZE*8,
qPrintable(QSysInfo::currentCpuArchitecture()),
qPrintable(QSysInfo::prettyProductName()),
SDR_RX_SAMP_SZ,
SDR_TX_SAMP_SZ,
QCoreApplication::applicationPid());
qPrintable(QCoreApplication::applicationName()),
qPrintable(QCoreApplication::applicationVersion()),
qPrintable(QString(QT_VERSION_STR)),
QT_POINTER_SIZE*8,
qPrintable(QSysInfo::currentCpuArchitecture()),
qPrintable(QSysInfo::prettyProductName()),
SDR_RX_SAMP_SZ,
SDR_TX_SAMP_SZ,
QCoreApplication::applicationPid());
#else
qInfo("%s %s Qt %s %db DSP Rx:%db Tx:%db PID %lld",
qPrintable(QCoreApplication::applicationName()),
qPrintable((QCoreApplication::>applicationVersion()),
qPrintable(QString(QT_VERSION_STR)),
QT_POINTER_SIZE*8,
SDR_RX_SAMP_SZ,
SDR_TX_SAMP_SZ,
QCoreApplication::applicationPid());
qPrintable(QCoreApplication::applicationName()),
qPrintable((QCoreApplication::>applicationVersion()),
qPrintable(QString(QT_VERSION_STR)),
QT_POINTER_SIZE*8,
SDR_RX_SAMP_SZ,
SDR_TX_SAMP_SZ,
QCoreApplication::applicationPid());
#endif
MainCore m(logger, parser, &a);
MainCore m(logger, parser, &a);
// This will cause the application to exit when the main core is finished
QObject::connect(&m, SIGNAL(finished()), &a, SLOT(quit()));
return a.exec();
}
int main(int argc, char* argv[])
{
qtwebapp::LoggerWithFile *logger = new qtwebapp::LoggerWithFile(qApp);
logger->installMsgHandler();
int res = runQtApplication(argc, argv, logger);
qWarning("SDRangel quit.");
return res;
}
// This will cause the application to exit when the main core is finished
QObject::connect(&m, SIGNAL(finished()), &a, SLOT(quit()));
return a.exec();
}
int main(int argc, char* argv[])
{
qtwebapp::LoggerWithFile *logger = new qtwebapp::LoggerWithFile(qApp);
logger->installMsgHandler();
int res = runQtApplication(argc, argv, logger);
qWarning("SDRangel quit.");
return res;
}

View File

@ -1,34 +0,0 @@
project(cm256cc)
if (HAS_SSSE3)
message(STATUS "RemoteFEC: use SSSE3 SIMD" )
elseif (HAS_NEON)
message(STATUS "RemoteFEC: use Neon SIMD" )
else()
message(STATUS "RemoteFEC: Unsupported architecture")
return()
endif()
set(cm256cc_SOURCES
${LIBCM256CCSRC}/gf256.cpp
${LIBCM256CCSRC}/cm256.cpp
)
set(cm256cc_HEADERS
${LIBCM256CCSRC}/gf256.h
${LIBCM256CCSRC}/cm256.h
)
include_directories(
.
${CMAKE_CURRENT_BINARY_DIR}
${LIBCM256CCSRC}
)
add_definitions(-DQT_SHARED)
add_library(cm256cc SHARED
${cm256cc_SOURCES}
)
install(TARGETS cm256cc DESTINATION lib)

View File

@ -1,37 +0,0 @@
#--------------------------------------------------------
#
# Pro file for Windows builds with Qt Creator
#
#--------------------------------------------------------
QT += core
TEMPLATE = lib
TARGET = cm256cc
CONFIG(MSVC):DEFINES += cm256cc_EXPORTS
CONFIG(MINGW32):LIBCM256CCSRC = "C:\softs\cm256cc"
CONFIG(MINGW64):LIBCM256CCSRC = "C:\softs\cm256cc"
CONFIG(MSVC):LIBCM256CCSRC = "C:\softs\cm256cc"
CONFIG(macx):LIBCM256CCSRC = "../../deps/cm256cc"
INCLUDEPATH += $$LIBCM256CCSRC
!macx:DEFINES += __WINDOWS__=1
DEFINES += USE_SSSE3=1
QMAKE_CXXFLAGS += -mssse3
macx {
QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/
}
CONFIG(Release):build_subdir = release
CONFIG(Debug):build_subdir = debug
SOURCES = $$LIBCM256CCSRC/gf256.cpp\
$$LIBCM256CCSRC/cm256.cpp
HEADERS = $$LIBCM256CCSRC/gf256.h\
$$LIBCM256CCSRC/cm256.h\
$$LIBCM256CCSRC/export.h

View File

@ -0,0 +1,273 @@
# Clang or AppleClang (see CMP0025)
if(NOT DEFINED C_CLANG AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(C_CLANG 1)
elseif(NOT DEFINED C_GCC AND CMAKE_CXX_COMPILER_ID MATCHES "GNU")
set(C_GCC 1)
elseif(NOT DEFINED C_MSVC AND CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
set(C_MSVC 1)
endif()
# Detect current compilation architecture and create standard definitions
include(CheckSymbolExists)
function(detect_architecture symbol arch)
if (NOT DEFINED ARCHITECTURE)
set(CMAKE_REQUIRED_QUIET 1)
check_symbol_exists("${symbol}" "" ARCHITECTURE_${arch})
unset(CMAKE_REQUIRED_QUIET)
# The output variable needs to be unique across invocations otherwise
# CMake's crazy scope rules will keep it defined
if (ARCHITECTURE_${arch})
set(ARCHITECTURE "${arch}" PARENT_SCOPE)
set(ARCHITECTURE_${arch} 1 PARENT_SCOPE)
add_definitions(-DARCHITECTURE_${arch}=1)
endif()
endif()
endfunction()
if (NOT ENABLE_GENERIC)
if (C_MSVC)
detect_architecture("_M_AMD64" x86_64)
detect_architecture("_M_IX86" x86)
detect_architecture("_M_ARM" ARM)
detect_architecture("_M_ARM64" ARM64)
else()
detect_architecture("__x86_64__" x86_64)
detect_architecture("__i386__" x86)
detect_architecture("__arm__" ARM)
detect_architecture("__aarch64__" ARM64)
endif()
endif()
if (NOT DEFINED ARCHITECTURE)
set(ARCHITECTURE "GENERIC")
set(ARCHITECTURE_GENERIC 1)
add_definitions(-DARCHITECTURE_GENERIC=1)
endif()
message(STATUS "Target architecture: ${ARCHITECTURE}")
set(TEST_DIR ${PROJECT_SOURCE_DIR}/cmake/test)
# flag that set the minimum cpu flag requirements
# used to create re-distribuitable binary
if (${ARCHITECTURE} MATCHES "x86_64|x86" AND (FORCE_SSSE3 OR FORCE_SSE41))
if (FORCE_SSSE3)
set(HAS_SSSE3 ON CACHE BOOL "SSSE3 SIMD enabled")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mssse3" )
message(STATUS "Use SSSE3 SIMD instructions")
add_definitions(-DUSE_SSSE3)
elseif(C_MSVC)
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /arch:SSSE3" )
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oi /GL /Ot /Ox /arch:SSSE3" )
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG" )
message(STATUS "Use MSVC SSSE3 SIMD instructions")
add_definitions (/D "_CRT_SECURE_NO_WARNINGS")
add_definitions(-DUSE_SSSE3)
endif()
elseif (FORCE_SSE41)
set(HAS_SSSE3 ON CACHE BOOL "SSSE3 SIMD enabled")
set(HAS_SSE4_1 ON CACHE BOOL "Architecture has SSE 4.1 SIMD enabled")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -msse4.1" )
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -msse4.1" )
message(STATUS "Use SSE 4.1 SIMD instructions")
add_definitions(-DUSE_SSSE3)
add_definitions(-DUSE_SSE4_1)
elseif(C_MSVC)
# seems that from MSVC 2015 comiler doesn't support those flags
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /arch:SSE4_1" )
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oi /GL /Ot /Ox /arch:SSE4_1" )
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG" )
message(STATUS "Use SSE 4.1 SIMD instructions")
add_definitions (/D "_CRT_SECURE_NO_WARNINGS")
add_definitions(-DUSE_SSSE3)
add_definitions(-DUSE_SSE4_1)
endif()
endif()
else ()
if (${ARCHITECTURE} MATCHES "x86_64|x86")
if(C_MSVC)
try_run(RUN_SSE2 COMPILE_SSE2 "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_x86_sse2.cxx" COMPILE_DEFINITIONS /O0)
else()
try_run(RUN_SSE2 COMPILE_SSE2 "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_x86_sse2.cxx" COMPILE_DEFINITIONS -msse2 -O0)
endif()
if(COMPILE_SSE2 AND RUN_SSE2 EQUAL 0)
set(HAS_SSE2 ON CACHE BOOL "Architecture has SSSE2 SIMD enabled")
message(STATUS "Use SSE2 SIMD instructions")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2" )
add_definitions(-DUSE_SSE2)
elseif(C_MSVC)
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /arch:SSE2" )
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oi /GL /Ot /Ox /arch:SSE2" )
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG" )
add_definitions (/D "_CRT_SECURE_NO_WARNINGS")
add_definitions(-DUSE_SSE2)
endif()
else()
set(HAS_SSE2 OFF CACHE BOOL "Architecture does not have SSSE2 SIMD enabled")
endif()
if(C_MSVC)
try_run(RUN_SSSE3 COMPILE_SSSE3 "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_x86_ssse3.cxx" COMPILE_DEFINITIONS /O0)
else()
try_run(RUN_SSSE3 COMPILE_SSSE3 "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_x86_ssse3.cxx" COMPILE_DEFINITIONS -mssse3 -O0)
endif()
if(COMPILE_SSSE3 AND RUN_SSSE3 EQUAL 0)
set(HAS_SSSE3 ON CACHE BOOL "Architecture has SSSE3 SIMD enabled")
message(STATUS "Use SSSE3 SIMD instructions")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mssse3" )
add_definitions(-DUSE_SSSE3)
elseif(C_MSVC)
# seems not present on MSVC 2017
#set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /arch:SSSE3" )
#set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oi /GL /Ot /Ox /arch:SSSE3" )
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oi /GL /Ot /Ox" )
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG" )
add_definitions (/D "_CRT_SECURE_NO_WARNINGS")
add_definitions(-DUSE_SSSE3)
endif()
else()
set(HAS_SSSE3 OFF CACHE BOOL "Architecture does not have SSSE3 SIMD enabled")
endif()
if(C_MSVC)
try_run(RUN_SSE4_1 COMPILE_SSE4_1 "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_x86_sse41.cxx" COMPILE_DEFINITIONS /O0)
else()
try_run(RUN_SSE4_1 COMPILE_SSE4_1 "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_x86_sse41.cxx" COMPILE_DEFINITIONS -msse4.1 -O0)
endif()
if(COMPILE_SSE4_1 AND RUN_SSE4_1 EQUAL 0)
set(HAS_SSE4_1 ON CACHE BOOL "Architecture has SSE 4.1 SIMD enabled")
message(STATUS "Use SSE 4.1 SIMD instructions")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -msse4.1" )
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -msse4.1" )
add_definitions(-DUSE_SSE4_1)
elseif(C_MSVC)
# seems not present on MSVC 2017
#set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /arch:SSE4_1" )
#set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oi /GL /Ot /Ox /arch:SSE4_1" )
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oi /GL /Ot /Ox" )
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG" )
add_definitions (/D "_CRT_SECURE_NO_WARNINGS")
add_definitions(-DUSE_SSE4_1)
endif()
else()
set(HAS_SSE4_1 OFF CACHE BOOL "Architecture does not have SSE 4.1 SIMD enabled")
endif()
if(C_MSVC)
try_run(RUN_SSE4_2 COMPILE_SSE4_2 "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_x86_sse42.cxx" COMPILE_DEFINITIONS /O0)
else()
try_run(RUN_SSE4_2 COMPILE_SSE4_2 "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_x86_sse42.cxx" COMPILE_DEFINITIONS -msse4.2 -O0)
endif()
if(COMPILE_SSE4_2 AND RUN_SSE4_2 EQUAL 0)
set(HAS_SSE4_2 ON CACHE BOOL "Architecture has SSE 4.2 SIMD enabled")
message(STATUS "Use SSE 4.2 SIMD instructions")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -msse4.2" )
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -msse4.2" )
add_definitions(-DUSE_SSE4_2)
elseif(C_MSVC)
# seems not present on MSVC 2017
#set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /arch:SSE4_2" )
#set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oi /GL /Ot /Ox /arch:SSE4_2" )
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oi /GL /Ot /Ox" )
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG" )
add_definitions (/D "_CRT_SECURE_NO_WARNINGS")
add_definitions(-DUSE_SSE4_2)
endif()
else()
set(HAS_SSE4_2 OFF CACHE BOOL "Architecture does not have SSE 4.2 SIMD enabled")
endif()
if(C_MSVC)
try_run(RUN_AVX COMPILE_AVX "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_x86_avx.cxx" COMPILE_DEFINITIONS /O0)
else()
try_run(RUN_AVX COMPILE_AVX "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_x86_avx.cxx" COMPILE_DEFINITIONS -mavx -O0)
endif()
if(COMPILE_AVX AND RUN_AVX EQUAL 0)
set(HAS_AVX ON CACHE BOOL "Architecture has AVX SIMD enabled")
message(STATUS "Use AVX SIMD instructions")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mavx" )
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -mavx" )
add_definitions(-DUSE_AVX)
elseif(C_MSVC)
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /arch:AVX" )
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oi /GL /Ot /Ox /arch:AVX" )
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG" )
add_definitions (/D "_CRT_SECURE_NO_WARNINGS")
add_definitions(-DUSE_AVX)
endif()
else()
set(HAS_AVX OFF CACHE BOOL "Architecture does not have AVX SIMD enabled")
endif()
if(C_MSVC)
try_run(RUN_AVX2 COMPILE_AVX2 "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_x86_avx2.cxx" COMPILE_DEFINITIONS /O0)
else()
try_run(RUN_AVX2 COMPILE_AVX2 "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_x86_avx2.cxx" COMPILE_DEFINITIONS -mavx2 -O0)
endif()
if(COMPILE_AVX2 AND RUN_AVX2 EQUAL 0)
set(HAS_AVX2 ON CACHE BOOL "Architecture has AVX2 SIMD enabled")
message(STATUS "Use AVX2 SIMD instructions")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mavx2" )
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -mavx2" )
add_definitions(-DUSE_AVX2)
elseif(C_MSVC)
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /arch:AVX2" )
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oi /GL /Ot /Ox /arch:AVX2" )
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG" )
add_definitions (/D "_CRT_SECURE_NO_WARNINGS")
add_definitions(-DUSE_AVX2)
endif()
else()
set(HAS_AVX2 OFF CACHE BOOL "Architecture does not have AVX2 SIMD enabled")
endif()
if(C_MSVC)
try_run(RUN_AVX512 COMPILE_AVX512 "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_x86_avx512.cxx" COMPILE_DEFINITIONS /O0)
else()
try_run(RUN_AVX512 COMPILE_AVX512 "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_x86_avx512.cxx" COMPILE_DEFINITIONS -mavx512f -O0)
endif()
if(COMPILE_AVX512 AND RUN_AVX512 EQUAL 0)
set(HAS_AVX512 ON CACHE BOOL "Architecture has AVX512 SIMD enabled")
message(STATUS "Use AVX512 SIMD instructions")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mavx512f" )
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -mavx512f" )
add_definitions(-DUSE_AVX512)
elseif(C_MSVC)
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /arch:AVX512" )
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Oi /GL /Ot /Ox /arch:AVX512" )
set( CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG" )
add_definitions (/D "_CRT_SECURE_NO_WARNINGS")
add_definitions(-DUSE_AVX512)
endif()
else()
set(HAS_AVX512 OFF CACHE BOOL "Architecture does not have AVX512 SIMD enabled")
endif()
elseif(ARCHITECTURE_ARM)
if(C_MSVC)
try_run(RUN_NEON COMPILE_NEON "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_arm_neon.cxx" COMPILE_DEFINITIONS /O0)
else()
try_run(RUN_NEON COMPILE_NEON "${CMAKE_BINARY_DIR}/tmp" "${TEST_DIR}/test_arm_neon.cxx" COMPILE_DEFINITIONS -mfpu=neon -O0)
endif()
if(COMPILE_NEON AND RUN_NEON EQUAL 0)
set(HAS_NEON ON CACHE BOOL "Architecture has NEON SIMD enabled")
message(STATUS "Use NEON SIMD instructions")
if(C_GCC OR C_CLANG)
set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -mfpu=neon" )
set( CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -mfpu=neon" )
add_definitions(-DUSE_NEON)
endif()
else()
set(HAS_NEON OFF CACHE BOOL "Architecture does not have NEON SIMD enabled")
endif()
elseif(ARCHITECTURE_ARM64)
# Advanced SIMD (aka NEON) is mandatory for AArch64
set(HAS_NEON ON CACHE BOOL "Architecture has NEON SIMD enabled")
message(STATUS "Use NEON SIMD instructions")
add_definitions(-DUSE_NEON)
endif()
endif()
# clear binary test folder
FILE(REMOVE_RECURSE ${CMAKE_BINARY_DIR}/tmp)

View File

@ -0,0 +1,8 @@
# Clang or AppleClang (see CMP0025)
if(NOT DEFINED C_CLANG AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(C_CLANG 1)
elseif(NOT DEFINED C_GCC AND CMAKE_CXX_COMPILER_ID MATCHES "GNU")
set(C_GCC 1)
elseif(NOT DEFINED C_MSVC AND CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
set(C_MSVC 1)
endif()

View File

@ -70,4 +70,4 @@ else()
endif()
endif()
mark_as_advanced(ICONV_LIBRARY ICONV_INCLUDE_DIR)
mark_as_advanced(ICONV_LIBRARY ICONV_INCLUDE_DIR)

View File

@ -1,31 +1,34 @@
if(NOT LIBBLADERF_FOUND)
pkg_check_modules (LIBBLADERF_PKG libbladeRF)
find_path(LIBBLADERF_INCLUDE_DIR
NAMES libbladeRF.h
PATHS ${BLADERF_DIR}/include
${LIBBLADERF_PKG_INCLUDE_DIRS}
/usr/include
/usr/local/include
)
pkg_check_modules (LIBBLADERF_PKG libbladerf>=2.0)
find_library(LIBBLADERF_LIBRARIES
NAMES bladeRF
PATHS ${BLADERF_DIR}/lib
${LIBBLADERF_PKG_LIBRARY_DIRS}
/usr/lib
/usr/local/lib
)
if(LIBBLADERF_PKG_FOUND OR (DEFINED BLADERF_DIR))
find_path(LIBBLADERF_INCLUDE_DIRS
NAMES libbladeRF.h
PATHS ${BLADERF_DIR}/include
${LIBBLADERF_PKG_INCLUDE_DIRS}
/usr/include
/usr/local/include
)
if(LIBBLADERF_INCLUDE_DIR AND LIBBLADERF_LIBRARIES)
set(LIBBLADERF_FOUND TRUE CACHE INTERNAL "libbladerf found")
message(STATUS "Found libbladerf: ${LIBBLADERF_INCLUDE_DIR}, ${LIBBLADERF_LIBRARIES}")
else(LIBBLADERF_INCLUDE_DIR AND LIBBLADERF_LIBRARIES)
set(LIBBLADERF_FOUND FALSE CACHE INTERNAL "libbladerf found")
message(STATUS "libbladerf not found.")
endif(LIBBLADERF_INCLUDE_DIR AND LIBBLADERF_LIBRARIES)
find_library(LIBBLADERF_LIBRARIES
NAMES bladeRF
PATHS ${BLADERF_DIR}/lib
${LIBBLADERF_PKG_LIBRARY_DIRS}
/usr/lib
/usr/local/lib
)
mark_as_advanced(LIBBLADERF_INCLUDE_DIR LIBBLADERF_LIBRARIES)
if(LIBBLADERF_INCLUDE_DIRS AND LIBBLADERF_LIBRARIES)
set(LIBBLADERF_FOUND TRUE CACHE INTERNAL "libbladerf found")
message(STATUS "Found libbladerf: ${LIBBLADERF_INCLUDE_DIRS}, ${LIBBLADERF_LIBRARIES}")
else()
set(LIBBLADERF_FOUND FALSE CACHE INTERNAL "libbladerf not found")
message(STATUS "libbladerf not found.")
endif()
mark_as_advanced(LIBBLADERF_INCLUDE_DIRS LIBBLADERF_LIBRARIES)
endif(LIBBLADERF_PKG_FOUND OR (DEFINED BLADERF_DIR))
endif(NOT LIBBLADERF_FOUND)

View File

@ -1,31 +1,34 @@
if(NOT LIBIIO_FOUND)
pkg_check_modules (LIBIIO_PKG libiio)
find_path(LIBIIO_INCLUDE_DIR
NAMES iio.h
PATHS ${IIO_DIR}/include
${LIBIIO_PKG_INCLUDE_DIRS}
/usr/include
/usr/local/include
)
pkg_check_modules (LIBIIO_PKG libiio>=0.7)
find_library(LIBIIO_LIBRARIES
NAMES iio
PATHS ${IIO_DIR}/lib
${LIBIIO_PKG_LIBRARY_DIRS}
/usr/lib
/usr/local/lib
)
if(LIBIIO_PKG_FOUND OR (DEFINED IIO_DIR))
find_path(LIBIIO_INCLUDE_DIR
NAMES iio.h
PATHS ${IIO_DIR}/include
${LIBIIO_PKG_INCLUDE_DIRS}
/usr/include
/usr/local/include
)
if(LIBIIO_INCLUDE_DIR AND LIBIIO_LIBRARIES)
set(LIBIIO_FOUND TRUE CACHE INTERNAL "libiio found")
message(STATUS "Found libiio: ${LIBIIO_INCLUDE_DIR}, ${LIBIIO_LIBRARIES}")
else(LIBIIO_INCLUDE_DIR AND LIBIIO_LIBRARIES)
set(LIBIIO_FOUND FALSE CACHE INTERNAL "libiio found")
message(STATUS "libiio not found.")
endif(LIBIIO_INCLUDE_DIR AND LIBIIO_LIBRARIES)
find_library(LIBIIO_LIBRARIES
NAMES iio
PATHS ${IIO_DIR}/lib
${LIBIIO_PKG_LIBRARY_DIRS}
/usr/lib
/usr/local/lib
)
mark_as_advanced(LIBIIO_INCLUDE_DIR LIBIIO_LIBRARIES)
if(LIBIIO_INCLUDE_DIR AND LIBIIO_LIBRARIES)
set(LIBIIO_FOUND TRUE CACHE INTERNAL "libiio found")
message(STATUS "Found libiio: ${LIBIIO_INCLUDE_DIR}, ${LIBIIO_LIBRARIES}")
else(LIBIIO_INCLUDE_DIR AND LIBIIO_LIBRARIES)
set(LIBIIO_FOUND FALSE CACHE INTERNAL "libiio found")
message(STATUS "libiio not found.")
endif(LIBIIO_INCLUDE_DIR AND LIBIIO_LIBRARIES)
mark_as_advanced(LIBIIO_INCLUDE_DIR LIBIIO_LIBRARIES)
endif(LIBIIO_PKG_FOUND OR (DEFINED IIO_DIR))
endif(NOT LIBIIO_FOUND)

View File

@ -1,8 +1,8 @@
if(NOT LIBPERSEUS_FOUND)
pkg_check_modules (LIBPERSEUS_PKG libperseus)
find_path(LIBPERSEUS_INCLUDE_DIR
find_path(LIBPERSEUS_INCLUDE_DIR
NAMES perseus-sdr.h
PATHS ${PERSEUS_DIR}/include
${LIBPERSEUS_PKG_INCLUDE_DIRS}
@ -10,7 +10,7 @@ if(NOT LIBPERSEUS_FOUND)
/usr/local/include
)
find_library(LIBPERSEUS_LIBRARIES
find_library(LIBPERSEUS_LIBRARIES
NAMES perseus-sdr
PATHS ${PERSEUS_DIR}/lib
${PERSEUS_DIR}/lib64
@ -23,7 +23,7 @@ if(NOT LIBPERSEUS_FOUND)
set(LIBPERSEUS_FOUND TRUE CACHE INTERNAL "libperseus found")
message(STATUS "Found libperseus: ${LIBPERSEUS_INCLUDE_DIR}, ${LIBPERSEUS_LIBRARIES}")
else(LIBPERSEUS_INCLUDE_DIR AND LIBPERSEUS_LIBRARIES)
set(LIBPERSEUS_FOUND FALSE CACHE INTERNAL "libperseus found")
set(LIBPERSEUS_FOUND FALSE CACHE INTERNAL "libperseus not found")
message(STATUS "libperseus not found.")
endif(LIBPERSEUS_INCLUDE_DIR AND LIBPERSEUS_LIBRARIES)

View File

@ -28,9 +28,7 @@ if(NOT LIBXTRX_FOUND)
set(LIBXTRX_FOUND FALSE CACHE INTERNAL "libxtrx found")
message(STATUS "libxtrx not found.")
endif()
mark_as_advanced(LIBXTRX_INCLUDE_DIRS)
mark_as_advanced(LIBXTRX_INCLUDE_DIRS LIBXTRX_LIBRARY)
endif(NOT LIBXTRX_FOUND)

View File

@ -1,36 +1,52 @@
# Find Soapy SDR
if(NOT SOAPYSDR_FOUND)
function(_SOAPY_SDR_GET_ABI_VERSION VERSION SOAPY_SDR_INCLUDE_DIR)
file(READ "${SOAPY_SDR_INCLUDE_DIR}/SoapySDR/Version.h" version_h)
string(REGEX MATCH "\\#define SOAPY_SDR_ABI_VERSION \"([0-9]+\\.[0-9]+(-[A-Za-z0-9]+)?)\"" SOAPY_SDR_ABI_VERSION_MATCHES "${version_h}")
if(NOT SOAPY_SDR_ABI_VERSION_MATCHES)
message(FATAL_ERROR "Failed to extract version number from Version.h")
endif(NOT SOAPY_SDR_ABI_VERSION_MATCHES)
set(${VERSION} "${CMAKE_MATCH_1}" PARENT_SCOPE)
endfunction(_SOAPY_SDR_GET_ABI_VERSION)
pkg_check_modules (LIBSOAPYSDR_PKG soapysdr>=0.4.0)
if(LIBSOAPYSDR_PKG_FOUND OR (DEFINED SOAPYSDR_DIR))
if (NOT SOAPYSDR_INCLUDE_DIR)
find_path (SOAPYSDR_INCLUDE_DIR
NAMES SoapySDR/Version.h
PATHS ${SOAPYSDR_DIR}/include
/usr/include
/usr/local/include
)
endif()
NAMES SoapySDR/Version.h
PATHS ${SOAPYSDR_DIR}/include
${LIBSOAPYSDR_PKG_INCLUDE_DIRS}
/usr/include
/usr/local/include
)
if (NOT SOAPYSDR_LIBRARY)
find_library (SOAPYSDR_LIBRARY
NAMES SoapySDR
HINTS ${CMAKE_INSTALL_PREFIX}/lib
${CMAKE_INSTALL_PREFIX}/lib64
PATHS ${SOAPYSDR_DIR}/lib
${SOAPYSDR_DIR}/lib64
/usr/local/lib
/usr/local/lib64
/usr/lib
/usr/lib64
)
endif()
NAMES SoapySDR
HINTS ${CMAKE_INSTALL_PREFIX}/lib
${CMAKE_INSTALL_PREFIX}/lib64
PATHS ${SOAPYSDR_DIR}/lib
${SOAPYSDR_DIR}/lib64
${LIBSOAPYSDR_PKG_LIBRARY_DIRS}
/usr/local/lib
/usr/local/lib64
/usr/lib
/usr/lib64
)
if (SOAPYSDR_INCLUDE_DIR AND SOAPYSDR_LIBRARY)
set(SOAPYSDR_FOUND TRUE)
endif()
if (SOAPYSDR_INCLUDE_DIR AND SOAPYSDR_LIBRARY)
set(SOAPYSDR_FOUND TRUE)
# get the root of SoapySDR; used on cpack
string(REGEX REPLACE "/lib/.*${CMAKE_SHARED_LIBRARY_SUFFIX}" "" SOAPYSDR_ROOT ${SOAPYSDR_LIBRARY})
# get the soapy version; to using FindPkgConfig because we can use SOAPYSDR_DIR
_SOAPY_SDR_GET_ABI_VERSION(SOAPYSDR_ABI_VERSION ${SOAPYSDR_INCLUDE_DIR})
message (STATUS "Found SoapySDR: ${SOAPYSDR_INCLUDE_DIR}, ${SOAPYSDR_LIBRARY}")
else()
message (STATUS "SoapySDR not found")
endif()
if (SOAPYSDR_FOUND)
message (STATUS "Found SoapySDR: ${SOAPYSDR_INCLUDE_DIR}, ${SOAPYSDR_LIBRARY}")
else()
message (STATUS "Could not find SoapySDR")
endif()
mark_as_advanced(SOAPYSDR_INCLUDE_DIR SOAPYSDR_LIBRARY SOAPYSDR_ROOT SOAPYSDR_ABI_VERSION)
mark_as_advanced(SOAPYSDR_INCLUDE_DIR SOAPYSDR_LIBRARY)
endif(LIBSOAPYSDR_PKG_FOUND OR (DEFINED SOAPYSDR_DIR))
endif(NOT SOAPYSDR_FOUND)

View File

@ -0,0 +1,41 @@
SET(QT_MISSING True)
# msvc only; mingw will need different logic
IF(MSVC)
# look for user-registry pointing to qtcreator
GET_FILENAME_COMPONENT(QT_BIN [HKEY_CURRENT_USER\\Software\\Classes\\Applications\\QtProject.QtCreator.cpp\\shell\\Open\\Command] PATH)
# get root path so we can search for 5.3, 5.4, 5.5, etc
STRING(REPLACE "/Tools" ";" QT_BIN "${QT_BIN}")
LIST(GET QT_BIN 0 QT_BIN)
FILE(GLOB QT_VERSIONS "${QT_BIN}/5.*")
LIST(SORT QT_VERSIONS)
# assume the latest version will be last alphabetically
LIST(REVERSE QT_VERSIONS)
LIST(GET QT_VERSIONS 0 QT_VERSION)
# fix any double slashes which seem to be common
STRING(REPLACE "//" "/" QT_VERSION "${QT_VERSION}")
# do some math trickery to guess folder
# - qt uses (e.g.) "msvc2012"
# - cmake uses (e.g.) "1800"
# - see also https://cmake.org/cmake/help/v3.0/variable/MSVC_VERSION.html
MATH(EXPR QT_MSVC "2000 + (${MSVC_VERSION} - 200) / 100")
# check for 64-bit os
# may need to be removed for older compilers as it wasn't always offered
IF(CMAKE_SYSTEM_PROCESSOR MATCHES 64)
SET(QT_MSVC "${QT_MSVC}_64")
ENDIF()
SET(QT_PATH "${QT_VERSION}/msvc${QT_MSVC}")
SET(QT_MISSING False)
ENDIF()
# use Qt_DIR approach so you can find Qt after cmake has been invoked
IF(NOT QT_MISSING)
MESSAGE("-- Qt found: ${QT_PATH}")
SET(Qt5_DIR "${QT_PATH}/lib/cmake/Qt5/")
SET(Qt5Test_DIR "${QT_PATH}/lib/cmake/Qt5Test")
ENDIF()

View File

@ -0,0 +1,13 @@
#!/bin/sh
cd $HOME
mkdir -p external && cd external
mkdir -p airspy && cd airspy
git clone https://github.com/airspy/airspyhf.git
cd airspyhf
mkdir -p build && cd build
cmake .. -DINSTALL_UDEV_RULES=ON
sudo make install
sudo ldconfig

13
cmake/ci/build_cm256cc.sh Normal file
View File

@ -0,0 +1,13 @@
#!/bin/sh
cd $HOME
mkdir -p external && cd external
mkdir -p f4exb && cd f4exb
git clone https://github.com/f4exb/cm256cc.git
cd cm256cc
mkdir -p build && cd build
cmake ..
sudo make install
sudo ldconfig

15
cmake/ci/build_codec2.sh Normal file
View File

@ -0,0 +1,15 @@
#!/bin/sh
sudo apt-get -y install libsamplerate0-dev libspeex-dev libspeexdsp-dev
cd $HOME
mkdir -p external && cd external
mkdir -p drowe67 && cd drowe67
git clone https://github.com/drowe67/codec2.git
cd codec2
mkdir -p build && cd build
cmake ..
sudo make install
sudo ldconfig

13
cmake/ci/build_dsdcc.sh Normal file
View File

@ -0,0 +1,13 @@
#!/bin/sh
cd $HOME
mkdir -p external && cd external
mkdir -p f4exb && cd f4exb
git clone https://github.com/f4exb/dsdcc.git
cd dsdcc
mkdir -p build && cd build
cmake ..
sudo make install
sudo ldconfig

13
cmake/ci/build_mbelib.sh Normal file
View File

@ -0,0 +1,13 @@
#!/bin/sh
cd $HOME
mkdir -p external && cd external
mkdir -p szechyjs && cd szechyjs
git clone https://github.com/szechyjs/mbelib.git
cd mbelib
mkdir -p build && cd build
cmake ..
sudo make install
sudo ldconfig

View File

@ -0,0 +1,14 @@
#!/bin/sh
cd $HOME
mkdir -p external && cd external
mkdir -p microtelecom && cd microtelecom
git clone https://github.com/Microtelecom/libperseus-sdr.git
cd libperseus-sdr
./bootstrap.sh
./configure
make
sudo make install
sudo ldconfig

View File

@ -0,0 +1,26 @@
#!/bin/sh
if [ "${TRAVIS_OS_NAME}" == "osx" ]; then
JOBS=$(sysctl -n hw.ncpu)
elif [ "${TRAVIS_OS_NAME}" == "linux" ] || [ ${CI_LINUX} = true ]; then
JOBS=$(nproc --all)
else
JOBS=1
fi
if [ "${TRAVIS_OS_NAME}" == "linux" ] || [ ${CI_LINUX} = true ]; then
debuild -i -us -uc -b
else
mkdir build && cd build
cmake .. "${CMAKE_CUSTOM_OPTIONS}"
case "${CMAKE_CUSTOM_OPTIONS}" in
*BUNDLE=ON*)
make -j${JOBS} package
;;
*)
make -j${JOBS}
;;
esac
fi

View File

@ -0,0 +1,13 @@
#!/bin/sh
cd $HOME
mkdir -p external && cd external
mkdir -p f4exb && cd f4exb
git clone https://github.com/f4exb/serialDV.git
cd serialDV
mkdir -p build && cd build
cmake ..
sudo make install
sudo ldconfig

View File

@ -0,0 +1,12 @@
#!/bin/sh
cd $HOME
mkdir -p external && cd external
mkdir -p xtrx-sdr && cd xtrx-sdr
git clone https://github.com/xtrx-sdr/images.git
cd images/binaries/Ubuntu_16.04_amd64
sudo dpkg -i *.deb
sudo apt-get -y install -f
sudo ldconfig

216
cmake/cpack/CMakeLists.txt Normal file
View File

@ -0,0 +1,216 @@
# Stuff qmake can tell us
get_target_property (QMAKE_EXECUTABLE Qt5::qmake LOCATION)
function (QUERY_QMAKE VAR RESULT)
exec_program (${QMAKE_EXECUTABLE} ARGS "-query ${VAR}" RETURN_VALUE return_code OUTPUT_VARIABLE output)
if (NOT return_code)
file (TO_CMAKE_PATH "${output}" output)
set (${RESULT} ${output} PARENT_SCOPE)
endif (NOT return_code)
message (STATUS "Asking qmake for ${RESULT} and got ${output}")
endfunction (QUERY_QMAKE)
query_qmake (QT_INSTALL_PLUGINS QT_PLUGINS_DIR)
query_qmake (QT_INSTALL_IMPORTS QT_IMPORTS_DIR)
if(APPLE AND BUNDLE AND BUILD_GUI)
find_program (SW_VERS_PROGRAM sw_vers)
if (SW_VERS_PROGRAM)
execute_process (
COMMAND ${SW_VERS_PROGRAM} -productVersion
OUTPUT_VARIABLE CPACK_MACOS_PACKAGE_ARCHITECTURE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
else (SW_VERS_PROGRAM)
set (CPACK_MACOS_PACKAGE_ARCHITECTURE noarch)
endif (SW_VERS_PROGRAM)
set(CPACK_GENERATOR "Bundle")
set(CPACK_BINARY_DRAGNDROP ON)
set(CPACK_BUNDLE_NAME "${APPLICATION_NAME}")
set(CPACK_BUNDLE_ICON "${CMAKE_SOURCE_DIR}/cmake/cpack/sdrangel_icon.icns")
set(CPACK_BUNDLE_PLIST "${CMAKE_BINARY_DIR}/Info.plist")
set(CPACK_BUNDLE_STARTUP_COMMAND "${CMAKE_SOURCE_DIR}/cmake/cpack/sdrangel.sh")
set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/cmake/cpack/sdrangel_icon.icns")
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION}_${CPACK_MACOS_PACKAGE_ARCHITECTURE}_${CMAKE_SYSTEM_PROCESSOR}")
# Copy Qt Plugins; fixup_bundle doesn't do that
install (
DIRECTORY
"${QT_PLUGINS_DIR}/platforms"
"${QT_PLUGINS_DIR}/audio"
"${QT_PLUGINS_DIR}/accessible"
"${QT_PLUGINS_DIR}/imageformats"
"${QT_PLUGINS_DIR}/mediaservice"
"${QT_PLUGINS_DIR}/playlistformats"
"${QT_PLUGINS_DIR}/styles"
"${QT_PLUGINS_DIR}/iconengines"
DESTINATION "../PlugIns"
CONFIGURATIONS Release MinSizeRel
COMPONENT runtime
FILES_MATCHING PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}"
PATTERN "*minimal*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE
PATTERN "*offscreen*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE
PATTERN "*quick*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE
PATTERN "*_debug${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE
)
# add plugins path for Mac Bundle
install (CODE "
get_filename_component (the_qt_conf \"\${CMAKE_INSTALL_PREFIX}/qt.conf\" REALPATH)
file (WRITE \"\${the_qt_conf}\"
\"
[Paths]
Plugins = ../PlugIns
\")"
)
# copy SoapySDR Modules
# probably libmirsdrapi-rsp.dylib can't be re-distribuited
# we remove the file at the end of fixup_bundle
if(ENABLE_SOAPYSDR AND SOAPYSDR_FOUND)
set(SOAPY_SDR_MOD_PATH "${SOAPYSDR_ROOT}/lib/SoapySDR/modules${SOAPYSDR_ABI_VERSION}")
file(GLOB SOAPY_MODS ${SOAPY_SDR_MOD_PATH}/*.so)
foreach(SOAPY_MOD_FILE ${SOAPY_MODS})
install( FILES "${SOAPY_MOD_FILE}"
DESTINATION "../Frameworks/SoapySDR/modules${SOAPYSDR_ABI_VERSION}"
COMPONENT Runtime
)
endforeach()
endif()
install(CODE "
file(GLOB_RECURSE SDRANGEL_PLUGINS
\"\${CMAKE_INSTALL_PREFIX}/${INSTALL_PLUGINS_DIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
file(GLOB_RECURSE SDRANGEL_PLUGINSSRV
\"\${CMAKE_INSTALL_PREFIX}/${INSTALL_PLUGINSSRV_DIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
file(GLOB_RECURSE QTPLUGINS \"\${CMAKE_INSTALL_PREFIX}/../PlugIns/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
file(GLOB_RECURSE SOAPYSDR_PLUGINS \"\${CMAKE_INSTALL_PREFIX}/../Frameworks/SoapySDR/modules${SOAPY_SDR_ABI_VERSION}/*.so\")
set(BU_CHMOD_BUNDLE_ITEMS ON)
include(BundleUtilities)
fixup_bundle(\"\${CMAKE_INSTALL_PREFIX}/${CMAKE_PROJECT_NAME}\" \"\${SDRANGEL_PLUGINS};\${SDRANGEL_PLUGINSSRV};\${QTPLUGINS};\${SOAPYSDR_PLUGINS}\" \"${CMAKE_LIBRARY_OUTPUT_DIRECTORY}\")
# remove non distribuitable file
if(ENABLE_MIRSDRAPI AND OFF)
message(STATUS \"Remove libmirsdrapi-rsp.dylib - not distribuitable\")
file(REMOVE \"\${CMAKE_INSTALL_PREFIX}/../Frameworks/libmirsdrapi-rsp.dylib\")
endif()
# remove unused library
file(GLOB SDRANGEL_REMOVE_LIB \"\${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB_DIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
foreach(file \${SDRANGEL_REMOVE_LIB})
file(REMOVE \"\${file}\")
endforeach()
" COMPONENT Runtime)
# TODO: code/dmg signature
# see https://github.com/cjcliffe/CubicSDR
# NOTE: only as reference; remove in future
elseif(LINUX AND BUNDLE)
# NOTE: moved to debhelper tool (debian/ folder)
# useful for the moment to maintain dependencies list per distro
find_program (DPKG_BUILDER dpkg-buildpackage DOC "Debian package builder")
if (DPKG_BUILDER)
#
# Derive the correct filename for a Debian package because the DEB
# generator doesn't do this correctly at present.
#
find_program (DPKG_PROGRAM dpkg DOC "dpkg program of Debian-based systems")
if (DPKG_PROGRAM)
execute_process (
COMMAND ${DPKG_PROGRAM} --print-architecture
OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
else (DPKG_PROGRAM)
set (CPACK_DEBIAN_PACKAGE_ARCHITECTURE noarch)
endif (DPKG_PROGRAM)
# TODO:
# - perseus package
# - CHANGELOG see https://github.com/xbmc/xbmc/pull/9987/commits/0152e8f50c0f11c8bddcfdc65e1596851fe8b310
# - verify dpkg info
# - Boost seems used through Qt
# needs dpkg
set(CPACK_GENERATOR "DEB")
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION}_${LSB_CODENAME}_${CMAKE_SYSTEM_PROCESSOR}")
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${APPLICATION_MAINTAINER}")
set(CPACK_DEBIAN_PACKAGE_SECTION "hamradio")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6, libasound2, libfftw3-single3, libgcc1, libgl1-mesa-glx, libqt5core5a, libqt5gui5, libqt5multimedia5, libqt5network5, libqt5opengl5, libqt5widgets5, libqt5multimedia5-plugins, libstdc++6, libusb-1.0-0, pulseaudio, libxml2, ffmpeg, libopus0, codec2, libairspy0, libhackrf0, librtlsdr0, libbladerf1, libmirisdr0, libiio0")
if ("${LSB_CODENAME}" STREQUAL "buster") # Debian 10
set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, libavcodec58, libavformat58, libairspyhf1, libopencv-imgproc3.2, libopencv-highgui3.2, limesuite, soapysdr-tools")
elseif("${LSB_CODENAME}" STREQUAL "stretch") # Debian 9
set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, libavcodec57, libavformat57, libopencv-imgproc2.45v5, libopencv-highgu2.4-deb0, limesuite, soapysdr-tools")
elseif("${LSB_CODENAME}" STREQUAL "bionic") # Ubuntu 18.04
set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, libavcodec57, libavformat57, libairspyhf0, libopencv-imgproc3.2, libopencv-highgui3.2, limesuite, soapysdr-tools")
elseif("${LSB_CODENAME}" STREQUAL "xenial") # Ubuntu 16.04
set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, libavcodec-ffmpeg56, libavformat-ffmpeg56, libopencv-imgproc2.4v5, libopencv-highgui2.4v5")
endif()
# needed before cmake 2.8.3
set(CPACK_SET_DESTDIR true)
endif (DPKG_BUILDER)
# NOTE: moved to distro tool
# for fedora see https://docs.fedoraproject.org/en-US/quick-docs/creating-rpm-packages/
# https://docs.fedoraproject.org/en-US/packaging-guidelines/CMake/
find_program (RPMBUILDER rpmbuild DOC "RPM package builder")
if (RPMBUILDER)
list(APPEND CPACK_GENERATOR "RPM")
set(CPACK_RPM_PACKAGE_RELEASE "1")
set(CPACK_RPM_PACKAGE_LICENSE "GPL-3.0")
# TODO OpenSUSE and Fedora dependencies
set(CPACK_RPM_PACKAGE_REQUIRES "libusb fftw qt5 pulseaudio libxml2")
set (CPACK_RPM_PACKAGE_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
endif (RPMBUILDER)
elseif(WIN32 OR MINGW)
# Copy Qt Plugins; fixup_bundle doesn't do that
install (
DIRECTORY
"${QT_PLUGINS_DIR}/platforms"
"${QT_PLUGINS_DIR}/audio"
"${QT_PLUGINS_DIR}/accessible"
"${QT_PLUGINS_DIR}/imageformats"
"${QT_PLUGINS_DIR}/mediaservice"
"${QT_PLUGINS_DIR}/playlistformats"
"${QT_PLUGINS_DIR}/styles"
"${QT_PLUGINS_DIR}/iconengines"
DESTINATION "${SDRANGEL_BINARY_BIN_DIR}"
CONFIGURATIONS Release MinSizeRel
COMPONENT runtime
FILES_MATCHING PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}"
PATTERN "*minimal*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE
PATTERN "*offscreen*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE
PATTERN "*quick*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE
PATTERN "*_debug${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE
)
install(CODE "
include(BundleUtilities)
fixup_bundle("${SDRANGEL_BINARY_BIN_DIR}" "" "${WINDOWS_FIXUP_BUNDLE_LIB_DIRS}")
" COMPONENT Runtime)
if(BUNDLE)
set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE)
list(APPEND CPACK_GENERATOR "ZIP;NSIS")
set(CPACK_NSIS_PACKAGE_NAME "${APPLICATION_NAME}")
set(CPACK_NSIS_CONTACT "${APPLICATION_MAINTAINER}")
set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
set(CPACK_NSIS_MODIFY_PATH ON)
endif()
endif(APPLE AND BUNDLE AND BUILD_GUI)
message(STATUS "CPack generators: ${CPACK_GENERATOR}")
include(CPack)

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>@PROJECT_NAME@</string>
<key>CFBundleGetInfoString</key>
<string>@CPACK_PACKAGE_DESCRIPTION_SUMMARY@</string>
<key>CFBundleIconFile</key>
<string>@APPLICATION_NAME@.icns</string>
<key>CFBundleIdentifier</key>
<string>@IDENTIFIER@</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleLongVersionString</key>
<string>@CPACK_PACKAGE_VERSION@</string>
<key>CFBundleName</key>
<string>@CPACK_PACKAGE_NAME@</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>@CPACK_PACKAGE_VERSION@</string>
<key>NSHumanReadableCopyright</key>
<string>@COPYRIGHT@</string>
<key>ForAppStore</key>
<string>yes</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.education</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSHighResolutionCapable</key>
<string>True</string>
<key>NSSupportsAutomaticGraphicsSwitching</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,10 @@
[Desktop Entry]
Name=@APPLICATION_NAME@
GenericName=SDR/Analyzer frontend
Comment=SDR/Analyzer frontend for Airspy, Airspy HF+, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 and FunCube
Exec=@CMAKE_PROJECT_NAME@
Icon=@CMAKE_PROJECT_NAME@_icon.png
StartupNotify=true
Terminal=false
Type=Application
Categories=Network;HamRadio;

10
cmake/cpack/sdrangel.sh Executable file
View File

@ -0,0 +1,10 @@
#!/bin/sh
get_abs_dir() {
# $1 : relative filename
echo "$(cd "$(dirname "$1")" && pwd)"
}
SDRANGEL_RESOURCES="$(get_abs_dir "$0")/../Resources"
exec "$SDRANGEL_RESOURCES/sdrangel"

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200pt" height="200pt" viewBox="0 0 200 200" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g id="#6087cfff">
<path fill="#6087cf" opacity="1.00" d=" M 113.47 17.81 C 127.20 16.73 142.20 15.56 154.82 22.05 C 160.32 25.20 154.84 30.78 150.80 31.97 C 135.47 38.13 118.41 39.17 102.10 37.58 C 96.52 36.68 90.24 36.10 85.88 32.16 C 82.98 29.58 86.08 26.06 88.61 24.71 C 96.19 20.43 104.96 18.95 113.47 17.81 M 113.44 20.79 C 106.68 22.01 99.04 22.88 93.82 27.78 C 91.83 30.64 96.11 32.37 98.23 33.10 C 109.85 36.50 122.31 35.71 134.08 33.55 C 139.14 32.28 144.95 31.31 148.48 27.10 C 149.13 24.33 146.00 23.12 143.95 22.30 C 134.12 19.18 123.56 19.59 113.44 20.79 Z" />
<path fill="#6087cf" opacity="1.00" d=" M 5.88 55.15 C 25.24 48.52 45.30 40.34 66.09 43.08 C 73.30 43.64 80.36 49.00 81.76 56.28 C 86.80 71.68 89.88 89.90 104.63 99.37 C 90.32 109.25 71.09 109.77 55.55 102.51 C 34.16 93.04 17.76 74.88 5.88 55.15 Z" />
<path fill="#6087cf" opacity="1.00" d=" M 136.71 53.84 C 150.17 51.72 163.87 54.02 176.97 57.20 C 177.03 63.46 176.99 69.71 177.00 75.97 C 165.45 70.71 152.01 66.63 139.45 70.55 C 133.18 72.34 131.87 82.37 138.12 85.04 C 149.85 89.93 163.74 88.95 174.44 96.55 C 185.14 104.29 184.91 120.49 179.26 131.24 C 175.21 138.39 167.09 141.95 159.28 143.16 C 144.38 145.40 129.09 142.93 115.00 137.87 C 115.00 131.60 115.00 125.32 115.00 119.05 C 127.06 125.23 141.25 130.54 154.83 126.63 C 161.72 124.96 163.34 114.35 156.88 111.13 C 145.88 106.03 132.53 106.99 122.58 99.37 C 113.47 92.76 112.33 79.73 115.71 69.77 C 118.71 60.78 127.69 55.23 136.71 53.84 Z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1,80 +0,0 @@
#
# External resource support for CMake's Qt5 support, version 1.0
# written by Grzegorz Antoniak <ga -at- anadoxin -dot- org>
# http://github.com/antekone/qt5-external-resources-cmake
#
# Tested on CMake 3.2.2
# qt5_parse_rcc_depends function
#
# Based on original Qt5CoreMacros.cmake/qt5_add_resources function.
function(QT5_PARSE_RCC_DEPENDS infile)
set(_RC_DEPENDS)
if(EXISTS "${infile}")
# parse file for dependencies
# all files are absolute paths or relative to the location of the qrc file
file(READ "${infile}" _RC_FILE_CONTENTS)
string(REGEX MATCHALL "<file[^<]+" _RC_FILES "${_RC_FILE_CONTENTS}")
foreach(_RC_FILE ${_RC_FILES})
string(REGEX REPLACE "^<file[^>]*>" "" _RC_FILE "${_RC_FILE}")
if(NOT IS_ABSOLUTE "${_RC_FILE}")
set(_RC_FILE "${rc_path}/${_RC_FILE}")
endif()
set(_RC_DEPENDS ${_RC_DEPENDS} "${_RC_FILE}")
endforeach()
# Since this cmake macro is doing the dependency scanning for these files,
# let's make a configured file and add it as a dependency so cmake is run
# again when dependencies need to be recomputed.
qt5_make_output_file("${infile}" "" "qrc.depends" out_depends)
configure_file("${infile}" "${out_depends}" COPYONLY)
set(out_depends_return ${out_depends} PARENT_SCOPE)
set(_RC_DEPENDS_RETURN ${_RC_DEPENDS} PARENT_SCOPE)
else()
# The .qrc file does not exist (yet). Let's add a dependency and hope
# that it will be generated later
set(out_depends)
endif()
endfunction()
# qt5_add_external_resources function
#
# Usage:
#
# qt5_add_external_resources(outfile res/infile.qrc)
#
# This should generate ${CMAKE_BINARY_DIR}/outfile.rcc, ready to be used inside
# the application. You can also use it like this:
#
# qt5_add_external_resources(outfile res/infile.qrc OPTIONS -someoption)
#
# if you would like to add some option to the RCC's command line.
function(QT5_ADD_EXTERNAL_RESOURCES rccfilename qrcfilename)
set(options)
set(oneValueArgs)
set(multiValueArgs OPTIONS)
cmake_parse_arguments(_RCC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
set(rcc_files ${_RCC_UNPARSED_ARGUMENTS})
set(rcc_options ${_RCC_OPTIONS})
get_filename_component(outfilename ${rccfilename} NAME_WE)
get_filename_component(infile ${qrcfilename} ABSOLUTE)
get_filename_component(rc_path ${infile} PATH)
set(outfile ${CMAKE_CURRENT_BINARY_DIR}/${outfilename}.rcc)
qt5_parse_rcc_depends(${infile})
add_custom_command(OUTPUT ${outfile}
COMMAND ${Qt5Core_RCC_EXECUTABLE}
ARGS ${rcc_options} -name ${outfilename} -o ${outfile} ${infile} -binary
MAIN_DEPENDENCY ${infile}
DEPENDS ${_RC_DEPENDS_RETURN} "${out_depends_return}" VERBATIM)
set(_RC_TARGETNAME "qrc_external_${outfilename}")
add_custom_target(${_RC_TARGETNAME} ALL DEPENDS ${outfile})
endfunction()
# vim:set et:

View File

@ -1,5 +1,5 @@
#include <arm_neon.h>
#include <stdint.h>
#include <arm_neon.h>
#include <stdlib.h>
#include <signal.h>

View File

@ -1,4 +1,5 @@
#include <signal.h>
#include <stdlib.h>
#include <immintrin.h>
void signalHandler(int signum) {

View File

@ -1,4 +1,5 @@
#include <signal.h>
#include <stdlib.h>
#include <immintrin.h>
void signalHandler(int signum) {

View File

@ -1,4 +1,5 @@
#include <stdint.h>
#include <stdlib.h>
#include <signal.h>
#include <immintrin.h>

View File

@ -1,4 +1,5 @@
#include <signal.h>
#include <stdlib.h>
#include <emmintrin.h>
void signalHandler(int signum) {

View File

@ -1,4 +1,5 @@
#include <signal.h>
#include <stdlib.h>
#include <emmintrin.h>
#include <pmmintrin.h>

View File

@ -1,4 +1,5 @@
#include <signal.h>
#include <stdlib.h>
#include <emmintrin.h>
#include <smmintrin.h>

View File

@ -1,4 +1,5 @@
#include <signal.h>
#include <stdlib.h>
#include <nmmintrin.h>
void signalHandler(int signum) {

View File

@ -1,4 +1,5 @@
#include <signal.h>
#include <stdlib.h>
#include <emmintrin.h>
#include <tmmintrin.h>

View File

@ -57,23 +57,4 @@ int pthread_barrier_wait(pthread_barrier_t *barrier)
}
}
#ifdef _DARWIN_FEATURE_CLOCK_GETTIME
/**
* Missing POSIX RealTime/Monotonic Clock
*/
#include <mach/mach_time.h>
int clock_gettime(int clk_id, struct timespec *t) {
mach_timebase_info_data_t timebase;
mach_timebase_info(&timebase);
uint64_t time;
time = mach_absolute_time();
double nseconds = ((double)time * (double)timebase.numer)/((double)timebase.denom);
double seconds = ((double)time * (double)timebase.numer)/((double)timebase.denom * 1e9);
t->tv_sec = seconds;
t->tv_nsec = nseconds;
return 0;
}
#endif
#endif // APPLE Compatibility
#endif // __APPLE_

View File

@ -0,0 +1,75 @@
/*
* APPLE Compatibility
*/
#ifdef __APPLE__
/**
* Missing POSIX Thread Barriers implementation
*/
#ifndef PTHREAD_BARRIER_H_
#define PTHREAD_BARRIER_H_
#include <pthread.h>
#include <errno.h>
typedef int pthread_barrierattr_t;
typedef struct
{
pthread_mutex_t mutex;
pthread_cond_t cond;
int count;
int tripCount;
} pthread_barrier_t;
int pthread_barrier_init(pthread_barrier_t *barrier, const pthread_barrierattr_t *attr, unsigned int count);
int pthread_barrier_destroy(pthread_barrier_t *barrier);
int pthread_barrier_wait(pthread_barrier_t *barrier);
#endif // PTHREAD_BARRIER_H_
// macOS < 10.12 doesn't have clock_gettime()
#include <time.h>
#if !defined(CLOCK_REALTIME) && !defined(CLOCK_MONOTONIC)
#define CLOCK_REALTIME 0
#define CLOCK_MONOTONIC 6
typedef int clockid_t;
#include <sys/time.h>
#include <mach/mach_time.h>
// here to avoid problem on linking of qrtplib
inline int clock_gettime( clockid_t clk_id, struct timespec *ts )
{
int ret = -1;
if ( ts )
{
if ( CLOCK_REALTIME == clk_id )
{
struct timeval tv;
ret = gettimeofday(&tv, NULL);
ts->tv_sec = tv.tv_sec;
ts->tv_nsec = tv.tv_usec * 1000;
}
else if ( CLOCK_MONOTONIC == clk_id )
{
const uint64_t t = mach_absolute_time();
mach_timebase_info_data_t timebase;
mach_timebase_info(&timebase);
const uint64_t tdiff = t * timebase.numer / timebase.denom;
ts->tv_sec = tdiff / 1000000000;
ts->tv_nsec = tdiff % 1000000000;
ret = 0;
}
}
return ret;
}
#endif // CLOCK_REALTIME and CLOCK_MONOTONIC
#endif // __APPLE__

View File

@ -0,0 +1,44 @@
#if (defined _WIN32_) || (defined _MSC_VER)
/*
* missing gettimeofday implementation
* for windows; based on postgresql
*/
#ifndef CUSTOM_WINDOWS_TIME_H_
#define CUSTOM_WINDOWS_TIME_H_
#define _WINSOCKAPI_ // stops windows.h including winsock.h; timeval redefine
#include <Windows.h>
#include <stdint.h> // portable: uint64_t MSVC: __int64
// MSVC defines this in winsock2.h!?
typedef struct timeval {
long tv_sec;
long tv_usec;
} timeval;
int gettimeofday(struct timeval * tp, struct timezone * tzp)
{
// Note: some broken versions only have 8 trailing zero's, the correct epoch has 9 trailing zero's
// This magic number is the number of 100 nanosecond intervals since January 1, 1601 (UTC)
// until 00:00:00 January 1, 1970
static const uint64_t EPOCH = ((uint64_t) 116444736000000000ULL);
SYSTEMTIME system_time;
FILETIME file_time;
uint64_t time;
GetSystemTime( &system_time );
SystemTimeToFileTime( &system_time, &file_time );
time = ((uint64_t)file_time.dwLowDateTime ) ;
time += ((uint64_t)file_time.dwHighDateTime) << 32;
tp->tv_sec = (long) ((time - EPOCH) / 10000000L);
tp->tv_usec = (long) (system_time.wMilliseconds * 1000);
return 0;
}
#endif // CUSTOM_WINDOWS_TIME_H_
#endif // _WIN32_

View File

@ -1,6 +0,0 @@
sdrangel for Debian
------------------
<possible notes regarding this package - if none, delete this file>
-- F4EXB <f4exb06@gmail.com> Tue, 25 Oct 2016 11:15:15 +0200

10
debian/README.source vendored
View File

@ -1,10 +0,0 @@
sdrangel for Debian
------------------
<this file describes information about the source package, see Debian policy
manual section 4.14. You WILL either need to modify or delete this file>
-- F4EXB <f4exb06@gmail.com> Tue, 25 Oct 2016 11:15:15 +0200

780
debian/changelog vendored
View File

@ -1,780 +0,0 @@
sdrangel (4.8.0-1) unstable; urgency=medium
* Local output plugin
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 10 May 2019 20:44:06 +0100
sdrangel (4.7.2-1) unstable; urgency=medium
* Unique DeviceAPI interface for sources and sinks
* REST API: fixes over last version
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 08 May 2019 22:14:18 +0100
sdrangel (4.7.1-1) unstable; urgency=medium
* SSB modulator: fixed compressor overloading
* REST API: tx, nbStreams and streamIndex names change
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Tue, 07 May 2019 14:14:18 +0100
sdrangel (4.7.0-1) unstable; urgency=medium
* New Frequency Tracker Rx channel plugin
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 05 May 2019 16:14:18 +0100
sdrangel (4.6.0-1) unstable; urgency=medium
* New LocalSink and LocalInput plugin pair to use sub basebands internally
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 02 May 2019 11:14:18 +0100
sdrangel (4.5.6-1) unstable; urgency=medium
* Remote channel sink: implemented decimation with possible center shift. Issue #331
* Remote input: fixed version display
* DSD demod: save PLL enable and autio mute in preset
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 28 Apr 2019 20:14:18 +0100
sdrangel (4.5.5-1) unstable; urgency=medium
* FreeDV: fixes in REST API
* LimeSDR: fixed Rx and Tx antenna labels for Lime mini
* HackRF output: fixed setting of Fc pos from REST API
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 20 Apr 2019 20:14:18 +0100
sdrangel (4.5.4-1) unstable; urgency=medium
* Fixed RTL-SDR gain setting sequence. Fixes issue #321.
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 05 Apr 2019 20:14:18 +0100
sdrangel (4.5.3-1) unstable; urgency=medium
* Fixed HackRF Rx/Tx frequency setting. Fixes issue #318.
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Mon, 01 Apr 2019 20:14:18 +0100
sdrangel (4.5.2-1) unstable; urgency=medium
* Send device and channel index in reverse API. Implements issue #312.
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Mon, 25 Mar 2019 20:14:18 +0100
sdrangel (4.5.1-1) unstable; urgency=medium
* DATV demod: implemented audio processing
* Perseus: fixed cold start flawed init sequence
* PlutoSDR: recognize networked devices
* FreeDV: internal FreeDV library to facilitate packaging
* Fixed some constness in qrtplib
* Fixed bug in Channel Analyzer deserialization. Fixes issue #314.
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 22 Mar 2019 20:14:18 +0100
sdrangel (4.5.0-1) unstable; urgency=medium
* Implemented a FreeDV modulator and demodulator
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 03 Mar 2019 20:14:18 +0100
sdrangel (4.4.5-1) unstable; urgency=medium
* UDP/RTP audio: added G722 and Opus support
* Debian build: fixed missing sources in dsdcc, libiio and limesuite
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Tue, 19 Feb 2019 22:14:18 +0100
sdrangel (4.4.4-1) unstable; urgency=medium
* SoapySDR: fixed some GUI issues
* UDP/RTP audio: added decimation and PCM A-law and Mu-law compression
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 15 Feb 2019 10:14:18 +0100
sdrangel (4.4.3-1) unstable; urgency=medium
* Migration of SDRDaemon* devices to Remote* devices
* PlutoSDR: get LP filter bandwidth from device
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 03 Feb 2019 10:14:18 +0100
sdrangel (4.4.2-1) unstable; urgency=medium
* Migration of Daemon* channels to Remote* channels
* XTRX: fixed GPS status retrieval
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 25 Jan 2019 21:14:18 +0100
sdrangel (4.4.1-1) unstable; urgency=medium
* AirspyHF: Implemented new settings that come along newer version of libairspyhf
* Fixed many glitches in the REST API device settings handling
* SoapySDR: on preset load match on serial or driver id for SoapySDR devices
* SerialDV: corrected cmake find module and improved SerialDV support error messages
* Make the settings location appear in the log and in the about panel of the GUI also
* Temptative XTRX fixes
* REST API examples: Added a randomize channel colors utility as a way to answer to issue #275
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 02 Jan 2019 21:14:18 +0100
sdrangel (4.4.0-1) unstable; urgency=medium
* XTRX support
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 02 Jan 2019 21:14:18 +0100
sdrangel (4.3.2-1) unstable; urgency=medium
* Reverse API to forward device and channel changes to external application
* Funcube dongle: fixed segfault when stopping device
* Channel analzyer: fixed rational downsampler range
* SoapySDR support: fixed memory leaks
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 09 Dec 2018 21:14:18 +0100
sdrangel (4.3.1-1) unstable; urgency=medium
* RTL-SDR: offset tuning support
* SoapySDR support: 250 ms minimum timeout
* LimeSDR REST API: support GPIO
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 30 Nov 2018 21:14:18 +0100
sdrangel (4.3.0-1) unstable; urgency=medium
* SoapySDR support
* BladeRF2 corrections
* Scope fixes possible seg fault and correct memory processing
* FCDPro/FCDProPlus critical fixes to make it work again
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 22 Nov 2018 21:14:18 +0100
sdrangel (4.2.4-1) unstable; urgency=medium
* LimeSDR: use LimeSuite 18.10.0 for builds
* DSD demod: use 1 dB steps for squelch
* Scope: fixed some trigger issues. Fixes issue #233
* Scope: implemented trigger holdoff. May fix more trigger issues.
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 27 Oct 2018 21:14:18 +0200
sdrangel (4.2.3-1) unstable; urgency=medium
* Scope: fixed channel rate affecting scope in memory mode. Issue #227
* Spectrum: limit depth to 1000 when in moving average mode to avoid RAM exhaustion
* Spectrum: reworked phosphor display controls. Re-implements issue #207
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 19 Oct 2018 21:14:18 +0200
sdrangel (4.2.2-1) unstable; urgency=medium
* Spectrum: option to get max over a number of FFTs. Implements issue #207
* File Input: fixed wrong times displays due to 32 bit integer ovevlow. Issue #206
* File Input: implemented play loop and playback acceleration
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 14 Oct 2018 21:14:18 +0200
sdrangel (4.2.1-1) unstable; urgency=medium
* FileRecord improvement with robust header and some fixes. Fixes issue #206
* BladeRF2 MO Tx fix so that the two channels are used effectively. Fixes issue #225
* NFM demod: set squelch step to 1 dB
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 10 Oct 2018 21:14:18 +0200
sdrangel (4.2.0-1) unstable; urgency=medium
* LibbladeRF 2.0 support with BladeRF Micro
* Scope: corrected trace memory index position
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 7 Oct 2018 21:14:18 +0200
sdrangel (4.1.0-1) unstable; urgency=medium
* Integrated SDRdaemon with a pair of new channel plugins
* Exchanged UDP sink and source names for better consistency
* Fixed AudioFifo to prevent deadlocks. Fixes issue #210
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 16 Sep 2018 21:14:18 +0200
sdrangel (4.0.7-1) unstable; urgency=medium
* Scope: removed old scope objects
* Web API: reduced HTTP server debug messages
* Sink plugins: corrected name getters and setters
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 19 Aug 2018 21:14:18 +0200
sdrangel (4.0.6-1) unstable; urgency=medium
* Web API: RTL-SDR: fixed RF bandwidth setting
* Web API: enhanced DV serial and AM demod interfaces
* Web API: fixed bug in PUT/PATCH of modulators not setting differentially
* Fixed power display going to floor value in some demods
* SSB modulator: fixed sample not reset when no modulation is present
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Tue, 07 Aug 2018 19:14:18 +0200
sdrangel (4.0.5-1) unstable; urgency=medium
* Web API: handle pre-flight requests
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 22 Jul 2018 09:14:18 +0200
sdrangel (4.0.4-1) unstable; urgency=medium
* Fixed PlutoSDR output sample width. Fixes issue #198
* Web API: implemented CORS
* Fix preset group delete not removing presets from the preset window
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 18 Jul 2018 19:14:18 +0200
sdrangel (4.0.3-1) unstable; urgency=medium
* Spectrum: linear mode for spectrum
* Scope: fixed power display overlay
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 08 Jul 2018 15:14:18 +0200
sdrangel (4.0.2-1) unstable; urgency=medium
* Spectrum: added averaging
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 01 Jul 2018 21:14:18 +0200
sdrangel (4.0.1-1) unstable; urgency=medium
* DSD demod: added NXDN support
* DATV demod: include it only if FFmpeg > 3.1 is installed
* Fixes for Arch. Manual merge of pull request #183
* Scope: new magnitude squared projection mainly for radioastronomy
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 23 Jun 2018 09:14:18 +0200
sdrangel (4.0.0-1) unstable; urgency=medium
* Finalization of REST API and server instance
* Removal of old ChannelAnalyzer and TCPSrc plugins
* Renamed Channel Analyzer NG to Channel Analyzer
* DATV demod: added missing AVUTIL cmake variables
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 09 Jun 2018 20:14:18 +0200
sdrangel (3.14.7-1) unstable; urgency=medium
* ChanelAnalyzerNG: added PLL option and source selection with auto correlation
* RTL-SDR: fixed inf/sup decimators
* AM demod: syncrhronous AM detection option
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 20 May 2018 20:14:18 +0200
sdrangel (3.14.6-1) unstable; urgency=medium
* Fixed keyboard input for negative values on realtive integer value dials
* Get rid of ugly native dialogs
* Inf/Sup frequency shift scheme change to be closer to device center frequency
* PlutoSDR input: fixed Inf/Sup frequency shift calculation
* File record default file name with ISO datetime stamp
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 11 May 2018 20:14:18 +0200
sdrangel (3.14.5-1) unstable; urgency=medium
* DSD demod: allow audio rates integer multiples of 8k other than 48k
* Added a benchmark program testing decimators
* Optimization of decimators using even/odd technique
* SSB mod: fixed channel unregistration
* AM demod: fixed delayed squelch
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 06 May 2018 20:14:18 +0200
sdrangel (3.14.4-1) unstable; urgency=medium
* AM demod: squelch buffer to open at start of valid squelch
* NFM demod: same as AM with squelch noise tail cut
* SSB demod: squelch buffer to cut squelch noise tail
* DSD demod: squelch buffer to open at start of valid squelch not loosing any samples
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 22 Apr 2018 17:14:18 +0200
sdrangel (3.14.3-1) unstable; urgency=medium
* LimeSDR: compiled with LimeSuite release 18.04.1
* LimeSDR: implemented transverter dialog (issue #157)
* UDP source and sink: make sure audio samples are always on 16 bits
* UDP source and sink: dialog elements for address and port
* Reviewed FFT destruction in many channel sources and sinks (issue #159)
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 20 Apr 2018 20:14:18 +0200
sdrangel (3.14.2-1) unstable; urgency=medium
* Web API: settings and report for all channel Tx plugins
* Server: AirspyHF, BladeRF and all channel Tx plugins support
* PVS-Studio static analysis corrections (4)
* NFM demod: fixed AF squelch and audio sample rate handling
* BFM demod: fixed segfault in RDS parser
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 15 Apr 2018 12:14:18 +0200
sdrangel (3.14.1-1) unstable; urgency=medium
* NFM: fixed lowpass filter initialization (CTCSS)
* DSD demod: set FM deviation independent from RF bandwidth
* DSD demod: implemented DMR negative with DSDcc v1.7.5
* DSD demod: implemented dialog to view the log of status text messages
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 01 Apr 2018 12:14:18 +0200
sdrangel (3.14.0-1) unstable; urgency=medium
* New audio devices management
* DATV demod: fixed message handling and thus screen initialization issue
* Removed UDP/RTP copy audio from channel sink plugins entirely
* Removed UDP address and port from Channel marker
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 30 Mar 2018 16:14:18 +0200
sdrangel (3.13.1-1) unstable; urgency=medium
* Web API: settings and report enry points for AM demod and AirspyHF
* Web API: client Python script scanner example
* LimeSDR: fixed channelA/B frequency setting with latest LimeSuite
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 25 Mar 2018 06:14:18 +0100
sdrangel (3.13.0-1) unstable; urgency=medium
* DATV (Digital Amateur TV) demodulator.
* Option to use RTP protocol for UDP audio for AM, NFM, SSB, WFM.
* LimeSDR: show NCO and center frequency actual values
* DSD demod: new simplified symbol scope display. Reworked GUI.
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 11 Mar 2018 06:14:18 +0100
sdrangel (3.12.0-1) unstable; urgency=medium
* Perseus support.
* 24 bit Rx DSP Debian builds
* DC and IQ correction fixes
* AirspyHF: fall back to official library support
* Test source: implemented phase imbalance
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 11 Feb 2018 12:14:18 +0100
sdrangel (3.11.1-1) unstable; urgency=medium
* Replaced hardcoded bit scaling literals by defines. 24 bit sample option.
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 28 Jan 2018 12:14:18 +0100
sdrangel (3.11.0-1) unstable; urgency=medium
* AirspyHF: support
* Refactored 8 bit samples shifting during decimation (RTL-SDR and HackRF Rx)
* RTL-SDR: implemented RF filter control (tuner bandwidth)
* Airspy, BladeRF, HackRF, PlutoSDR, RTLSDR, SDRPlay: fix for no decimation
* Test source input plugin for test of software internals
* GUI: show REST API URL in about dialog
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 20 Jan 2018 12:14:18 +0100
sdrangel (3.10.1-1) unstable; urgency=medium
* LimeSDR: fixed segfault when stopping one device in multiple stream confguration
* PlutoSDR: fixed segfault when stopping one device in multiple stream confguration
* Channel plugins: apply initial channel settings at construction and start
* SSB demod: refactored decimator filtering
* FileSource: fixed initialization of do apply settings flag possibly preventing start
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 07 Jan 2018 23:14:18 +0100
sdrangel (3.10.0-1) unstable; urgency=medium
* Implemented external command handling from the GUI
* AM, SSB demodulators and SSB modulator: fix sample rate handling
* Enhancements to presets processing and GUI
* Improved build and system info logging
* Web API: added function to set device set focus (GUI only)
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 07 Jan 2018 09:14:18 +0100
sdrangel (3.9.1-1) unstable; urgency=medium
* Transmission: make source channels working concurrently in multiple channel
* Transmission: connect source channel directly to device FIFO in single channel
* NFM, WFM modulators and UDP sink: fixes
* DSD demodulator: use lower cutoff for optional audio high pass filter
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Tue, 02 Jan 2018 18:14:18 +0100
sdrangel (3.9.0-1) unstable; urgency=medium
* Server: proof of concept
* DSD demodulator: added optional high pass filter on audio (uese dsdcc v1.7.3)
* Down/Up channelizers: enqeue MsgChannelizerNotification to sample sink/source
* Separate channel sample rate and offset frequency this data from settings
* Use specific method to apply channelizer sample rate and frequency offset changes
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 30 Dec 2017 17:14:18 +0100
sdrangel (3.8.6-1) unstable; urgency=medium
* LimeSDR: fixed second channel solo or first one streaming
* Web API: implemented some device plugins methods: RTLSDR, Lime
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 10 Dec 2017 12:14:18 +0100
sdrangel (3.8.5-1) unstable; urgency=medium
* SSB mod/demod: improve LSB/USB experience
* Web API: online static documentation page
* Web API: implemented all main window methods
* LimeSDR: fixed analog LP filter setting
* LimeSDR: builds done with LimeSuite commit 0167e64 to suport LimeSDR mini
* Debian: added installation of udev rules in postinst script
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 02 Dec 2017 12:14:18 +0100
sdrangel (3.8.4-1) unstable; urgency=medium
* Optimize channel marker signal handling. Applied to all mods and demods
* Fixed value dials direct digits setting
* Implemented minimal version of web API sever
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 18 Nov 2017 12:14:18 +0100
sdrangel (3.8.3-1) unstable; urgency=medium
* ChannelAnalyzerNG: fixed GUI displays when channel sample rate changes
* SSB demod: fixed low cutoff channel marker display
* LimeSDR: increased start/stop stream wait time to 50ms
* New logging system with optional copy to files
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 12 Nov 2017 18:14:18 +0100
sdrangel (3.8.2-1) unstable; urgency=medium
* WFM Demod: fixed segfault due to sequence of actions in demod constructor
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 08 Nov 2017 18:14:18 +0100
sdrangel (3.8.1-1) unstable; urgency=medium
* SSB Mod: refactored bandwidths settings and fixed segfault
* LimeSDR: implemented external clock reference input option
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 05 Nov 2017 18:14:18 +0100
sdrangel (3.8.0-1) unstable; urgency=medium
* Redesigned the device handling to accomodate multi channel devices like LimeSDR
* Refactoring: Separate DeviceAPI from the GUI
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 02 Nov 2017 18:14:18 +0100
sdrangel (3.7.8-1) unstable; urgency=medium
* PlutoSDR: restored and fixed Tx support
* LimeSDR: reworked the start/stop stream so it does not need the workaround delay
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 28 Oct 2017 18:14:18 +0100
sdrangel (3.7.7-1) unstable; urgency=medium
* PlutoSDR: removed Tx support
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 27 Oct 2017 23:14:18 +0200
sdrangel (3.7.6-1) unstable; urgency=medium
* LimeSDR: attempt to fix lockup conditions when Rx and Tx run concurrently
* LimeSDR: handle hardware decimation and sample rate Rx/Tx relation correctly
* Create sdrbase library own CMakeLists.txt
* Created sdrgui library and split off GUI stuff from sdrbase
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 21 Oct 2017 23:14:18 +0200
sdrangel (3.7.5-1) unstable; urgency=medium
* CW keyer: make ramp as 20% of dot length to smoothen even more
* Fixed BFM demod frequency shift
* GUI and demod separation step 1 full
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 14 Oct 2017 23:14:18 +0200
sdrangel (3.7.4-1) unstable; urgency=medium
* GUI and demod separation step 1 full
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 08 Oct 2017 23:14:18 +0200
sdrangel (3.7.3-1) unstable; urgency=medium
* For Airspy, Funcube Pro and Pro+, PlutoSDR Rx and Tx, RTLSDR:
* Button and dialog to set frequency translation for transverter operation
* GUI and demod separation step 1 partial
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 04 Oct 2017 23:14:18 +0200
sdrangel (3.7.2-1) unstable; urgency=medium
* PlutoSDR: Remove from device enumeration if device is not accessible
* RTLSDR: Fixed gains retrieval in the GUI
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 23 Sep 2017 05:14:18 +0200
sdrangel (3.7.1-1) unstable; urgency=medium
* PlutoSDR: Tx support
* LimeSDR: use version 17.09 of LimeSuite providing bug fixes
* GUI segregation: remove device source or sink lifecycle from the GUI
* GUI segregation: handle GUI and device buddy updates separately
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 21 Sep 2017 21:14:18 +0200
sdrangel (3.7.0-1) unstable; urgency=medium
* PlutoSDR: Rx support
* GUI segregation: preliminary works
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 17 Sep 2017 23:14:18 +0200
sdrangel (3.6.1-1) unstable; urgency=medium
* Basic channel settings dialog with title+color update and UDP parameters
* Applied to UDPSink, UDPSource, DSDDemod, AMDemod, BFMDemod, NFMDemod
* DSD, AM, NFM, BFM demods: added possibility to send AF via UDP
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 31 Aug 2017 23:14:18 +0200
sdrangel (3.6.0-1) unstable; urgency=medium
* UDPSink Tx plugin: new
* LimeSDR output: fixed Tx not stopping on stop (issue #50)
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 17 Aug 2017 23:14:18 +0200
sdrangel (3.5.5-1) unstable; urgency=medium
* Output plugins: use fixed time length for sample FIFO of ~0.25s
* Audio modulators: reduce audio input file buffer to 0.1s
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 13 Aug 2017 23:14:18 +0200
sdrangel (3.5.4-1) unstable; urgency=medium
* LimeSDR: fixed NCO lower boundary calculation by flooring to zero
* LimeSDR: corrected NCO de-tune when sample rate or hardware decim/interp changes
* All audio modulators: fixed audio input
* SSB modulator: added an audio compressor
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 06 Aug 2017 23:14:18 +0200
sdrangel (3.5.3-1) unstable; urgency=medium
* SSB demod: anded optional AGC
* ChannelAnalyzerNG: better handling of LSB in the UI
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Mon, 31 Jul 2017 09:14:18 +0200
sdrangel (3.5.2-1) unstable; urgency=medium
* HackRF: stop Rx before start Tx automatically and vice versa
* HackRF: added option on Rx to drive Tx frequency change
* SSB mod and demod: make UI displays consistent with DSB, USB and LSB modes
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 22 Jul 2017 09:14:18 +0200
sdrangel (3.5.1-1) unstable; urgency=medium
* LimeSDR input: added individual gains control and ADC rate display
* LimeSDR output: added DAC rate display
* LimeSDR all: added board temperature display
* Added pulseaudio and libqt5multimedia5-plugins in the Debian dependencies
* Updates to build on aarch64 in openSUSE
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 01 Jul 2017 19:14:18 +0200
sdrangel (3.5.0-1) unstable; urgency=medium
* SDRdaemonSink plugin connecting to a distant sdrdaemontx instance
* SDRdemonFEC plugin renamed to SDRdaemonSource
* SDRdaemon plugin deprecated and removed from the build and distributions
* Changed frequency thumbweels color scheme
* Activated compiler warnings and fixed warnings
* Lots of little GUI fixes
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Mon, 11 Jun 2017 19:14:18 +0200
sdrangel (3.4.5-1) unstable; urgency=medium
* Removed default constuctors in Moving average and AGC classes
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Mon, 11 May 2017 21:14:18 +0100
sdrangel (3.4.4-1) unstable; urgency=medium
* LimeSDR output: fixed timeout value on LMS_SendStream
* LimeSDR: various fixes to make it run smoothly
* LimeSDR: Windows 64 build
* LimeSDR: integrated Debian build
* cmake modules: search lib64 libraries
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Mon, 08 May 2017 21:14:18 +0100
sdrangel (3.4.3-1) unstable; urgency=medium
* DSD demod: use version 1.7.1 of dsdcc with PLL for symbol synchronization as an option
* LimeSDR: fixed antenna selection in both input and output plugins
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Mon, 08 May 2017 23:14:18 +0100
sdrangel (3.4.2-1) unstable; urgency=medium
* DSD demod: use version 1.7.0 of dsdcc with PLL for symbol synchronization
* DSD demod: kernel >= 4.4.52 workaround for SerialDV
* Code cleanup: cppchack and Eclipse warnings
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 26 Apr 2017 23:14:18 +0100
sdrangel (3.4.1-1) unstable; urgency=medium
* Optimization of halfband interpolation FIR fitler processing
* HackRF support: fixed start/stop sequence
* WFM Demod enhancement
* CW Keyer: specifiy char signedness to fix error with some compilers
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 26 Apr 2017 23:14:18 +0100
sdrangel (3.4.0-1) unstable; urgency=medium
* LimeSDR support with redesign of source and sink management
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Mon, 17 Apr 2017 23:14:18 +0100
sdrangel (3.3.4-1) unstable; urgency=medium
* ATV Demod: fixed issue #22. Segfault when starting the plugin while the
* source is running
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Mon, 10 Apr 2017 21:14:18 +0100
sdrangel (3.3.3-1) unstable; urgency=medium
* HackRF, BladeRF, RTLSDR plugins: continuous sample rate setting
* ATV: implemented narrow band modes
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 9 Apr 2017 23:14:18 +0100
sdrangel (3.3.2-1) unstable; urgency=medium
* ATV plugins: added 405 lines, 20 and 16 FPS modes
* ATV demodulator: added a scope panel in a tab combo with the TV screen
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 22 Mar 2017 23:14:18 +0100
sdrangel (3.3.1-1) unstable; urgency=medium
* ATV plugins: SSB and vestigiial sideband support
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 19 Mar 2017 23:14:18 +0100
sdrangel (3.3.0-1) unstable; urgency=medium
* NFM demod: new discriminator and optional FM deviation based squelch
* ATV modulator
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 15 Mar 2017 23:14:18 +0100
sdrangel (3.2.0-1) unstable; urgency=medium
* ATV demodulator for amateur Analog TV
* New channel analyzer Channel Analyzer NG with a new generation signal scope
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 02 Mar 2017 23:14:18 +0100
sdrangel (3.1.1-1) unstable; urgency=medium
* DSD demod: adapt to dsdcc version 1.6
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Fri, 13 Jan 2017 03:14:18 +0100
sdrangel (3.1.0-1) unstable; urgency=medium
* HackRF Tx support
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 08 Jan 2017 23:14:18 +0100
sdrangel (3.0.1-1) unstable; urgency=medium
* Fixed audio preferences dialog and handling
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sat, 07 Jan 2017 11:14:18 +0100
sdrangel (3.0.0-1) unstable; urgency=medium
* Implemented real Tx devices (BladeRF and HackRF) for real transmission
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 01 Jan 2017 23:14:18 +0100
sdrangel (2.5.2-1) unstable; urgency=medium
* Changed modulators source device feeding
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 25 Dec 2016 23:14:18 +0100
sdrangel (2.5.1-1) unstable; urgency=medium
* WFM Modulator
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 18 Dec 2016 23:14:18 +0100
sdrangel (2.5.0-1) unstable; urgency=medium
* SSB Modulator
* CW Keyer
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Thu, 15 Dec 2016 23:14:18 +0100
sdrangel (2.4.0-1) unstable; urgency=medium
* NFM Modulator
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 05 Dec 2016 23:14:18 +0100
sdrangel (2.3.1-1) unstable; urgency=medium
* AM Modulator: support file input
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 27 Nov 2016 23:14:18 +0100
sdrangel (2.3.0-1) unstable; urgency=medium
* SDRplay support: new input source plugin
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Sun, 13 Nov 2016 23:14:18 +0100
sdrangel (2.2.2-1) unstable; urgency=medium
* Baseband Halfband FIR filter optimizations
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 11 Nov 2016 12:25:34 +0100
sdrangel (2.2.1-1) unstable; urgency=medium
* Baseband Tx support (phase 2)
* Code optimizations
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Wed, 02 Nov 2016 14:15:15 +0100
sdrangel (2.2.0-1) unstable; urgency=medium
* Initial release as a Debian package
* Embryonic Tx support (phase 1)
-- Edouard Griffiths, F4EXB <f4exb06@gmail.com> Tue, 24 Oct 2016 23:15:15 +0200

1
debian/changelog vendored Symbolic link
View File

@ -0,0 +1 @@
../CHANGELOG

2
debian/compat vendored
View File

@ -1 +1 @@
9
10

45
debian/control vendored
View File

@ -1,19 +1,47 @@
Source: sdrangel
Maintainer: Edouard Griffiths, F4EXB <f4exb06@gmail.com>
Section: hamradio
Priority: optional
Maintainer: Edouard Griffiths, F4EXB <f4exb06@gmail.com>
Build-Depends: debhelper (>=9)
Standards-Version: 3.9.6
Standards-Version: 3.9.2
Homepage: https://github.com/f4exb/sdrangel
#Vcs-Git: git://anonscm.debian.org/collab-maint/sdrangel.git
#Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/sdrangel.git
Build-Depends: debhelper (>= 9),
libfftw3-dev,
qtbase5-dev,
libqt5opengl5-dev,
qttools5-dev,
qttools5-dev-tools,
qtmultimedia5-dev,
libqt5multimedia5-plugins,
libusb-1.0-0-dev,
libboost-all-dev,
librtlsdr-dev,
libasound2-dev,
libopencv-dev,
libopencv-dev,
libsqlite3-dev,
libxml2-dev,
bison,
flex,
ffmpeg,
libavcodec-dev,
libavformat-dev,
libopus-dev,
libcodec2-dev,
libairspy-dev,
libhackrf-dev,
librtlsdr-dev
# TODO:
# - more dependencies based on version; newer has more devices
# - manage dependencies not present upstream
Package: sdrangel
Architecture: any
Depends: libc6, libasound2, libfftw3-single3, libgcc1, libgl1-mesa-glx, libqt5core5a, libqt5gui5, libqt5multimedia5, libqt5network5, libqt5opengl5, libqt5widgets5, libqt5multimedia5-plugins, libstdc++6, libusb-1.0-0, libopencv-dev, pulseaudio, libxml2, ffmpeg, libavcodec-dev, libavformat-dev, libopus-dev, libcodec2-dev, ${shlibs:Depends}, ${misc:Depends}
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: SDR/Analyzer/Generator front-end for various hardware
SDR/Analyzer/Generator front-end for Airspy, BladeRF, HackRF, RTL-SDR, FunCube, LimeSDR, PlutoSDR.
Also File source and sink for I/Q samples, network I/Q sources with remote instance.
SDR/Analyzer/Generator front-end for Airspy, BladeRF, HackRF,
RTL-SDR, FunCube, LimeSDR, PlutoSDR.
Also File source and sink for I/Q samples, network I/Q sources with
remote instance.
Based on Qt5 framework and OpenGL for the spectrum and scope rendering.
Builds on Linux, Windows and Mac O/S
Reception modes supported:
@ -22,3 +50,4 @@ Description: SDR/Analyzer/Generator front-end for various hardware
Analyzer: Generic channel
Transmission modes supported:
Analog: AM, ATV, NFM, SSB, WFM
Homepage: https://github.com/f4exb/sdrangel

36
debian/copyright vendored
View File

@ -1,33 +1,11 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: sdrangel
Source: https://github.com/f4exb/sdrangel
# probably need to be expanded
Files: *
Copyright: 2015-2016 Edouard Griffiths, <f4exb06@gmail.com>
License: GPL-3.0+
Copyright: 2012 maintech GmbH
License: GPL-3.0
Files: debian/*
Copyright: 2016 Edouard Griffiths, F4EXB <f4exb06@gmail.com>
License: GPL-3.0+
Copyright: 2013 Dimitri Stolnikov
License: GPL-3.0
License: GPL-3.0+
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
.
On Debian systems, the complete text of the GNU General
Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
# Please also look if there are files or directories which have a
# different copyright/license attached and list them here.
# Please avoid picking licenses with terms that are more restrictive than the
# packaged work, as it may make Debian's contributions unacceptable upstream.
Copyright: 2015-2019 Edouard Griffiths F4EXB
License: GPL-3.0

26
debian/init.d.ex vendored
View File

@ -1,26 +0,0 @@
#!/bin/sh
# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing.
if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
fi
### BEGIN INIT INFO
# Provides: sdrangel
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: <Enter a short description of the software>
# Description: <Enter a long description of the software>
# <...>
# <...>
### END INIT INFO
# Author: F4EXB <f4exb06@gmail.com>
DESC="sdrangel"
DAEMON=/usr/bin/sdrangel
# This is an example to start a single forking daemon capable of writing
# a pid file. To get other behaviors, implement do_start(), do_stop() or
# other functions to override the defaults in /lib/init/init-d-script.
# See also init-d-script(5)

56
debian/manpage.1.ex vendored
View File

@ -1,56 +0,0 @@
.\" Hey, EMACS: -*- nroff -*-
.\" (C) Copyright 2016 F4EXB <f4exb06@gmail.com>,
.\"
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH Sdrangel SECTION "October 25 2016"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
.\" .nh disable hyphenation
.\" .hy enable hyphenation
.\" .ad l left justify
.\" .ad b justify to both left and right margins
.\" .nf disable filling
.\" .fi enable filling
.\" .br insert line break
.\" .sp <n> insert n+1 empty lines
.\" for manpage-specific macros, see man(7)
.SH NAME
sdrangel \- program to do something
.SH SYNOPSIS
.B sdrangel
.RI [ options ] " files" ...
.br
.B bar
.RI [ options ] " files" ...
.SH DESCRIPTION
This manual page documents briefly the
.B sdrangel
and
.B bar
commands.
.PP
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
.\" respectively.
\fBsdrangel\fP is a program that...
.SH OPTIONS
These programs follow the usual GNU command line syntax, with long
options starting with two dashes (`-').
A summary of options is included below.
For a complete description, see the Info files.
.TP
.B \-h, \-\-help
Show summary of options.
.TP
.B \-v, \-\-version
Show version of program.
.SH SEE ALSO
.BR bar (1),
.BR baz (1).
.br
The programs are documented fully by
.IR "The Rise and Fall of a Fooish Bar" ,
available via the Info system.

154
debian/manpage.sgml.ex vendored
View File

@ -1,154 +0,0 @@
<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
<!-- Process this file with docbook-to-man to generate an nroff manual
page: `docbook-to-man manpage.sgml > manpage.1'. You may view
the manual page with: `docbook-to-man manpage.sgml | nroff -man |
less'. A typical entry in a Makefile or Makefile.am is:
manpage.1: manpage.sgml
docbook-to-man $< > $@
The docbook-to-man binary is found in the docbook-to-man package.
Please remember that if you create the nroff version in one of the
debian/rules file targets (such as build), you will need to include
docbook-to-man in your Build-Depends control field.
-->
<!-- Fill in your name for FIRSTNAME and SURNAME. -->
<!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
<!ENTITY dhsurname "<surname>SURNAME</surname>">
<!-- Please adjust the date whenever revising the manpage. -->
<!ENTITY dhdate "<date>October 25 2016</date>">
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are
allowed: see man(7), man(1). -->
<!ENTITY dhsection "<manvolnum>SECTION</manvolnum>">
<!ENTITY dhemail "<email>f4exb06@gmail.com</email>">
<!ENTITY dhusername "F4EXB">
<!ENTITY dhucpackage "<refentrytitle>Sdrangel</refentrytitle>">
<!ENTITY dhpackage "sdrangel">
<!ENTITY debian "<productname>Debian</productname>">
<!ENTITY gnu "<acronym>GNU</acronym>">
<!ENTITY gpl "&gnu; <acronym>GPL</acronym>">
]>
<refentry>
<refentryinfo>
<address>
&dhemail;
</address>
<author>
&dhfirstname;
&dhsurname;
</author>
<copyright>
<year>2003</year>
<holder>&dhusername;</holder>
</copyright>
&dhdate;
</refentryinfo>
<refmeta>
&dhucpackage;
&dhsection;
</refmeta>
<refnamediv>
<refname>&dhpackage;</refname>
<refpurpose>program to do something</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>&dhpackage;</command>
<arg><option>-e <replaceable>this</replaceable></option></arg>
<arg><option>--example <replaceable>that</replaceable></option></arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>DESCRIPTION</title>
<para>This manual page documents briefly the
<command>&dhpackage;</command> and <command>bar</command>
commands.</para>
<para>This manual page was written for the &debian; distribution
because the original program does not have a manual page.
Instead, it has documentation in the &gnu;
<application>Info</application> format; see below.</para>
<para><command>&dhpackage;</command> is a program that...</para>
</refsect1>
<refsect1>
<title>OPTIONS</title>
<para>These programs follow the usual &gnu; command line syntax,
with long options starting with two dashes (`-'). A summary of
options is included below. For a complete description, see the
<application>Info</application> files.</para>
<variablelist>
<varlistentry>
<term><option>-h</option>
<option>--help</option>
</term>
<listitem>
<para>Show summary of options.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-v</option>
<option>--version</option>
</term>
<listitem>
<para>Show version of program.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>SEE ALSO</title>
<para>bar (1), baz (1).</para>
<para>The programs are documented fully by <citetitle>The Rise and
Fall of a Fooish Bar</citetitle> available via the
<application>Info</application> system.</para>
</refsect1>
<refsect1>
<title>AUTHOR</title>
<para>This manual page was written by &dhusername; &dhemail; for
the &debian; system (and may be used by others). Permission is
granted to copy, distribute and/or modify this document under
the terms of the &gnu; General Public License, Version 2 any
later version published by the Free Software Foundation.
</para>
<para>
On Debian systems, the complete text of the GNU General Public
License can be found in /usr/share/common-licenses/GPL.
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:2
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:nil
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->

291
debian/manpage.xml.ex vendored
View File

@ -1,291 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!--
`xsltproc -''-nonet \
-''-param man.charmap.use.subset "0" \
-''-param make.year.ranges "1" \
-''-param make.single.year.ranges "1" \
/usr/share/xml/docbook/stylesheet/docbook-xsl/manpages/docbook.xsl \
manpage.xml'
A manual page <package>.<section> will be generated. You may view the
manual page with: nroff -man <package>.<section> | less'. A typical entry
in a Makefile or Makefile.am is:
DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/docbook-xsl/manpages/docbook.xsl
XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0"
manpage.1: manpage.xml
$(XP) $(DB2MAN) $<
The xsltproc binary is found in the xsltproc package. The XSL files are in
docbook-xsl. A description of the parameters you can use can be found in the
docbook-xsl-doc-* packages. Please remember that if you create the nroff
version in one of the debian/rules file targets (such as build), you will need
to include xsltproc and docbook-xsl in your Build-Depends control field.
Alternatively use the xmlto command/package. That will also automatically
pull in xsltproc and docbook-xsl.
Notes for using docbook2x: docbook2x-man does not automatically create the
AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as
<refsect1> ... </refsect1>.
To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections
read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be
found in the docbook-xsl-doc-html package.
Validation can be done using: `xmllint -''-noout -''-valid manpage.xml`
General documentation about man-pages and man-page-formatting:
man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/
-->
<!-- Fill in your name for FIRSTNAME and SURNAME. -->
<!ENTITY dhfirstname "FIRSTNAME">
<!ENTITY dhsurname "SURNAME">
<!-- dhusername could also be set to "&dhfirstname; &dhsurname;". -->
<!ENTITY dhusername "F4EXB">
<!ENTITY dhemail "f4exb06@gmail.com">
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are
allowed: see man(7), man(1) and
http://www.tldp.org/HOWTO/Man-Page/q2.html. -->
<!ENTITY dhsection "SECTION">
<!-- TITLE should be something like "User commands" or similar (see
http://www.tldp.org/HOWTO/Man-Page/q2.html). -->
<!ENTITY dhtitle "sdrangel User Manual">
<!ENTITY dhucpackage "Sdrangel">
<!ENTITY dhpackage "sdrangel">
]>
<refentry>
<refentryinfo>
<title>&dhtitle;</title>
<productname>&dhpackage;</productname>
<authorgroup>
<author>
<firstname>&dhfirstname;</firstname>
<surname>&dhsurname;</surname>
<contrib>Wrote this manpage for the Debian system.</contrib>
<address>
<email>&dhemail;</email>
</address>
</author>
</authorgroup>
<copyright>
<year>2007</year>
<holder>&dhusername;</holder>
</copyright>
<legalnotice>
<para>This manual page was written for the Debian system
(and may be used by others).</para>
<para>Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU General Public License,
Version 2 or (at your option) any later version published by
the Free Software Foundation.</para>
<para>On Debian systems, the complete text of the GNU General Public
License can be found in
<filename>/usr/share/common-licenses/GPL</filename>.</para>
</legalnotice>
</refentryinfo>
<refmeta>
<refentrytitle>&dhucpackage;</refentrytitle>
<manvolnum>&dhsection;</manvolnum>
</refmeta>
<refnamediv>
<refname>&dhpackage;</refname>
<refpurpose>program to do something</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>&dhpackage;</command>
<!-- These are several examples, how syntaxes could look -->
<arg choice="plain"><option>-e <replaceable>this</replaceable></option></arg>
<arg choice="opt"><option>--example=<parameter>that</parameter></option></arg>
<arg choice="opt">
<group choice="req">
<arg choice="plain"><option>-e</option></arg>
<arg choice="plain"><option>--example</option></arg>
</group>
<replaceable class="option">this</replaceable>
</arg>
<arg choice="opt">
<group choice="req">
<arg choice="plain"><option>-e</option></arg>
<arg choice="plain"><option>--example</option></arg>
</group>
<group choice="req">
<arg choice="plain"><replaceable>this</replaceable></arg>
<arg choice="plain"><replaceable>that</replaceable></arg>
</group>
</arg>
</cmdsynopsis>
<cmdsynopsis>
<command>&dhpackage;</command>
<!-- Normally the help and version options make the programs stop
right after outputting the requested information. -->
<group choice="opt">
<arg choice="plain">
<group choice="req">
<arg choice="plain"><option>-h</option></arg>
<arg choice="plain"><option>--help</option></arg>
</group>
</arg>
<arg choice="plain">
<group choice="req">
<arg choice="plain"><option>-v</option></arg>
<arg choice="plain"><option>--version</option></arg>
</group>
</arg>
</group>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1 id="description">
<title>DESCRIPTION</title>
<para>This manual page documents briefly the
<command>&dhpackage;</command> and <command>bar</command>
commands.</para>
<para>This manual page was written for the Debian distribution
because the original program does not have a manual page.
Instead, it has documentation in the GNU <citerefentry>
<refentrytitle>info</refentrytitle>
<manvolnum>1</manvolnum>
</citerefentry> format; see below.</para>
<para><command>&dhpackage;</command> is a program that...</para>
</refsect1>
<refsect1 id="options">
<title>OPTIONS</title>
<para>The program follows the usual GNU command line syntax,
with long options starting with two dashes (`-'). A summary of
options is included below. For a complete description, see the
<citerefentry>
<refentrytitle>info</refentrytitle>
<manvolnum>1</manvolnum>
</citerefentry> files.</para>
<variablelist>
<!-- Use the variablelist.term.separator and the
variablelist.term.break.after parameters to
control the term elements. -->
<varlistentry>
<term><option>-e <replaceable>this</replaceable></option></term>
<term><option>--example=<replaceable>that</replaceable></option></term>
<listitem>
<para>Does this and that.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-h</option></term>
<term><option>--help</option></term>
<listitem>
<para>Show summary of options.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-v</option></term>
<term><option>--version</option></term>
<listitem>
<para>Show version of program.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="files">
<title>FILES</title>
<variablelist>
<varlistentry>
<term><filename>/etc/foo.conf</filename></term>
<listitem>
<para>The system-wide configuration file to control the
behaviour of <application>&dhpackage;</application>. See
<citerefentry>
<refentrytitle>foo.conf</refentrytitle>
<manvolnum>5</manvolnum>
</citerefentry> for further details.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>${HOME}/.foo.conf</filename></term>
<listitem>
<para>The per-user configuration file to control the
behaviour of <application>&dhpackage;</application>. See
<citerefentry>
<refentrytitle>foo.conf</refentrytitle>
<manvolnum>5</manvolnum>
</citerefentry> for further details.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="environment">
<title>ENVIRONMENT</title>
<variablelist>
<varlistentry>
<term><envar>FOO_CONF</envar></term>
<listitem>
<para>If used, the defined file is used as configuration
file (see also <xref linkend="files"/>).</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="diagnostics">
<title>DIAGNOSTICS</title>
<para>The following diagnostics may be issued
on <filename class="devicefile">stderr</filename>:</para>
<variablelist>
<varlistentry>
<term><errortext>Bad configuration file. Exiting.</errortext></term>
<listitem>
<para>The configuration file seems to contain a broken configuration
line. Use the <option>--verbose</option> option, to get more info.
</para>
</listitem>
</varlistentry>
</variablelist>
<para><command>&dhpackage;</command> provides some return codes, that can
be used in scripts:</para>
<segmentedlist>
<segtitle>Code</segtitle>
<segtitle>Diagnostic</segtitle>
<seglistitem>
<seg><errorcode>0</errorcode></seg>
<seg>Program exited successfully.</seg>
</seglistitem>
<seglistitem>
<seg><errorcode>1</errorcode></seg>
<seg>The configuration file seems to be broken.</seg>
</seglistitem>
</segmentedlist>
</refsect1>
<refsect1 id="bugs">
<!-- Or use this section to tell about upstream BTS. -->
<title>BUGS</title>
<para>The program is currently limited to only work
with the <package>foobar</package> library.</para>
<para>The upstreams <acronym>BTS</acronym> can be found
at <ulink url="http://bugzilla.foo.tld"/>.</para>
</refsect1>
<refsect1 id="see_also">
<title>SEE ALSO</title>
<!-- In alpabetical order. -->
<para><citerefentry>
<refentrytitle>bar</refentrytitle>
<manvolnum>1</manvolnum>
</citerefentry>, <citerefentry>
<refentrytitle>baz</refentrytitle>
<manvolnum>1</manvolnum>
</citerefentry>, <citerefentry>
<refentrytitle>foo.conf</refentrytitle>
<manvolnum>5</manvolnum>
</citerefentry></para>
<para>The programs are documented fully by <citetitle>The Rise and
Fall of a Fooish Bar</citetitle> available via the <citerefentry>
<refentrytitle>info</refentrytitle>
<manvolnum>1</manvolnum>
</citerefentry> system.</para>
</refsect1>
</refentry>

2
debian/menu.ex vendored
View File

@ -1,2 +0,0 @@
?package(sdrangel):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\
title="sdrangel" command="/usr/bin/sdrangel"

41
debian/postinst.ex vendored
View File

@ -1,41 +0,0 @@
#!/bin/sh
# postinst script for sdrangel
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <postinst> `abort-remove'
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see https://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
configure)
cd /opt/sdrangel/share/sdrangel/udev-rules
./install.sh
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
*)
echo "postinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0

37
debian/postrm.ex vendored
View File

@ -1,37 +0,0 @@
#!/bin/sh
# postrm script for sdrangel
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <postrm> `remove'
# * <postrm> `purge'
# * <old-postrm> `upgrade' <new-version>
# * <new-postrm> `failed-upgrade' <old-version>
# * <new-postrm> `abort-install'
# * <new-postrm> `abort-install' <old-version>
# * <new-postrm> `abort-upgrade' <old-version>
# * <disappearer's-postrm> `disappear' <overwriter>
# <overwriter-version>
# for details, see https://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
;;
*)
echo "postrm called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0

35
debian/preinst.ex vendored
View File

@ -1,35 +0,0 @@
#!/bin/sh
# preinst script for sdrangel
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <new-preinst> `install'
# * <new-preinst> `install' <old-version>
# * <new-preinst> `upgrade' <old-version>
# * <old-preinst> `abort-upgrade' <new-version>
# for details, see https://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
install|upgrade)
;;
abort-upgrade)
;;
*)
echo "preinst called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0

38
debian/prerm.ex vendored
View File

@ -1,38 +0,0 @@
#!/bin/sh
# prerm script for sdrangel
#
# see: dh_installdeb(1)
set -e
# summary of how this script can be called:
# * <prerm> `remove'
# * <old-prerm> `upgrade' <new-version>
# * <new-prerm> `failed-upgrade' <old-version>
# * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
# * <deconfigured's-prerm> `deconfigure' `in-favour'
# <package-being-installed> <version> `removing'
# <conflicting-package> <version>
# for details, see https://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
remove|upgrade|deconfigure)
;;
failed-upgrade)
;;
*)
echo "prerm called with unknown argument \`$1'" >&2
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
exit 0

26
debian/rules vendored Executable file → Normal file
View File

@ -1,25 +1,13 @@
#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
#export DH_VERBOSE = 1
# see FEATURE AREAS in dpkg-buildflags(1)
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all
# see ENVIRONMENT in dpkg-buildflags(1)
# package maintainers to append CFLAGS
#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic
# package maintainers to append LDFLAGS
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
%:
dh $@ --parallel
# dh_make generated override targets
# This is example for Cmake (See https://bugs.debian.org/641051 )
# FORCE_SSE41 will be not accepted upstream
override_dh_auto_configure:
dh_auto_configure -- -DCMAKE_INSTALL_PREFIX=/opt/sdrangel -DDEBUG_OUTPUT=ON -DBUILD_TYPE=DEBIAN -DRX_SAMPLE_24BIT=ON -DENABLE_DISTRIBUTION=ON -DLIBCM256CCSRC=/shared/development/cm256cc -DLIBDSDCCSRC=/shared/development/dsdcc -DLIBAIRSPYSRC=/shared/development/libairspy -DLIBAIRSPYHFSRC=/shared/softs/airspyhf -DLIBHACKRFSRC=/shared/development/hackrf/host -DLIBRTLSDRSRC=/shared/development/librtlsdr.f4exb -DLIBMBELIBSRC=/shared/development/mbelib -DLIBSERIALDVSRC=/shared/development/serialDV -DLIBBLADERFSRC=/shared/softs/bladeRF -DLIBBLADERFCOMMONSRC=/shared/softs/bladeRF/host/common -DLIBBLADERFLIBSRC=/shared/softs/bladeRF/host/libraries/libbladeRF -DLIBMIRISDRSRC=/shared/development/libmirisdr-4 -DLIBLIMESUITESRC=/shared/softs/LimeSuite -DLIBIIOSRC=/shared/softs/libiio -DLIBPERSEUSSRC=/shared/softs/libperseus-sdr -DSOAPYSDR_SOURCE_DIR=/shared/softs/SoapySDR
dh_auto_configure -- -DFORCE_SSE41=ON
# permit the packaging with /usr/local/lib libraries (from `make install`)
# you can also use `export DEB_DH_SHLIBDEPS_ARGS_ALL=--dpkg-shlibdeps-params=--ignore-missing-info`
# not a good idea!
override_dh_shlibdeps:
dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info

View File

@ -1,2 +0,0 @@
README.source
README.Debian

View File

@ -1,4 +0,0 @@
#
# Regular cron jobs for the sdrangel package
#
0 4 * * * root [ -x /usr/bin/sdrangel_maintenance ] && /usr/bin/sdrangel_maintenance

View File

@ -1,10 +0,0 @@
# Defaults for sdrangel initscript
# sourced by /etc/init.d/sdrangel
# installed at /etc/default/sdrangel by the maintainer scripts
#
# This is a POSIX shell fragment
#
# Additional options that are passed to the Daemon.
DAEMON_OPTS=""

View File

@ -1,20 +0,0 @@
Document: sdrangel
Title: Debian sdrangel Manual
Author: <insert document author here>
Abstract: This manual describes what sdrangel is
and how it can be used to
manage online manuals on Debian systems.
Section: unknown
Format: debiandoc-sgml
Files: /usr/share/doc/sdrangel/sdrangel.sgml.gz
Format: postscript
Files: /usr/share/doc/sdrangel/sdrangel.ps.gz
Format: text
Files: /usr/share/doc/sdrangel/sdrangel.text.gz
Format: HTML
Index: /usr/share/doc/sdrangel/html/index.html
Files: /usr/share/doc/sdrangel/html/*.html

View File

@ -1 +1 @@
3.0 (quilt)
3.0 (quilt)

39
debian/watch.ex vendored
View File

@ -1,39 +0,0 @@
# Example watch control file for uscan
# Rename this file to "watch" and then you can run the "uscan" command
# to check for upstream updates and more.
# See uscan(1) for format
# Compulsory line, this is a version 4 file
version=4
# PGP signature mangle, so foo.tar.gz has foo.tar.gz.sig
#opts="pgpsigurlmangle=s%$%.sig%"
# HTTP site (basic)
#http://example.com/downloads.html \
# files/sdrangel-([\d\.]+)\.tar\.gz debian uupdate
# Uncommment to examine a FTP server
#ftp://ftp.example.com/pub/sdrangel-(.*)\.tar\.gz debian uupdate
# SourceForge hosted projects
# http://sf.net/sdrangel/ sdrangel-(.*)\.tar\.gz debian uupdate
# GitHub hosted projects
#opts="filenamemangle="s%(?:.*?)?v?(\d[\d.]*)\.tar\.gz%<project>-$1.tar.gz%" \
# https://github.com/<user>/sdrangel/tags \
# (?:.*?/)?v?(\d[\d.]*)\.tar\.gz debian uupdate
# PyPI
# https://pypi.python.org/packages/source/<initial>/sdrangel/ \
# sdrangel-(.+)\.tar\.gz debian uupdate
# Direct Git
# opts="mode=git" http://git.example.com/sdrangel.git \
# refs/tags/v([\d\.]+) debian uupdate
# Uncomment to find new files on GooglePages
# http://example.googlepages.com/foo.html sdrangel-(.*)\.tar\.gz

View File

@ -1,10 +0,0 @@
[Desktop Entry]
Name=SDRangel
GenericName=SDR/Analyzer frontend
Comment=SDR/Analyzer frontend for Airspy, BladeRF, HackRF, RTL-SDR and FunCube
Exec=sdrangel
Icon=sdrangel_icon.png
StartupNotify=true
Terminal=false
Type=Application
Categories=Network;HamRadio;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

View File

@ -1,222 +0,0 @@
/* XPM */
static char * sdrangel_icon_xpm[] = {
"200 200 19 1",
" c None",
". c #6087CF",
"+ c #5E85CE",
"@ c #6086CE",
"# c #5F86CE",
"$ c #6086CF",
"% c #5F87CE",
"& c #5F86CF",
"* c #5F87CF",
"= c #6087CE",
"- c #6085CE",
"; c #5F86CD",
"> c #6087CD",
", c #5F85CE",
"' c #5E87CE",
") c #5F85CD",
"! c #5E86CE",
"~ c #5F87CD",
"{ c #5E86CD",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ...................... ",
" ..................................... ",
" .............................................. ",
" ................. ................ ",
" ............. ............. ",
" ............ ........... ",
" .......... .......... ",
" .......... ......... ",
" .......... ......... ",
" ......... ......... ",
" ......... ......... ",
" ........ ......... ",
" ........ ......... ",
" ......... .......... ",
" .......... ........... ",
" ........... ............ ",
" ............ ............. ",
" ............... ................ ",
" ................................................ ",
" ....................................... ",
" ........................... ",
" ",
" ",
" ",
" ",
" ... ",
" ........................ ",
" ................................ ",
" ..................................... ",
" ........................................... ",
" ................................................ ",
" .................................................... ",
" ........................................................ ",
" ............................................................ ",
" ............................................................... ",
" .................................................................... ",
" ...................................................................... +@#$%&.%*$.@$@%%# ",
" ......................................................................... =#.........................$@$ ",
" ............................................................................ $...................................=@- ",
" ........................................................................... #$.........................................@=; ",
" ........................................................................... @.................................................@ ",
" .......................................................................... .................................................... ",
" .......................................................................... #..................................................... ",
" .......................................................................... %...................................................... ",
" ......................................................................... @....................................................... ",
" .......................................................................... %........................................................ ",
" ......................................................................... =......................................................... ",
" ........................................................................ $.......................................................... ",
" ........................................................................ @.......................................................... ",
" ........................................................................ %........................................................... ",
" ........................................................................ ............................................................ ",
" ....................................................................... $............................................................ ",
" ...................................................................... .........................%$ #%&................. ",
" ..................................................................... >......................#> @@............. ",
" ..................................................................... &.....................% ,........... ",
" .................................................................... ....................@ @$....... ",
" .................................................................... ...................., '*.... ",
" ................................................................... ,...................= $.. ",
" ................................................................... #...................@ . ",
" ................................................................... @................... ",
" .................................................................. %................... ",
" .................................................................. #................... ",
" ................................................................. .................... ",
" ................................................................. %................... ",
" ................................................................ $.................... ",
" ................................................................ #...................* ",
" ............................................................... #....................= ",
" .............................................................. #.....................$ ",
" .............................................................. ).......................# ",
" .............................................................. .........................&@ ",
" ............................................................. ............................&.@ ",
" ............................................................ $................................##! ",
" ............................................................. @.....................................%$) ",
" ........................................................... ..........................................$$ ",
" ........................................................... @.............................................$! ",
" .......................................................... ................................................*- ",
" .......................................................... %.................................................@@ ",
" ......................................................... *...................................................& ",
" ........................................................ .....................................................@ ",
" ......................................................... @.....................................................@ ",
" ........................................................ $......................................................# ",
" ......................................................... )......................................................$ ",
" ....................................................... =.....................................................@ ",
" ................................................... =.....................................................@ ",
" ................................................ %.................................................... ",
" ........................................... @..................................................% ",
" ....................................... $$................................................ ",
" ................................... .*.............................................% ",
" ........................... @#*.......................................... ",
" .................... @.......................................; ",
" ... )&$.................................$ ",
" &#*.............................. ",
" $............................ ",
" =.........................* ",
" -$.......................$ ",
" *......................= ",
" ......................# ",
" @...................... ",
" .....................% ",
" .....................* ",
" .....................& ",
" .....................$ ",
" = .....................# ",
" ..# .....................% ",
" ....@ +.....................@ ",
" ....... =..................... ",
" ........%~ %...................... ",
" ...........# @....................... ",
" .............%$ #.......................% ",
" .................$@ #%........................ ",
" .....................@.$ @=..........................= ",
" .................................................................@ ",
" ................................................................@ ",
" ................................................................. ",
" ...............................................................$ ",
" ............................................................... ",
" ..............................................................@ ",
" .............................................................= ",
" ............................................................$ ",
" ...........................................................# ",
" #.........................................................* ",
" #*....................................................& ",
" #@...............................................#> ",
" =%@.........................................%& ",
" ;&=..................................&# ",
" +%%..........................## ",
" {###$@&$$@##&#&##= ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

View File

@ -1,51 +1,37 @@
project(devices)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
include_directories(
# export.h
${CMAKE_SOURCE_DIR}/exports
# util/message.h
${CMAKE_SOURCE_DIR}/sdrbase
)
find_package(LibUSB)
if (BUILD_DEBIAN)
if(ENABLE_BLADERF AND LIBBLADERF_FOUND)
add_subdirectory(bladerf1)
add_subdirectory(bladerf2)
endif()
if(ENABLE_HACKRF AND LIBHACKRF_FOUND)
add_subdirectory(hackrf)
endif()
if(ENABLE_LIMESUITE AND LIMESUITE_FOUND)
add_subdirectory(limesdr)
add_subdirectory(perseus)
endif()
if(ENABLE_XTRX AND LIBXTRX_FOUND)
add_subdirectory(xtrx)
endif()
if(ENABLE_IIO AND LIBIIO_FOUND)
add_subdirectory(plutosdr)
endif()
if(ENABLE_PERSEUS AND LIBPERSEUS_FOUND)
add_subdirectory(perseus)
endif()
if(ENABLE_SOAPYSDR AND SOAPYSDR_FOUND)
add_subdirectory(soapysdr)
else(BUILD_DEBIAN)
find_package(LibBLADERF)
if(LIBUSB_FOUND AND LIBBLADERF_FOUND)
add_subdirectory(bladerf1)
add_subdirectory(bladerf2)
endif(LIBUSB_FOUND AND LIBBLADERF_FOUND)
find_package(LibHACKRF)
if(LIBUSB_FOUND AND LIBHACKRF_FOUND)
add_subdirectory(hackrf)
endif(LIBUSB_FOUND AND LIBHACKRF_FOUND)
find_package(LimeSuite)
if(LIBUSB_FOUND AND LIMESUITE_FOUND)
add_subdirectory(limesdr)
endif(LIBUSB_FOUND AND LIMESUITE_FOUND)
find_package(LibXTRX)
if(LIBXTRX_FOUND)
add_subdirectory(xtrx)
endif(LIBXTRX_FOUND)
find_package(LibIIO)
if(LIBUSB_FOUND AND LIBIIO_FOUND)
add_subdirectory(plutosdr)
endif(LIBUSB_FOUND AND LIBIIO_FOUND)
find_package(LibPerseus)
if(LIBUSB_FOUND AND LIBPERSEUS_FOUND)
add_subdirectory(perseus)
endif()
find_package(SoapySDR)
if(SOAPYSDR_FOUND)
add_subdirectory(soapysdr)
endif()
endif (BUILD_DEBIAN)
endif()

View File

@ -13,40 +13,20 @@ set(bladerf1device_HEADERS
devicebladerf1shared.h
)
if (BUILD_DEBIAN)
include_directories(
.
${CMAKE_CURRENT_BINARY_DIR}
${LIBBLADERFLIBSRC}/include
${LIBBLADERFLIBSRC}/src
${LIBBLADERF_INCLUDE_DIRS}
)
else (BUILD_DEBIAN)
include_directories(
.
${CMAKE_CURRENT_BINARY_DIR}
${LIBBLADERF_INCLUDE_DIR}
)
endif (BUILD_DEBIAN)
#add_definitions(${QT_DEFINITIONS})
#add_definitions(-DQT_SHARED)
add_library(bladerf1device SHARED
${bladerf1device_SOURCES}
)
set_target_properties(bladerf1device PROPERTIES DEFINE_SYMBOL "devices_EXPORTS")
set_target_properties(bladerf1device
PROPERTIES DEFINE_SYMBOL "devices_EXPORTS")
if (BUILD_DEBIAN)
target_link_libraries(bladerf1device
bladerf
sdrbase
)
else (BUILD_DEBIAN)
target_link_libraries(bladerf1device
${LIBBLADERF_LIBRARIES}
sdrbase
)
endif (BUILD_DEBIAN)
install(TARGETS bladerf1device DESTINATION lib)
install(TARGETS bladerf1device DESTINATION ${INSTALL_LIB_DIR})

View File

@ -10,40 +10,20 @@ set(bladerf2device_HEADERS
devicebladerf2shared.h
)
if (BUILD_DEBIAN)
include_directories(
.
${CMAKE_CURRENT_BINARY_DIR}
${LIBBLADERFLIBSRC}/include
${LIBBLADERFLIBSRC}/src
${LIBBLADERF_INCLUDE_DIRS}
)
else (BUILD_DEBIAN)
include_directories(
.
${CMAKE_CURRENT_BINARY_DIR}
${LIBBLADERF_INCLUDE_DIR}
)
endif (BUILD_DEBIAN)
#add_definitions(${QT_DEFINITIONS})
#add_definitions(-DQT_SHARED)
add_library(bladerf2device SHARED
${bladerf2device_SOURCES}
)
set_target_properties(bladerf2device PROPERTIES DEFINE_SYMBOL "devices_EXPORTS")
set_target_properties(bladerf2device
PROPERTIES DEFINE_SYMBOL "devices_EXPORTS")
if (BUILD_DEBIAN)
target_link_libraries(bladerf2device
bladerf
sdrbase
)
else (BUILD_DEBIAN)
target_link_libraries(bladerf2device
${LIBBLADERF_LIBRARIES}
sdrbase
)
endif (BUILD_DEBIAN)
install(TARGETS bladerf2device DESTINATION lib)
install(TARGETS bladerf2device DESTINATION ${INSTALL_LIB_DIR})

View File

@ -1,266 +0,0 @@
#--------------------------------------------------------
#
# Pro file for Android and Windows builds with Qt Creator
#
#--------------------------------------------------------
QT += core gui multimedia opengl
TEMPLATE = lib
TARGET = devices
DEFINES += USE_SSE2=1
QMAKE_CXXFLAGS += -msse2
DEFINES += USE_SSSE3=1
QMAKE_CXXFLAGS += -mssse3
DEFINES += USE_SSE4_1=1
QMAKE_CXXFLAGS += -msse4.1
QMAKE_CXXFLAGS += -std=c++11
macx:QMAKE_LFLAGS += -F/Library/Frameworks
CONFIG(MSVC):DEFINES += devices_EXPORTS
CONFIG(MINGW32):LIBBLADERF = "C:\Programs\bladeRF"
CONFIG(MINGW64):LIBBLADERF = "C:\Programs\bladeRF"
CONFIG(MINGW32):LIBHACKRFSRC = "C:\softs\hackrf\host"
CONFIG(MINGW64):LIBHACKRFSRC = "C:\softs\hackrf\host"
CONFIG(MINGW32):LIBLIMESUITESRC = "C:\softs\LimeSuite"
CONFIG(MINGW64):LIBLIMESUITESRC = "C:\softs\LimeSuite"
CONFIG(macx):LIBLIMESUITESRC = "../../../LimeSuite-17.12.0"
CONFIG(MINGW32):LIBPERSEUSSRC = "C:\softs\libperseus-sdr"
CONFIG(macx):LIBPERSEUSSRC = "../../../libperseus-sdr"
CONFIG(MINGW32):LIBIIOSRC = "C:\softs\libiio"
CONFIG(MINGW64):LIBIIOSRC = "C:\softs\libiio"
CONFIG(macx):LIBIIOSRC = "../../../libiio"
INCLUDEPATH += $$PWD
INCLUDEPATH += ../exports
INCLUDEPATH += ../sdrbase
INCLUDEPATH += "C:\softs\boost_1_66_0"
INCLUDEPATH += "C:\softs\libusb-1.0.21\include"
INCLUDEPATH += $$LIBBLADERF/include
INCLUDEPATH += $$LIBHACKRFSRC
macx {
INCLUDEPATH += "../../../boost_1_69_0"
INCLUDEPATH += "/Library/Frameworks/iio.framework/Headers/"
INCLUDEPATH += "/usr/local/include"
INCLUDEPATH += "/opt/local/include"
}
MINGW32 || MINGW64 || macx {
INCLUDEPATH += ../liblimesuite/srcmw
INCLUDEPATH += $$LIBLIMESUITESRC/src
INCLUDEPATH += $$LIBLIMESUITESRC/src/ADF4002
INCLUDEPATH += $$LIBLIMESUITESRC/src/ConnectionRegistry
INCLUDEPATH += $$LIBLIMESUITESRC/src/FPGA_common
INCLUDEPATH += $$LIBLIMESUITESRC/src/GFIR
INCLUDEPATH += $$LIBLIMESUITESRC/src/lms7002m
INCLUDEPATH += $$LIBLIMESUITESRC/src/lms7002m_mcu
INCLUDEPATH += $$LIBLIMESUITESRC/src/Si5351C
INCLUDEPATH += $$LIBLIMESUITESRC/src/protocols
INCLUDEPATH += $$LIBLIMESUITESRC/external/cpp-feather-ini-parser
}
MSVC {
INCLUDEPATH += "C:\Program Files\PothosSDR\include"
}
INCLUDEPATH += $$LIBPERSEUSSRC
!macx:INCLUDEPATH += $$LIBIIOSRC
CONFIG(Release):build_subdir = release
CONFIG(Debug):build_subdir = debug
MINGW32 || MINGW64 {
SOURCES += bladerf1/devicebladerf1.cpp\
bladerf1/devicebladerf1values.cpp\
bladerf1/devicebladerf1shared.cpp
SOURCES += bladerf2/devicebladerf2.cpp\
bladerf2/devicebladerf2shared.cpp
SOURCES += hackrf/devicehackrf.cpp\
hackrf/devicehackrfvalues.cpp\
hackrf/devicehackrfshared.cpp
SOURCES += limesdr/devicelimesdr.cpp\
limesdr/devicelimesdrparam.cpp\
limesdr/devicelimesdrshared.cpp
SOURCES += plutosdr/deviceplutosdr.cpp\
plutosdr/deviceplutosdrbox.cpp\
plutosdr/deviceplutosdrparams.cpp\
plutosdr/deviceplutosdrscan.cpp\
plutosdr/deviceplutosdrshared.cpp
HEADERS += bladerf2/devicebladerf2.h\
bladerf2/devicebladerf2shared.h
HEADERS += bladerf1/devicebladerf1.h\
bladerf1/devicebladerf1param.h\
bladerf1/devicebladerf1values.h\
bladerf1/devicebladerf1shared.h
HEADERS += hackrf/devicehackrf.h\
hackrf/devicehackrfparam.h\
hackrf/devicehackrfvalues.h\
hackrf/devicehackrfshared.h
HEADERS += limesdr/devicelimesdr.h\
limesdr/devicelimesdrparam.h\
limesdr/devicelimesdrshared.h
HEADERS += plutosdr/deviceplutosdr.h\
plutosdr/deviceplutosdrbox.h\
plutosdr/deviceplutosdrparams.h\
plutosdr/deviceplutosdrscan.h\
plutosdr/deviceplutosdrshared.h
}
MSVC {
SOURCES += bladerf1/devicebladerf1.cpp\
bladerf1/devicebladerf1values.cpp\
bladerf1/devicebladerf1shared.cpp
SOURCES += bladerf2/devicebladerf2.cpp\
bladerf2/devicebladerf2shared.cpp
SOURCES += hackrf/devicehackrf.cpp\
hackrf/devicehackrfvalues.cpp\
hackrf/devicehackrfshared.cpp
SOURCES += limesdr/devicelimesdr.cpp\
limesdr/devicelimesdrparam.cpp\
limesdr/devicelimesdrshared.cpp
SOURCES += soapysdr/devicesoapysdr.cpp\
soapysdr/devicesoapysdrparams.cpp\
soapysdr/devicesoapysdrscan.cpp\
soapysdr/devicesoapysdrshared.cpp
SOURCES += plutosdr/deviceplutosdr.cpp\
plutosdr/deviceplutosdrbox.cpp\
plutosdr/deviceplutosdrparams.cpp\
plutosdr/deviceplutosdrscan.cpp\
plutosdr/deviceplutosdrshared.cpp
HEADERS += bladerf1/devicebladerf1.h\
bladerf1/devicebladerf1param.h\
bladerf1/devicebladerf1values.h\
bladerf1/devicebladerf1shared.h
HEADERS += bladerf2/devicebladerf2.h\
bladerf2/devicebladerf2shared.h
HEADERS += hackrf/devicehackrf.h\
hackrf/devicehackrfparam.h\
hackrf/devicehackrfvalues.h\
hackrf/devicehackrfshared.h
HEADERS += limesdr/devicelimesdr.h\
limesdr/devicelimesdrparam.h\
limesdr/devicelimesdrshared.h
HEADERS += soapysdr/devicesoapysdr.h\
soapysdr/devicesoapysdrparams.h\
soapysdr/devicesoapysdrscan.h\
soapysdr/devicesoapysdrshared.h
HEADERS += plutosdr/deviceplutosdr.h\
plutosdr/deviceplutosdrbox.h\
plutosdr/deviceplutosdrparams.h\
plutosdr/deviceplutosdrscan.h\
plutosdr/deviceplutosdrshared.h
}
macx {
SOURCES += bladerf1/devicebladerf1.cpp\
bladerf1/devicebladerf1values.cpp\
bladerf1/devicebladerf1shared.cpp
SOURCES += bladerf2/devicebladerf2.cpp\
bladerf2/devicebladerf2shared.cpp
SOURCES += hackrf/devicehackrf.cpp\
hackrf/devicehackrfvalues.cpp\
hackrf/devicehackrfshared.cpp
SOURCES += limesdr/devicelimesdr.cpp\
limesdr/devicelimesdrparam.cpp\
limesdr/devicelimesdrshared.cpp
SOURCES += soapysdr/devicesoapysdr.cpp\
soapysdr/devicesoapysdrparams.cpp\
soapysdr/devicesoapysdrscan.cpp\
soapysdr/devicesoapysdrshared.cpp
SOURCES += plutosdr/deviceplutosdr.cpp\
plutosdr/deviceplutosdrbox.cpp\
plutosdr/deviceplutosdrparams.cpp\
plutosdr/deviceplutosdrscan.cpp\
plutosdr/deviceplutosdrshared.cpp
SOURCES += perseus/deviceperseus.cpp\
perseus/deviceperseusscan.cpp
HEADERS += bladerf1/devicebladerf1.h\
bladerf1/devicebladerf1param.h\
bladerf1/devicebladerf1values.h\
bladerf1/devicebladerf1shared.h
HEADERS += bladerf2/devicebladerf2.h\
bladerf2/devicebladerf2shared.h
HEADERS += hackrf/devicehackrf.h\
hackrf/devicehackrfparam.h\
hackrf/devicehackrfvalues.h\
hackrf/devicehackrfshared.h
HEADERS += limesdr/devicelimesdr.h\
limesdr/devicelimesdrparam.h\
limesdr/devicelimesdrshared.h
HEADERS += soapysdr/devicesoapysdr.h\
soapysdr/devicesoapysdrparams.h\
soapysdr/devicesoapysdrscan.h\
soapysdr/devicesoapysdrshared.h
HEADERS += plutosdr/deviceplutosdr.h\
plutosdr/deviceplutosdrbox.h\
plutosdr/deviceplutosdrparams.h\
plutosdr/deviceplutosdrscan.h\
plutosdr/deviceplutosdrshared.h
HEADERS += perseus/deviceperseus.h\
perseus/deviceperseusscan.h
}
LIBS += -L../sdrbase/$${build_subdir} -lsdrbase
MINGW32 || MINGW64 {
LIBS += -L$$LIBBLADERF/lib -lbladeRF
LIBS += -L../libhackrf/$${build_subdir} -llibhackrf
LIBS += -L../liblimesuite/$${build_subdir} -lliblimesuite
LIBS += -L../libiio/$${build_subdir} -llibiio
}
MSVC {
LIBS += -L"C:\Program Files\PothosSDR\bin" -L"C:\Program Files\PothosSDR\lib" -lhackrf
LIBS += -L"C:\Program Files\PothosSDR\bin" -L"C:\Program Files\PothosSDR\lib" -lbladeRF
LIBS += -L"C:\Program Files\PothosSDR\bin" -L"C:\Program Files\PothosSDR\lib" -lLimeSuite
LIBS += -L"C:\Program Files\PothosSDR\bin" -L"C:\Program Files\PothosSDR\lib" -lSoapySDR
LIBS += -L"C:\Program Files\PothosSDR\bin" -L"C:\Program Files\PothosSDR\lib" -llibiio
}
macx {
LIBS += -L../libperseus -llibperseus
LIBS += -L/opt/local/lib -lbladeRF
LIBS += -L/opt/local/lib -lhackrf
LIBS += -L/opt/install/LimeSuite/lib/ -lLimeSuite
LIBS += -L/usr/local/lib -lSoapySDR
LIBS += -framework iio
QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/
}

View File

@ -13,39 +13,20 @@ set(hackrfdevice_HEADERS
devicehackrfshared.h
)
if (BUILD_DEBIAN)
include_directories(
.
${CMAKE_CURRENT_BINARY_DIR}
${LIBHACKRFSRC}
)
else (BUILD_DEBIAN)
include_directories(
.
${CMAKE_CURRENT_BINARY_DIR}
${LIBHACKRF_INCLUDE_DIR}
)
endif (BUILD_DEBIAN)
#add_definitions(${QT_DEFINITIONS})
#add_definitions(-DQT_SHARED)
add_library(hackrfdevice SHARED
${hackrfdevice_SOURCES}
)
set_target_properties(hackrfdevice PROPERTIES DEFINE_SYMBOL "devices_EXPORTS")
set_target_properties(hackrfdevice
PROPERTIES DEFINE_SYMBOL "devices_EXPORTS")
if (BUILD_DEBIAN)
target_link_libraries(hackrfdevice
hackrf
sdrbase
)
else (BUILD_DEBIAN)
target_link_libraries(hackrfdevice
${LIBHACKRF_LIBRARIES}
sdrbase
)
endif (BUILD_DEBIAN)
install(TARGETS hackrfdevice DESTINATION lib)
install(TARGETS hackrfdevice DESTINATION ${INSTALL_LIB_DIR})

View File

@ -12,47 +12,20 @@ set(limesdrdevice_HEADERS
devicelimesdrshared.h
)
if (BUILD_DEBIAN)
include_directories(
.
${CMAKE_CURRENT_BINARY_DIR}
${LIBLIMESUITESRC}/src
${LIBLIMESUITESRC}/src/ADF4002
${LIBLIMESUITESRC}/src/ConnectionRegistry
${LIBLIMESUITESRC}/src/FPGA_common
${LIBLIMESUITESRC}/src/GFIR
${LIBLIMESUITESRC}/src/lms7002m
${LIBLIMESUITESRC}/src/lms7002m_mcu
${LIBLIMESUITESRC}/src/Si5351C
${LIBLIMESUITESRC}/src/protocols
)
else (BUILD_DEBIAN)
include_directories(
.
${CMAKE_CURRENT_BINARY_DIR}
${LIMESUITE_INCLUDE_DIR}
)
endif (BUILD_DEBIAN)
add_definitions(${QT_DEFINITIONS})
add_definitions(-DQT_SHARED)
add_library(limesdrdevice SHARED
${limesdrdevice_SOURCES}
)
set_target_properties(limesdrdevice PROPERTIES DEFINE_SYMBOL "devices_EXPORTS")
set_target_properties(limesdrdevice
PROPERTIES DEFINE_SYMBOL "devices_EXPORTS")
if (BUILD_DEBIAN)
target_link_libraries(limesdrdevice
limesuite
sdrbase
)
else (BUILD_DEBIAN)
target_link_libraries(limesdrdevice
${LIMESUITE_LIBRARY}
sdrbase
)
endif (BUILD_DEBIAN)
install(TARGETS limesdrdevice DESTINATION lib)
install(TARGETS limesdrdevice DESTINATION ${INSTALL_LIB_DIR})

View File

@ -1,7 +1,5 @@
project(perseusdevice)
set (CMAKE_CXX_STANDARD 11)
set(perseusdevice_SOURCES
deviceperseus.cpp
deviceperseusscan.cpp
@ -12,39 +10,20 @@ set(perseusdevice_HEADERS
deviceperseusscan.h
)
if (BUILD_DEBIAN)
include_directories(
.
${CMAKE_CURRENT_BINARY_DIR}
${LIBPERSEUSSRC}
)
else (BUILD_DEBIAN)
include_directories(
.
${CMAKE_CURRENT_BINARY_DIR}
${LIBPERSEUS_INCLUDE_DIR}
)
endif (BUILD_DEBIAN)
#add_definitions(${QT_DEFINITIONS})
#add_definitions(-DQT_SHARED)
add_library(perseusdevice SHARED
${perseusdevice_SOURCES}
)
set_target_properties(perseusdevice PROPERTIES DEFINE_SYMBOL "devices_EXPORTS")
set_target_properties(perseusdevice
PROPERTIES DEFINE_SYMBOL "devices_EXPORTS")
if (BUILD_DEBIAN)
target_link_libraries(perseusdevice
perseus
sdrbase
)
else (BUILD_DEBIAN)
target_link_libraries(perseusdevice
${LIBPERSEUS_LIBRARIES}
sdrbase
)
endif (BUILD_DEBIAN)
install(TARGETS perseusdevice DESTINATION lib)
install(TARGETS perseusdevice DESTINATION ${INSTALL_LIB_DIR})

View File

@ -1,7 +1,5 @@
project(plutosdrdevice)
set (CMAKE_CXX_STANDARD 11)
set(plutosdrdevice_SOURCES
deviceplutosdr.cpp
deviceplutosdrbox.cpp
@ -18,39 +16,22 @@ set(plutosdrdevice_HEADERS
deviceplutosdrshared.h
)
if (BUILD_DEBIAN)
include_directories(
.
${CMAKE_CURRENT_BINARY_DIR}
${LIBIIOSRC}
)
else (BUILD_DEBIAN)
include_directories(
.
${CMAKE_CURRENT_BINARY_DIR}
${LIBIIO_INCLUDE_DIR}
${ICONV_INCLUDE_DIR}
)
endif (BUILD_DEBIAN)
#add_definitions(${QT_DEFINITIONS})
#add_definitions(-DQT_SHARED)
add_library(plutosdrdevice SHARED
${plutosdrdevice_SOURCES}
)
set_target_properties(plutosdrdevice PROPERTIES DEFINE_SYMBOL "devices_EXPORTS")
set_target_properties(plutosdrdevice
PROPERTIES DEFINE_SYMBOL "devices_EXPORTS")
if (BUILD_DEBIAN)
target_link_libraries(plutosdrdevice
iio
sdrbase
)
else (BUILD_DEBIAN)
target_link_libraries(plutosdrdevice
${LIBIIO_LIBRARIES}
sdrbase
${ICONV_LIBRARY}
)
endif (BUILD_DEBIAN)
install(TARGETS plutosdrdevice DESTINATION lib)
install(TARGETS plutosdrdevice DESTINATION ${INSTALL_LIB_DIR})

View File

@ -1,7 +1,5 @@
project(soapysdrdevice)
set (CMAKE_CXX_STANDARD 11)
set(soapysdrdevice_SOURCES
devicesoapysdr.cpp
devicesoapysdrscan.cpp
@ -16,40 +14,20 @@ set(soapysdrdevice_HEADERS
devicesoapysdrparams.h
)
if (BUILD_DEBIAN)
include_directories(
.
${CMAKE_CURRENT_BINARY_DIR}
${SOAPYSDR_SOURCE_DIR}/include
${SOAPYSDR_SOURCE_DIR}/src
)
else (BUILD_DEBIAN)
include_directories(
.
${CMAKE_CURRENT_BINARY_DIR}
${SOAPYSDR_INCLUDE_DIR}
)
endif (BUILD_DEBIAN)
#add_definitions(${QT_DEFINITIONS})
#add_definitions(-DQT_SHARED)
add_library(soapysdrdevice SHARED
${soapysdrdevice_SOURCES}
)
set_target_properties(soapysdrdevice PROPERTIES DEFINE_SYMBOL "devices_EXPORTS")
set_target_properties(soapysdrdevice
PROPERTIES DEFINE_SYMBOL "devices_EXPORTS")
if (BUILD_DEBIAN)
target_link_libraries(soapysdrdevice
SoapySDR
sdrbase
)
else (BUILD_DEBIAN)
target_link_libraries(soapysdrdevice
${SOAPYSDR_LIBRARY}
sdrbase
)
endif (BUILD_DEBIAN)
install(TARGETS soapysdrdevice DESTINATION lib)
install(TARGETS soapysdrdevice DESTINATION ${INSTALL_LIB_DIR})

View File

@ -1,33 +1,31 @@
project(xtrxdevice)
set(xtrxdevice_SOURCES
devicextrx.cpp
devicextrx.cpp
devicextrxparam.cpp
devicextrxshared.cpp
)
set(xtrxdevice_HEADERS
devicextrx.h
devicextrx.h
devicextrxparam.h
devicextrxshared.h
)
include_directories(
.
${CMAKE_CURRENT_BINARY_DIR}
${LIBXTRX_INCLUDE_DIRS}
)
add_definitions(${QT_DEFINITIONS})
add_definitions(-DQT_SHARED)
add_library(xtrxdevice SHARED
${xtrxdevice_SOURCES}
${xtrxdevice_SOURCES}
)
set_target_properties(xtrxdevice
PROPERTIES DEFINE_SYMBOL "devices_EXPORTS")
target_link_libraries(xtrxdevice
${LIBXTRX_LIBRARIES}
${LIBXTRX_LIBRARY}
sdrbase
)
install(TARGETS xtrxdevice DESTINATION lib)
install(TARGETS xtrxdevice DESTINATION ${INSTALL_LIB_DIR})

View File

@ -1,87 +0,0 @@
project(dsdcc)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(dsdcc_SOURCES
${LIBDSDCCSRC}/descramble.cpp
${LIBDSDCCSRC}/dmr.cpp
${LIBDSDCCSRC}/dsd_decoder.cpp
${LIBDSDCCSRC}/dsd_filters.cpp
${LIBDSDCCSRC}/dsd_logger.cpp
${LIBDSDCCSRC}/dsd_mbe.cpp
${LIBDSDCCSRC}/dsd_opts.cpp
${LIBDSDCCSRC}/dsd_state.cpp
${LIBDSDCCSRC}/dsd_symbol.cpp
${LIBDSDCCSRC}/dstar.cpp
${LIBDSDCCSRC}/ysf.cpp
${LIBDSDCCSRC}/dpmr.cpp
${LIBDSDCCSRC}/nxdn.cpp
${LIBDSDCCSRC}/nxdnconvolution.cpp
${LIBDSDCCSRC}/nxdncrc.cpp
${LIBDSDCCSRC}/nxdnmessage.cpp
${LIBDSDCCSRC}/p25p1_heuristics.cpp
${LIBDSDCCSRC}/fec.cpp
${LIBDSDCCSRC}/crc.cpp
${LIBDSDCCSRC}/viterbi.cpp
${LIBDSDCCSRC}/viterbi3.cpp
${LIBDSDCCSRC}/viterbi5.cpp
${LIBDSDCCSRC}/pn.cpp
${LIBDSDCCSRC}/mbefec.cpp
${LIBDSDCCSRC}/locator.cpp
${LIBDSDCCSRC}/phaselock.cpp
${LIBDSDCCSRC}/timeutil.cpp
)
set(dsdcc_HEADERS
${LIBDSDCCSRC}/descramble.h
${LIBDSDCCSRC}/dmr.h
${LIBDSDCCSRC}/dsd_decoder.h
${LIBDSDCCSRC}/dsd_filters.h
${LIBDSDCCSRC}/dsd_logger.h
${LIBDSDCCSRC}/dsd_mbe.h
${LIBDSDCCSRC}/dsd_mbelib.h
${LIBDSDCCSRC}/dsd_opts.h
${LIBDSDCCSRC}/dsd_state.h
${LIBDSDCCSRC}/dsd_symbol.h
${LIBDSDCCSRC}/dstar.h
${LIBDSDCCSRC}/ysf.h
${LIBDSDCCSRC}/dpmr.h
${LIBDSDCCSRC}/nxdn.h
${LIBDSDCCSRC}/nxdnconvolution.h
${LIBDSDCCSRC}/nxdncrc.h
${LIBDSDCCSRC}/nxdnmessage.h
${LIBDSDCCSRC}/p25p1_heuristics.h
${LIBDSDCCSRC}/runningmaxmin.h
${LIBDSDCCSRC}/doublebuffer.h
${LIBDSDCCSRC}/fec.h
${LIBDSDCCSRC}/crc.h
${LIBDSDCCSRC}/viterbi.h
${LIBDSDCCSRC}/viterbi3.h
${LIBDSDCCSRC}/viterbi5.h
${LIBDSDCCSRC}/pn.h
${LIBDSDCCSRC}/mbefec.h
${LIBDSDCCSRC}/locator.h
${LIBDSDCCSRC}/phaselock.h
${LIBDSDCCSRC}/timeutil.h
)
add_definitions(-DDSD_USE_MBELIB)
include_directories(
.
${CMAKE_CURRENT_BINARY_DIR}
${LIBDSDCCSRC}
${LIBMBELIBSRC}
)
add_definitions(-DQT_SHARED)
add_library(dsdcc SHARED
${dsdcc_SOURCES}
)
target_link_libraries(dsdcc
mbelib
)
install(TARGETS dsdcc DESTINATION lib)

View File

@ -1,96 +0,0 @@
#--------------------------------------------------------
#
# Pro file for Windows builds with Qt Creator
#
#--------------------------------------------------------
QT += core
TEMPLATE = lib
TARGET = dsdcc
CONFIG(MSVC):DEFINES += dsdcc_EXPORTS
CONFIG(MINGW32):LIBDSDCCSRC = "C:\softs\dsdcc"
CONFIG(MINGW64):LIBDSDCCSRC = "C:\softs\dsdcc"
CONFIG(MSVC):LIBDSDCCSRC = "C:\softs\dsdcc"
CONFIG(macx):LIBDSDCCSRC = "../../deps/dsdcc"
CONFIG(MINGW32):LIBMBELIBSRC = "C:\softs\mbelib"
CONFIG(MINGW64):LIBMBELIBSRC = "C:\softs\mbelib"
CONFIG(MSVC):LIBMBELIBSRC = "C:\softs\mbelib"
CONFIG(macx):LIBMBELIBSRC = "../../deps/mbelib"
INCLUDEPATH += $$LIBDSDCCSRC
INCLUDEPATH += $$LIBMBELIBSRC
DEFINES += DSD_USE_MBELIB=1
CONFIG(Release):build_subdir = release
CONFIG(Debug):build_subdir = debug
SOURCES = $$LIBDSDCCSRC/descramble.cpp\
$$LIBDSDCCSRC/dmr.cpp\
$$LIBDSDCCSRC/dsd_decoder.cpp\
$$LIBDSDCCSRC/dsd_filters.cpp\
$$LIBDSDCCSRC/dsd_logger.cpp\
$$LIBDSDCCSRC/dsd_mbe.cpp\
$$LIBDSDCCSRC/dsd_opts.cpp\
$$LIBDSDCCSRC/dsd_state.cpp\
$$LIBDSDCCSRC/dsd_symbol.cpp\
$$LIBDSDCCSRC/dstar.cpp\
$$LIBDSDCCSRC/ysf.cpp\
$$LIBDSDCCSRC/nxdn.cpp\
$$LIBDSDCCSRC/nxdnconvolution.cpp\
$$LIBDSDCCSRC/nxdncrc.cpp\
$$LIBDSDCCSRC/nxdnmessage.cpp\
$$LIBDSDCCSRC/dpmr.cpp\
$$LIBDSDCCSRC/p25p1_heuristics.cpp\
$$LIBDSDCCSRC/fec.cpp\
$$LIBDSDCCSRC/crc.cpp\
$$LIBDSDCCSRC/viterbi.cpp\
$$LIBDSDCCSRC/viterbi3.cpp\
$$LIBDSDCCSRC/viterbi5.cpp\
$$LIBDSDCCSRC/pn.cpp\
$$LIBDSDCCSRC/mbefec.cpp\
$$LIBDSDCCSRC/phaselock.cpp\
$$LIBDSDCCSRC/locator.cpp\
$$LIBDSDCCSRC/timeutil.cpp
HEADERS = $$LIBDSDCCSRC/descramble.h\
$$LIBDSDCCSRC/dmr.h\
$$LIBDSDCCSRC/dsd_decoder.h\
$$LIBDSDCCSRC/dsd_filters.h\
$$LIBDSDCCSRC/dsd_logger.h\
$$LIBDSDCCSRC/dsd_mbe.h\
$$LIBDSDCCSRC/dsd_mbelib.h\
$$LIBDSDCCSRC/dsd_opts.h\
$$LIBDSDCCSRC/dsd_state.h\
$$LIBDSDCCSRC/dsd_symbol.h\
$$LIBDSDCCSRC/dstar.h\
$$LIBDSDCCSRC/ysf.h\
$$LIBDSDCCSRC/nxdn.h\
$$LIBDSDCCSRC/nxdnconvolution.h\
$$LIBDSDCCSRC/nxdncrc.h\
$$LIBDSDCCSRC/nxdnmessage.h\
$$LIBDSDCCSRC/dpmr.h\
$$LIBDSDCCSRC/p25p1_heuristics.h\
$$LIBDSDCCSRC/runningmaxmin.h\
$$LIBDSDCCSRC/doublebuffer.h\
$$LIBDSDCCSRC/fec.h\
$$LIBDSDCCSRC/crc.h\
$$LIBDSDCCSRC/viterbi.h\
$$LIBDSDCCSRC/viterbi3.h\
$$LIBDSDCCSRC/viterbi5.h\
$$LIBDSDCCSRC/pn.h\
$$LIBDSDCCSRC/mbefec.h\
$$LIBDSDCCSRC/phaselock.h\
$$LIBDSDCCSRC/locator.h\
$$LIBDSDCCSRC/timeutil.h\
$$LIBDSDCCSRC/export.h
LIBS += -L../mbelib/$${build_subdir} -lmbelib
macx {
QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/
}

View File

@ -55,6 +55,18 @@
# define SDRGUI_API
#endif
/* the 'SDRSRV_API' controls the import/export of 'sdrsrv' symbols
*/
#if !defined(sdrangel_STATIC)
# ifdef sdrsrv_EXPORTS
# define SDRSRV_API __SDR_EXPORT
# else
# define SDRSRV_API __SDR_IMPORT
# endif
#else
# define SDRSRV_API
#endif
/* the 'DEVICES_API' controls the import/export of 'devices' symbols
*/
#if !defined(sdrangel_STATIC)

259
external/CMakeLists.txt vendored Normal file
View File

@ -0,0 +1,259 @@
# Many idea are exposed at
# https://stackoverflow.com/questions/15175318/cmake-how-to-build-external-projects-and-include-their-targets
# https://crascit.com/2015/07/25/cmake-gtest/
#
# in essence, we need a way to build external libraries before use it;
# we choose add_dependencies() to the target.
# other viable solution is to use execute_process() during config
# but make the configuration dirty
# which version/tag/checkout to use
set(CODEC2_TAG 7a0187da3ffb06fd90c081216b50bab94d02d046)
set(CM256CC_TAG 19f023d9d6c6f1a2e7dc5bcf466a1424c7918de4)
set(MBELIB_TAG "debian/1.3.0")
set(SERIALDV_TAG abd65a0fc2d5339808194862d14119b0cba70424)
set(DSDCC_TAG 2d60d60f16c1ac778ba518310180f81043befdd0)
# For some external project macros
include(ExternalProject)
# default build destination in windows to avoid Release/Debug folder
if(WIN32)
# the build will be output on the same folder of sdrangel
set(DEFAULT_OUTPUT_DIRECTORY
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${SDRANGEL_BINARY_BIN_DIR}
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG=${SDRANGEL_BINARY_BIN_DIR}
-DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=${SDRANGEL_BINARY_BIN_DIR}
-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY=${SDRANGEL_BINARY_LIB_DIR}
-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG=${SDRANGEL_BINARY_LIB_DIR}
-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE=${SDRANGEL_BINARY_LIB_DIR}
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=${SDRANGEL_BINARY_LIB_DIR}
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG=${SDRANGEL_BINARY_LIB_DIR}
-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=${SDRANGEL_BINARY_LIB_DIR})
endif()
# macro that create symbolic links
macro(makeLink src dest target)
if(NOT EXISTS ${dest})
add_custom_command(TARGET ${target} PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E create_symlink ${src} ${dest} DEPENDS ${dest} COMMENT "mklink ${src} -> ${dest}")
endif()
endmacro()
# macro that copy folder
macro(makeCopy src dest target)
if(NOT EXISTS ${dest})
add_custom_command(TARGET ${target} PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory ${src} ${dest} DEPENDS ${dest} COMMENT "copy ${src} -> ${dest}")
endif()
endmacro()
# probably build with mingw64 on windows
if(NOT WIN32)
# needs boost
ExternalProject_Add(codec2
GIT_REPOSITORY https://github.com/drowe67/codec2.git
GIT_TAG ${CODEC2_TAG}
PREFIX "${EXTERNAL_BUILD_LIBRARIES}/codec2"
CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORY}
INSTALL_COMMAND ""
TEST_COMMAND ""
)
ExternalProject_Get_Property(codec2 source_dir binary_dir)
set(CODEC2_FOUND ON CACHE INTERNAL "")
set(CODEC2_INCLUDE_DIR "${source_dir}/src" CACHE INTERNAL "")
if(WIN32)
set(CODEC2_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/codec2.lib" CACHE INTERNAL "")
makeCopy("${source_dir}/src" "${source_dir}/src/codec2" codec2)
else()
set(CODEC2_LIBRARIES "${binary_dir}/libcodec2${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "")
# some source include "codec2/comp.h" and some without codec2
makeLink("${source_dir}/src" "${source_dir}/src/codec2" codec2)
endif()
endif()
# needs boost
ExternalProject_Add(cm256cc
GIT_REPOSITORY https://github.com/f4exb/cm256cc.git
GIT_TAG ${CM256CC_TAG}
PREFIX "${EXTERNAL_BUILD_LIBRARIES}/cm256cc"
CMAKE_ARGS -DBUILD_TOOLS=OFF -DBOOST_ROOT="${BOOST_ROOT}" ${DEFAULT_OUTPUT_DIRECTORY}
INSTALL_COMMAND ""
TEST_COMMAND ""
)
ExternalProject_Get_Property(cm256cc source_dir binary_dir)
set(CM256CC_FOUND ON CACHE INTERNAL "")
# we need cm256cc/library.h
set(CM256CC_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/cm256cc/src" CACHE INTERNAL "")
if(WIN32)
set(CM256CC_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/cm256cc.lib" CACHE INTERNAL "")
else()
set(CM256CC_LIBRARIES "${binary_dir}/libcm256cc${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "")
endif()
set(USE_MBELIB OFF)
if(NOT WIN32)
ExternalProject_Add(mbelib
GIT_REPOSITORY https://github.com/szechyjs/mbelib.git
GIT_TAG ${MBELIB_TAG}
PREFIX "${EXTERNAL_BUILD_LIBRARIES}/mbelib"
CMAKE_ARGS -DDISABLE_TEST=ON ${DEFAULT_OUTPUT_DIRECTORY}
INSTALL_COMMAND ""
TEST_COMMAND ""
)
ExternalProject_Get_Property(mbelib source_dir binary_dir)
set(USE_MBELIB ON)
set(DSDCC_DEPENDS mbelib)
set(LIBMBE_FOUND)
set(LIBMBE_INCLUDE_DIR "${source_dir}")
if(WIN32)
set(LIBMBE_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/mbe.lib")
else()
set(LIBMBE_LIBRARIES "${binary_dir}/libmbe${CMAKE_SHARED_LIBRARY_SUFFIX}")
endif()
endif(NOT WIN32)
if(WIN32 OR LINUX)
ExternalProject_Add(serialdv
GIT_REPOSITORY https://github.com/f4exb/serialDV.git
GIT_TAG ${SERIALDV_TAG}
PREFIX "${EXTERNAL_BUILD_LIBRARIES}/serialdv"
CMAKE_ARGS -DBUILD_TOOL=OFF ${DEFAULT_OUTPUT_DIRECTORY}
INSTALL_COMMAND ""
TEST_COMMAND ""
)
ExternalProject_Get_Property(serialdv source_dir binary_dir)
set(DSDCC_DEPENDS ${DSDCC_DEPENDS} serialdv)
set(LIBSERIALDV_FOUND ON CACHE INTERNAL "")
set(LIBSERIALDV_INCLUDE_DIR "${source_dir}" CACHE INTERNAL "")
if(WIN32)
set(LIBSERIALDV_LIBRARY "${SDRANGEL_BINARY_LIB_DIR}/serialdv.lib" CACHE INTERNAL "")
makeCopy("${source_dir}" "${source_dir}/dsp" serialdv)
else()
set(LIBSERIALDV_LIBRARY "${binary_dir}/libserialdv${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "")
# because sdrbase/dsp/dvserialworker.h use dsp/dvcontroller.h
# so we need a link
makeLink("${source_dir}" "${source_dir}/dsp" serialdv)
endif()
endif()
ExternalProject_Add(dsdcc
GIT_REPOSITORY https://github.com/f4exb/dsdcc.git
GIT_TAG ${DSDCC_TAG}
DEPENDS ${DSDCC_DEPENDS}
PREFIX "${EXTERNAL_BUILD_LIBRARIES}/dsdcc"
CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORY} -DBUILD_TOOL=OFF -DUSE_MBELIB=${USE_MBELIB} -DLIBMBE_INCLUDE_DIR="${LIBMBE_INCLUDE_DIR}" -DLIBMBE_LIBRARY="${LIBMBE_LIBRARIES}" -DLIBSERIALDV_INCLUDE_DIR="${LIBSERIALDV_INCLUDE_DIR}" -DLIBSERIALDV_LIBRARY="${LIBSERIALDV_LIBRARY}"
INSTALL_COMMAND ""
TEST_COMMAND ""
)
ExternalProject_Get_Property(dsdcc source_dir binary_dir)
set(LIBDSDCC_FOUND ON CACHE INTERNAL "")
set(LIBDSDCC_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/dsdcc/src" CACHE INTERNAL "")
if(WIN32)
set(LIBDSDCC_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/dsdcc.lib" CACHE INTERNAL "")
else()
set(LIBDSDCC_LIBRARIES "${binary_dir}/libdsdcc${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "")
endif()
# already on the respository
# TODO decide what to do
if(OFF)
# needs pkgconfig, libusb, autoconf, automake and libtool
ExternalProject_Add(perseus
GIT_REPOSITORY https://github.com/f4exb/libperseus-sdr.git
GIT_TAG afefa23e3140ac79d845acb68cf0beeb86d09028
PREFIX "${EXTERNAL_BUILD_LIBRARIES}/perseus"
INSTALL_COMMAND ""
TEST_COMMAND ""
)
# apt install libcodec2-dev
# needs speexdsp
ExternalProject_Add(codec2
GIT_REPOSITORY https://github.com/drowe67/codec2.git
GIT_TAG ff5841a18bfd9df0e8a250dc57fb7388cabccda1
PREFIX "${EXTERNAL_BUILD_LIBRARIES}/codec2"
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_LIBRARIES} -DCMAKE_BUILD_TYPE=Release -DUNITTEST=OFF
)
# apt install libairspy-dev
# needs libusb and pkgconfig
ExternalProject_Add(airspy
GIT_REPOSITORY https://github.com/airspy/airspyone_host.git
GIT_TAG bfb667080936ca5c2d23b3282f5893931ec38d3f
PREFIX "${EXTERNAL_BUILD_LIBRARIES}/airspy"
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_LIBRARIES}
)
# apt install libairspyhf-dev (only on ubuntu 18.04)
# needs libusb and pkgconfig
ExternalProject_Add(airspyhf
GIT_REPOSITORY https://github.com/airspy/airspyhf.git
GIT_TAG 1.1.5
PREFIX "${EXTERNAL_BUILD_LIBRARIES}/airspyhf"
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_LIBRARIES}
)
# apt install libhackrf-dev
# needs pkgconfig, libusb and fftw-3
ExternalProject_Add(hackrf
GIT_REPOSITORY https://github.com/mossmann/hackrf.git
GIT_TAG v2018.01.1
PREFIX "${EXTERNAL_BUILD_LIBRARIES}/hackrf"
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_LIBRARIES}
SOURCE_SUBDIR host/
)
# apt install librtlsdr-dev
# needs pkgconfig and libusb
ExternalProject_Add(rtlsdr
GIT_REPOSITORY https://github.com/osmocom/rtl-sdr.git
GIT_TAG f68bb2fa772ad94f58c59babd78353667570630b
PREFIX "${EXTERNAL_BUILD_LIBRARIES}/rtlsdr"
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_LIBRARIES}
)
# apt install libbladerf-dev
# needs pkgconfig and libusb
ExternalProject_Add(bladerf
GIT_REPOSITORY https://github.com/Nuand/bladeRF.git
GIT_TAG 1da130cb5ac9e9f722737e9aee141ecccebef00d
GIT_SUBMODULES
PREFIX "${EXTERNAL_BUILD_LIBRARIES}/bladerf"
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_LIBRARIES}
)
# apt install liblimesuite-dev (only on ubuntu 18.04)
# needs pkgconfig, libusb and sqlite3
ExternalProject_Add(limesuite
GIT_REPOSITORY https://github.com/myriadrf/LimeSuite.git
GIT_TAG v19.01.0
PREFIX "${EXTERNAL_BUILD_LIBRARIES}/limesuite"
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_LIBRARIES} -DLIME_SUITE_EXTVER=release -DENABLE_GUI=OFF -DENABLE_NOVENARF7=OFF -DENABLE_SOAPY_LMS7=OFF -DENABLE_OCTAVE=OFF
)
# apt install libmirisdr-dev
# needs pkgconfig and libusb
ExternalProject_Add(mirisdr
GIT_REPOSITORY https://github.com/f4exb/libmirisdr-4.git
GIT_TAG v1.1.2
PREFIX "${EXTERNAL_BUILD_LIBRARIES}/mirisdr"
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_LIBRARIES}
)
# apt install libiio-dev
# needs pkgconfig, libusb, libxml2, lzma, xz, libiconv
ExternalProject_Add(libiio
GIT_REPOSITORY https://github.com/analogdevicesinc/libiio.git
GIT_TAG 826563e41b5ce9890b75506f672017de8d76d52d
PREFIX "${EXTERNAL_BUILD_LIBRARIES}/libiio"
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_LIBRARIES} -DOSX_PACKAGE=OFF -DWITH_DOC=OFF
)
# apt install libsoapysdr-dev (only on ubuntu 18.04)
ExternalProject_Add(soapysdr
GIT_REPOSITORY https://github.com/pothosware/SoapySDR.git
GIT_TAG soapy-sdr-0.7.1
PREFIX "${EXTERNAL_BUILD_LIBRARIES}/soapysdr"
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_LIBRARIES} -DENABLE_PYTHON=OFF -DENABLE_PYTHON3=OFF
)
# TODO: sdrplay is binary only!
# needs soapysdr, sdrplay
ExternalProject_Add(soapysdrplay
GIT_REPOSITORY https://github.com/pothosware/SoapySDRPlay.git
GIT_TAG soapy-sdrplay-0.2.0
DEPENDS soapysdr
PREFIX "${EXTERNAL_BUILD_LIBRARIES}/soapysdrplay"
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_LIBRARIES} -DCMAKE_BUILD_TYPE=Release
)
endif(OFF)

1
external/windows vendored Submodule

@ -0,0 +1 @@
Subproject commit efa84ff291820aa476e9f67286e0162ecab9f806

View File

@ -1,35 +1,30 @@
project(fcdhid)
set(fcdhid_SOURCES
../apple/apple_compat.c
../custom/apple/apple_compat.c
hid-libusb.c
fcdhid.c
)
set(fcdhid_HEADERS
../apple/apple_compat.h
fcdhid.h
hid-libusb.h
hidapi.h
)
include_directories(
.
${CMAKE_CURRENT_BINARY_DIR}
${LIBUSB_INCLUDE_DIR}
${ICONV_INCLUDE_DIR}
${CUSTOM_APPLE_INCLUDE}
)
#add_definitions(-DQT_PLUGIN)
add_definitions(-DQT_SHARED)
add_library(fcdhid SHARED
${fcdhid_SOURCES}
)
target_link_libraries(fcdhid
${LIBUSB_LIBRARIES}
${LIBUSB_LIBRARIES}
${ICONV_LIBRARY}
)
install(TARGETS fcdhid DESTINATION lib)
install(TARGETS fcdhid DESTINATION ${INSTALL_LIB_DIR})

Some files were not shown because too many files have changed in this diff Show More