From d2951627f49389b08d79afa4b475857a87469b02 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 25 Jun 2022 11:56:45 +0200 Subject: [PATCH] Added cmake enablers for all non sampling device plugins. Fixes #1308 --- CMakeLists.txt | 78 ++++++++++++++++++++ plugins/CMakeLists.txt | 20 ++++-- plugins/channelmimo/CMakeLists.txt | 11 ++- plugins/channelrx/CMakeLists.txt | 112 +++++++++++++++++++++-------- plugins/channeltx/CMakeLists.txt | 63 ++++++++++++---- plugins/feature/CMakeLists.txt | 66 ++++++++++++----- 6 files changed, 282 insertions(+), 68 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4d63dd2c8..056270b7e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,6 +29,8 @@ option(HIDE_CONSOLE "Hide console when running GUI on Windows" ON) option(BUNDLE "Enable distribution bundle" OFF) set(ARCH_OPT "native" CACHE STRING "Specify instruction set to use. Will be passed directly as `-march` or `/arch:` argument on supported compilers. \ 'native' option will figure out host machine compatibilities and set flags accordingly (even with MSVC).") + +# Sampling devices enablers option(ENABLE_AIRSPY "Enable AirSpy support" ON) option(ENABLE_AIRSPYHF "Enable AirSpyHF support" ON) option(ENABLE_BLADERF "Enable bladeRF support" ON) @@ -44,6 +46,82 @@ 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) option(ENABLE_USRP "Enable USRP support" ON) + +# Channel Rx enablers +option(ENABLE_CHANNELRX, "Enable channelrx plugins" ON) +option(ENABLE_CHANNELRX_DEMODADSB "Enable channelrx demodadsb plugin" ON) +option(ENABLE_CHANNELRX_DEMODAM "Enable channelrx demodam plugin" ON) +option(ENABLE_CHANNELRX_DEMODDATV "Enable channelrx demoddatv plugin" ON) +option(ENABLE_CHANNELRX_RADIOCLOCK "Enable channelrx radioclock plugin" ON) +option(ENABLE_CHANNELRX_RADIOASTRONOMY "Enable channelrx radioastronomy plugin" ON) +option(ENABLE_CHANNELRX_DEMODRADIOSONDE "Enable channelrx demodradiosonde plugin" ON) +option(ENABLE_CHANNELRX_FREQTRACKER "Enable channelrx freqtracker plugin" ON) +option(ENABLE_CHANNELRX_DEMODATV "Enable channelrx demodatv plugin" ON) +option(ENABLE_CHANNELRX_DEMODPAGER "Enable channelrx demodpager plugin" ON) +option(ENABLE_CHANNELRX_DEMODDAB "Enable channelrx demoddab plugin" ON) +option(ENABLE_CHANNELRX_UDPSINK "Enable channelrx udpsink plugin" ON) +option(ENABLE_CHANNELRX_DEMODAIS "Enable channelrx demodais plugin" ON) +option(ENABLE_CHANNELRX_DEMODNFM "Enable channelrx demodnfm plugin" ON) +option(ENABLE_CHANNELRX_FILESINK "Enable channelrx filesink plugin" ON) +option(ENABLE_CHANNELRX_DEMODFREEDV "Enable channelrx demodfreedv plugin" ON) +option(ENABLE_CHANNELRX_DEMODCHIRPCHAT "Enable channelrx demodchirpchat plugin" ON) +option(ENABLE_CHANNELRX_REMOTESINK "Enable channelrx remotesink plugin" ON) +option(ENABLE_CHANNELRX_DEMODSSB "Enable channelrx demodssb plugin" ON) +option(ENABLE_CHANNELRX_CHANALYZER "Enable channelrx chanalyzer plugin" ON) +option(ENABLE_CHANNELRX_SIGMFFILESINK "Enable channelrx sigmffilesink plugin" ON) +option(ENABLE_CHANNELRX_DEMODBFM "Enable channelrx demodbfm plugin" ON) +option(ENABLE_CHANNELRX_DEMODWFM "Enable channelrx demodwfm plugin" ON) +option(ENABLE_CHANNELRX_NOISEFIGURE "Enable channelrx noisefigure plugin" ON) +option(ENABLE_CHANNELRX_DEMODVOR "Enable channelrx demodvor plugin" ON) +option(ENABLE_CHANNELRX_LOCALSINK "Enable channelrx localsink plugin" ON) +option(ENABLE_CHANNELRX_DEMODPACKET "Enable channelrx demodpacket plugin" ON) +option(ENABLE_CHANNELRX_DEMODAPT "Enable channelrx demodapt plugin" ON) +option(ENABLE_CHANNELRX_DEMODDSD "Enable channelrx demoddsd plugin" ON) + +# Channel Tx enablers +option(ENABLE_CHANNELTX, "Enable channeltx plugins" ON) +option(ENABLE_CHANNELTX_MODNFM "Enable channeltx modnfm plugin" ON) +option(ENABLE_CHANNELTX_MODAIS "Enable channeltx modais plugin" ON) +option(ENABLE_CHANNELTX_LOCALSOURCE "Enable channeltx localsource plugin" ON) +option(ENABLE_CHANNELTX_MODDATV "Enable channeltx moddatv plugin" ON) +option(ENABLE_CHANNELTX_MODAM "Enable channeltx modam plugin" ON) +option(ENABLE_CHANNELTX_MODFREEDV "Enable channeltx modfreedv plugin" ON) +option(ENABLE_CHANNELTX_MODPACKET "Enable channeltx modpacket plugin" ON) +option(ENABLE_CHANNELTX_MODSSB "Enable channeltx modssb plugin" ON) +option(ENABLE_CHANNELTX_UDPSOURCE "Enable channeltx udpsource plugin" ON) +option(ENABLE_CHANNELTX_MODCHIRPCHAT "Enable channeltx modchirpchat plugin" ON) +option(ENABLE_CHANNELTX_MODWFM "Enable channeltx modwfm plugin" ON) +option(ENABLE_CHANNELTX_MODATV "Enable channeltx modatv plugin" ON) +option(ENABLE_CHANNELTX_MOD802.15.4 "Enable channeltx mod802.15.4 plugin" ON) +option(ENABLE_CHANNELTX_REMOTESOURCE "Enable channeltx remotesource plugin" ON) +option(ENABLE_CHANNELTX_FILESOURCE "Enable channeltx filesource plugin" ON) + +# Channel MIMO enablers +option(ENABLE_CHANNELMIMO, "Enable channelmimo plugins" ON) +option(ENABLE_CHANNELMIMO_INTERFEROMETER "Enable channelmimo interferometer plugin" ON) +option(ENABLE_CHANNELMIMO_DOA2 "Enable channelmimo doa2 plugin" ON) +option(ENABLE_CHANNELMIMO_BEAMSTEERINGCWMOD "Enable channelmimo beamsteeringcwmod plugin" ON) + +# Feature enablers +option(ENABLE_FEATURE, "Enable feature plugins" ON) +option(ENABLE_FEATURE_LIMERFE "Enable feature limerfe plugin" ON) +option(ENABLE_FEATURE_VORLOCALIZER "Enable feature vorlocalizer plugin" ON) +option(ENABLE_FEATURE_JOGDIALCONTROLLER "Enable feature jogdialcontroller plugin" ON) +option(ENABLE_FEATURE_MAP "Enable feature map plugin" ON) +option(ENABLE_FEATURE_SIMPLEPTT "Enable feature simpleptt plugin" ON) +option(ENABLE_FEATURE_RADIOSONDE "Enable feature radiosonde plugin" ON) +option(ENABLE_FEATURE_ANTENNATOOLS "Enable feature antennatools plugin" ON) +option(ENABLE_FEATURE_SATELLITETRACKER "Enable feature satellitetracker plugin" ON) +option(ENABLE_FEATURE_APRS "Enable feature aprs plugin" ON) +option(ENABLE_FEATURE_DEMODANALYZER "Enable feature demodanalyzer plugin" ON) +option(ENABLE_FEATURE_AMBE "Enable feature ambe plugin" ON) +option(ENABLE_FEATURE_AIS "Enable feature ais plugin" ON) +option(ENABLE_FEATURE_AFC "Enable feature afc plugin" ON) +option(ENABLE_FEATURE_STARTRACKER "Enable feature startracker plugin" ON) +option(ENABLE_FEATURE_RIGCTLSERVER "Enable feature rigctlserver plugin" ON) +option(ENABLE_FEATURE_PERTESTER "Enable feature pertester plugin" ON) +option(ENABLE_FEATURE_GS232CONTROLLER "Enable feature gs232controller plugin" ON) + # on windows always build external libraries if(WIN32) set(ENABLE_EXTERNAL_LIBRARIES ON CACHE BOOL "Build external libraries" FORCE) diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 2ec4ff51a..d9a5b5ec5 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -38,10 +38,22 @@ else() set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO "${BUILD_PLUGINSSRV_DIR}") endif() -add_subdirectory(channelmimo) -add_subdirectory(channelrx) -add_subdirectory(channeltx) -add_subdirectory(feature) +if (ENABLE_CHANNELMIMO) + add_subdirectory(channelmimo) +endif() + +if (ENABLE_CHANNELRX) + add_subdirectory(channelrx) +endif() + +if (ENABLE_CHANNELTX) + add_subdirectory(channeltx) +endif() + +if (ENABLE_FEATURE) + add_subdirectory(feature) +endif() + add_subdirectory(samplemimo) add_subdirectory(samplesource) add_subdirectory(samplesink) diff --git a/plugins/channelmimo/CMakeLists.txt b/plugins/channelmimo/CMakeLists.txt index 0465d259a..f99e9a36f 100644 --- a/plugins/channelmimo/CMakeLists.txt +++ b/plugins/channelmimo/CMakeLists.txt @@ -1,8 +1,13 @@ project(channelmimo) -add_subdirectory(beamsteeringcwmod) -add_subdirectory(doa2) +if (ENABLE_CHANNELMIMO_BEAMSTEERINGCWMOD) + add_subdirectory(beamsteeringcwmod) +endif() -if (NOT SERVER_MODE) +if (ENABLE_CHANNELMIMO_DOA2) + add_subdirectory(doa2) +endif() + +if (NOT SERVER_MODE AND ENABLE_CHANNELMIMO_INTERFEROMETER) add_subdirectory(interferometer) endif() diff --git a/plugins/channelrx/CMakeLists.txt b/plugins/channelrx/CMakeLists.txt index 460fc9179..4ed6a0cac 100644 --- a/plugins/channelrx/CMakeLists.txt +++ b/plugins/channelrx/CMakeLists.txt @@ -1,66 +1,122 @@ project(demod) -if (Qt5Quick_FOUND AND Qt5QuickWidgets_FOUND AND Qt5Positioning_FOUND) +if (ENABLE_CHANNELRX_DEMODADSB AND Qt5Quick_FOUND AND Qt5QuickWidgets_FOUND AND Qt5Positioning_FOUND) add_subdirectory(demodadsb) # add_subdirectory(demodvormc) endif() -add_subdirectory(demodam) -add_subdirectory(demodbfm) -add_subdirectory(demodnfm) -add_subdirectory(demodssb) -add_subdirectory(udpsink) -add_subdirectory(demodwfm) -add_subdirectory(localsink) -add_subdirectory(filesink) -add_subdirectory(freqtracker) -add_subdirectory(demodchirpchat) -add_subdirectory(demodvor) -add_subdirectory(demodpacket) -add_subdirectory(demodais) -add_subdirectory(demodpager) -add_subdirectory(radioclock) -add_subdirectory(radioastronomy) -add_subdirectory(demodradiosonde) +if (ENABLE_CHANNELRX_DEMODAM) + add_subdirectory(demodam) +endif() -if(DAB_FOUND AND ZLIB_FOUND AND FAAD_FOUND) +if (ENABLE_CHANNELRX_DEMODBFM) + add_subdirectory(demodbfm) +endif() + +if (ENABLE_CHANNELRX_DEMODNFM) + add_subdirectory(demodnfm) +endif() + +if (ENABLE_CHANNELRX_DEMODSSB) + add_subdirectory(demodssb) +endif() + +if (ENABLE_CHANNELRX_UDPSINK) + add_subdirectory(udpsink) +endif() + +if (ENABLE_CHANNELRX_DEMODWFM) + add_subdirectory(demodwfm) +endif() + +if (ENABLE_CHANNELRX_LOCALSINK) + add_subdirectory(localsink) +endif() + +if (ENABLE_CHANNELRX_FILESINK) + add_subdirectory(filesink) +endif() + +if (ENABLE_CHANNELRX_FREQTRACKER) + add_subdirectory(freqtracker) +endif() + +if (ENABLE_CHANNELRX_DEMODCHIRPCHAT) + add_subdirectory(demodchirpchat) +endif() + +if (ENABLE_CHANNELRX_DEMODVOR) + add_subdirectory(demodvor) +endif() + +if (ENABLE_CHANNELRX_DEMODPACKET) + add_subdirectory(demodpacket) +endif() + +if (ENABLE_CHANNELRX_DEMODAIS) + add_subdirectory(demodais) +endif() + +if (ENABLE_CHANNELRX_DEMODPAGER) + add_subdirectory(demodpager) +endif() + +if (ENABLE_CHANNELRX_RADIOCLOCK) + add_subdirectory(radioclock) +endif() + +if (ENABLE_CHANNELRX_RADIOASTRONOMY) + add_subdirectory(radioastronomy) +endif() + +if (ENABLE_CHANNELRX_DEMODRADIOSONDE) + add_subdirectory(demodradiosonde) +endif() + +if(ENABLE_CHANNELRX_DEMODDAB AND DAB_FOUND AND ZLIB_FOUND AND FAAD_FOUND) add_subdirectory(demoddab) endif() -if(APT_FOUND AND SGP4_FOUND) +if(ENABLE_CHANNELRX_DEMODAPT AND APT_FOUND AND SGP4_FOUND) add_subdirectory(demodapt) endif() -if(LIBDSDCC_FOUND AND LIBMBE_FOUND) +if(ENABLE_CHANNELRX_DEMODDSD AND LIBDSDCC_FOUND AND LIBMBE_FOUND) add_subdirectory(demoddsd) endif(LIBDSDCC_FOUND AND LIBMBE_FOUND) -if (CM256CC_FOUND AND (HAS_SSE3 OR HAS_NEON)) +if (ENABLE_CHANNELRX_REMOTESINK AND CM256CC_FOUND AND (HAS_SSE3 OR HAS_NEON)) add_subdirectory(remotesink) endif() -if (CODEC2_FOUND) +if (ENABLE_CHANNELRX_DEMODFREEDV AND CODEC2_FOUND) add_subdirectory(demodfreedv) endif(CODEC2_FOUND) -if (LIBSIGMF_FOUND AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") +if (ENABLE_CHANNELRX_SIGMFFILESINK AND LIBSIGMF_FOUND AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") add_subdirectory(sigmffilesink) endif() -if (Boost_FOUND AND Boost_VERSION_STRING VERSION_GREATER_EQUAL "1.70.0") +if (ENABLE_CHANNELRX_NOISEFIGURE AND Boost_FOUND AND Boost_VERSION_STRING VERSION_GREATER_EQUAL "1.70.0") add_subdirectory(noisefigure) endif() if(NOT SERVER_MODE) - add_subdirectory(chanalyzer) - add_subdirectory(demodatv) + if (ENABLE_CHANNELRX_CHANALYZER) + add_subdirectory(chanalyzer) + endif() + + if (ENABLE_CHANNELRX_DEMODATV) + add_subdirectory(demodatv) + endif() # need ffmpeg 3.1 that correstonds to # libavutil 55.27.100 # libavcodec 57.48.101 # libavformat 57.40.101 find_package(FFmpeg COMPONENTS AVCODEC AVFORMAT AVUTIL SWSCALE) - if (FFMPEG_FOUND) + + if (ENABLE_CHANNELRX_DEMODDATV AND FFMPEG_FOUND) if(WIN32) add_subdirectory(demoddatv) else() diff --git a/plugins/channeltx/CMakeLists.txt b/plugins/channeltx/CMakeLists.txt index 27217a7af..f13dfeb8d 100644 --- a/plugins/channeltx/CMakeLists.txt +++ b/plugins/channeltx/CMakeLists.txt @@ -1,31 +1,64 @@ project(mod) -add_subdirectory(modais) -add_subdirectory(modam) -add_subdirectory(modchirpchat) -add_subdirectory(modnfm) -add_subdirectory(modssb) -add_subdirectory(modwfm) -add_subdirectory(modpacket) -add_subdirectory(mod802.15.4) -add_subdirectory(udpsource) -add_subdirectory(localsource) -add_subdirectory(filesource) +if (ENABLE_CHANNELTX_MODAIS) + add_subdirectory(modais) +endif() -if (CM256CC_FOUND AND (HAS_SSE3 OR HAS_NEON)) +if (ENABLE_CHANNELTX_MODAM) + add_subdirectory(modam) +endif() + +if (ENABLE_CHANNELTX_MODCHIRPCHAT) + add_subdirectory(modchirpchat) +endif() + +if (ENABLE_CHANNELTX_MODNFM) + add_subdirectory(modnfm) +endif() + +if (ENABLE_CHANNELTX_MODSSB) + add_subdirectory(modssb) +endif() + +if (ENABLE_CHANNELTX_MODWFM) + add_subdirectory(modwfm) +endif() + +if (ENABLE_CHANNELTX_MODPACKET) + add_subdirectory(modpacket) +endif() + +if (ENABLE_CHANNELTX_MOD802.15.4) + add_subdirectory(mod802.15.4) +endif() + +if (ENABLE_CHANNELTX_UDPSOURCE) + add_subdirectory(udpsource) +endif() + +if (ENABLE_CHANNELTX_LOCALSOURCE) + add_subdirectory(localsource) +endif() + +if (ENABLE_CHANNELTX_FILESOURCE) + add_subdirectory(filesource) +endif() + +if (ENABLE_CHANNELTX_REMOTESOURCE AND CM256CC_FOUND AND (HAS_SSE3 OR HAS_NEON)) add_subdirectory(remotesource) endif() -if (OpenCV_FOUND) +if (ENABLE_CHANNELTX_MODATV AND OpenCV_FOUND) add_subdirectory(modatv) endif() # Copied from channelrx/CMakeLists.txt - why not in top-level? find_package(FFmpeg COMPONENTS AVCODEC AVFORMAT AVUTIL SWSCALE) -if (FFMPEG_FOUND) + +if (ENABLE_CHANNELTX_MODDATV AND FFMPEG_FOUND) add_subdirectory(moddatv) endif() -if (CODEC2_FOUND) +if (ENABLE_CHANNELTX_MODFREEDV AND CODEC2_FOUND) add_subdirectory(modfreedv) endif(CODEC2_FOUND) diff --git a/plugins/feature/CMakeLists.txt b/plugins/feature/CMakeLists.txt index 4a79484d5..19835dc5c 100644 --- a/plugins/feature/CMakeLists.txt +++ b/plugins/feature/CMakeLists.txt @@ -1,45 +1,75 @@ project(feature) -if (Qt5SerialPort_FOUND) +if (ENABLE_FEATURE_GS232CONTROLLER AND Qt5SerialPort_FOUND) add_subdirectory(gs232controller) endif() -if (Qt5Quick_FOUND AND Qt5QuickWidgets_FOUND AND Qt5Positioning_FOUND AND Qt5Location_FOUND AND Qt5WebEngine_FOUND) +if (ENABLE_FEATURE_MAP AND Qt5Quick_FOUND AND Qt5QuickWidgets_FOUND AND Qt5Positioning_FOUND AND Qt5Location_FOUND AND Qt5WebEngine_FOUND) add_subdirectory(map) endif() -if (Qt5Quick_FOUND AND Qt5QuickWidgets_FOUND AND Qt5Positioning_FOUND) + +if (ENABLE_FEATURE_VORLOCALIZER AND Qt5Quick_FOUND AND Qt5QuickWidgets_FOUND AND Qt5Positioning_FOUND) add_subdirectory(vorlocalizer) endif() -add_subdirectory(afc) -add_subdirectory(ais) -add_subdirectory(antennatools) -add_subdirectory(aprs) -add_subdirectory(demodanalyzer) -add_subdirectory(pertester) -add_subdirectory(rigctlserver) -add_subdirectory(simpleptt) +if (ENABLE_FEATURE_AFC) + add_subdirectory(afc) +endif() + +if (ENABLE_FEATURE_AIS) + add_subdirectory(ais) +endif() + +if (ENABLE_FEATURE_ANTENNATOOLS) + add_subdirectory(antennatools) +endif() + +if (ENABLE_FEATURE_APRS) + add_subdirectory(aprs) +endif() + +if (ENABLE_FEATURE_DEMODANALYZER) + add_subdirectory(demodanalyzer) +endif() + +if (ENABLE_FEATURE_PERTESTER) + add_subdirectory(pertester) +endif() + +if (ENABLE_FEATURE_RIGCTLSERVER) + add_subdirectory(rigctlserver) +endif() + +if (ENABLE_FEATURE_SIMPLEPTT) + add_subdirectory(simpleptt) +endif() if (NOT SERVER_MODE) - if (SGP4_FOUND AND Qt5Positioning_FOUND AND Qt5Charts_FOUND AND Qt5TextToSpeech_FOUND) + if (ENABLE_FEATURE_SATELLITETRACKER AND SGP4_FOUND AND Qt5Positioning_FOUND AND Qt5Charts_FOUND AND Qt5TextToSpeech_FOUND) add_subdirectory(satellitetracker) endif() - add_subdirectory(jogdialcontroller) + if (ENABLE_FEATURE_JOGDIALCONTROLLER) + add_subdirectory(jogdialcontroller) + endif() else() - if (SGP4_FOUND AND Qt5Positioning_FOUND AND Qt5Charts_FOUND) + if (ENABLE_FEATURE_SATELLITETRACKER AND SGP4_FOUND AND Qt5Positioning_FOUND AND Qt5Charts_FOUND) add_subdirectory(satellitetracker) endif() endif() if (Qt5Charts_FOUND) - add_subdirectory(radiosonde) - add_subdirectory(startracker) + if (ENABLE_FEATURE_RADIOSONDE) + add_subdirectory(radiosonde) + endif() + if (ENABLE_FEATURE_STARTRACKER) + add_subdirectory(startracker) + endif() endif() -if (ENABLE_LIMESUITE AND LIMESUITE_FOUND) +if (ENABLE_FEATURE_LIMERFE AND ENABLE_LIMESUITE AND LIMESUITE_FOUND) add_subdirectory(limerfe) endif() -if (LIBSERIALDV_FOUND) +if (ENABLE_FEATURE_AMBE AND LIBSERIALDV_FOUND) add_subdirectory(ambe) endif()