mirror of
https://github.com/f4exb/sdrangel.git
synced 2026-04-21 06:56:10 -04:00
Added optional scrollbar to be able to scroll back through waterfall.
When scrolling is enabled:
Can adjust power scale for complete waterfall, not just future spectra.
Waterfall time axis can use local time or UTC.
Waterfall not lost when resizing window.
Can now zoom when device is stopped.
Added Min averaging type.
Added button to load spectrum from .csv file.
Add button to save spectrum/waterfall to .png or jpg.
Changed show all controls button to a combobox with choices of Min/Std/All (Minimum/Standard/All).
Changed some buttons in spectrum GUI from QPushButton to QToolButton so their size matches the others.
Fix spectrum from displaying a mixture of old and new spectrums (m_currentSpectrum was a pointer to SpectrumVis buffer).
Added M1 and M2 memories to allow display of reference spectra.
Added math operations to allow spectrum to be difference of current spectrum and either memory or a moving average.
Fixed measurement counts, so they are performed once per spectrum, not on displayed spectra.
Added spectrum mask measurement, to check when a spectrum exceeds mask held in M1 or M2.
Optionally display power/frequency under cursor in status line.
Optionally display peak power/frequency in status line.
Fix incorrect nyquist sample replication, when zoom used.
Fix cursor not changing from resize to pointer when moving over spectrum measurements window.
Add spectrum colour setting.
708 lines
18 KiB
CMake
708 lines
18 KiB
CMake
project (sdrbase)
|
|
|
|
if(WIN32)
|
|
# This should probably be in ../CMakeLists.txt with the other variables like it
|
|
set(OPUS_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/external/windows/libopus/include")
|
|
set(OPUS_LIBRARIES "${CMAKE_SOURCE_DIR}/external/windows/libopus/lib/x64/libopus.lib")
|
|
endif()
|
|
find_package(Opus REQUIRED)
|
|
|
|
if(FFTW3F_FOUND)
|
|
set(sdrbase_SOURCES
|
|
${sdrbase_SOURCES}
|
|
dsp/fftwengine.cpp
|
|
)
|
|
set(sdrbase_HEADERS
|
|
${sdrbase_HEADERS}
|
|
dsp/fftwengine.h
|
|
)
|
|
add_definitions(-DUSE_FFTW)
|
|
include_directories(${FFTW3F_INCLUDE_DIRS})
|
|
set(sdrbase_FFTW3F_LIB ${FFTW3F_LIBRARIES})
|
|
endif(FFTW3F_FOUND)
|
|
|
|
# Kiss FFT is always available
|
|
set(sdrbase_SOURCES
|
|
${sdrbase_SOURCES}
|
|
dsp/kissengine.cpp
|
|
dsp/kissfft.h
|
|
)
|
|
set(sdrbase_HEADERS
|
|
${sdrbase_HEADERS}
|
|
dsp/kissengine.h
|
|
)
|
|
add_definitions(-DUSE_KISSFFT)
|
|
|
|
# Vulkan SDK: https://vulkan.lunarg.com/
|
|
# Windows Vulkan SDK is missing glslang_c_interface.h
|
|
# See bug: https://vulkan.lunarg.com/issue/view/63d158a85df11200d569b2ab
|
|
# Copy it from Linux SDK
|
|
if (${VKFFT_BACKEND} EQUAL 0)
|
|
find_package(Vulkan COMPONENTS glslang SPIRV-Tools)
|
|
if(Vulkan_FOUND)
|
|
set(sdrbase_SOURCES
|
|
${sdrbase_SOURCES}
|
|
dsp/vulkanvkfftengine.cpp
|
|
dsp/vulkanvkfftengine.h
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
# CUDA Toolkit: https://developer.nvidia.com/cuda-downloads
|
|
if (${VKFFT_BACKEND} EQUAL 1)
|
|
find_package(CUDAToolkit)
|
|
if(CUDA_FOUND)
|
|
enable_language(CUDA)
|
|
set(sdrbase_SOURCES
|
|
${sdrbase_SOURCES}
|
|
dsp/cudavkfftengine.cpp
|
|
dsp/cudavkfftengine.h
|
|
)
|
|
endif()
|
|
if(WIN32)
|
|
set(WINDOWS_FIXUP_BUNDLE_LIB_DIRS ${WINDOWS_FIXUP_BUNDLE_LIB_DIRS} ${CUDA_TOOLKIT_ROOT_DIR}/bin PARENT_SCOPE)
|
|
endif()
|
|
endif()
|
|
|
|
if((Vulkan_FOUND AND (${VKFFT_BACKEND} EQUAL 0)) OR (CUDA_FOUND AND (${VKFFT_BACKEND} EQUAL 1)))
|
|
set(sdrbase_SOURCES
|
|
${sdrbase_SOURCES}
|
|
dsp/vkfftengine.cpp
|
|
dsp/vkfftengine.h
|
|
dsp/vkfftutils.cpp
|
|
dsp/vkfftutils.h
|
|
)
|
|
include_directories(${VKFFT_INCLUDE_DIR})
|
|
endif()
|
|
|
|
if (LIBSIGMF_FOUND)
|
|
set(sdrbase_SOURCES
|
|
${sdrbase_SOURCES}
|
|
dsp/sigmffilerecord.cpp
|
|
)
|
|
set(sdrbase_HEADERS
|
|
${sdrbase_HEADERS}
|
|
dsp/sigmf_forward.h
|
|
dsp/sigmffilerecord.h
|
|
)
|
|
include_directories(${LIBSIGMF_INCLUDE_DIR})
|
|
endif()
|
|
|
|
if (LIBSERIALDV_FOUND)
|
|
add_definitions(-DDSD_USE_SERIALDV)
|
|
include_directories(${LIBSERIALDV_INCLUDE_DIR})
|
|
set(sdrbase_SERIALDV_LIB ${LIBSERIALDV_LIBRARY})
|
|
endif()
|
|
|
|
set(sdrbase_SOURCES
|
|
${sdrbase_SOURCES}
|
|
|
|
audio/audiocompressor.cpp
|
|
audio/audiocompressorsnd.cpp
|
|
audio/audiodeviceinfo.cpp
|
|
audio/audiodevicemanager.cpp
|
|
audio/audiofifo.cpp
|
|
audio/audiofilter.cpp
|
|
audio/audiog722.cpp
|
|
audio/audioopus.cpp
|
|
audio/audiooutputdevice.cpp
|
|
audio/audioinputdevice.cpp
|
|
audio/audionetsink.cpp
|
|
audio/audioresampler.cpp
|
|
|
|
channel/channelapi.cpp
|
|
channel/channelutils.cpp
|
|
channel/channelwebapiutils.cpp
|
|
channel/remotedataqueue.cpp
|
|
channel/remotedatareadqueue.cpp
|
|
|
|
commands/command.cpp
|
|
commands/commandkeyreceiver.cpp
|
|
|
|
dsp/afsquelch.cpp
|
|
dsp/agc.cpp
|
|
dsp/downchannelizer.cpp
|
|
dsp/upchannelizer.cpp
|
|
dsp/channelmarker.cpp
|
|
dsp/ctcssdetector.cpp
|
|
dsp/ctcssfrequencies.cpp
|
|
dsp/channelsamplesink.cpp
|
|
dsp/channelsamplesource.cpp
|
|
dsp/costasloop.cpp
|
|
dsp/cwkeyer.cpp
|
|
dsp/cwkeyersettings.cpp
|
|
dsp/datafifo.cpp
|
|
dsp/dcscodes.cpp
|
|
dsp/decimatorsff.cpp
|
|
dsp/decimatorsfi.cpp
|
|
dsp/decimatorc.cpp
|
|
dsp/dspcommands.cpp
|
|
dsp/dspengine.cpp
|
|
dsp/dspdevicesourceengine.cpp
|
|
dsp/dspdevicesinkengine.cpp
|
|
dsp/dspdevicemimoengine.cpp
|
|
dsp/fftcorr.cpp
|
|
dsp/fftengine.cpp
|
|
dsp/fftfactory.cpp
|
|
dsp/fftfilt.cpp
|
|
dsp/fftfilterrrc.cpp
|
|
dsp/fftnr.cpp
|
|
dsp/fftwindow.cpp
|
|
dsp/filterrc.cpp
|
|
dsp/filtermbe.cpp
|
|
dsp/filerecord.cpp
|
|
dsp/filerecordinterface.cpp
|
|
dsp/firfilter.cpp
|
|
dsp/firfilterrrc.cpp
|
|
dsp/fmpreemphasis.cpp
|
|
dsp/freqlockcomplex.cpp
|
|
dsp/interpolator.cpp
|
|
dsp/glscopesettings.cpp
|
|
dsp/spectrumsettings.cpp
|
|
dsp/goertzel.cpp
|
|
dsp/hbfilterchainconverter.cpp
|
|
dsp/hbfiltertraits.cpp
|
|
dsp/mimochannel.cpp
|
|
dsp/morsedemod.cpp
|
|
dsp/nco.cpp
|
|
dsp/phaselock.cpp
|
|
dsp/phaselockcomplex.cpp
|
|
dsp/projector.cpp
|
|
dsp/samplemififo.cpp
|
|
dsp/samplemofifo.cpp
|
|
dsp/samplesinkfifo.cpp
|
|
dsp/samplesimplefifo.cpp
|
|
dsp/samplesourcefifo.cpp
|
|
dsp/scopevis.cpp
|
|
dsp/basebandsamplesink.cpp
|
|
dsp/basebandsamplesource.cpp
|
|
dsp/recursivefilters.cpp
|
|
dsp/wfir.cpp
|
|
dsp/devicesamplesource.cpp
|
|
dsp/devicesamplesink.cpp
|
|
dsp/devicesamplemimo.cpp
|
|
dsp/devicesamplestatic.cpp
|
|
dsp/spectrummarkers.cpp
|
|
dsp/spectrumcalibrationpoint.cpp
|
|
dsp/spectrumvis.cpp
|
|
dsp/wavfilerecord.cpp
|
|
|
|
device/deviceapi.cpp
|
|
device/deviceenumerator.cpp
|
|
device/deviceset.cpp
|
|
device/deviceuserargs.cpp
|
|
device/deviceutils.cpp
|
|
|
|
feature/feature.cpp
|
|
feature/featureset.cpp
|
|
feature/featureutils.cpp
|
|
feature/featurewebapiutils.cpp
|
|
|
|
pipes/datafifostore.cpp
|
|
pipes/datapipes.cpp
|
|
pipes/datapipesgcworker.cpp
|
|
pipes/messagepipes.cpp
|
|
pipes/messagepipesgcworker.cpp
|
|
pipes/messagequeuestore.cpp
|
|
pipes/objectpipe.cpp
|
|
pipes/objectpipesregistrations.cpp
|
|
|
|
settings/configuration.cpp
|
|
settings/featuresetpreset.cpp
|
|
settings/pluginpreset.cpp
|
|
settings/preferences.cpp
|
|
settings/preset.cpp
|
|
settings/mainsettings.cpp
|
|
settings/rollupstate.cpp
|
|
|
|
util/airlines.cpp
|
|
util/ais.cpp
|
|
util/android.cpp
|
|
util/aprsfi.cpp
|
|
util/aviationweather.cpp
|
|
util/ax25.cpp
|
|
util/aprs.cpp
|
|
util/astronomy.cpp
|
|
util/aurora.cpp
|
|
util/azel.cpp
|
|
util/baudot.cpp
|
|
util/callsign.cpp
|
|
util/colormap.cpp
|
|
util/coordinates.cpp
|
|
util/corsproxy.cpp
|
|
util/countrydat.cpp
|
|
util/crc.cpp
|
|
util/CRC64.cpp
|
|
util/csv.cpp
|
|
util/db.cpp
|
|
util/dsc.cpp
|
|
util/fixedtraits.cpp
|
|
util/fits.cpp
|
|
util/flightinformation.cpp
|
|
util/ft8message.cpp
|
|
util/giro.cpp
|
|
util/goesxray.cpp
|
|
util/golay2312.cpp
|
|
util/grb.cpp
|
|
util/httpdownloadmanager.cpp
|
|
util/interpolation.cpp
|
|
util/kiwisdrlist.cpp
|
|
util/lfsr.cpp
|
|
util/maidenhead.cpp
|
|
util/message.cpp
|
|
util/messagequeue.cpp
|
|
util/mmsi.cpp
|
|
util/morse.cpp
|
|
util/nasaglobalimagery.cpp
|
|
util/navtex.cpp
|
|
util/openaip.cpp
|
|
util/osndb.cpp
|
|
util/ourairportsdb.cpp
|
|
util/peakfinder.cpp
|
|
util/planespotters.cpp
|
|
util/png.cpp
|
|
util/prettyprint.cpp
|
|
util/profiler.cpp
|
|
util/psk31.cpp
|
|
util/radiosonde.cpp
|
|
util/rainviewer.cpp
|
|
util/rtpsink.cpp
|
|
util/syncmessenger.cpp
|
|
util/samplesourceserializer.cpp
|
|
util/sdrangelserverlist.cpp
|
|
util/simpleserializer.cpp
|
|
util/serialutil.cpp
|
|
util/socket.cpp
|
|
util/solardynamicsobservatory.cpp
|
|
util/sondehub.cpp
|
|
#util/spinlock.cpp
|
|
util/spyserverlist.cpp
|
|
util/stix.cpp
|
|
util/stringlist.cpp
|
|
util/rtty.cpp
|
|
util/uid.cpp
|
|
util/units.cpp
|
|
util/timeutil.cpp
|
|
util/visa.cpp
|
|
util/vlftransmitters.cpp
|
|
util/waypoints.cpp
|
|
util/weather.cpp
|
|
util/whittakereilers.cpp
|
|
util/iot/device.cpp
|
|
util/iot/homeassistant.cpp
|
|
util/iot/tplink.cpp
|
|
util/iot/visa.cpp
|
|
|
|
plugin/plugininterface.cpp
|
|
plugin/pluginapi.cpp
|
|
plugin/pluginmanager.cpp
|
|
|
|
webapi/webapiadapter.cpp
|
|
webapi/webapiadapterbase.cpp
|
|
webapi/webapiadapterinterface.cpp
|
|
webapi/webapirequestmapper.cpp
|
|
webapi/webapiserver.cpp
|
|
webapi/webapiutils.cpp
|
|
|
|
websockets/wsspectrum.cpp
|
|
|
|
availablechannelorfeature.cpp
|
|
availablechannelorfeaturehandler.cpp
|
|
mainparser.cpp
|
|
maincore.cpp
|
|
remotetcpsinkstarter.cpp
|
|
|
|
resources/data.qrc
|
|
resources/webapi.qrc
|
|
)
|
|
|
|
set(sdrbase_HEADERS
|
|
${sdrbase_HEADERS}
|
|
|
|
audio/audiocompressor.h
|
|
audio/audiocompressorsnd.h
|
|
audio/audiodeviceinfo.h
|
|
audio/audiodevicemanager.h
|
|
audio/audiofifo.h
|
|
audio/audiofilter.h
|
|
audio/audiog722.h
|
|
audio/audiooutputdevice.h
|
|
audio/audioopus.h
|
|
audio/audioinputdevice.h
|
|
audio/audionetsink.h
|
|
audio/audioresampler.h
|
|
|
|
channel/channelapi.h
|
|
channel/channelutils.h
|
|
channel/channelwebapiutils.h
|
|
channel/remotedataqueue.h
|
|
channel/remotedatareadqueue.h
|
|
channel/remotedatablock.h
|
|
|
|
commands/command.h
|
|
commands/commandkeyreceiver.h
|
|
|
|
dsp/afsquelch.h
|
|
dsp/autocorrector.h
|
|
dsp/downchannelizer.h
|
|
dsp/upchannelizer.h
|
|
dsp/channelmarker.h
|
|
dsp/channelsamplesink.h
|
|
dsp/channelsamplesource.h
|
|
dsp/complex.h
|
|
dsp/costasloop.h
|
|
dsp/ctcssdetector.h
|
|
dsp/ctcssfrequencies.h
|
|
dsp/cwkeyer.h
|
|
dsp/cwkeyersettings.h
|
|
dsp/datafifo.h
|
|
dsp/dcscodes.h
|
|
dsp/decimators.h
|
|
dsp/decimatorsif.h
|
|
dsp/decimatorsff.h
|
|
dsp/decimatorsfi.h
|
|
dsp/decimatorsu.h
|
|
dsp/decimatorc.h
|
|
dsp/interpolators.h
|
|
dsp/interpolatorsif.h
|
|
dsp/dspcommands.h
|
|
dsp/dspengine.h
|
|
dsp/dspdevicesourceengine.h
|
|
dsp/dspdevicesinkengine.h
|
|
dsp/dspdevicemimoengine.h
|
|
dsp/dsptypes.h
|
|
dsp/fftcorr.h
|
|
dsp/fftengine.h
|
|
dsp/fftfactory.h
|
|
dsp/fftfilt.h
|
|
dsp/fftfilterrrc.h
|
|
dsp/fftnr.h
|
|
dsp/fftwengine.h
|
|
dsp/fftwindow.h
|
|
dsp/filterrc.h
|
|
dsp/filtermbe.h
|
|
dsp/filerecord.h
|
|
dsp/filerecordinterface.h
|
|
dsp/firfilter.h
|
|
dsp/firfilterrrc.h
|
|
dsp/fmpreemphasis.h
|
|
dsp/freqlockcomplex.h
|
|
dsp/gfft.h
|
|
dsp/glscopesettings.h
|
|
dsp/glspectruminterface.h
|
|
dsp/spectrummarkers.h
|
|
dsp/spectrumcalibrationpoint.h
|
|
dsp/spectrumsettings.h
|
|
dsp/goertzel.h
|
|
dsp/hbfilterchainconverter.h
|
|
dsp/iirfilter.h
|
|
dsp/interpolator.h
|
|
dsp/hbfiltertraits.h
|
|
dsp/inthalfbandfilter.h
|
|
dsp/inthalfbandfilterdb.h
|
|
dsp/inthalfbandfilterdbf.h
|
|
dsp/inthalfbandfiltereo.h
|
|
# dsp/inthalfbandfiltereo1.h
|
|
# dsp/inthalfbandfiltereo1i.h
|
|
# dsp/inthalfbandfiltereo2.h
|
|
dsp/inthalfbandfiltereof.h
|
|
dsp/inthalfbandfilterst.h
|
|
dsp/inthalfbandfiltersti.h
|
|
dsp/kissfft.h
|
|
dsp/kissengine.h
|
|
dsp/firfilter.h
|
|
dsp/gaussian.h
|
|
dsp/mimochannel.h
|
|
dsp/misc.h
|
|
dsp/movingaverage.h
|
|
dsp/morsedemod.h
|
|
dsp/nco.h
|
|
dsp/phasediscri.h
|
|
dsp/phaselock.h
|
|
dsp/phaselockcomplex.h
|
|
dsp/projector.h
|
|
dsp/raisedcosine.h
|
|
dsp/recursivefilters.h
|
|
dsp/replaybuffer.h
|
|
dsp/rootraisedcosine.h
|
|
dsp/samplemififo.h
|
|
dsp/samplemofifo.h
|
|
dsp/samplesinkfifo.h
|
|
dsp/samplesimplefifo.h
|
|
dsp/samplesourcefifo.h
|
|
dsp/scopevis.h
|
|
dsp/basebandsamplesink.h
|
|
dsp/basebandsamplesource.h
|
|
dsp/wfir.h
|
|
dsp/devicesamplesource.h
|
|
dsp/devicesamplesink.h
|
|
dsp/devicesamplemimo.h
|
|
dsp/devicesamplestatic.h
|
|
dsp/spectrumvis.h
|
|
dsp/wavfilerecord.h
|
|
|
|
device/deviceapi.h
|
|
device/deviceenumerator.h
|
|
device/deviceset.h
|
|
device/deviceuserargs.h
|
|
device/deviceutils.h
|
|
|
|
feature/feature.h
|
|
feature/featureset.h
|
|
feature/featureutils.h
|
|
feature/featurewebapiutils.h
|
|
|
|
pipes/datafifostore.h
|
|
pipes/datapipes.h
|
|
pipes/datapipesgcworker.h
|
|
pipes/elementpipescommon.h
|
|
pipes/elementpipesgc.h
|
|
pipes/messagepipes.h
|
|
pipes/messagepipesgcworker.h
|
|
pipes/messagequeuestore.h
|
|
pipes/objectpipe.h
|
|
pipes/objectpipesregistrations.h
|
|
|
|
plugin/plugininterface.h
|
|
plugin/pluginapi.h
|
|
plugin/pluginmanager.h
|
|
|
|
settings/configuration.h
|
|
settings/featuresetpreset.h
|
|
settings/pluginpreset.h
|
|
settings/preferences.h
|
|
settings/preset.h
|
|
settings/mainsettings.h
|
|
settings/rollupstate.h
|
|
|
|
util/airlines.h
|
|
util/ais.h
|
|
util/android.h
|
|
util/aprsfi.h
|
|
util/aurora.h
|
|
util/aviationweather.h
|
|
util/ax25.h
|
|
util/aprs.h
|
|
util/astronomy.h
|
|
util/azel.h
|
|
util/baudot.h
|
|
util/callsign.h
|
|
util/circularbuffer.h
|
|
util/colormap.h
|
|
util/coordinates.h
|
|
util/corsproxy.h
|
|
util/countrydat.h
|
|
util/CRC64.h
|
|
util/csv.h
|
|
util/db.h
|
|
util/dsc.h
|
|
util/doublebuffer.h
|
|
util/doublebufferfifo.h
|
|
util/doublebuffermultiple.h
|
|
util/fixedtraits.h
|
|
util/fits.h
|
|
util/flightinformation.h
|
|
util/ft8message.h
|
|
util/giro.h
|
|
util/goesxray.h
|
|
util/golay2312.h
|
|
util/grb.h
|
|
util/httpdownloadmanager.h
|
|
util/incrementalarray.h
|
|
util/incrementalvector.h
|
|
util/interpolation.h
|
|
util/kiwisdrlist.h
|
|
util/lfsr.h
|
|
util/maidenhead.h
|
|
util/message.h
|
|
util/messagequeue.h
|
|
util/mmsi.h
|
|
util/morse.h
|
|
util/movingaverage.h
|
|
util/movingmaximum.h
|
|
util/nasaglobalimagery.h
|
|
util/navtex.h
|
|
util/openaip.h
|
|
util/osndb.h
|
|
util/outairportsdb.h
|
|
util/peakfinder.h
|
|
util/planespotters.h
|
|
util/png.h
|
|
util/prettyprint.h
|
|
util/profiler.h
|
|
util/psk31.h
|
|
util/radiosonde.h
|
|
util/rainviewer.h
|
|
util/rtpsink.h
|
|
util/rtty.h
|
|
util/syncmessenger.h
|
|
util/samplesourceserializer.h
|
|
util/sdrangelserverlist.h
|
|
util/simpleserializer.h
|
|
util/serialutil.h
|
|
util/socket.h
|
|
util/solardynamicsobservatory.h
|
|
util/sondehub.h
|
|
#util/spinlock.h
|
|
util/spyserverlist.h
|
|
util/stix.h
|
|
util/stringlist.h
|
|
util/uid.h
|
|
util/units.h
|
|
util/timeutil.h
|
|
util/visa.h
|
|
util/vlftransmitters.h
|
|
util/waypoints.h
|
|
util/weather.h
|
|
util/whittakereilers.h
|
|
util/iot/device.h
|
|
util/iot/homeassistant.h
|
|
util/iot/tplink.h
|
|
util/iot/visa.h
|
|
|
|
webapi/webapiadapter.h
|
|
webapi/webapiadapterbase.h
|
|
webapi/webapiadapterinterface.h
|
|
webapi/webapirequestmapper.h
|
|
webapi/webapiserver.h
|
|
webapi/webapiutils.h
|
|
|
|
websockets/wsspectrum.h
|
|
|
|
availablechannelorfeature.h
|
|
availablechannelorfeaturehandler.h
|
|
mainparser.h
|
|
maincore.h
|
|
remotetcpsinkstarter.h
|
|
)
|
|
|
|
include_directories(
|
|
${CMAKE_SOURCE_DIR}/exports
|
|
${CMAKE_SOURCE_DIR}/httpserver
|
|
${CMAKE_SOURCE_DIR}/logging
|
|
${CMAKE_SOURCE_DIR}/qrtplib
|
|
${CMAKE_SOURCE_DIR}/swagger/sdrangel/code/qt5/client
|
|
${Boost_INCLUDE_DIRS}
|
|
${OPUS_INCLUDE_DIRS}
|
|
${Qt${QT_DEFAULT_MAJOR_VERSION}Gui_PRIVATE_INCLUDE_DIRS}
|
|
)
|
|
|
|
add_library(sdrbase
|
|
${sdrbase_SOURCES}
|
|
)
|
|
|
|
if(LIMESUITE_EXTERNAL)
|
|
add_dependencies(sdrbase limesuite)
|
|
endif()
|
|
|
|
if(LIBSERIALDV_EXTERNAL)
|
|
add_dependencies(sdrbase serialdv)
|
|
endif()
|
|
|
|
if(DEFINED FFTW3F_DEPENDS)
|
|
add_dependencies(sdrbase "${FFTW3F_DEPENDS}")
|
|
endif()
|
|
|
|
if(DEFINED OPUS_DEPENDS)
|
|
add_dependencies(sdrbase "${OPUS_DEPENDS}")
|
|
endif()
|
|
|
|
if(DEFINED LIBSIGMF_DEPENDS)
|
|
add_dependencies(sdrbase "${LIBSIGMF_DEPENDS}")
|
|
endif()
|
|
|
|
if(Vulkan_FOUND AND (${VKFFT_BACKEND} EQUAL 0))
|
|
target_compile_definitions(sdrbase PUBLIC -DVK_API_VERSION=11)
|
|
target_include_directories(sdrbase PUBLIC ${Vulkan_INCLUDE_DIRS} ${Vulkan_INCLUDE_DIR}/glslang/Include)
|
|
add_compile_definitions(sdrbase VKFFT_BACKEND=0)
|
|
|
|
# This library doesn't appear to be defined by cmake's Vulkan module
|
|
find_library(VULKAN_SPIRV_TOOLS_OPT_LIB SPIRV-Tools-opt HINTS "$ENV{VULKAN_SDK}/lib" REQUIRED)
|
|
if(MSVC)
|
|
set(VULKAN_DEBUG_POSTFIX "d")
|
|
else()
|
|
set(VULKAN_DEBUG_POSTFIX "")
|
|
endif()
|
|
find_library(VULKAN_SPIRV_TOOLS_OPTD_LIB SPIRV-Tools-opt${VULKAN_DEBUG_POSTFIX} HINTS "$ENV{VULKAN_SDK}/lib" REQUIRED)
|
|
|
|
target_link_libraries(sdrbase
|
|
optimized ${VULKAN_SPIRV_TOOLS_OPT_LIB}
|
|
debug ${VULKAN_SPIRV_TOOLS_OPTD_LIB}
|
|
Vulkan::Vulkan
|
|
Vulkan::glslang
|
|
Vulkan::SPIRV-Tools
|
|
)
|
|
endif()
|
|
|
|
if(CUDA_FOUND AND (${VKFFT_BACKEND} EQUAL 1))
|
|
set_property(TARGET sdrbase PROPERTY CUDA_ARCHITECTURES 60 70 75 80 86)
|
|
add_compile_definitions(sdrbase VKFFT_BACKEND=1)
|
|
target_compile_options(sdrbase PUBLIC
|
|
"$<$<COMPILE_LANGUAGE:CUDA>:SHELL:
|
|
-DVKFFT_BACKEND=1
|
|
-gencode arch=compute_60,code=compute_60
|
|
-gencode arch=compute_70,code=compute_70
|
|
-gencode arch=compute_75,code=compute_75
|
|
-gencode arch=compute_80,code=compute_80
|
|
-gencode arch=compute_86,code=compute_86>")
|
|
set_target_properties(sdrbase PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
|
|
set_target_properties(sdrbase PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON)
|
|
find_library(CUDA_NVRTC_LIB libnvrtc nvrtc HINTS "${CUDA_TOOLKIT_ROOT_DIR}/lib64" "${LIBNVRTC_LIBRARY_DIR}" "${CUDA_TOOLKIT_ROOT_DIR}/lib/x64" /usr/lib64 /usr/local/cuda/lib64 REQUIRED)
|
|
find_library(CUDA_LIB cuda HINTS "${CUDA_TOOLKIT_ROOT_DIR}/lib64" "${LIBNVRTC_LIBRARY_DIR}" "${CUDA_TOOLKIT_ROOT_DIR}/lib/x64" /usr/lib64 /usr/local/cuda/lib64 REQUIRED)
|
|
target_link_libraries(sdrbase ${CUDA_LIBRARIES} ${CUDA_LIB} ${CUDA_NVRTC_LIB})
|
|
target_include_directories(sdrbase PUBLIC ${CUDA_INCLUDE_DIRS})
|
|
endif()
|
|
|
|
target_link_libraries(sdrbase
|
|
${OPUS_LIBRARIES}
|
|
${sdrbase_FFTW3F_LIB}
|
|
${sdrbase_SERIALDV_LIB}
|
|
${sdrbase_LIMERFE_LIB}
|
|
${sdrbase_LIBSIGMF_LIB}
|
|
Qt::Core
|
|
Qt::Multimedia
|
|
Qt::WebSockets
|
|
Qt::Positioning
|
|
httpserver
|
|
logging
|
|
qrtplib
|
|
swagger
|
|
)
|
|
if (LIBSIGMF_FOUND)
|
|
if(WIN32)
|
|
target_link_libraries(sdrbase optimized ${LIBSIGMF_LIBRARIES})
|
|
target_link_libraries(sdrbase debug ${LIBSIGMF_LIBRARIES_DEBUG})
|
|
else()
|
|
target_link_libraries(sdrbase ${LIBSIGMF_LIBRARIES})
|
|
endif()
|
|
endif()
|
|
if (Qt6_FOUND)
|
|
target_link_libraries(sdrbase
|
|
Qt::CorePrivate
|
|
)
|
|
endif()
|
|
if(ANDROID AND NOT ENABLE_QT6)
|
|
target_link_libraries(sdrbase Qt::AndroidExtras)
|
|
endif()
|
|
if(ANDROID)
|
|
target_link_libraries(sdrbase log)
|
|
endif()
|
|
|
|
target_compile_definitions(sdrbase PRIVATE
|
|
-DPLUGIN_PREFIX=\"${PLUGIN_PREFIX}\"
|
|
)
|
|
|
|
install(TARGETS sdrbase DESTINATION ${INSTALL_LIB_DIR})
|
|
|
|
if(WIN32 AND Qt6_FOUND)
|
|
# Run deployqt for Core5Compat
|
|
include(DeployQt)
|
|
windeployqt(sdrbase ${SDRANGEL_BINARY_BIN_DIR} "")
|
|
endif()
|
|
|
|
# Install debug symbols
|
|
if (WIN32)
|
|
install(FILES $<TARGET_PROPERTY:sdrbase,RUNTIME_OUTPUT_DIRECTORY>/sdrbasestripped.pdb CONFIGURATIONS Release DESTINATION ${INSTALL_LIB_DIR} RENAME sdrbase.pdb)
|
|
install(FILES $<TARGET_PDB_FILE:sdrbase> CONFIGURATIONS Debug RelWithDebInfo DESTINATION ${INSTALL_LIB_DIR} )
|
|
endif()
|