diff --git a/CMakeLists.txt b/CMakeLists.txt index d53278f..f37bf81 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -624,6 +624,12 @@ IF (APPLE AND BUNDLE_APP) ADD_DEFINITIONS( -DBUNDLE_SOAPY_MODS=1 ) + set(BUNDLED_MODS_ONLY OFF CACHE BOOL "Use bundled mods only") + IF (BUNDLED_MODS_ONLY) + ADD_DEFINITIONS( + -DBUNDLED_MODS_ONLY=1 + ) + ENDIF() ENDIF() ADD_DEFINITIONS( @@ -863,6 +869,13 @@ IF (WIN32 AND BUILD_INSTALLER) ADD_DEFINITIONS( -DBUNDLE_SOAPY_MODS=1 ) + set(BUNDLED_MODS_ONLY OFF CACHE BOOL "Use bundled mods only") + IF (BUNDLED_MODS_ONLY) + ADD_DEFINITIONS( + -DBUNDLED_MODS_ONLY=1 + ) + ENDIF() + file(GLOB SOAPY_BINS ${SOAPY_SDR_ROOT}/bin/*.dll) file(GLOB SOAPY_MODS ${SOAPY_SDR_ROOT}/lib/SoapySDR/modules/*.dll) message(STATUS "SOAPY_BINS: ${SOAPY_BINS}") diff --git a/src/sdr/SDREnumerator.cpp b/src/sdr/SDREnumerator.cpp index 6f1b2b0..ae57e8d 100644 --- a/src/sdr/SDREnumerator.cpp +++ b/src/sdr/SDREnumerator.cpp @@ -106,6 +106,15 @@ std::vector *SDREnumerator::enumerate_devices(std::string remot } } else { #ifdef BUNDLE_SOAPY_MODS + #ifdef BUNDLED_MODS_ONLY + wxFileName exePath = wxFileName(wxStandardPaths::Get().GetExecutablePath()); + std::vector localMods = SoapySDR::listModules(exePath.GetPath().ToStdString() + "/modules/"); + for (std::vector::iterator mods_i = localMods.begin(); mods_i != localMods.end(); mods_i++) { + wxGetApp().sdrEnumThreadNotify(SDREnumerator::SDR_ENUM_MESSAGE, "Initializing bundled SoapySDR module " + (*mods_i) + ".."); + std::cout << "Loading bundled SoapySDR module " << (*mods_i) << ".." << std::endl; + SoapySDR::loadModule(*mods_i); + } + #else bool localModPref = wxGetApp().getUseLocalMod(); if (localModPref) { wxGetApp().sdrEnumThreadNotify(SDREnumerator::SDR_ENUM_MESSAGE, "Loading SoapySDR modules.."); @@ -126,6 +135,7 @@ std::vector *SDREnumerator::enumerate_devices(std::string remot std::cout << "Checking system SoapySDR modules.." << std::flush; SoapySDR::loadModules(); } + #endif #else wxGetApp().sdrEnumThreadNotify(SDREnumerator::SDR_ENUM_MESSAGE, "Loading SoapySDR modules.."); SoapySDR::loadModules();