From 8f18c316de9e8b411feab23a23a48045a72e9808 Mon Sep 17 00:00:00 2001 From: "Charles J. Cliffe" Date: Wed, 11 Nov 2015 00:16:26 -0500 Subject: [PATCH 1/7] Add "Local Net" section for discovered LAN devices --- src/forms/SDRDevices/SDRDevices.cpp | 7 +++++- src/sdr/SDRDeviceInfo.cpp | 10 ++++++++- src/sdr/SDRDeviceInfo.h | 5 ++++- src/sdr/SDREnumerator.cpp | 34 ++++++++--------------------- 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/forms/SDRDevices/SDRDevices.cpp b/src/forms/SDRDevices/SDRDevices.cpp index 3839c99..331c7e7 100644 --- a/src/forms/SDRDevices/SDRDevices.cpp +++ b/src/forms/SDRDevices/SDRDevices.cpp @@ -229,12 +229,17 @@ void SDRDevicesDialog::OnDeviceTimer( wxTimerEvent& event ) { wxTreeItemId devRoot = devTree->AddRoot("Devices"); wxTreeItemId localBranch = devTree->AppendItem(devRoot, "Local"); + wxTreeItemId dsBranch = devTree->AppendItem(devRoot, "Local Net"); wxTreeItemId remoteBranch = devTree->AppendItem(devRoot, "Remote"); devs[""] = SDREnumerator::enumerate_devices("",true); if (devs[""] != NULL) { for (devs_i = devs[""]->begin(); devs_i != devs[""]->end(); devs_i++) { - devItems[devTree->AppendItem(localBranch, (*devs_i)->getName())] = (*devs_i); + if ((*devs_i)->isRemote()) { + devItems[devTree->AppendItem(dsBranch, (*devs_i)->getName())] = (*devs_i); + } else { + devItems[devTree->AppendItem(localBranch, (*devs_i)->getName())] = (*devs_i); + } } } diff --git a/src/sdr/SDRDeviceInfo.cpp b/src/sdr/SDRDeviceInfo.cpp index 7896cfa..7805659 100644 --- a/src/sdr/SDRDeviceInfo.cpp +++ b/src/sdr/SDRDeviceInfo.cpp @@ -160,7 +160,7 @@ std::vector SDRDeviceChannel::getStreamArgNames() { } -SDRDeviceInfo::SDRDeviceInfo() : name(""), serial(""), available(false) { +SDRDeviceInfo::SDRDeviceInfo() : name(""), serial(""), available(false), remote(false) { } @@ -254,6 +254,14 @@ void SDRDeviceInfo::setTimestamps(bool timestamps) { this->timestamps = timestamps; } +bool SDRDeviceInfo::isRemote() const { + return remote; +} + +void SDRDeviceInfo::setRemote(bool remote) { + this->remote = remote; +} + void SDRDeviceInfo::setDeviceArgs(SoapySDR::Kwargs deviceArgs) { this->deviceArgs = deviceArgs; } diff --git a/src/sdr/SDRDeviceInfo.h b/src/sdr/SDRDeviceInfo.h index ccec06c..842d18d 100644 --- a/src/sdr/SDRDeviceInfo.h +++ b/src/sdr/SDRDeviceInfo.h @@ -136,6 +136,9 @@ public: bool hasTimestamps() const; void setTimestamps(bool timestamps); + + bool isRemote() const; + void setRemote(bool remote); void addChannel(SDRDeviceChannel *chan); std::vector &getChannels(); @@ -157,7 +160,7 @@ private: int index; std::string name, serial, product, manufacturer, tuner; std::string driver, hardware; - bool timestamps, available; + bool timestamps, available, remote; SoapySDR::Kwargs deviceArgs, streamArgs; SoapySDR::ArgInfoList settingInfo; diff --git a/src/sdr/SDREnumerator.cpp b/src/sdr/SDREnumerator.cpp index 2202e3d..236fea3 100644 --- a/src/sdr/SDREnumerator.cpp +++ b/src/sdr/SDREnumerator.cpp @@ -115,7 +115,6 @@ std::vector *SDREnumerator::enumerate_devices(std::string remot wxGetApp().sdrEnumThreadNotify(SDREnumerator::SDR_ENUM_MESSAGE, std::string("Opening remote server ") + remoteAddr + ".."); } for (size_t i = 0; i < results.size(); i++) { -// std::cout << "Found device " << i << std::endl; SDRDeviceInfo *dev = new SDRDeviceInfo(); SoapySDR::Kwargs deviceArgs = results[i]; @@ -128,6 +127,14 @@ std::vector *SDREnumerator::enumerate_devices(std::string remot dev->setName(it->second); } } + + if (deviceArgs.count("remote")) { + isRemote = true; + } else { + isRemote = false; + } + + dev->setRemote(isRemote); dev->setDeviceArgs(deviceArgs); @@ -141,7 +148,7 @@ std::vector *SDREnumerator::enumerate_devices(std::string remot dev->setHardware(it->second); } } - + if (isRemote) { wxGetApp().sdrEnumThreadNotify(SDREnumerator::SDR_ENUM_MESSAGE, "Querying remote " + remoteAddr + " device #" + std::to_string(i) + ": " + dev-> getName()); } else { @@ -191,25 +198,6 @@ std::vector *SDREnumerator::enumerate_devices(std::string remot dev->addChannel(chan); } - - SoapySDR::Kwargs streamArgs; - - if (isRemote) { -// if (deviceArgs.count("rtl") != 0) { -// streamArgs["remote:mtu"] = "8192"; -// streamArgs["remote:window"] = "16384000"; -// } - double fullScale = 0; - std::string nativeFormat = device->getNativeStreamFormat(SOAPY_SDR_RX, dev->getRxChannel()->getChannel(), fullScale); - - if (nativeFormat.length()) { - streamArgs["remote:format"] = nativeFormat; - } - } - - dev->setStreamArgs(streamArgs); - - dev->setSettingsInfo(device->getSettingInfo()); SoapySDR::Device::unmake(device); @@ -237,10 +225,6 @@ void SDREnumerator::run() { std::cout << "SDR enumerator starting." << std::endl; terminated.store(false); - -// if (!remotes.size()) { -// remotes.push_back("raspberrypi.local"); -// } wxGetApp().sdrEnumThreadNotify(SDREnumerator::SDR_ENUM_MESSAGE, "Scanning local devices, please wait.."); SDREnumerator::enumerate_devices(""); From df4270a760f7ff3f725d029f9e94ae328765aab5 Mon Sep 17 00:00:00 2001 From: "Charles J. Cliffe" Date: Thu, 12 Nov 2015 18:38:38 -0500 Subject: [PATCH 2/7] Allow user-specified SoapySDR module path --- src/AppFrame.cpp | 2 ++ src/CubicSDR.cpp | 22 ++++++++++++++- src/CubicSDR.h | 7 +++++ src/sdr/SDREnumerator.cpp | 57 ++++++++++++++++++++++++--------------- 4 files changed, 65 insertions(+), 23 deletions(-) diff --git a/src/AppFrame.cpp b/src/AppFrame.cpp index 5e936a4..7296799 100644 --- a/src/AppFrame.cpp +++ b/src/AppFrame.cpp @@ -768,6 +768,8 @@ void AppFrame::OnMenu(wxCommandEvent& event) { } void AppFrame::OnClose(wxCloseEvent& event) { + wxGetApp().closeDeviceSelector(); + wxGetApp().getDemodSpectrumProcessor()->removeOutput(demodSpectrumCanvas->getVisualDataQueue()); wxGetApp().getDemodSpectrumProcessor()->removeOutput(demodWaterfallCanvas->getVisualDataQueue()); wxGetApp().getSpectrumProcessor()->removeOutput(spectrumCanvas->getVisualDataQueue()); diff --git a/src/CubicSDR.cpp b/src/CubicSDR.cpp index 28509b3..186f9a8 100644 --- a/src/CubicSDR.cpp +++ b/src/CubicSDR.cpp @@ -279,10 +279,26 @@ bool CubicSDR::OnCmdLineParsed(wxCmdLineParser& parser) { #else useLocalMod.store(true); #endif + + wxString *modPath = new wxString; + + if (parser.Found("m",modPath)) { + if (modPath) { + modulePath = modPath->ToStdString(); + } else { + modulePath = ""; + } + } return true; } +void CubicSDR::closeDeviceSelector() { + if (deviceSelectorOpen) { + deviceSelectorDialog->Close(); + } +} + void CubicSDR::deviceSelector() { if (deviceSelectorOpen) { deviceSelectorDialog->Raise(); @@ -623,4 +639,8 @@ void CubicSDR::setDeviceArgs(SoapySDR::Kwargs settingArgs_in) { bool CubicSDR::getUseLocalMod() { return useLocalMod.load(); -} \ No newline at end of file +} + +std::string CubicSDR::getModulePath() { + return modulePath; +} diff --git a/src/CubicSDR.h b/src/CubicSDR.h index faff1c3..9cba67a 100644 --- a/src/CubicSDR.h +++ b/src/CubicSDR.h @@ -102,6 +102,8 @@ public: void setDeviceSelectorClosed(); bool isDeviceSelectorOpen(); + void closeDeviceSelector(); + void setAGCMode(bool mode); bool getAGCMode(); @@ -113,6 +115,8 @@ public: void setDeviceArgs(SoapySDR::Kwargs settingArgs_in); bool getUseLocalMod(); + std::string getModulePath(); + private: AppFrame *appframe; AppConfig config; @@ -153,6 +157,7 @@ private: std::atomic_bool sampleRateInitialized; std::atomic_bool useLocalMod; std::string notifyMessage; + std::string modulePath; std::mutex notify_busy; }; @@ -161,6 +166,7 @@ static const wxCmdLineEntryDesc commandLineInfo [] = { { wxCMD_LINE_SWITCH, "h", "help", "Command line parameter help", wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP }, { wxCMD_LINE_OPTION, "c", "config", "Specify a named configuration to use, i.e. '-c ham'" }, + { wxCMD_LINE_OPTION, "m", "modpath", "Load modules from suppplied path, i.e. '-m ~/SoapyMods/'" }, { wxCMD_LINE_SWITCH, "b", "bundled", "Use bundled SoapySDR modules first instead of local." }, { wxCMD_LINE_NONE } }; @@ -169,6 +175,7 @@ static const wxCmdLineEntryDesc commandLineInfo [] = { { wxCMD_LINE_SWITCH, "h", "help", "Command line parameter help", wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP }, { wxCMD_LINE_OPTION, "c", "config", "Specify a named configuration to use, i.e. '-c ham'" }, + { wxCMD_LINE_OPTION, "m", "modpath", "Load modules from suppplied path, i.e. '-m ~/SoapyMods/'" }, { wxCMD_LINE_NONE } }; #endif diff --git a/src/sdr/SDREnumerator.cpp b/src/sdr/SDREnumerator.cpp index 236fea3..991555a 100644 --- a/src/sdr/SDREnumerator.cpp +++ b/src/sdr/SDREnumerator.cpp @@ -38,32 +38,45 @@ std::vector *SDREnumerator::enumerate_devices(std::string remot std::cout << "\tInstall root: " << SoapySDR::getRootPath() << std::endl; std::cout << "\tLoading modules... " << std::endl; - #ifdef BUNDLE_SOAPY_MODS - bool localModPref = wxGetApp().getUseLocalMod(); - if (localModPref) { - wxGetApp().sdrEnumThreadNotify(SDREnumerator::SDR_ENUM_MESSAGE, "Loading SoapySDR modules.."); - std::cout << "Checking local system SoapySDR modules.." << std::flush; - SoapySDR::loadModules(); - } + + std::string userModPath = wxGetApp().getModulePath(); + + if (userModPath != "") { + wxGetApp().sdrEnumThreadNotify(SDREnumerator::SDR_ENUM_MESSAGE, "Loading SoapySDR modules from " + userModPath + ".."); + std::vector localMods = SoapySDR::listModules(userModPath); + for (std::vector::iterator mods_i = localMods.begin(); mods_i != localMods.end(); mods_i++) { + wxGetApp().sdrEnumThreadNotify(SDREnumerator::SDR_ENUM_MESSAGE, "Initializing user specified SoapySDR module " + (*mods_i) + ".."); + std::cout << "Initializing user specified SoapySDR module " << (*mods_i) << ".." << std::endl; + SoapySDR::loadModule(*mods_i); + } + } else { + #ifdef BUNDLE_SOAPY_MODS + bool localModPref = wxGetApp().getUseLocalMod(); + if (localModPref) { + wxGetApp().sdrEnumThreadNotify(SDREnumerator::SDR_ENUM_MESSAGE, "Loading SoapySDR modules.."); + std::cout << "Checking local system SoapySDR modules.." << std::flush; + SoapySDR::loadModules(); + } - 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); - } - - if (!localModPref) { + 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); + } + + if (!localModPref) { + wxGetApp().sdrEnumThreadNotify(SDREnumerator::SDR_ENUM_MESSAGE, "Loading SoapySDR modules.."); + std::cout << "Checking system SoapySDR modules.." << std::flush; + SoapySDR::loadModules(); + } + #else wxGetApp().sdrEnumThreadNotify(SDREnumerator::SDR_ENUM_MESSAGE, "Loading SoapySDR modules.."); - std::cout << "Checking system SoapySDR modules.." << std::flush; SoapySDR::loadModules(); - } - #else - wxGetApp().sdrEnumThreadNotify(SDREnumerator::SDR_ENUM_MESSAGE, "Loading SoapySDR modules.."); - SoapySDR::loadModules(); - #endif + #endif + } // modules = SoapySDR::listModules(); // for (size_t i = 0; i < modules.size(); i++) { // std::cout << "\tModule found: " << modules[i] << std::endl; From d530edec71422362c1856fb8e12ee142704f0a61 Mon Sep 17 00:00:00 2001 From: "Charles J. Cliffe" Date: Thu, 12 Nov 2015 19:03:31 -0500 Subject: [PATCH 3/7] CMakeLists parameter quotes --- CMakeLists.txt | 56 +++++++++++++++++++++++++------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e5bf65e..e1047b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,16 +24,16 @@ macro(configure_files srcDir destDir globStr) message(STATUS "Copying ${srcDir}/${globStr} to directory ${destDir}") make_directory(${destDir}) - file(GLOB templateFiles RELATIVE ${srcDir} ${srcDir}/${globStr}) - foreach(templateFile ${templateFiles}) - set(srcTemplatePath ${srcDir}/${templateFile}) + file(GLOB templateFiles RELATIVE "${srcDir}" "${srcDir}/${globStr}") + foreach(templateFile "${templateFiles}") + set(srcTemplatePath "${srcDir}/${templateFile}") message(STATUS "Configuring file ${templateFile}") - if(NOT IS_DIRECTORY ${srcTemplatePath}) + if(NOT IS_DIRECTORY "${srcTemplatePath}") configure_file( - ${srcTemplatePath} - ${destDir}/${templateFile} + "${srcTemplatePath}" + "${destDir}/${templateFile}" COPYONLY) - endif(NOT IS_DIRECTORY ${srcTemplatePath}) + endif(NOT IS_DIRECTORY "${srcTemplatePath}") endforeach(templateFile) endmacro(configure_files) @@ -41,16 +41,16 @@ macro(configure_files_recurse srcDir destDir) message(STATUS "Configuring directory ${destDir}") make_directory(${destDir}) - file(GLOB_RECURSE templateFiles RELATIVE ${srcDir} ${srcDir}/*) - foreach(templateFile ${templateFiles}) - set(srcTemplatePath ${srcDir}/${templateFile}) + file(GLOB_RECURSE templateFiles RELATIVE "${srcDir}" "${srcDir}/*") + foreach(templateFile "${templateFiles}") + set(srcTemplatePath "${srcDir}/${templateFile}") message(STATUS "Configuring file ${templateFile}") - if(NOT IS_DIRECTORY ${srcTemplatePath}) + if(NOT IS_DIRECTORY "${srcTemplatePath}") configure_file( - ${srcTemplatePath} - ${destDir}/${templateFile} + "${srcTemplatePath}" + "${destDir}/${templateFile}" COPYONLY) - endif(NOT IS_DIRECTORY ${srcTemplatePath}) + endif(NOT IS_DIRECTORY "${srcTemplatePath}") endforeach(templateFile) endmacro(configure_files_recurse) @@ -67,9 +67,9 @@ else( CMAKE_SIZEOF_VOID_P EQUAL 8 ) endif( CMAKE_SIZEOF_VOID_P EQUAL 8 ) -SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${EX_PLATFORM_NAME}) -SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${PROJECT_BINARY_DIR}/${EX_PLATFORM_NAME}) -SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PROJECT_BINARY_DIR}/${EX_PLATFORM_NAME}) +SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${EX_PLATFORM_NAME}") +SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${PROJECT_BINARY_DIR}/${EX_PLATFORM_NAME}") +SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${PROJECT_BINARY_DIR}/${EX_PLATFORM_NAME}") IF (MSVC) include_directories ("${PROJECT_SOURCE_DIR}/external/wglext") @@ -381,7 +381,7 @@ include_directories ( set(RES_FILES "") if(MINGW OR MSVC) - set(RES_FILES ${PROJECT_SOURCE_DIR}/cubicsdr.rc) + set(RES_FILES "${PROJECT_SOURCE_DIR}/cubicsdr.rc") set(CMAKE_RC_COMPILER_INIT windres) ENABLE_LANGUAGE(RC) IF(EX_PLATFORM EQUAL 64) @@ -394,12 +394,12 @@ if(MINGW OR MSVC) endif(MINGW OR MSVC) IF (NOT BUNDLE_APP) - configure_files(${PROJECT_SOURCE_DIR}/font ${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME} "*.fnt") - configure_files(${PROJECT_SOURCE_DIR}/font ${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME} "*.png") - configure_files(${PROJECT_SOURCE_DIR}/icon ${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME} CubicSDR.ico) + configure_files("${PROJECT_SOURCE_DIR}/font" "${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME}" "*.fnt") + configure_files("${PROJECT_SOURCE_DIR}/font" "${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME}" "*.png") + configure_files("${PROJECT_SOURCE_DIR}/icon" "${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME}" CubicSDR.ico) IF(MSVC) - configure_files(${PROJECT_SOURCE_DIR}/external/fftw-3.3.4/${EX_PLATFORM}/ ${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME} "*.dll") - configure_files(${PROJECT_SOURCE_DIR}/external/liquid-dsp/msvc/${EX_PLATFORM}/ ${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME} "*.dll") + configure_files("${PROJECT_SOURCE_DIR}/external/fftw-3.3.4/${EX_PLATFORM}/" "${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME}" "*.dll") + configure_files("${PROJECT_SOURCE_DIR}/external/liquid-dsp/msvc/${EX_PLATFORM}/" "${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME}" "*.dll") ENDIF() add_executable(CubicSDR ${cubicsdr_sources} ${cubicsdr_headers} ${RES_FILES}) target_link_libraries(CubicSDR ${LIQUID_LIB} ${FFTW_LIB} ${wxWidgets_LIBRARIES} ${OPENGL_LIBRARIES} ${OTHER_LIBRARIES}) @@ -499,7 +499,7 @@ IF (APPLE AND BUNDLE_APP) IF (BUNDLE_SOAPY_MODS) message(STATUS "SOAPY_ROOT: ${SOAPY_SDR_ROOT}") - file(GLOB SOAPY_MODS ${SOAPY_SDR_ROOT}/lib/SoapySDR/modules/*.so) + file(GLOB SOAPY_MODS "${SOAPY_SDR_ROOT}/lib/SoapySDR/modules/*.so") FOREACH(SOAPY_MOD_FILE ${SOAPY_MODS}) INSTALL( FILES "${SOAPY_MOD_FILE}" @@ -593,8 +593,8 @@ IF (WIN32 AND BUILD_INSTALLER) ADD_DEFINITIONS( -DBUNDLE_SOAPY_MODS=1 ) - file(GLOB SOAPY_BINS ${SOAPY_SDR_ROOT}/bin/*.dll) - file(GLOB SOAPY_MODS ${SOAPY_SDR_ROOT}/lib/SoapySDR/modules/*.dll) + 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}") message(STATUS "SOAPY_MODS: ${SOAPY_MODS}") install(FILES ${SOAPY_BINS} DESTINATION .) @@ -607,10 +607,10 @@ IF (WIN32 AND BUILD_INSTALLER) DESTINATION .) ENDIF(MSVC AND EX_PLATFORM EQUAL 32) - set(CPACK_PACKAGE_EXECUTABLES CubicSDR "CubicSDR") + set(CPACK_PACKAGE_EXECUTABLES CubicSDR "CubicSDR") IF (MSVC) - install(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/external/msvc/${EX_PLATFORM_NAME}/vc_redist.${EX_PLATFORM_NAME}.exe DESTINATION vc_redist) + install(PROGRAMS "${CMAKE_CURRENT_SOURCE_DIR}/external/msvc/${EX_PLATFORM_NAME}/vc_redist.${EX_PLATFORM_NAME}.exe" DESTINATION vc_redist) set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ExecWait '\\\"$INSTDIR\\\\vc_redist\\\\vc_redist.${EX_PLATFORM_NAME}.exe\\\" /q:a'") ENDIF (MSVC) From 538092d9a03a6ce3b504ff5ab7f9a120f8ee803e Mon Sep 17 00:00:00 2001 From: "Charles J. Cliffe" Date: Thu, 12 Nov 2015 19:07:31 -0500 Subject: [PATCH 4/7] remove null pointer checks... --- src/panel/WaterfallPanel.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/panel/WaterfallPanel.cpp b/src/panel/WaterfallPanel.cpp index 6ad0161..71d8f06 100644 --- a/src/panel/WaterfallPanel.cpp +++ b/src/panel/WaterfallPanel.cpp @@ -56,9 +56,7 @@ void WaterfallPanel::step() { int half_fft_size = fft_size / 2; if (!bufferInitialized.load()) { - if (waterfall_slice != NULL) { - delete waterfall_slice; - } + delete waterfall_slice; waterfall_slice = new unsigned char[half_fft_size]; bufferInitialized.store(true); } From cda4fbc039dfe834e39550a0b15e874270e75693 Mon Sep 17 00:00:00 2001 From: "Charles J. Cliffe" Date: Thu, 12 Nov 2015 20:31:55 -0500 Subject: [PATCH 5/7] Apparently quoting params broke something; going to revert until necessary. --- CMakeLists.txt | 56 +++++++++++++++++++++++++------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e1047b4..e5bf65e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,16 +24,16 @@ macro(configure_files srcDir destDir globStr) message(STATUS "Copying ${srcDir}/${globStr} to directory ${destDir}") make_directory(${destDir}) - file(GLOB templateFiles RELATIVE "${srcDir}" "${srcDir}/${globStr}") - foreach(templateFile "${templateFiles}") - set(srcTemplatePath "${srcDir}/${templateFile}") + file(GLOB templateFiles RELATIVE ${srcDir} ${srcDir}/${globStr}) + foreach(templateFile ${templateFiles}) + set(srcTemplatePath ${srcDir}/${templateFile}) message(STATUS "Configuring file ${templateFile}") - if(NOT IS_DIRECTORY "${srcTemplatePath}") + if(NOT IS_DIRECTORY ${srcTemplatePath}) configure_file( - "${srcTemplatePath}" - "${destDir}/${templateFile}" + ${srcTemplatePath} + ${destDir}/${templateFile} COPYONLY) - endif(NOT IS_DIRECTORY "${srcTemplatePath}") + endif(NOT IS_DIRECTORY ${srcTemplatePath}) endforeach(templateFile) endmacro(configure_files) @@ -41,16 +41,16 @@ macro(configure_files_recurse srcDir destDir) message(STATUS "Configuring directory ${destDir}") make_directory(${destDir}) - file(GLOB_RECURSE templateFiles RELATIVE "${srcDir}" "${srcDir}/*") - foreach(templateFile "${templateFiles}") - set(srcTemplatePath "${srcDir}/${templateFile}") + file(GLOB_RECURSE templateFiles RELATIVE ${srcDir} ${srcDir}/*) + foreach(templateFile ${templateFiles}) + set(srcTemplatePath ${srcDir}/${templateFile}) message(STATUS "Configuring file ${templateFile}") - if(NOT IS_DIRECTORY "${srcTemplatePath}") + if(NOT IS_DIRECTORY ${srcTemplatePath}) configure_file( - "${srcTemplatePath}" - "${destDir}/${templateFile}" + ${srcTemplatePath} + ${destDir}/${templateFile} COPYONLY) - endif(NOT IS_DIRECTORY "${srcTemplatePath}") + endif(NOT IS_DIRECTORY ${srcTemplatePath}) endforeach(templateFile) endmacro(configure_files_recurse) @@ -67,9 +67,9 @@ else( CMAKE_SIZEOF_VOID_P EQUAL 8 ) endif( CMAKE_SIZEOF_VOID_P EQUAL 8 ) -SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/${EX_PLATFORM_NAME}") -SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${PROJECT_BINARY_DIR}/${EX_PLATFORM_NAME}") -SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${PROJECT_BINARY_DIR}/${EX_PLATFORM_NAME}") +SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${EX_PLATFORM_NAME}) +SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${PROJECT_BINARY_DIR}/${EX_PLATFORM_NAME}) +SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PROJECT_BINARY_DIR}/${EX_PLATFORM_NAME}) IF (MSVC) include_directories ("${PROJECT_SOURCE_DIR}/external/wglext") @@ -381,7 +381,7 @@ include_directories ( set(RES_FILES "") if(MINGW OR MSVC) - set(RES_FILES "${PROJECT_SOURCE_DIR}/cubicsdr.rc") + set(RES_FILES ${PROJECT_SOURCE_DIR}/cubicsdr.rc) set(CMAKE_RC_COMPILER_INIT windres) ENABLE_LANGUAGE(RC) IF(EX_PLATFORM EQUAL 64) @@ -394,12 +394,12 @@ if(MINGW OR MSVC) endif(MINGW OR MSVC) IF (NOT BUNDLE_APP) - configure_files("${PROJECT_SOURCE_DIR}/font" "${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME}" "*.fnt") - configure_files("${PROJECT_SOURCE_DIR}/font" "${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME}" "*.png") - configure_files("${PROJECT_SOURCE_DIR}/icon" "${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME}" CubicSDR.ico) + configure_files(${PROJECT_SOURCE_DIR}/font ${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME} "*.fnt") + configure_files(${PROJECT_SOURCE_DIR}/font ${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME} "*.png") + configure_files(${PROJECT_SOURCE_DIR}/icon ${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME} CubicSDR.ico) IF(MSVC) - configure_files("${PROJECT_SOURCE_DIR}/external/fftw-3.3.4/${EX_PLATFORM}/" "${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME}" "*.dll") - configure_files("${PROJECT_SOURCE_DIR}/external/liquid-dsp/msvc/${EX_PLATFORM}/" "${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME}" "*.dll") + configure_files(${PROJECT_SOURCE_DIR}/external/fftw-3.3.4/${EX_PLATFORM}/ ${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME} "*.dll") + configure_files(${PROJECT_SOURCE_DIR}/external/liquid-dsp/msvc/${EX_PLATFORM}/ ${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME} "*.dll") ENDIF() add_executable(CubicSDR ${cubicsdr_sources} ${cubicsdr_headers} ${RES_FILES}) target_link_libraries(CubicSDR ${LIQUID_LIB} ${FFTW_LIB} ${wxWidgets_LIBRARIES} ${OPENGL_LIBRARIES} ${OTHER_LIBRARIES}) @@ -499,7 +499,7 @@ IF (APPLE AND BUNDLE_APP) IF (BUNDLE_SOAPY_MODS) message(STATUS "SOAPY_ROOT: ${SOAPY_SDR_ROOT}") - file(GLOB SOAPY_MODS "${SOAPY_SDR_ROOT}/lib/SoapySDR/modules/*.so") + file(GLOB SOAPY_MODS ${SOAPY_SDR_ROOT}/lib/SoapySDR/modules/*.so) FOREACH(SOAPY_MOD_FILE ${SOAPY_MODS}) INSTALL( FILES "${SOAPY_MOD_FILE}" @@ -593,8 +593,8 @@ IF (WIN32 AND BUILD_INSTALLER) ADD_DEFINITIONS( -DBUNDLE_SOAPY_MODS=1 ) - file(GLOB SOAPY_BINS "${SOAPY_SDR_ROOT}/bin/*.dll") - file(GLOB SOAPY_MODS "${SOAPY_SDR_ROOT}/lib/SoapySDR/modules/*.dll") + 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}") message(STATUS "SOAPY_MODS: ${SOAPY_MODS}") install(FILES ${SOAPY_BINS} DESTINATION .) @@ -607,10 +607,10 @@ IF (WIN32 AND BUILD_INSTALLER) DESTINATION .) ENDIF(MSVC AND EX_PLATFORM EQUAL 32) - set(CPACK_PACKAGE_EXECUTABLES CubicSDR "CubicSDR") + set(CPACK_PACKAGE_EXECUTABLES CubicSDR "CubicSDR") IF (MSVC) - install(PROGRAMS "${CMAKE_CURRENT_SOURCE_DIR}/external/msvc/${EX_PLATFORM_NAME}/vc_redist.${EX_PLATFORM_NAME}.exe" DESTINATION vc_redist) + install(PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/external/msvc/${EX_PLATFORM_NAME}/vc_redist.${EX_PLATFORM_NAME}.exe DESTINATION vc_redist) set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ExecWait '\\\"$INSTDIR\\\\vc_redist\\\\vc_redist.${EX_PLATFORM_NAME}.exe\\\" /q:a'") ENDIF (MSVC) From 127280e75ab6cff5df9e4471917d2aead6b228b8 Mon Sep 17 00:00:00 2001 From: "Charles J. Cliffe" Date: Fri, 13 Nov 2015 22:21:16 -0500 Subject: [PATCH 6/7] Add 'make install' and 'make uninstall' for Linux/OSX --- CMakeLists.txt | 146 ++++++++++++++++++++------------- cmake/cmake_uninstall.cmake.in | 22 +++++ 2 files changed, 109 insertions(+), 59 deletions(-) create mode 100644 cmake/cmake_uninstall.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index e5bf65e..f5862d6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -345,6 +345,21 @@ SET (cubicsdr_headers external/cubicvr2/math/vec4.h ) +SET (CUBICSDR_RESOURCES + ${PROJECT_SOURCE_DIR}/font/vera_sans_mono12.fnt + ${PROJECT_SOURCE_DIR}/font/vera_sans_mono16.fnt + ${PROJECT_SOURCE_DIR}/font/vera_sans_mono18.fnt + ${PROJECT_SOURCE_DIR}/font/vera_sans_mono24.fnt + ${PROJECT_SOURCE_DIR}/font/vera_sans_mono32.fnt + ${PROJECT_SOURCE_DIR}/font/vera_sans_mono48.fnt + ${PROJECT_SOURCE_DIR}/font/vera_sans_mono12_0.png + ${PROJECT_SOURCE_DIR}/font/vera_sans_mono16_0.png + ${PROJECT_SOURCE_DIR}/font/vera_sans_mono18_0.png + ${PROJECT_SOURCE_DIR}/font/vera_sans_mono24_0.png + ${PROJECT_SOURCE_DIR}/font/vera_sans_mono32_0.png + ${PROJECT_SOURCE_DIR}/font/vera_sans_mono48_0.png +) + set(REG_EXT "[^/]*([.]cpp|[.]c|[.]h|[.]hpp)$") SOURCE_GROUP("Base" REGULAR_EXPRESSION "src/${REG_EXT}") @@ -447,34 +462,12 @@ IF (APPLE AND BUNDLE_APP) MACOSX_BUNDLE ${cubicsdr_sources} ${cubicsdr_headers} - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono12.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono16.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono18.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono24.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono32.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono48.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono12_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono16_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono18_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono24_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono32_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono48_0.png + ${CUBICSDR_RESOURCES} ${PROJECT_SOURCE_DIR}/icon/CubicSDR.icns ) SET_SOURCE_FILES_PROPERTIES( - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono12.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono16.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono18.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono24.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono32.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono48.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono12_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono16_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono18_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono24_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono32_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono48_0.png + ${CUBICSDR_RESOURCES} ${PROJECT_SOURCE_DIR}/icon/CubicSDR.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources @@ -543,7 +536,32 @@ IF (APPLE AND BUNDLE_APP) set(CPACK_BINARY_DRAGNDROP ON) include(CPack) -ENDIF (APPLE AND BUNDLE_APP) +ENDIF() +IF(APPLE AND NOT BUNDLE_APP) + IF (NOT CMAKE_INSTALL_PREFIX) + SET(CMAKE_INSTALL_PREFIX "/usr/") + ENDIF() + ADD_DEFINITIONS( + -DRES_FOLDER="${CMAKE_INSTALL_PREFIX}/share/cubicsdr/" + ) + + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,relro") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,relro") + + INSTALL(TARGETS CubicSDR DESTINATION bin) + install(FILES + ${CUBICSDR_RESOURCES} + ${PROJECT_SOURCE_DIR}/src/CubicSDR.png + DESTINATION share/cubicsdr) + + CONFIGURE_FILE( + "${PROJECT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + @ONLY IMMEDIATE) + ADD_CUSTOM_TARGET(uninstall + "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") + +ENDIF () IF (WIN32 AND BUILD_INSTALLER) set(BUNDLE_SOAPY_MODS OFF CACHE BOOL "Bundle local SoapySDR modules") @@ -572,18 +590,7 @@ IF (WIN32 AND BUILD_INSTALLER) install(TARGETS CubicSDR RUNTIME DESTINATION .) install(FILES - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono12.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono16.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono18.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono24.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono32.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono48.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono12_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono16_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono18_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono24_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono32_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono48_0.png + ${CUBICSDR_RESOURCES} ${PROJECT_SOURCE_DIR}/icon/CubicSDR.ico ${PROJECT_SOURCE_DIR}/external/fftw-3.3.4/${EX_PLATFORM}/libfftw3f-3.dll ${PROJECT_SOURCE_DIR}/external/liquid-dsp/msvc/${EX_PLATFORM}/libliquid.dll @@ -619,8 +626,7 @@ IF (WIN32 AND BUILD_INSTALLER) ENDIF (WIN32 AND BUILD_INSTALLER) -IF (UNIX AND BUILD_DEB) - +IF (UNIX AND NOT APPLE AND BUILD_DEB) set(CPACK_GENERATOR DEB) set(CPACK_PACKAGE_NAME "CubicSDR") SET(CPACK_DEBIAN_PACKAGE_DEPENDS " libfftw3-single3, libwxgtk3.0-0, libpulse0") @@ -629,34 +635,56 @@ IF (UNIX AND BUILD_DEB) SET(CPACK_DEBIAN_PACKAGE_SECTION "comm") SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE") SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${EX_PLATFORM_NAME}") - + + IF (NOT CMAKE_INSTALL_PREFIX) + SET(CMAKE_INSTALL_PREFIX "/usr/") + ENDIF() ADD_DEFINITIONS( - -DRES_FOLDER="/usr/share/cubicsdr/" + -DRES_FOLDER="${CMAKE_INSTALL_PREFIX}/share/cubicsdr/" -D_FORTIFY_SOURCE=2 ) - - set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,relro") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,relro") + + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,relro") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,relro") CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/external/deb/deb_post.sh.in" "${CMAKE_CURRENT_BINARY_DIR}/deb_post.sh" @ONLY IMMEDIATE) INSTALL(TARGETS CubicSDR DESTINATION bin) install(FILES - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono12.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono16.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono18.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono24.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono32.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono48.fnt - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono12_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono16_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono18_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono24_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono32_0.png - ${PROJECT_SOURCE_DIR}/font/vera_sans_mono48_0.png + ${CUBICSDR_RESOURCES} ${PROJECT_SOURCE_DIR}/src/CubicSDR.png DESTINATION share/cubicsdr) - INSTALL(FILES CubicSDR.desktop - DESTINATION share/applications) + + INSTALL(FILES CubicSDR.desktop + DESTINATION share/applications) + INCLUDE(CPack) -ENDIF (UNIX AND BUILD_DEB) +ENDIF() +IF(UNIX AND NOT APPLE AND NOT BUILD_DEB) + IF (NOT CMAKE_INSTALL_PREFIX) + SET(CMAKE_INSTALL_PREFIX "/usr/") + ENDIF() + ADD_DEFINITIONS( + -DRES_FOLDER="${CMAKE_INSTALL_PREFIX}/share/cubicsdr/" + ) + + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,relro") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,relro") + + INSTALL(TARGETS CubicSDR DESTINATION bin) + install(FILES + ${CUBICSDR_RESOURCES} + ${PROJECT_SOURCE_DIR}/src/CubicSDR.png + DESTINATION share/cubicsdr) + INSTALL(FILES CubicSDR.desktop + DESTINATION share/applications) + + CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/external/deb/deb_post.sh.in" "${CMAKE_CURRENT_BINARY_DIR}/deb_post.sh" @ONLY IMMEDIATE) + + CONFIGURE_FILE( + "${PROJECT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + @ONLY IMMEDIATE) + ADD_CUSTOM_TARGET(uninstall + "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") +ENDIF() diff --git a/cmake/cmake_uninstall.cmake.in b/cmake/cmake_uninstall.cmake.in new file mode 100644 index 0000000..9da54f5 --- /dev/null +++ b/cmake/cmake_uninstall.cmake.in @@ -0,0 +1,22 @@ +IF(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt") + MESSAGE(FATAL_ERROR "Cannot find install manifest: '${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt'") +ENDIF(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt") + +FILE(READ "${CMAKE_CURRENT_BINARY_DIR}/install_manifest.txt" files) +STRING(REGEX REPLACE " " ";" files "${files}") +STRING(REGEX REPLACE "\n" ";" files "${files}") +FOREACH(file ${files}) + MESSAGE(STATUS "Uninstalling '$ENV{DESTDIR}${file}'") + IF(EXISTS "$ENV{DESTDIR}${file}") + EXEC_PROGRAM( + "${CMAKE_COMMAND}" ARGS "-E remove '$ENV{DESTDIR}${file}'" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + IF(NOT "${rm_retval}" STREQUAL 0) + MESSAGE(FATAL_ERROR "Problem when removing '$ENV{DESTDIR}${file}'") + ENDIF(NOT "${rm_retval}" STREQUAL 0) + ELSE(EXISTS "$ENV{DESTDIR}${file}") + MESSAGE(STATUS "File '$ENV{DESTDIR}${file}' does not exist.") + ENDIF(EXISTS "$ENV{DESTDIR}${file}") +ENDFOREACH(file) \ No newline at end of file From a133e82eeb61c30a28e7fc4651ded70fe2cbbe08 Mon Sep 17 00:00:00 2001 From: "Charles J. Cliffe" Date: Fri, 13 Nov 2015 23:06:54 -0500 Subject: [PATCH 7/7] Update CubicSDR.desktop to inerit CMAKE_INSTALL_PREFIX --- CMakeLists.txt | 17 ++++++++++++----- CubicSDR.desktop => cmake/CubicSDR.desktop.in | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) rename CubicSDR.desktop => cmake/CubicSDR.desktop.in (77%) diff --git a/CMakeLists.txt b/CMakeLists.txt index f5862d6..c3ce07b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -647,7 +647,11 @@ IF (UNIX AND NOT APPLE AND BUILD_DEB) set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,relro") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,relro") - CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/external/deb/deb_post.sh.in" "${CMAKE_CURRENT_BINARY_DIR}/deb_post.sh" @ONLY IMMEDIATE) + CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/external/deb/deb_post.sh.in" + "${CMAKE_CURRENT_BINARY_DIR}/deb_post.sh" @ONLY IMMEDIATE) + + CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/CubicSDR.desktop.in" + "${CMAKE_CURRENT_BINARY_DIR}/CubicSDR.desktop" @ONLY IMMEDIATE) INSTALL(TARGETS CubicSDR DESTINATION bin) install(FILES @@ -655,7 +659,7 @@ IF (UNIX AND NOT APPLE AND BUILD_DEB) ${PROJECT_SOURCE_DIR}/src/CubicSDR.png DESTINATION share/cubicsdr) - INSTALL(FILES CubicSDR.desktop + INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/CubicSDR.desktop" DESTINATION share/applications) INCLUDE(CPack) @@ -670,17 +674,20 @@ IF(UNIX AND NOT APPLE AND NOT BUILD_DEB) set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,relro") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,relro") + + CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/cmake/CubicSDR.desktop.in" + "${CMAKE_CURRENT_BINARY_DIR}/CubicSDR.desktop" @ONLY IMMEDIATE) INSTALL(TARGETS CubicSDR DESTINATION bin) install(FILES ${CUBICSDR_RESOURCES} ${PROJECT_SOURCE_DIR}/src/CubicSDR.png DESTINATION share/cubicsdr) - INSTALL(FILES CubicSDR.desktop + INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/CubicSDR.desktop" DESTINATION share/applications) - CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/external/deb/deb_post.sh.in" "${CMAKE_CURRENT_BINARY_DIR}/deb_post.sh" @ONLY IMMEDIATE) - + CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/external/deb/deb_post.sh.in" + "${CMAKE_CURRENT_BINARY_DIR}/deb_post.sh" @ONLY IMMEDIATE) CONFIGURE_FILE( "${PROJECT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" diff --git a/CubicSDR.desktop b/cmake/CubicSDR.desktop.in similarity index 77% rename from CubicSDR.desktop rename to cmake/CubicSDR.desktop.in index 6cb140c..6d33ae4 100644 --- a/CubicSDR.desktop +++ b/cmake/CubicSDR.desktop.in @@ -1,7 +1,7 @@ [Desktop Entry] Type=Application Exec=CubicSDR %u -Icon=/usr/share/cubicsdr/CubicSDR.png +Icon=@CMAKE_INSTALL_PREFIX@/share/cubicsdr/CubicSDR.png Terminal=false Name=CubicSDR GenericName=CubicSDR