cmake_minimum_required (VERSION 2.8) project (CubicSDR) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/") SET(CUBICSDR_VERSION_MAJOR "0") SET(CUBICSDR_VERSION_MINOR "2") SET(CUBICSDR_VERSION_PATCH "6") SET(CUBICSDR_VERSION_SUFFIX "a") SET(CUBICSDR_VERSION "${CUBICSDR_VERSION_MAJOR}.${CUBICSDR_VERSION_MINOR}.${CUBICSDR_VERSION_PATCH}${CUBICSDR_VERSION_SUFFIX}") SET(CPACK_PACKAGE_VERSION "${CUBICSDR_VERSION_MAJOR}.${CUBICSDR_VERSION_MINOR}.${CUBICSDR_VERSION_PATCH}") SET(CPACK_PACKAGE_VERSION_MAJOR ${CUBICSDR_VERSION_MAJOR}) SET(CPACK_PACKAGE_VERSION_MINOR ${CUBICSDR_VERSION_MINOR}) SET(CPACK_PACKAGE_VERSION_PATCH ${CUBICSDR_VERSION_PATCH}) SET (CUSTOM_BUILD OFF CACHE BOOL "Enable custom build options") # Build options for custom deploys, optimization and debugging IF(CUSTOM_BUILD) SET (CUBICSDR_BUILD_TITLE CACHE STRING "Custom Title") # bundle flags SET (CUBICSDR_INSTALL_NAME CACHE "CubicSDR" "Installation Name") SET (CUBICSDR_INSTALL_TITLE CACHE "CubicSDR" "Installation Title") SET (CUBICSDR_HEADER_IMAGE CACHE "" "Image file to display in header") SET (CUBICSDR_HEADER_BG CACHE "000000" "Background Color (HEX) for header") # feature flags SET (CUBICSDR_ENABLE_VIEW_DEMOD ON CACHE BOOL "Enable Second Demodulator Spectrum/Waterfall view.") SET (CUBICSDR_ENABLE_VIEW_SCOPE ON CACHE BOOL "Enable Demodulator Scope/Spectrum view.") SET (CUBICSDR_ENABLE_ABOUT_DIALOG ON CACHE BOOL "Enable About Dialog.") SET (CUBICSDR_DEFAULT_HIDE_BOOKMARKS OFF CACHE BOOL "Hide Bookmarks by Default.") SET (CUBICSDR_MODEM_EXCLUDE CACHE "" "Comma-separated list of modems to exclude.") IF (NOT CUBICSDR_HEADER_IMAGE STREQUAL "") SET(CUBICSDR_HAS_HEADER_IMAGE TRUE) GET_FILENAME_COMPONENT(CUBICSDR_HEADER_IMAGE_FILE "${CUBICSDR_HEADER_IMAGE}" NAME) GET_FILENAME_COMPONENT(CUBICSDR_HEADER_IMAGE_DIR "${CUBICSDR_HEADER_IMAGE}" PATH) ADD_DEFINITIONS( -DCUBICSDR_HEADER_IMAGE="${CUBICSDR_HEADER_IMAGE_FILE}" -DCUBICSDR_HEADER_BG="${CUBICSDR_HEADER_BG}" ) ENDIF() IF (NOT CUBICSDR_MODEM_EXCLUDE STREQUAL "") ADD_DEFINITIONS( -DCUBICSDR_MODEM_EXCLUDE="${CUBICSDR_MODEM_EXCLUDE}" ) ENDIF() ELSE() SET (CUBICSDR_BUILD_TITLE "CubicSDR v${CUBICSDR_VERSION} :: www.cubicsdr.com") # bundle flags SET (CUBICSDR_INSTALL_NAME "CubicSDR") SET (CUBICSDR_INSTALL_TITLE "CubicSDR ${CUBICSDR_VERSION} Installer") SET (CUBICSDR_HEADER_IMAGE "") SET (CUBICSDR_HEADER_BG "") # feature flags SET (CUBICSDR_ENABLE_VIEW_DEMOD ON) SET (CUBICSDR_ENABLE_VIEW_SCOPE ON) SET (CUBICSDR_DEFAULT_HIDE_BOOKMARKS OFF) SET (CUBICSDR_ENABLE_ABOUT_DIALOG ON) SET (CUBICSDR_EXCLUDE_MODEM "") ENDIF() IF(CUBICSDR_ENABLE_VIEW_DEMOD) ADD_DEFINITIONS( -DCUBICSDR_ENABLE_VIEW_DEMOD=1 ) ENDIF() IF(CUBICSDR_ENABLE_VIEW_SCOPE) ADD_DEFINITIONS( -DCUBICSDR_ENABLE_VIEW_SCOPE=1 ) ENDIF() IF(CUBICSDR_DEFAULT_HIDE_BOOKMARKS) ADD_DEFINITIONS( -DCUBICSDR_DEFAULT_HIDE_BOOKMARKS=1 ) ENDIF() IF(CUBICSDR_ENABLE_ABOUT_DIALOG) ADD_DEFINITIONS( -DCUBICSDR_ENABLE_ABOUT_DIALOG=1 ) ENDIF() ADD_DEFINITIONS( -DCUBICSDR_INSTALL_NAME="${CUBICSDR_INSTALL_NAME}" -DCUBICSDR_VERSION="${CUBICSDR_VERSION}" -DCUBICSDR_BUILD_TITLE="${CUBICSDR_BUILD_TITLE}" ) SET (ENABLE_DIGITAL_LAB OFF CACHE BOOL "Enable 'Digital Lab' testing features.") IF(ENABLE_DIGITAL_LAB) ADD_DEFINITIONS( -DENABLE_DIGITAL_LAB=1 ) ENDIF() set(USE_HAMLIB OFF CACHE BOOL "Support hamlib for radio control functions.") if (USE_HAMLIB) find_package(hamlib REQUIRED) if (NOT HAMLIB_FOUND) message(FATAL_ERROR "hamlib development files not found...") endif () include_directories(${HAMLIB_INCLUDE_DIR}) link_libraries(${HAMLIB_LIBRARY}) ADD_DEFINITIONS(-DUSE_HAMLIB) endif () 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}) message(STATUS "Configuring file ${templateFile}") if(NOT IS_DIRECTORY ${srcTemplatePath}) configure_file( ${srcTemplatePath} ${destDir}/${templateFile} COPYONLY) endif(NOT IS_DIRECTORY ${srcTemplatePath}) endforeach(templateFile) endmacro(configure_files) 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}) message(STATUS "Configuring file ${templateFile}") if(NOT IS_DIRECTORY ${srcTemplatePath}) configure_file( ${srcTemplatePath} ${destDir}/${templateFile} COPYONLY) endif(NOT IS_DIRECTORY ${srcTemplatePath}) endforeach(templateFile) endmacro(configure_files_recurse) if( CMAKE_SIZEOF_VOID_P EQUAL 8 ) MESSAGE( "64 bit compiler detected" ) SET( EX_PLATFORM 64 ) SET( EX_PLATFORM_NAME "x64" ) else( CMAKE_SIZEOF_VOID_P EQUAL 8 ) MESSAGE( "32 bit compiler detected" ) SET( EX_PLATFORM 32 ) SET( EX_PLATFORM_NAME "x86" ) 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}) IF (MSVC) include_directories ("${PROJECT_SOURCE_DIR}/external/wglext") SET(LIQUID_INCLUDES "${PROJECT_SOURCE_DIR}/external/liquid-dsp/include/" CACHE STRING "Liquid-DSP include directory") SET(LIQUID_LIBRARIES "${PROJECT_SOURCE_DIR}/external/liquid-dsp/msvc/${EX_PLATFORM}/libliquid.lib" CACHE STRING "Liquid-DSP Library") SET(LIQUID_DLL "${PROJECT_SOURCE_DIR}/external/liquid-dsp/msvc/${EX_PLATFORM}/libliquid.dll" CACHE STRING "Liquid-DSP DLL") SET(HAMLIB_DLLS "${PROJECT_SOURCE_DIR}/external/hamlib/${EX_PLATFORM}/libhamlib-2.dll" CACHE STRING "HAMLIB DLLS") ELSE (MSVC) ADD_DEFINITIONS( -std=c++0x -pthread ) ENDIF(MSVC) find_package(OpenGL REQUIRED) find_package(Liquid REQUIRED) include_directories(${LIQUID_INCLUDES}) SET(OTHER_LIBRARIES ${OTHER_LIBRARIES} ${LIQUID_LIBRARIES}) find_package(wxWidgets COMPONENTS gl core propgrid adv base REQUIRED) set(wxWidgets_CONFIGURATION mswu) include(${wxWidgets_USE_FILE}) find_package(SoapySDR "0.4.0" NO_MODULE REQUIRED) include_directories(${SOAPY_SDR_INCLUDE_DIR}) SET(OTHER_LIBRARIES ${SOAPY_SDR_LIBRARY} ${OTHER_LIBRARIES}) ADD_DEFINITIONS( -DUSE_SOAPY_SDR=1 ) IF (WIN32) set(wxWidgets_USE_STATIC ON) set(BUILD_INSTALLER OFF CACHE BOOL "Build Installer") # Audio device selection is not mandatory, dummy audio device is used if none are compiled in. # Can also compile support for more than one simultaneously. set(USE_AUDIO_DS ON CACHE BOOL "Include support for DirectSound") set(USE_AUDIO_WASAPI OFF CACHE BOOL "Include support for WASAPI Audio") # TODO: # set(USE_AUDIO_ASIO OFF CACHE BOOL "Include support for ASIO Audio") # WASAPI IF(USE_AUDIO_WASAPI) ADD_DEFINITIONS(-D__WINDOWS_WASAPI__) IF (NOT MSVC) SET(OTHER_LIBRARIES ${OTHER_LIBRARIES} -luuid -lksuser) ENDIF(NOT MSVC) ENDIF(USE_AUDIO_WASAPI) # DirectSound IF (USE_AUDIO_DS) ADD_DEFINITIONS(-D__WINDOWS_DS__) IF (MSVC) SET(OTHER_LIBRARIES ${OTHER_LIBRARIES} dsound.lib) ELSE (MSVC) SET(OTHER_LIBRARIES ${OTHER_LIBRARIES} -ldsound) ENDIF (MSVC) ENDIF(USE_AUDIO_DS) SET(USE_MINGW_PATCH OFF CACHE BOOL "Add some missing functions when compiling against mingw liquid-dsp.") IF (USE_MINGW_PATCH) SET(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} legacy_stdio_definitions.lib libgcc.a") ADD_DEFINITIONS( -DMINGW_PATCH=1 ) SET (GCC_LINKDIR "" CACHE STRING "") IF (GCC_LINKDIR) link_directories("${GCC_LINKDIR}") ENDIF() ENDIF() ENDIF (WIN32) MACRO(use_included_rtaudio) SET (cubicsdr_sources ${cubicsdr_sources} external/rtaudio/RtAudio.cpp ) SET (cubicsdr_headers ${cubicsdr_headers} external/rtaudio/RtAudio.h ) SOURCE_GROUP("_ext-RTAudio" REGULAR_EXPRESSION "external/rtaudio/.*${REG_EXT}") include_directories(${PROJECT_SOURCE_DIR}/external/rtaudio) ENDMACRO(use_included_rtaudio) IF (UNIX AND NOT APPLE) set(BUILD_DEB OFF CACHE BOOL "Build DEB") SET(USE_SYSTEM_RTAUDIO OFF CACHE BOOL "Use the system RtAudio which in turn provides OSS, ALSA, JACK, PulseAudio support depending on how it was compiled") SET(LIQUID_LIB liquid) SET(OTHER_LIBRARIES ${OTHER_LIBRARIES} dl) IF(USE_SYSTEM_RTAUDIO) find_package(RtAudio) SET(OTHER_LIBRARIES ${OTHER_LIBRARIES} ${RTAUDIO_LIBRARIES}) ADD_DEFINITIONS(${RTAUDIO_DEFINITIONS}) include_directories(${RTAUDIO_INCLUDE_DIR}) ELSE(USE_SYSTEM_RTAUDIO) use_included_rtaudio() SET(USE_AUDIO_PULSE ON CACHE BOOL "Use Pulse Audio") SET(USE_AUDIO_JACK OFF CACHE BOOL "Use Jack Audio") SET(USE_AUDIO_ALSA OFF CACHE BOOL "Use ALSA Audio") SET(USE_AUDIO_OSS OFF CACHE BOOL "Use OSS Audio") IF(USE_AUDIO_PULSE) SET (OTHER_LIBRARIES ${OTHER_LIBRARIES} pulse-simple pulse) ADD_DEFINITIONS( -D__LINUX_PULSE__ ) ENDIF(USE_AUDIO_PULSE) IF(USE_AUDIO_JACK) find_package(Jack) SET (OTHER_LIBRARIES ${OTHER_LIBRARIES} ${JACK_LIBRARIES}) ADD_DEFINITIONS( -D__UNIX_JACK__ ) include_directories(${JACK_INCLUDE_DIRS}) ENDIF(USE_AUDIO_JACK) IF(USE_AUDIO_ALSA) SET (OTHER_LIBRARIES ${OTHER_LIBRARIES} asound) set(ALSA_INCLUDE_DIR "/usr/include" CACHE FILEPATH "ALSA include path") include_directories(${ALSA_INCLUDE_DIR}) set(ALSA_LIB_DIR "/usr/lib" CACHE FILEPATH "ALSA lib path") link_directories(${ALSA_LIB_DIR}) ADD_DEFINITIONS( -D__LINUX_ALSA__ ) ENDIF(USE_AUDIO_ALSA) IF(USE_AUDIO_OSS) SET (OTHER_LIBRARIES ${OTHER_LIBRARIES} oss) ADD_DEFINITIONS( -D__LINUX_OSS__ ) ENDIF(USE_AUDIO_OSS) ENDIF(USE_SYSTEM_RTAUDIO) ELSE(UNIX AND NOT APPLE) use_included_rtaudio() ENDIF(UNIX AND NOT APPLE) IF (APPLE) SET(CMAKE_OSX_DEPLOYMENT_TARGET, "10.9") SET(LIQUID_LIB liquid) link_directories(/usr/local/lib) link_directories(/opt/local/lib) ADD_DEFINITIONS( -D__MACOSX_CORE__ ) FIND_LIBRARY(COREAUDIO_LIBRARY CoreAudio) SET (OTHER_LIBRARIES ${COREAUDIO_LIBRARY} ${OTHER_LIBRARIES}) set(BUNDLE_APP OFF CACHE BOOL "Bundle Application") ENDIF (APPLE) SET (cubicsdr_sources ${cubicsdr_sources} src/CubicSDR.cpp src/AppFrame.cpp src/AppConfig.cpp src/FrequencyDialog.cpp src/DemodLabelDialog.cpp src/IOThread.cpp src/ModemProperties.cpp src/BookmarkMgr.cpp src/SessionMgr.cpp src/sdr/SDRDeviceInfo.cpp src/sdr/SDRPostThread.cpp src/sdr/SDREnumerator.cpp src/sdr/SoapySDRThread.h src/demod/DemodulatorPreThread.cpp src/demod/DemodulatorThread.cpp src/demod/DemodulatorWorkerThread.cpp src/demod/DemodulatorInstance.cpp src/demod/DemodulatorMgr.cpp src/modules/modem/Modem.cpp src/modules/modem/ModemAnalog.cpp src/modules/modem/ModemDigital.cpp src/modules/modem/analog/ModemAM.cpp src/modules/modem/analog/ModemDSB.cpp src/modules/modem/analog/ModemFM.cpp src/modules/modem/analog/ModemNBFM.cpp src/modules/modem/analog/ModemFMStereo.cpp src/modules/modem/analog/ModemIQ.cpp src/modules/modem/analog/ModemLSB.cpp src/modules/modem/analog/ModemUSB.cpp src/audio/AudioThread.cpp src/audio/AudioSinkThread.cpp src/audio/AudioSinkFileThread.cpp src/audio/AudioFile.cpp src/audio/AudioFileWAV.cpp src/util/Gradient.cpp src/util/Timer.cpp src/util/MouseTracker.cpp src/util/GLExt.cpp src/util/GLFont.cpp src/util/DataTree.cpp src/panel/ScopePanel.cpp src/panel/SpectrumPanel.cpp src/panel/WaterfallPanel.cpp src/panel/MeterPanel.cpp src/panel/MeterPanel.h src/visual/ColorTheme.cpp src/visual/PrimaryGLContext.cpp src/visual/InteractiveCanvas.cpp src/visual/MeterCanvas.cpp src/visual/MeterContext.cpp src/visual/TuningCanvas.cpp src/visual/TuningContext.cpp src/visual/ModeSelectorCanvas.cpp src/visual/ModeSelectorContext.cpp src/visual/ScopeCanvas.cpp src/visual/ScopeContext.cpp src/visual/SpectrumCanvas.cpp src/visual/WaterfallCanvas.cpp src/visual/GainCanvas.cpp src/visual/ImagePanel.cpp src/process/VisualProcessor.cpp src/process/ScopeVisualProcessor.cpp src/process/SpectrumVisualProcessor.cpp src/process/FFTVisualDataThread.cpp src/process/FFTDataDistributor.cpp src/process/SpectrumVisualDataThread.cpp src/ui/GLPanel.cpp src/forms/SDRDevices/SDRDevices.cpp src/forms/SDRDevices/SDRDevicesForm.cpp src/forms/SDRDevices/SDRDeviceAdd.cpp src/forms/SDRDevices/SDRDeviceAddForm.cpp src/forms/Bookmark/BookmarkPanel.cpp src/forms/Bookmark/BookmarkView.cpp src/forms/Dialog/ActionDialogBase.cpp src/forms/Dialog/ActionDialog.cpp src/forms/Dialog/AboutDialogBase.cpp src/forms/Dialog/AboutDialog.cpp external/lodepng/lodepng.cpp external/tinyxml/tinyxml.cpp external/tinyxml/tinystr.cpp external/tinyxml/tinyxmlparser.cpp external/tinyxml/tinyxmlerror.cpp external/cubicvr2/math/cubic_math.cpp ) IF(ENABLE_DIGITAL_LAB) SET (cubicsdr_sources ${cubicsdr_sources} src/forms/DigitalConsole/DigitalConsole.cpp src/forms/DigitalConsole/DigitalConsoleFrame.cpp src/modules/modem/digital/ModemASK.cpp src/modules/modem/digital/ModemAPSK.cpp src/modules/modem/digital/ModemBPSK.cpp src/modules/modem/digital/ModemDPSK.cpp src/modules/modem/digital/ModemGMSK.cpp src/modules/modem/digital/ModemPSK.cpp src/modules/modem/digital/ModemOOK.cpp src/modules/modem/digital/ModemST.cpp src/modules/modem/digital/ModemSQAM.cpp src/modules/modem/digital/ModemQAM.cpp src/modules/modem/digital/ModemQPSK.cpp src/modules/modem/digital/ModemFSK.cpp ) ENDIF() SET (cubicsdr_headers ${cubicsdr_headers} src/CubicSDRDefs.h src/CubicSDR.h src/AppFrame.h src/AppConfig.h src/FrequencyDialog.h src/DemodLabelDialog.h src/IOThread.h src/ModemProperties.h src/BookmarkMgr.h src/SessionMgr.h src/sdr/SDRDeviceInfo.h src/sdr/SDRPostThread.h src/sdr/SDREnumerator.h src/sdr/SoapySDRThread.cpp src/demod/DemodulatorPreThread.h src/demod/DemodulatorThread.h src/demod/DemodulatorWorkerThread.h src/demod/DemodulatorInstance.h src/demod/DemodulatorMgr.h src/demod/DemodDefs.h src/modules/modem/Modem.h src/modules/modem/ModemAnalog.h src/modules/modem/ModemDigital.h src/modules/modem/analog/ModemAM.h src/modules/modem/analog/ModemDSB.h src/modules/modem/analog/ModemFM.h src/modules/modem/analog/ModemNBFM.h src/modules/modem/analog/ModemFMStereo.h src/modules/modem/analog/ModemIQ.h src/modules/modem/analog/ModemLSB.h src/modules/modem/analog/ModemUSB.h src/audio/AudioThread.h src/audio/AudioSinkThread.h src/audio/AudioSinkFileThread.h src/audio/AudioFile.h src/audio/AudioFileWAV.h src/util/Gradient.h src/util/Timer.h src/util/ThreadBlockingQueue.h src/util/MouseTracker.h src/util/GLExt.h src/util/GLFont.h src/util/DataTree.h src/util/SpinMutex.h src/panel/ScopePanel.h src/panel/SpectrumPanel.h src/panel/WaterfallPanel.h src/visual/ColorTheme.h src/visual/PrimaryGLContext.h src/visual/InteractiveCanvas.h src/visual/MeterCanvas.h src/visual/MeterContext.h src/visual/TuningCanvas.h src/visual/TuningContext.h src/visual/ModeSelectorCanvas.h src/visual/ModeSelectorContext.h src/visual/ScopeCanvas.h src/visual/ScopeContext.h src/visual/SpectrumCanvas.h src/visual/WaterfallCanvas.h src/visual/GainCanvas.h src/visual/ImagePanel.h src/process/VisualProcessor.h src/process/ScopeVisualProcessor.h src/process/SpectrumVisualProcessor.h src/process/FFTVisualDataThread.h src/process/FFTDataDistributor.h src/process/SpectrumVisualDataThread.h src/ui/GLPanel.h src/ui/UITestCanvas.cpp src/ui/UITestCanvas.h src/ui/UITestContext.cpp src/ui/UITestContext.h src/forms/SDRDevices/SDRDevices.h src/forms/SDRDevices/SDRDevicesForm.h src/forms/SDRDevices/SDRDeviceAdd.h src/forms/SDRDevices/SDRDeviceAddForm.h src/forms/Bookmark/BookmarkPanel.h src/forms/Bookmark/BookmarkView.h src/forms/Dialog/ActionDialogBase.h src/forms/Dialog/ActionDialog.h src/forms/Dialog/AboutDialogBase.h src/forms/Dialog/AboutDialog.h external/lodepng/lodepng.h external/tinyxml/tinyxml.h external/tinyxml/tinystr.h external/cubicvr2/math/aabb.h external/cubicvr2/math/cubic_math.h external/cubicvr2/math/cubic_types.h external/cubicvr2/math/frustum.h external/cubicvr2/math/mat3.h external/cubicvr2/math/mat4.h external/cubicvr2/math/plane.h external/cubicvr2/math/quaternion.h external/cubicvr2/math/sphere.h external/cubicvr2/math/transform.h external/cubicvr2/math/triangle.h external/cubicvr2/math/vec2.h external/cubicvr2/math/vec3.h external/cubicvr2/math/vec4.h ) IF(ENABLE_DIGITAL_LAB) SET (cubicsdr_headers ${cubicsdr_headers} src/forms/DigitalConsole/DigitalConsole.h src/forms/DigitalConsole/DigitalConsoleFrame.h src/modules/modem/digital/ModemASK.h src/modules/modem/digital/ModemAPSK.h src/modules/modem/digital/ModemBPSK.h src/modules/modem/digital/ModemDPSK.h src/modules/modem/digital/ModemGMSK.h src/modules/modem/digital/ModemPSK.h src/modules/modem/digital/ModemOOK.h src/modules/modem/digital/ModemST.h src/modules/modem/digital/ModemSQAM.h src/modules/modem/digital/ModemQAM.h src/modules/modem/digital/ModemQPSK.h src/modules/modem/digital/ModemFSK.h ) ENDIF() IF (USE_HAMLIB) SET (cubicsdr_headers ${cubicsdr_headers} src/forms/Dialog/PortSelectorDialogBase.h src/forms/Dialog/PortSelectorDialog.h src/rig/RigThread.h external/rs232/rs232.h ) SET (cubicsdr_sources ${cubicsdr_sources} src/forms/Dialog/PortSelectorDialogBase.cpp src/forms/Dialog/PortSelectorDialog.cpp src/rig/RigThread.cpp ) IF(WIN32) SET (cubicsdr_sources ${cubicsdr_sources} external/rs232/rs232-win.cpp ) ELSE() SET (cubicsdr_sources ${cubicsdr_sources} external/rs232/rs232-linux.cpp ) ENDIF() include_directories ( external/rs232/ ) ENDIF() SET (CUBICSDR_FONTS ${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_mono27.fnt ${PROJECT_SOURCE_DIR}/font/vera_sans_mono32.fnt ${PROJECT_SOURCE_DIR}/font/vera_sans_mono36.fnt ${PROJECT_SOURCE_DIR}/font/vera_sans_mono48.fnt ${PROJECT_SOURCE_DIR}/font/vera_sans_mono64.fnt ${PROJECT_SOURCE_DIR}/font/vera_sans_mono72.fnt ${PROJECT_SOURCE_DIR}/font/vera_sans_mono96.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_mono27_0.png ${PROJECT_SOURCE_DIR}/font/vera_sans_mono32_0.png ${PROJECT_SOURCE_DIR}/font/vera_sans_mono36_0.png ${PROJECT_SOURCE_DIR}/font/vera_sans_mono48_0.png ${PROJECT_SOURCE_DIR}/font/vera_sans_mono64_0.png ${PROJECT_SOURCE_DIR}/font/vera_sans_mono72_0.png ${PROJECT_SOURCE_DIR}/font/vera_sans_mono96_0.png ) set(REG_EXT "[^/]*([.]cpp|[.]c|[.]h|[.]hpp)$") SOURCE_GROUP("Base" REGULAR_EXPRESSION "src/${REG_EXT}") SOURCE_GROUP("Forms\\SDRDevices" REGULAR_EXPRESSION "src/forms/SDRDevices/${REG_EXT}") SOURCE_GROUP("Forms\\Bookmark" REGULAR_EXPRESSION "src/forms/Bookmark/${REG_EXT}") SOURCE_GROUP("Forms\\Dialog" REGULAR_EXPRESSION "src/forms/Dialog/${REG_EXT}") SOURCE_GROUP("SDR" REGULAR_EXPRESSION "src/sdr/${REG_EXT}") IF(USE_HAMLIB) SOURCE_GROUP("Rig" REGULAR_EXPRESSION "src/rig/${REG_EXT}") SOURCE_GROUP("_ext-RS-232" REGULAR_EXPRESSION "external/rs232/${REG_EXT}") ENDIF() SOURCE_GROUP("Demodulator" REGULAR_EXPRESSION "src/demod/${REG_EXT}") SOURCE_GROUP("Modem" REGULAR_EXPRESSION "src/modules/modem/${REG_EXT}") SOURCE_GROUP("Modem\\Analog" REGULAR_EXPRESSION "src/modules/modem/analog/${REG_EXT}") IF(ENABLE_DIGITAL_LAB) SOURCE_GROUP("Modem\\Digital" REGULAR_EXPRESSION "src/modules/modem/digital/${REG_EXT}") SOURCE_GROUP("Forms\\DigitalConsole" REGULAR_EXPRESSION "src/forms/DigitalConsole/${REG_EXT}") ENDIF() SOURCE_GROUP("Audio" REGULAR_EXPRESSION "src/audio/${REG_EXT}") SOURCE_GROUP("Utility" REGULAR_EXPRESSION "src/util/${REG_EXT}") SOURCE_GROUP("Visual" REGULAR_EXPRESSION "src/visual/${REG_EXT}") SOURCE_GROUP("Panel" REGULAR_EXPRESSION "src/panel/${REG_EXT}") SOURCE_GROUP("Process" REGULAR_EXPRESSION "src/process/${REG_EXT}") SOURCE_GROUP("UI" REGULAR_EXPRESSION "src/ui/${REG_EXT}") SOURCE_GROUP("_ext-LodePNG" REGULAR_EXPRESSION "external/lodepng/.*${REG_EXT}") SOURCE_GROUP("_ext-TinyXML" REGULAR_EXPRESSION "external/tinyxml/.*${REG_EXT}") SOURCE_GROUP("_ext-CubicVR2" REGULAR_EXPRESSION "external/cubicvr2/.*${REG_EXT}") include_directories ( ${PROJECT_SOURCE_DIR}/src/forms/SDRDevices ${PROJECT_SOURCE_DIR}/src/forms/DigitalConsole ${PROJECT_SOURCE_DIR}/src/forms/Bookmark ${PROJECT_SOURCE_DIR}/src/forms/Dialog ${PROJECT_SOURCE_DIR}/src/sdr ${PROJECT_SOURCE_DIR}/src/demod ${PROJECT_SOURCE_DIR}/src/modules ${PROJECT_SOURCE_DIR}/src/modules/modem ${PROJECT_SOURCE_DIR}/src/modules/modem/digital ${PROJECT_SOURCE_DIR}/src/modules/modem/analog ${PROJECT_SOURCE_DIR}/src/audio ${PROJECT_SOURCE_DIR}/src/util ${PROJECT_SOURCE_DIR}/src/panel ${PROJECT_SOURCE_DIR}/src/visual ${PROJECT_SOURCE_DIR}/src/process ${PROJECT_SOURCE_DIR}/src/ui ${PROJECT_SOURCE_DIR}/src/rig ${PROJECT_SOURCE_DIR}/src ${PROJECT_SOURCE_DIR}/external/lodepng ${PROJECT_SOURCE_DIR}/external/tinyxml ${PROJECT_SOURCE_DIR}/external/cubicvr2/math ) set(RES_FILES "") if(MINGW OR MSVC) set(RES_FILES ${PROJECT_SOURCE_DIR}/cubicsdr.rc) set(CMAKE_RC_COMPILER_INIT windres) ENABLE_LANGUAGE(RC) IF(EX_PLATFORM EQUAL 64) SET(RC_TARGET "pe-x86-64") ELSE(EX_PLATFORM EQUAL 64) SET(RC_TARGET "pe-i386") ENDIF(EX_PLATFORM EQUAL 64) SET(CMAKE_RC_COMPILE_OBJECT " -O coff -i -o ") endif(MINGW OR MSVC) IF (NOT BUNDLE_APP) configure_files(${PROJECT_SOURCE_DIR}/font ${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME}/fonts "*.fnt") configure_files(${PROJECT_SOURCE_DIR}/font ${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME}/fonts "*.png") configure_files(${PROJECT_SOURCE_DIR}/icon ${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME} CubicSDR.ico) IF(MSVC) configure_files(${PROJECT_SOURCE_DIR}/external/liquid-dsp/msvc/${EX_PLATFORM}/ ${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME} "*.dll") ENDIF() IF (CUBICSDR_HAS_HEADER_IMAGE) configure_files(${CUBICSDR_HEADER_IMAGE_DIR} ${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME} ${CUBICSDR_HEADER_IMAGE_FILE}) ENDIF() add_executable(CubicSDR ${cubicsdr_sources} ${cubicsdr_headers} ${RES_FILES}) target_link_libraries(CubicSDR ${LIQUID_LIB} ${wxWidgets_LIBRARIES} ${OPENGL_LIBRARIES} ${OTHER_LIBRARIES}) ENDIF (NOT BUNDLE_APP) IF (MSVC) set_target_properties(CubicSDR PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:WINDOWS") set_target_properties(CubicSDR PROPERTIES COMPILE_DEFINITIONS_DEBUG "_WINDOWS;WIN32_LEAN_AND_MEAN") set_target_properties(CubicSDR PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:WINDOWS") set_target_properties(CubicSDR PROPERTIES COMPILE_DEFINITIONS_RELWITHDEBINFO "_WINDOWS;WIN32_LEAN_AND_MEAN") set_target_properties(CubicSDR PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS") set_target_properties(CubicSDR PROPERTIES COMPILE_DEFINITIONS_RELEASE "_WINDOWS;WIN32_LEAN_AND_MEAN") set_target_properties(CubicSDR PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS") set_target_properties(CubicSDR PROPERTIES COMPILE_DEFINITIONS_MINSIZEREL "_WINDOWS;WIN32_LEAN_AND_MEAN") set(CMAKE_CREATE_WIN32_EXE "/SUBSYSTEM:WINDOWS /ENTRY:\"mainCRTStartup\"") set_target_properties (CubicSDR PROPERTIES OUTPUT_NAME "${CUBICSDR_INSTALL_NAME}") ADD_DEFINITIONS( /wd\"4996\" ) ENDIF(MSVC) IF (APPLE) ADD_DEFINITIONS( -DHAVE_TYPE_TRAITS=1 -mmacosx-version-min=10.9 ) ENDIF(APPLE) IF (APPLE AND BUNDLE_APP) PROJECT(CubicSDR) set(CPACK_BINARY_DRAGNDROP ON) SET(MACOSX_BUNDLE_BUNDLE_NAME CubicSDR) SET(CPACK_APPLE_BUNDLE_ID "com.cubicproductions.cubicsdr") set(CUBICSDR_CODE_SIGN OFF CACHE BOOL "Code Signing") set(BUNDLE_SOAPY_MODS OFF CACHE BOOL "Bundle local SoapySDR modules") set(BUNDLE_MIR_SDR OFF CACHE BOOL "Bundle mir_sdr for personal use only -- do not distribute.") IF (BUNDLE_SOAPY_MODS) 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( -std=c++0x -pthread -D_OSX_APP_ ) ADD_EXECUTABLE(CubicSDR MACOSX_BUNDLE ${cubicsdr_sources} ${cubicsdr_headers} ${CUBICSDR_FONTS} ${PROJECT_SOURCE_DIR}/icon/CubicSDR.icns ) SET_SOURCE_FILES_PROPERTIES( ${PROJECT_SOURCE_DIR}/icon/CubicSDR.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources ) SET_SOURCE_FILES_PROPERTIES( ${CUBICSDR_FONTS} PROPERTIES MACOSX_PACKAGE_LOCATION Resources/fonts ) target_link_libraries(CubicSDR ${LIQUID_LIB} ${wxWidgets_LIBRARIES} ${OPENGL_LIBRARIES} ${OTHER_LIBRARIES}) SET_TARGET_PROPERTIES(CubicSDR PROPERTIES MACOSX_BUNDLE TRUE MACOSX_BUNDLE_INFO_STRING "CubicSDR Open-Source Software-Defined Radio Application" MACOSX_BUNDLE_BUNDLE_NAME "CubicSDR" MACOSX_BUNDLE_BUNDLE_VERSION "${CUBICSDR_VERSION}" MACOSX_BUNDLE_LONG_VERSION_STRING "${CUBICSDR_VERSION_MAJOR}.${CUBICSDR_VERSION_MINOR}.${CUBICSDR_VERSION_PATCH}${CUBICSDR_VERSION_SUFFIX}" MACOSX_BUNDLE_SHORT_VERSION_STRING "${CUBICSDR_VERSION_MAJOR}.${CUBICSDR_VERSION_MINOR}.${CUBICSDR_VERSION_PATCH}" MACOSX_BUNDLE_GUI_IDENTIFIER "com.cubicproductions.cubicsdr" MACOSX_BUNDLE_ICON_FILE "CubicSDR.icns" MACOSX_BUNDLE_COPYRIGHT "Copyright 2015 Charles J. Cliffe. All Rights Reserved." ) SET(APPS "${CMAKE_BINARY_DIR}/${EX_PLATFORM_NAME}/CubicSDR.app") # SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE) # SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) IF (BUNDLE_SOAPY_MODS) message(STATUS "SOAPY_ROOT: ${SOAPY_SDR_ROOT}") SET(SOAPY_SDR_MOD_PATH "${SOAPY_SDR_ROOT}/lib/SoapySDR/modules${SOAPY_SDR_ABI_VERSION}") message(STATUS "SOAPY_SDR_MOD_PATH: ${SOAPY_SDR_MOD_PATH}") file(GLOB SOAPY_MODS ${SOAPY_SDR_MOD_PATH}/*.so) FOREACH(SOAPY_MOD_FILE ${SOAPY_MODS}) INSTALL( FILES "${SOAPY_MOD_FILE}" DESTINATION "${APPS}/Contents/MacOS/modules" COMPONENT Runtime ) ENDFOREACH() ENDIF(BUNDLE_SOAPY_MODS) SET_TARGET_PROPERTIES(CubicSDR PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${PROJECT_SOURCE_DIR}/cmake/CubicSDRInfo.plist.in") INSTALL(CODE " SET(BU_COPY_FULL_FRAMEWORK_CONTENTS ON) include(BundleUtilities) fixup_bundle(\"${APPS}\" \"\" \"/usr/local/lib\") " COMPONENT Runtime) IF (BUNDLE_SOAPY_MODS) FOREACH(SOAPY_MOD_FILE ${SOAPY_MODS}) GET_FILENAME_COMPONENT(SOAPY_MOD_NAME ${SOAPY_MOD_FILE} NAME) IF(NOT BUNDLE_MIR_SDR) # prevent inclusion of libmirsdrapi-rsp.so IF(${SOAPY_MOD_NAME} STREQUAL "libsdrPlaySupport.so") message(STATUS "Excluding libsdrPlaySupport.so") CONTINUE() ELSE() message(STATUS "Bundling ${SOAPY_MOD_NAME} from ${SOAPY_MOD_FILE}") ENDIF() ENDIF() INSTALL(CODE " fixup_bundle(\"${APPS}\" \"${APPS}/Contents/MacOS/modules/${SOAPY_MOD_NAME}\" \"/usr/local/lib\") " COMPONENT Runtime) ENDFOREACH() ENDIF(BUNDLE_SOAPY_MODS) IF (CUBICSDR_CODE_SIGN) SET (CUBICSDR_CERT "3rd Party Mac Developer Application: [Name]" CACHE STRING "Code signing certificate name.") MESSAGE(STATUS "Code Signing Enabled: ${CUBICSDR_CERT}") CONFIGURE_FILE( "${PROJECT_SOURCE_DIR}/cmake/code_sign.sh.in" "${CMAKE_CURRENT_BINARY_DIR}/code_sign.sh" ) CONFIGURE_FILE( "${PROJECT_SOURCE_DIR}/cmake/dmg_sign.sh.in" "${CMAKE_CURRENT_BINARY_DIR}/dmg_sign.sh" ) ADD_CUSTOM_COMMAND( TARGET CubicSDR COMMAND chmod ARGS +x ${CMAKE_CURRENT_BINARY_DIR}/code_sign.sh ${CMAKE_CURRENT_BINARY_DIR}/dmg_sign.sh ) INSTALL(CODE " execute_process( COMMAND ${CMAKE_COMMAND} -E echo \"Signing code..\" COMMAND \"${CMAKE_CURRENT_BINARY_DIR}/code_sign.sh\" )" COMPONENT Runtime) ADD_CUSTOM_COMMAND( TARGET CubicSDR POST_BUILD COMMAND ${CMAKE_CPACK_COMMAND} COMMAND ${CMAKE_COMMAND} -E echo "Signing package.." COMMAND "${CMAKE_CURRENT_BINARY_DIR}/dmg_sign.sh" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) ENDIF(CUBICSDR_CODE_SIGN) INSTALL(CODE " VERIFY_APP(\"${APPS}\") " COMPONENT Runtime) INSTALL(TARGETS CubicSDR BUNDLE DESTINATION . COMPONENT Runtime ) include(CPack) 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 ${PROJECT_SOURCE_DIR}/src/CubicSDR.png DESTINATION share/cubicsdr) install(FILES ${CUBICSDR_FONTS} DESTINATION share/cubicsdr/fonts) 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 NOT BUILD_INSTALLER) ADD_DEFINITIONS( -DRES_FOLDER="../share/cubicsdr/" ) INSTALL(TARGETS CubicSDR DESTINATION bin) INSTALL(FILES ${LIQUID_DLL} DESTINATION bin) IF(USE_HAMLIB) FOREACH(HAMLIB_DLL ${HAMLIB_DLLS}) message(STATUS "Copying Hamlib DLL: ${HAMLIB_DLL}") INSTALL( FILES "${HAMLIB_DLL}" DESTINATION bin ) ENDFOREACH() ENDIF() INSTALL(FILES ${PROJECT_SOURCE_DIR}/src/CubicSDR.png DESTINATION share/cubicsdr) INSTALL(FILES ${CUBICSDR_FONTS} DESTINATION share/cubicsdr/fonts) IF (CUBICSDR_HAS_HEADER_IMAGE) INSTALL(FILES ${CUBICSDR_HEADER_IMAGE} DESTINATION share/cubicsdr/) ENDIF() ENDIF() IF (WIN32 AND BUILD_INSTALLER) set(BUNDLE_SOAPY_MODS OFF CACHE BOOL "Bundle local SoapySDR modules") set(CPACK_GENERATOR NSIS) set(CPACK_PACKAGE_NAME "${CUBICSDR_INSTALL_NAME}") set(CPACK_NSIS_DISPLAY_NAME "${CUBICSDR_INSTALL_TITLE}") set(CPACK_PACKAGE_VENDOR "cubicsdr.com") set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CUBICSDR_INSTALL_NAME}") SET(CPACK_NSIS_INSTALLED_ICON_NAME "CubicSDR.ico") SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE") set(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/icon\\\\NSIS_Header.bmp") IF(EX_PLATFORM EQUAL 64) SET(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") SET(CPACK_NSIS_PACKAGE_NAME "${CUBICSDR_INSTALL_NAME}") SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CUBICSDR_INSTALL_NAME} ${CPACK_PACKAGE_VERSION}") set(CMAKE_CL_64 TRUE) # This gets around a bug in the CPack installer name generation for MinGW 64-bit since 2.8 ELSE(EX_PLATFORM EQUAL 64) SET(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") SET(CPACK_NSIS_PACKAGE_NAME "${CUBICSDR_INSTALL_NAME} (x86)") SET(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${CUBICSDR_INSTALL_NAME} ${CPACK_PACKAGE_VERSION} (x86)") set(CMAKE_CL_64 FALSE) ENDIF(EX_PLATFORM EQUAL 64) set(CPACK_NSIS_EXECUTABLES_DIRECTORY ".") install(TARGETS CubicSDR RUNTIME DESTINATION .) install(FILES ${PROJECT_SOURCE_DIR}/icon/CubicSDR.ico ${LIQUID_DLL} DESTINATION .) install(FILES ${CUBICSDR_FONTS} DESTINATION fonts) IF (CUBICSDR_HAS_HEADER_IMAGE) INSTALL(FILES ${CUBICSDR_HEADER_IMAGE} DESTINATION .) ENDIF() IF(USE_HAMLIB) FOREACH(HAMLIB_DLL ${HAMLIB_DLLS}) message(STATUS "Copying Hamlib DLL: ${HAMLIB_DLL}") INSTALL( FILES ${HAMLIB_DLL} DESTINATION .) ENDFOREACH() ENDIF() IF (BUNDLE_SOAPY_MODS) 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${SOAPY_SDR_ABI_VERSION}/*.dll) message(STATUS "SOAPY_BINS: ${SOAPY_BINS}") message(STATUS "SOAPY_MODS: ${SOAPY_MODS}") install(FILES ${SOAPY_BINS} DESTINATION .) install(FILES ${SOAPY_MODS} DESTINATION modules) ENDIF(BUNDLE_SOAPY_MODS) IF(MSVC AND EX_PLATFORM EQUAL 32) file(GLOB MSVC32_DEPS ${PROJECT_SOURCE_DIR}/external/msvc/${EX_PLATFORM_NAME}/*.dll) install(FILES ${MSVC32_DEPS} DESTINATION .) ENDIF(MSVC AND EX_PLATFORM EQUAL 32) 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) set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ExecWait '\\\"$INSTDIR\\\\vc_redist\\\\vc_redist.${EX_PLATFORM_NAME}.exe\\\" /passive /norestart'") ENDIF (MSVC) INCLUDE(CPack) ENDIF (WIN32 AND BUILD_INSTALLER) IF (UNIX AND NOT APPLE AND BUILD_DEB) set(CPACK_GENERATOR DEB) set(CPACK_PACKAGE_NAME "CubicSDR") SET(CPACK_DEBIAN_PACKAGE_DEPENDS " libwxgtk3.0-0, libpulse0") SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Charles J. Cliffe ") SET(CPACK_DEBIAN_PACKAGE_DESCRIPTION "CubicSDR Software Defined Radio application v${CUBICSDR_VERSION}") 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="${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") 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 ${PROJECT_SOURCE_DIR}/src/CubicSDR.png DESTINATION share/cubicsdr) install(FILES ${CUBICSDR_FONTS} DESTINATION share/cubicsdr/fonts) INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/CubicSDR.desktop" DESTINATION share/applications) INCLUDE(CPack) 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") 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 ${PROJECT_SOURCE_DIR}/src/CubicSDR.png DESTINATION share/cubicsdr) INSTALL(FILES ${CUBICSDR_FONTS} DESTINATION share/cubicsdr/fonts) IF (CUBICSDR_HAS_HEADER_IMAGE) INSTALL(FILES ${CUBICSDR_HEADER_IMAGE} DESTINATION share/cubicsdr) ENDIF() 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( "${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()