From d9ea8d4abca415822930be4951a270e6e9adacf8 Mon Sep 17 00:00:00 2001 From: "Sergei I. Korolev" Date: Thu, 30 Apr 2020 15:19:19 +0300 Subject: [PATCH] Added more flexible build options --- CMakeLists.txt | 4 + cmake/Modules/FindCM256cc.cmake | 66 +- cmake/Modules/FindCodec2.cmake | 66 +- cmake/Modules/FindLibMbe.cmake | 53 +- cmake/Modules/FindLimeSuite.cmake | 61 +- cmake/Modules/FindSerialDV.cmake | 53 +- debian/rules | 0 devices/bladerf1/CMakeLists.txt | 2 +- devices/bladerf2/CMakeLists.txt | 2 +- devices/hackrf/CMakeLists.txt | 2 +- devices/limesdr/CMakeLists.txt | 2 +- devices/perseus/CMakeLists.txt | 2 +- devices/plutosdr/CMakeLists.txt | 2 +- devices/soapysdr/CMakeLists.txt | 2 +- external/CMakeLists.txt | 1362 +++++++++-------- plugins/channelrx/demoddsd/CMakeLists.txt | 4 +- plugins/channelrx/demodfreedv/CMakeLists.txt | 2 +- plugins/channelrx/remotesink/CMakeLists.txt | 2 +- plugins/channeltx/modfreedv/CMakeLists.txt | 2 +- plugins/channeltx/remotesource/CMakeLists.txt | 2 +- .../samplesink/bladerf1output/CMakeLists.txt | 2 +- .../samplesink/bladerf2output/CMakeLists.txt | 2 +- .../samplesink/limesdroutput/CMakeLists.txt | 2 +- .../samplesink/plutosdroutput/CMakeLists.txt | 2 +- .../samplesink/remoteoutput/CMakeLists.txt | 2 +- plugins/samplesource/airspy/CMakeLists.txt | 2 +- plugins/samplesource/airspyhf/CMakeLists.txt | 2 +- .../samplesource/bladerf1input/CMakeLists.txt | 2 +- .../samplesource/bladerf2input/CMakeLists.txt | 2 +- .../samplesource/limesdrinput/CMakeLists.txt | 2 +- plugins/samplesource/perseus/CMakeLists.txt | 2 +- .../samplesource/plutosdrinput/CMakeLists.txt | 2 +- .../samplesource/remoteinput/CMakeLists.txt | 2 +- plugins/samplesource/sdrplay/CMakeLists.txt | 4 + sdrbase/CMakeLists.txt | 6 +- 35 files changed, 908 insertions(+), 819 deletions(-) mode change 100644 => 100755 debian/rules diff --git a/CMakeLists.txt b/CMakeLists.txt index 79688a9f5..fa5487fe7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -108,6 +108,10 @@ if(NOT DEBUG_OUTPUT) add_definitions("-DQT_NO_DEBUG_OUTPUT") endif() +if(ENABLE_EXTERNAL_LIBRARIES STREQUAL "AUTO") + set(AUTO_EXTERNAL_LIBRARIES ON CACHE INTERNAL "") +endif(ENABLE_EXTERNAL_LIBRARIES) + # declare build structures # !! change sdrbase/plugins/pluginmanager.cpp too !! set(SDRANGEL_BINARY_BIN_DIR "${CMAKE_BINARY_DIR}/bin") diff --git a/cmake/Modules/FindCM256cc.cmake b/cmake/Modules/FindCM256cc.cmake index 4c6bab685..23a5dfe51 100644 --- a/cmake/Modules/FindCM256cc.cmake +++ b/cmake/Modules/FindCM256cc.cmake @@ -1,36 +1,38 @@ -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(PC_CM256cc "libcm256cc") +if (NOT CM256CC_FOUND) + INCLUDE(FindPkgConfig) + PKG_CHECK_MODULES(PC_CM256cc "libcm256cc") -FIND_PATH(CM256CC_INCLUDE_DIR - NAMES cm256cc/cm256.h - HINTS ${CM256CC_DIR}/include - ${PC_CM256CC_INCLUDE_DIR} - ${CMAKE_INSTALL_PREFIX}/include - PATHS /usr/local/include - /usr/include -) + FIND_PATH(CM256CC_INCLUDE_DIR + NAMES cm256cc/cm256.h + HINTS ${CM256CC_DIR}/include + ${PC_CM256CC_INCLUDE_DIR} + ${CMAKE_INSTALL_PREFIX}/include + PATHS /usr/local/include + /usr/include + ) -FIND_LIBRARY(CM256CC_LIBRARIES - NAMES cm256cc libcm256cc - HINTS ${CM256CC_DIR}/lib - ${CM256CC_DIR}/lib64 - ${PC_CM256CC_LIBDIR} - ${CMAKE_INSTALL_PREFIX}/lib - ${CMAKE_INSTALL_PREFIX}/lib64 - PATHS /usr/local/lib - /usr/local/lib64 - /usr/lib - /usr/lib64 -) + FIND_LIBRARY(CM256CC_LIBRARIES + NAMES cm256cc libcm256cc + HINTS ${CM256CC_DIR}/lib + ${CM256CC_DIR}/lib64 + ${PC_CM256CC_LIBDIR} + ${CMAKE_INSTALL_PREFIX}/lib + ${CMAKE_INSTALL_PREFIX}/lib64 + PATHS /usr/local/lib + /usr/local/lib64 + /usr/lib + /usr/lib64 + ) -if(CM256CC_INCLUDE_DIR AND CM256CC_LIBRARIES) - set(CM256CC_FOUND TRUE CACHE INTERNAL "CM256CC found") - message(STATUS "Found CM256cc: ${CM256CC_INCLUDE_DIR}, ${CM256CC_LIBRARIES}") -else(CM256CC_INCLUDE_DIR AND CM256CC_LIBRARIES) - set(CM256CC_FOUND FALSE CACHE INTERNAL "CM256CC found") - message(STATUS "CM256cc not found") -endif(CM256CC_INCLUDE_DIR AND CM256CC_LIBRARIES) + if(CM256CC_INCLUDE_DIR AND CM256CC_LIBRARIES) + set(CM256CC_FOUND TRUE CACHE INTERNAL "CM256CC found") + message(STATUS "Found CM256cc: ${CM256CC_INCLUDE_DIR}, ${CM256CC_LIBRARIES}") + else(CM256CC_INCLUDE_DIR AND CM256CC_LIBRARIES) + set(CM256CC_FOUND FALSE CACHE INTERNAL "CM256CC found") + message(STATUS "CM256cc not found") + endif(CM256CC_INCLUDE_DIR AND CM256CC_LIBRARIES) -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(CM256CC DEFAULT_MSG CM256CC_LIBRARIES CM256CC_INCLUDE_DIR) -MARK_AS_ADVANCED(CM256CC_LIBRARIES CM256CC_INCLUDE_DIR) + INCLUDE(FindPackageHandleStandardArgs) + FIND_PACKAGE_HANDLE_STANDARD_ARGS(CM256CC DEFAULT_MSG CM256CC_LIBRARIES CM256CC_INCLUDE_DIR) + MARK_AS_ADVANCED(CM256CC_LIBRARIES CM256CC_INCLUDE_DIR) +endif (NOT CM256CC_FOUND) \ No newline at end of file diff --git a/cmake/Modules/FindCodec2.cmake b/cmake/Modules/FindCodec2.cmake index 2d4dd4db9..77c8e6317 100644 --- a/cmake/Modules/FindCodec2.cmake +++ b/cmake/Modules/FindCodec2.cmake @@ -1,36 +1,38 @@ -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(PC_CODEC2 "codec2") +if (NOT CODEC2_FOUND) + INCLUDE(FindPkgConfig) + PKG_CHECK_MODULES(PC_CODEC2 "codec2") -FIND_PATH(CODEC2_INCLUDE_DIR - NAMES codec2/codec2.h - HINTS ${CODEC2_DIR}/include - ${PC_CODEC2_INCLUDE_DIR} - ${CMAKE_INSTALL_PREFIX}/include - PATHS /usr/local/include - /usr/include -) + FIND_PATH(CODEC2_INCLUDE_DIR + NAMES codec2/codec2.h + HINTS ${CODEC2_DIR}/include + ${PC_CODEC2_INCLUDE_DIR} + ${CMAKE_INSTALL_PREFIX}/include + PATHS /usr/local/include + /usr/include + ) -FIND_LIBRARY(CODEC2_LIBRARIES - NAMES codec2 libcodec2 - HINTS ${CODEC2_DIR}/lib - ${CODEC2_DIR}/lib64 - ${PC_CODEC2_LIBDIR} - ${CMAKE_INSTALL_PREFIX}/lib - ${CMAKE_INSTALL_PREFIX}/lib64 - PATHS /usr/local/lib - /usr/local/lib64 - /usr/lib - /usr/lib64 -) + FIND_LIBRARY(CODEC2_LIBRARIES + NAMES codec2 libcodec2 + HINTS ${CODEC2_DIR}/lib + ${CODEC2_DIR}/lib64 + ${PC_CODEC2_LIBDIR} + ${CMAKE_INSTALL_PREFIX}/lib + ${CMAKE_INSTALL_PREFIX}/lib64 + PATHS /usr/local/lib + /usr/local/lib64 + /usr/lib + /usr/lib64 + ) -if(CODEC2_INCLUDE_DIR AND CODEC2_LIBRARIES) - set(CODEC2_FOUND TRUE CACHE INTERNAL "CODEC2 found") - message(STATUS "Found Codec2: ${CODEC2_INCLUDE_DIR}, ${CODEC2_LIBRARIES}") -else() - set(CODEC2_FOUND FALSE CACHE INTERNAL "CODEC2 found") - message(STATUS "Codec2 not found") -endif() + if(CODEC2_INCLUDE_DIR AND CODEC2_LIBRARIES) + set(CODEC2_FOUND TRUE CACHE INTERNAL "CODEC2 found") + message(STATUS "Found Codec2: ${CODEC2_INCLUDE_DIR}, ${CODEC2_LIBRARIES}") + else() + set(CODEC2_FOUND FALSE CACHE INTERNAL "CODEC2 found") + message(STATUS "Codec2 not found") + endif() -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(CODEC2 DEFAULT_MSG CODEC2_LIBRARIES CODEC2_INCLUDE_DIR) -MARK_AS_ADVANCED(CODEC2_LIBRARIES CODEC2_INCLUDE_DIR) \ No newline at end of file + INCLUDE(FindPackageHandleStandardArgs) + FIND_PACKAGE_HANDLE_STANDARD_ARGS(CODEC2 DEFAULT_MSG CODEC2_LIBRARIES CODEC2_INCLUDE_DIR) + MARK_AS_ADVANCED(CODEC2_LIBRARIES CODEC2_INCLUDE_DIR) +endif (NOT CODEC2_FOUND) \ No newline at end of file diff --git a/cmake/Modules/FindLibMbe.cmake b/cmake/Modules/FindLibMbe.cmake index cc65d7116..28638a576 100644 --- a/cmake/Modules/FindLibMbe.cmake +++ b/cmake/Modules/FindLibMbe.cmake @@ -1,33 +1,34 @@ # Find libmbe +if (NOT LIBMBE_FOUND) + find_path(LIBMBE_INCLUDE_DIR + NAMES mbelib.h + HINTS ${MBE_DIR}/include + PATHS /usr/include + /usr/local/include + ) -find_path(LIBMBE_INCLUDE_DIR - NAMES mbelib.h - HINTS ${MBE_DIR}/include - PATHS /usr/include - /usr/local/include -) + set(LIBMBE_NAMES ${LIBMBE_NAMES} mbe libmbe) -set(LIBMBE_NAMES ${LIBMBE_NAMES} mbe libmbe) + find_library(LIBMBE_LIBRARIES + NAMES ${LIBMBE_NAMES} + HINTS ${MBE_DIR}/lib + PATHS /usr/lib + /usr/local/lib + ) -find_library(LIBMBE_LIBRARY - NAMES ${LIBMBE_NAMES} - HINTS ${MBE_DIR}/lib - PATHS /usr/include - /usr/local/include -) + if (LIBMBE_INCLUDE_DIR AND LIBMBE_LIBRARIES) + set(LIBMBE_FOUND TRUE CACHE INTERNAL "libmbe found") -if (LIBMBE_INCLUDE_DIR AND LIBMBE_LIBRARY) - set(LIBMBE_FOUND TRUE) -endif (LIBMBE_INCLUDE_DIR AND LIBMBE_LIBRARY) + if (NOT LibMbe_FIND_QUIETLY) + message(STATUS "Found LibMbe: ${LIBMBE_INCLUDE_DIR}, ${LIBMBE_LIBRARY}") + endif (NOT LibMbe_FIND_QUIETLY) + else (LIBMBE_INCLUDE_DIR AND LIBMBE_LIBRARIES) + set(LIBMBE_FOUND FALSE CACHE INTERNAL "libmbe found") -if (LIBMBE_FOUND) - if (NOT LibMbe_FIND_QUIETLY) - message (STATUS "Found LibMbe: ${LIBMBE_INCLUDE_DIR}, ${LIBMBE_LIBRARY}") - endif (NOT LibMbe_FIND_QUIETLY) -else (LIBMBE_FOUND) - if (LibMbe_FIND_REQUIRED) - message (FATAL_ERROR "Could not find mbe") - endif (LibMbe_FIND_REQUIRED) -endif (LIBMBE_FOUND) + if (LibMbe_FIND_REQUIRED) + message(FATAL_ERROR "Could not find LibMbe") + endif (LibMbe_FIND_REQUIRED) + endif (LIBMBE_INCLUDE_DIR AND LIBMBE_LIBRARIES) -mark_as_advanced(LIBMBE_INCLUDE_DIR LIBMBE_LIBRARY) + mark_as_advanced(LIBMBE_INCLUDE_DIR LIBMBE_LIBRARIES) +endif (NOT LIBMBE_FOUND) \ No newline at end of file diff --git a/cmake/Modules/FindLimeSuite.cmake b/cmake/Modules/FindLimeSuite.cmake index d7ea7f41e..2aafa2fbe 100644 --- a/cmake/Modules/FindLimeSuite.cmake +++ b/cmake/Modules/FindLimeSuite.cmake @@ -1,35 +1,34 @@ # Find Lime Suite +if (NOT LIMESUITE_FOUND) + if (NOT LIMESUITE_INCLUDE_DIR) + find_path (LIMESUITE_INCLUDE_DIR + NAMES lime/LimeSuite.h + HINTS ${LIMESUITE_DIR}/include + PATHS /usr/include + /usr/local/include + ) + endif() -if (NOT LIMESUITE_INCLUDE_DIR) - find_path (LIMESUITE_INCLUDE_DIR - NAMES lime/LimeSuite.h - HINTS ${LIMESUITE_DIR}/include - PATHS /usr/include - /usr/local/include - ) -endif() + if (NOT LIMESUITE_LIBRARY) + find_library (LIMESUITE_LIBRARY + NAMES LimeSuite + HINTS ${LIMESUITE_DIR}/lib + ${CMAKE_INSTALL_PREFIX}/lib + ${CMAKE_INSTALL_PREFIX}/lib64 + PATHS /usr/local/lib + /usr/local/lib64 + /usr/lib + /usr/lib64 + ) + endif() -if (NOT LIMESUITE_LIBRARY) - find_library (LIMESUITE_LIBRARY - NAMES LimeSuite - HINTS ${LIMESUITE_DIR}/lib - ${CMAKE_INSTALL_PREFIX}/lib - ${CMAKE_INSTALL_PREFIX}/lib64 - PATHS /usr/local/lib - /usr/local/lib64 - /usr/lib - /usr/lib64 - ) -endif() + if (LIMESUITE_INCLUDE_DIR AND LIMESUITE_LIBRARY) + set(LIMESUITE_FOUND TRUE CACHE INTERNAL "") + message (STATUS "Found Lime Suite: ${LIMESUITE_INCLUDE_DIR}, ${LIMESUITE_LIBRARY}") + else (LIMESUITE_INCLUDE_DIR AND LIMESUITE_LIBRARY) + set(LIMESUITE_FOUND FALSE CACHE INTERNAL "") + message (STATUS "Could not find Lime Suite") + endif (LIMESUITE_INCLUDE_DIR AND LIMESUITE_LIBRARY) -if (LIMESUITE_INCLUDE_DIR AND LIMESUITE_LIBRARY) - set(LIMESUITE_FOUND TRUE) -endif (LIMESUITE_INCLUDE_DIR AND LIMESUITE_LIBRARY) - -if (LIMESUITE_FOUND) - message (STATUS "Found Lime Suite: ${LIMESUITE_INCLUDE_DIR}, ${LIMESUITE_LIBRARY}") -else (LIMESUITE_FOUND) - message (STATUS "Could not find Lime Suite") -endif (LIMESUITE_FOUND) - -mark_as_advanced(LIMESUITE_INCLUDE_DIR LIMESUITE_LIBRARY) + mark_as_advanced(LIMESUITE_INCLUDE_DIR LIMESUITE_LIBRARY) +endif (NOT LIMESUITE_FOUND) \ No newline at end of file diff --git a/cmake/Modules/FindSerialDV.cmake b/cmake/Modules/FindSerialDV.cmake index e4c40b00a..6d6862699 100644 --- a/cmake/Modules/FindSerialDV.cmake +++ b/cmake/Modules/FindSerialDV.cmake @@ -1,33 +1,34 @@ # Find serialDV +if (NOT LIBSERIALDV_FOUND) + find_path(LIBSERIALDV_INCLUDE_DIR + NAMES dvcontroller.h + HINTS ${SERIALDV_DIR}/include/serialdv + PATHS /usr/include/serialdv + /usr/local/include/serialdv + ) -find_path(LIBSERIALDV_INCLUDE_DIR - NAMES dvcontroller.h - HINTS ${SERIALDV_DIR}/include/serialdv - PATHS /usr/include/serialdv - /usr/local/include/serialdv -) + set(LIBSERIAL_NAMES ${LIBSERIAL_NAMES} serialdv libserialdv) -set(LIBSERIAL_NAMES ${LIBSERIAL_NAMES} serialdv libserialdv) + find_library(LIBSERIALDV_LIBRARY + NAMES serialdv + HINTS ${SERIALDV_DIR}/lib + PATHS /usr/lib + /usr/local/lib + ) -find_library(LIBSERIALDV_LIBRARY - NAMES serialdv - HINTS ${SERIALDV_DIR}/lib - PATHS /usr/lib - /usr/local/lib -) + if (LIBSERIALDV_INCLUDE_DIR AND LIBSERIALDV_LIBRARY) + set(LIBSERIALDV_FOUND TRUE CACHE INTERNAL "") -if (LIBSERIALDV_INCLUDE_DIR AND LIBSERIALDV_LIBRARY) - set(LIBSERIALDV_FOUND TRUE) -endif (LIBSERIALDV_INCLUDE_DIR AND LIBSERIALDV_LIBRARY) + if (NOT SerialDV_FIND_QUIETLY) + message (STATUS "Found libserialdv: ${LIBSERIALDV_INCLUDE_DIR}, ${LIBSERIALDV_LIBRARY}") + endif (NOT SerialDV_FIND_QUIETLY) + else (LIBSERIALDV_INCLUDE_DIR AND LIBSERIALDV_LIBRARY) + set(LIBSERIALDV_FOUND FALSE CACHE INTERNAL "") -if (LIBSERIALDV_FOUND) - if (NOT SerialDV_FIND_QUIETLY) - message (STATUS "Found libserialdv: ${LIBSERIALDV_INCLUDE_DIR}, ${LIBSERIALDV_LIBRARY}") - endif (NOT SerialDV_FIND_QUIETLY) -else (LIBSERIALDV_FOUND) - if (SerialDV_FIND_REQUIRED) - message (FATAL_ERROR "Could not find SerialDV") - endif (SerialDV_FIND_REQUIRED) -endif (LIBSERIALDV_FOUND) + if (SerialDV_FIND_REQUIRED) + message (FATAL_ERROR "Could not find SerialDV") + endif (SerialDV_FIND_REQUIRED) + endif (LIBSERIALDV_INCLUDE_DIR AND LIBSERIALDV_LIBRARY) -mark_as_advanced(LIBSERIALDV_INCLUDE_DIR LIBSERIALDV_LIBRARY) + mark_as_advanced(LIBSERIALDV_INCLUDE_DIR LIBSERIALDV_LIBRARY) +endif (NOT LIBSERIALDV_FOUND) \ No newline at end of file diff --git a/debian/rules b/debian/rules old mode 100644 new mode 100755 diff --git a/devices/bladerf1/CMakeLists.txt b/devices/bladerf1/CMakeLists.txt index 989c5c4d7..9d7fcdba1 100644 --- a/devices/bladerf1/CMakeLists.txt +++ b/devices/bladerf1/CMakeLists.txt @@ -21,7 +21,7 @@ add_library(bladerf1device SHARED ${bladerf1device_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(LIBBLADERF_EXTERNAL) add_dependencies(bladerf1device bladerf) endif() diff --git a/devices/bladerf2/CMakeLists.txt b/devices/bladerf2/CMakeLists.txt index 1f5930e45..11fbebc3d 100644 --- a/devices/bladerf2/CMakeLists.txt +++ b/devices/bladerf2/CMakeLists.txt @@ -18,7 +18,7 @@ add_library(bladerf2device SHARED ${bladerf2device_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(LIBBLADERF_EXTERNAL) add_dependencies(bladerf2device bladerf) endif() diff --git a/devices/hackrf/CMakeLists.txt b/devices/hackrf/CMakeLists.txt index c86e2f736..c0e77045e 100644 --- a/devices/hackrf/CMakeLists.txt +++ b/devices/hackrf/CMakeLists.txt @@ -29,7 +29,7 @@ target_link_libraries(hackrfdevice sdrbase ) -if(ENABLE_EXTERNAL_LIBRARIES AND NOT LINUX) +if(LIBHACKRF_EXTERNAL AND NOT LINUX) add_dependencies(hackrfdevice hackrf) endif() diff --git a/devices/limesdr/CMakeLists.txt b/devices/limesdr/CMakeLists.txt index 1482c6706..44f6948dc 100644 --- a/devices/limesdr/CMakeLists.txt +++ b/devices/limesdr/CMakeLists.txt @@ -28,7 +28,7 @@ target_link_libraries(limesdrdevice sdrbase ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(LIMESUITE_EXTERNAL) add_dependencies(limesdrdevice limesuite) endif() diff --git a/devices/perseus/CMakeLists.txt b/devices/perseus/CMakeLists.txt index 1858709d7..ed9965bae 100644 --- a/devices/perseus/CMakeLists.txt +++ b/devices/perseus/CMakeLists.txt @@ -19,7 +19,7 @@ add_library(perseusdevice SHARED ${perseusdevice_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(LIBPERSEUS_EXTERNAL) add_dependencies(perseusdevice perseus) endif() diff --git a/devices/plutosdr/CMakeLists.txt b/devices/plutosdr/CMakeLists.txt index f8ad83148..db56a61d0 100644 --- a/devices/plutosdr/CMakeLists.txt +++ b/devices/plutosdr/CMakeLists.txt @@ -35,7 +35,7 @@ target_link_libraries(plutosdrdevice ${ICONV_LIBRARY} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(LIBIIO_EXTERNAL) add_dependencies(plutosdrdevice libiio) endif() diff --git a/devices/soapysdr/CMakeLists.txt b/devices/soapysdr/CMakeLists.txt index 27000dfec..bcc90e206 100644 --- a/devices/soapysdr/CMakeLists.txt +++ b/devices/soapysdr/CMakeLists.txt @@ -30,7 +30,7 @@ target_link_libraries(soapysdrdevice sdrbase ) -if(ENABLE_EXTERNAL_LIBRARIES AND NOT LINUX) +if(SOAPYSDR_EXTERNAL AND NOT LINUX) add_dependencies(soapysdrdevice soapysdr) endif() diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index f776bdd2c..34a0ac226 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -18,6 +18,7 @@ set(BLADERF_TAG "2019.07") set(LIBIIO_TAG 826563e41b5ce9890b75506f672017de8d76d52d) set(AIRSPYHF_TAG "1.1.5") set(PERSEUS_TAG afefa23e3140ac79d845acb68cf0beeb86d09028) +set(MIRISDR_TAG "v1.1.2") set(PTHREADS4W_TAG "Version-2-11-0-release") set(RTLSDR_TAG be1d1206bfb6e6c41f7d91b20b77e20f929fa6a7) @@ -34,698 +35,769 @@ set(LIBXML2_TAG "v2.9.9") include(ExternalProject) # default build destination in windows to avoid Release/Debug folder -if(WIN32) - # the build will be output on the same folder of sdrangel - set(DEFAULT_OUTPUT_DIRECTORIES - -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${SDRANGEL_BINARY_BIN_DIR} - -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG=${SDRANGEL_BINARY_BIN_DIR} - -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=${SDRANGEL_BINARY_BIN_DIR} - -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY=${SDRANGEL_BINARY_LIB_DIR} - -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG=${SDRANGEL_BINARY_LIB_DIR} - -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE=${SDRANGEL_BINARY_LIB_DIR} - -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=${SDRANGEL_BINARY_LIB_DIR} - -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG=${SDRANGEL_BINARY_LIB_DIR} - -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=${SDRANGEL_BINARY_LIB_DIR} - ) -elseif(LINUX) -set(DEFAULT_OUTPUT_DIRECTORIES - -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${EXTERNAL_BUILD_LIBRARIES}/bin - -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG=${EXTERNAL_BUILD_LIBRARIES}/bin - -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=${EXTERNAL_BUILD_LIBRARIES}/bin - -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY=${EXTERNAL_BUILD_LIBRARIES}/lib - -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG=${EXTERNAL_BUILD_LIBRARIES}/lib - -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE=${EXTERNAL_BUILD_LIBRARIES}/lib - -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=${EXTERNAL_BUILD_LIBRARIES}/lib - -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG=${EXTERNAL_BUILD_LIBRARIES}/lib - -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=${EXTERNAL_BUILD_LIBRARIES}/lib) -endif() +if (WIN32) + # the build will be output on the same folder of sdrangel + set(DEFAULT_OUTPUT_DIRECTORIES + -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${SDRANGEL_BINARY_BIN_DIR} + -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG=${SDRANGEL_BINARY_BIN_DIR} + -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=${SDRANGEL_BINARY_BIN_DIR} + -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY=${SDRANGEL_BINARY_LIB_DIR} + -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG=${SDRANGEL_BINARY_LIB_DIR} + -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE=${SDRANGEL_BINARY_LIB_DIR} + -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=${SDRANGEL_BINARY_LIB_DIR} + -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG=${SDRANGEL_BINARY_LIB_DIR} + -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=${SDRANGEL_BINARY_LIB_DIR} + ) +elseif (LINUX) + set(DEFAULT_OUTPUT_DIRECTORIES + -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=${EXTERNAL_BUILD_LIBRARIES}/bin + -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG=${EXTERNAL_BUILD_LIBRARIES}/bin + -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE=${EXTERNAL_BUILD_LIBRARIES}/bin + -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY=${EXTERNAL_BUILD_LIBRARIES}/lib + -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG=${EXTERNAL_BUILD_LIBRARIES}/lib + -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE=${EXTERNAL_BUILD_LIBRARIES}/lib + -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=${EXTERNAL_BUILD_LIBRARIES}/lib + -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG=${EXTERNAL_BUILD_LIBRARIES}/lib + -DCMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE=${EXTERNAL_BUILD_LIBRARIES}/lib) +endif () -if(LINUX) - # macro that create symbolic links - macro(makeLink src dest target) - if(NOT EXISTS ${dest}) - add_custom_command(TARGET ${target} PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E create_symlink ${src} ${dest} DEPENDS ${dest} COMMENT "mklink ${src} -> ${dest}") - endif() - endmacro() - # macro that copy folder - macro(makeCopy src dest target) - if(NOT EXISTS ${dest}) - add_custom_command(TARGET ${target} PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory ${src} ${dest} DEPENDS ${dest} COMMENT "copy ${src} -> ${dest}") - endif() - endmacro() - # macro that copy file - macro(makeCopyFile src dest target) - if(NOT EXISTS ${dest}) - add_custom_command(TARGET ${target} PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${src} ${dest} DEPENDS ${dest} COMMENT "copy ${src} -> ${dest}") - endif() - endmacro() -else() -# macro that create symbolic links - macro(makeLink src dest target) - if(NOT EXISTS ${dest}) - add_custom_command(TARGET ${target} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E create_symlink ${src} ${dest} DEPENDS ${dest} COMMENT "mklink ${src} -> ${dest}") - endif() - endmacro() +if (LINUX) + # macro that create symbolic links + macro(makeLink src dest target) + if (NOT EXISTS ${dest}) + add_custom_command(TARGET ${target} PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E create_symlink ${src} ${dest} DEPENDS ${dest} COMMENT "mklink ${src} -> ${dest}") + endif () + endmacro() + # macro that copy folder + macro(makeCopy src dest target) + if (NOT EXISTS ${dest}) + add_custom_command(TARGET ${target} PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory ${src} ${dest} DEPENDS ${dest} COMMENT "copy ${src} -> ${dest}") + endif () + endmacro() + # macro that copy file + macro(makeCopyFile src dest target) + if (NOT EXISTS ${dest}) + add_custom_command(TARGET ${target} PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${src} ${dest} DEPENDS ${dest} COMMENT "copy ${src} -> ${dest}") + endif () + endmacro() +else () + # macro that create symbolic links + macro(makeLink src dest target) + if (NOT EXISTS ${dest}) + add_custom_command(TARGET ${target} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E create_symlink ${src} ${dest} DEPENDS ${dest} COMMENT "mklink ${src} -> ${dest}") + endif () + endmacro() - # macro that copy folder - macro(makeCopyDir src dest target) - if(NOT EXISTS ${dest}) - add_custom_command(TARGET ${target} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory ${src} ${dest} DEPENDS ${dest} COMMENT "copy ${src} -> ${dest}") - endif() - endmacro() + # macro that copy folder + macro(makeCopyDir src dest target) + if (NOT EXISTS ${dest}) + add_custom_command(TARGET ${target} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory ${src} ${dest} DEPENDS ${dest} COMMENT "copy ${src} -> ${dest}") + endif () + endmacro() - # macro that copy file - macro(makeCopy src dest target) - if(NOT EXISTS ${dest}) - add_custom_command(TARGET ${target} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${src} ${dest} DEPENDS ${dest} COMMENT "copy ${src} -> ${dest}") - endif() - endmacro() -endif(LINUX) + # macro that copy file + macro(makeCopy src dest target) + if (NOT EXISTS ${dest}) + add_custom_command(TARGET ${target} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${src} ${dest} DEPENDS ${dest} COMMENT "copy ${src} -> ${dest}") + endif () + endmacro() +endif (LINUX) -if(WIN32) - if(VS2015) - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(VCREDIST_FILE "vcredist_msvc2015_x64${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") - # maybe add arm architecture - else() - set(VCREDIST_FILE "vcredist_msvc2015_x86${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") - endif() - elseif(VS2017) - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(VCREDIST_FILE "vcredist_msvc2017_x64${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") - # maybe add arm architecture - else() - set(VCREDIST_FILE "vcredist_msvc2017_x86${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") - endif() - else() - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(VCREDIST_FILE "vc_redist.x64${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") - # maybe add arm architecture - else() - set(VCREDIST_FILE "vc_redist.x86${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") - endif() - endif() - install(FILES "${EXTERNAL_LIBRARY_FOLDER}/vcredist/${VCREDIST_FILE}" DESTINATION "${INSTALL_BIN_DIR}") -endif(WIN32) +if (WIN32) + if (VS2015) + if (CMAKE_SIZEOF_VOID_P EQUAL 8) + set(VCREDIST_FILE "vcredist_msvc2015_x64${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") + # maybe add arm architecture + else () + set(VCREDIST_FILE "vcredist_msvc2015_x86${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") + endif () + elseif (VS2017) + if (CMAKE_SIZEOF_VOID_P EQUAL 8) + set(VCREDIST_FILE "vcredist_msvc2017_x64${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") + # maybe add arm architecture + else () + set(VCREDIST_FILE "vcredist_msvc2017_x86${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") + endif () + else () + if (CMAKE_SIZEOF_VOID_P EQUAL 8) + set(VCREDIST_FILE "vc_redist.x64${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") + # maybe add arm architecture + else () + set(VCREDIST_FILE "vc_redist.x86${CMAKE_EXECUTABLE_SUFFIX}" CACHE INTERNAL "") + endif () + endif () + install(FILES "${EXTERNAL_LIBRARY_FOLDER}/vcredist/${VCREDIST_FILE}" DESTINATION "${INSTALL_BIN_DIR}") +endif (WIN32) -if(NOT WIN32) - # needs speexdsp - ExternalProject_Add(codec2 - GIT_REPOSITORY https://github.com/drowe67/codec2.git - GIT_TAG ${CODEC2_TAG} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/codec2" - CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - ExternalProject_Get_Property(codec2 source_dir binary_dir) - set(CODEC2_FOUND ON CACHE INTERNAL "") - set(CODEC2_INCLUDE_DIR "${source_dir}/src" "${binary_dir}" CACHE INTERNAL "") - if(WIN32) - set(CODEC2_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/codec2.lib" CACHE INTERNAL "") - makeCopy("${source_dir}/src" "${source_dir}/src/codec2" codec2) - elseif(LINUX) - set(CODEC2_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib/libcodec2${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") - makeLink("${source_dir}/src" "${source_dir}/src/codec2" codec2) - else() - set(CODEC2_LIBRARIES "${binary_dir}/src/libcodec2${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") - # some source include "codec2/comp.h" and some without codec2 - makeLink("${source_dir}/src" "${source_dir}/src/codec2" codec2) - endif() -endif() +if (AUTO_EXTERNAL_LIBRARIES) + find_package(Codec2) + find_package(CM256cc) + find_package(LibMbe) + find_package(SerialDV) + find_package(LibDSDcc) + find_package(LimeSuite) + find_package(LibBLADERF) + find_package(LibMiriSDR) + find_package(LibIIO) + find_package(LibAIRSPYHF) + find_package(LibPerseus) + find_package(LibRTLSDR) +endif (AUTO_EXTERNAL_LIBRARIES) -# needs boost -if(NOT APPLE) +if (NOT WIN32 AND (NOT CODEC2_FOUND OR CODEC2_EXTERNAL)) + # needs speexdsp + ExternalProject_Add(codec2 + GIT_REPOSITORY https://github.com/drowe67/codec2.git + GIT_TAG ${CODEC2_TAG} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/codec2" + CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + ExternalProject_Get_Property(codec2 source_dir binary_dir) + set(CODEC2_FOUND ON CACHE INTERNAL "") + set(CODEC2_EXTERNAL ON CACHE INTERNAL "") + set(CODEC2_INCLUDE_DIR "${source_dir}/src" "${binary_dir}" CACHE INTERNAL "") + if (WIN32) + set(CODEC2_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/codec2.lib" CACHE INTERNAL "") + makeCopy("${source_dir}/src" "${source_dir}/src/codec2" codec2) + elseif (LINUX) + set(CODEC2_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib/libcodec2${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + makeLink("${source_dir}/src" "${source_dir}/src/codec2" codec2) + else () + set(CODEC2_LIBRARIES "${binary_dir}/src/libcodec2${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + # some source include "codec2/comp.h" and some without codec2 + makeLink("${source_dir}/src" "${source_dir}/src/codec2" codec2) + endif () +endif (NOT WIN32 AND (NOT CODEC2_FOUND OR CODEC2_EXTERNAL)) + +if (NOT APPLE AND (NOT CM256CC_FOUND OR CM256CC_EXTERNAL)) + # needs boost ExternalProject_Add(cm256cc - GIT_REPOSITORY https://github.com/f4exb/cm256cc.git - GIT_TAG ${CM256CC_TAG} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/cm256cc" - CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} - -DBUILD_TOOLS=OFF - -DBOOST_ROOT="${BOOST_ROOT}" - -DBoost_INCLUDE_DIR=${Boost_INCLUDE_DIRS} - -DBoost_INCLUDE_DIRS=${Boost_INCLUDE_DIRS} - -DENABLE_DISTRIBUTION=ON - INSTALL_COMMAND "" - TEST_COMMAND "" - ) + GIT_REPOSITORY https://github.com/f4exb/cm256cc.git + GIT_TAG ${CM256CC_TAG} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/cm256cc" + CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} + -DBUILD_TOOLS=OFF + -DBOOST_ROOT="${BOOST_ROOT}" + -DBoost_INCLUDE_DIR=${Boost_INCLUDE_DIRS} + -DBoost_INCLUDE_DIRS=${Boost_INCLUDE_DIRS} + -DENABLE_DISTRIBUTION=ON + INSTALL_COMMAND "" + TEST_COMMAND "" + ) ExternalProject_Get_Property(cm256cc source_dir binary_dir) set(CM256CC_FOUND ON CACHE INTERNAL "") + set(CM256CC_EXTERNAL ON CACHE INTERNAL "") # we need cm256cc/library.h set(CM256CC_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/cm256cc/src" CACHE INTERNAL "") - if(WIN32) + if (WIN32) set(CM256CC_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/cm256cc.lib" CACHE INTERNAL "") install(FILES "${SDRANGEL_BINARY_BIN_DIR}/cm256cc${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") - elseif(LINUX) + elseif (LINUX) set(CM256CC_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib/libcm256cc${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") - elseif(APPLE) # kept in case of relaxation of APPLE exclusion + elseif (APPLE) # kept in case of relaxation of APPLE exclusion set(CM256CC_LIBRARIES "${binary_dir}/libcm256cc${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") install(DIRECTORY "${binary_dir}/" DESTINATION "${INSTALL_LIB_DIR}" - FILES_MATCHING PATTERN "libcm256cc*${CMAKE_SHARED_LIBRARY_SUFFIX}") + FILES_MATCHING PATTERN "libcm256cc*${CMAKE_SHARED_LIBRARY_SUFFIX}") set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}") - endif() -endif() # NOT APPLE + endif () +endif (NOT APPLE AND (NOT CM256CC_FOUND OR CM256CC_EXTERNAL)) -set(USE_MBELIB OFF) -ExternalProject_Add(mbelib - GIT_REPOSITORY https://github.com/szechyjs/mbelib.git - GIT_TAG ${MBELIB_TAG} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/mbelib" - CMAKE_ARGS -DDISABLE_TEST=ON ${DEFAULT_OUTPUT_DIRECTORIES} - INSTALL_COMMAND "" - TEST_COMMAND "" -) -ExternalProject_Get_Property(mbelib source_dir binary_dir) -set(USE_MBELIB ON) -set(DSDCC_DEPENDS mbelib) -set(LIBMBE_FOUND ON CACHE INTERNAL "") -set(LIBMBE_INCLUDE_DIR "${source_dir}") -if(WIN32) - set(LIBMBE_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/mbe.lib") - install(FILES "${SDRANGEL_BINARY_BIN_DIR}/mbe${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") -elseif(LINUX) - set(LIBMBE_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib/libmbe${CMAKE_SHARED_LIBRARY_SUFFIX}") -elseif(APPLE) - set(LIBMBE_LIBRARIES "${binary_dir}/libmbe${CMAKE_SHARED_LIBRARY_SUFFIX}") - install(DIRECTORY "${binary_dir}/" DESTINATION "${INSTALL_LIB_DIR}" - FILES_MATCHING PATTERN "libmbe*${CMAKE_SHARED_LIBRARY_SUFFIX}") - set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}") -endif() +if ((NOT LIBDSDCC_FOUND OR LIBDSDCC_EXTERNAL) AND (NOT LIBMBE_FOUND OR LIBMBE_EXTERNAL)) + set(USE_MBELIB OFF) + ExternalProject_Add(mbelib + GIT_REPOSITORY https://github.com/szechyjs/mbelib.git + GIT_TAG ${MBELIB_TAG} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/mbelib" + CMAKE_ARGS -DDISABLE_TEST=ON ${DEFAULT_OUTPUT_DIRECTORIES} + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + ExternalProject_Get_Property(mbelib source_dir binary_dir) + set(USE_MBELIB ON) + set(DSDCC_DEPENDS mbelib) + set(LIBMBE_FOUND ON CACHE INTERNAL "") + set(LIBMBE_EXTERNAL ON CACHE INTERNAL "") + set(LIBMBE_INCLUDE_DIR "${source_dir}" CACHE INTERNAL "") + if (WIN32) + set(LIBMBE_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/mbe.lib" CACHE INTERNAL "") + install(FILES "${SDRANGEL_BINARY_BIN_DIR}/mbe${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") + elseif (LINUX) + set(LIBMBE_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib/libmbe${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + elseif (APPLE) + set(LIBMBE_LIBRARIES "${binary_dir}/libmbe${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + install(DIRECTORY "${binary_dir}/" DESTINATION "${INSTALL_LIB_DIR}" + FILES_MATCHING PATTERN "libmbe*${CMAKE_SHARED_LIBRARY_SUFFIX}") + set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}") + endif () +endif ((NOT LIBDSDCC_FOUND OR LIBDSDCC_EXTERNAL) AND (NOT LIBMBE_FOUND OR LIBMBE_EXTERNAL)) -# Works on MacOS with a dummy serialDV -ExternalProject_Add(serialdv - GIT_REPOSITORY https://github.com/f4exb/serialDV.git - GIT_TAG ${SERIALDV_TAG} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/serialdv" - CMAKE_ARGS -DBUILD_TOOL=OFF ${DEFAULT_OUTPUT_DIRECTORIES} - INSTALL_COMMAND "" - TEST_COMMAND "" -) -ExternalProject_Get_Property(serialdv source_dir binary_dir) -set(DSDCC_DEPENDS ${DSDCC_DEPENDS} serialdv) -set(LIBSERIALDV_FOUND ON CACHE INTERNAL "") -set(LIBSERIALDV_INCLUDE_DIR "${source_dir}" CACHE INTERNAL "") -if(WIN32) - set(LIBSERIALDV_LIBRARY "${SDRANGEL_BINARY_LIB_DIR}/serialdv.lib" CACHE INTERNAL "") - makeCopyDir("${source_dir}" "${source_dir}/dsp" serialdv) - install(FILES "${SDRANGEL_BINARY_BIN_DIR}/serialdv${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") -elseif(LINUX) - set(LIBSERIALDV_LIBRARY "${EXTERNAL_BUILD_LIBRARIES}/lib/libserialdv${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") - # because sdrbase/dsp/dvserialworker.h use dsp/dvcontroller.h - # so we need a link - makeLink("${source_dir}" "${source_dir}/dsp" serialdv) -elseif(APPLE) - set(LIBSERIALDV_LIBRARY "${binary_dir}/libserialdv${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") - # because sdrbase/dsp/dvserialworker.h use dsp/dvcontroller.h - # so we need a link - makeLink("${source_dir}" "${source_dir}/dsp" serialdv) - install(DIRECTORY "${binary_dir}/" DESTINATION "${INSTALL_LIB_DIR}" - FILES_MATCHING PATTERN "libserialdv*${CMAKE_SHARED_LIBRARY_SUFFIX}") - set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}") -endif() +if (NOT LIBSERIALDV_FOUND OR LIBSERIALDV_EXTERNAL) + # Works on MacOS with a dummy serialDV + ExternalProject_Add(serialdv + GIT_REPOSITORY https://github.com/f4exb/serialDV.git + GIT_TAG ${SERIALDV_TAG} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/serialdv" + CMAKE_ARGS -DBUILD_TOOL=OFF ${DEFAULT_OUTPUT_DIRECTORIES} + INSTALL_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + ExternalProject_Get_Property(serialdv source_dir binary_dir) + set(DSDCC_DEPENDS ${DSDCC_DEPENDS} serialdv) + set(LIBSERIALDV_FOUND ON CACHE INTERNAL "") + set(LIBSERIALDV_EXTERNAL ON CACHE INTERNAL "") + set(LIBSERIALDV_INCLUDE_DIR "${source_dir}" CACHE INTERNAL "") + if (WIN32) + set(LIBSERIALDV_LIBRARY "${SDRANGEL_BINARY_LIB_DIR}/serialdv.lib" CACHE INTERNAL "") + makeCopyDir("${source_dir}" "${source_dir}/dsp" serialdv) + install(FILES "${SDRANGEL_BINARY_BIN_DIR}/serialdv${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") + elseif (LINUX) + set(LIBSERIALDV_LIBRARY "${EXTERNAL_BUILD_LIBRARIES}/lib/libserialdv${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + # because sdrbase/dsp/dvserialworker.h use dsp/dvcontroller.h + # so we need a link + makeLink("${source_dir}" "${source_dir}/dsp" serialdv) + elseif (APPLE) + set(LIBSERIALDV_LIBRARY "${binary_dir}/libserialdv${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + # because sdrbase/dsp/dvserialworker.h use dsp/dvcontroller.h + # so we need a link + makeLink("${source_dir}" "${source_dir}/dsp" serialdv) + install(DIRECTORY "${binary_dir}/" DESTINATION "${INSTALL_LIB_DIR}" + FILES_MATCHING PATTERN "libserialdv*${CMAKE_SHARED_LIBRARY_SUFFIX}") + set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}") + endif () +endif (NOT LIBSERIALDV_FOUND OR LIBSERIALDV_EXTERNAL) -ExternalProject_Add(dsdcc - GIT_REPOSITORY https://github.com/f4exb/dsdcc.git - GIT_TAG ${DSDCC_TAG} - DEPENDS ${DSDCC_DEPENDS} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/dsdcc" - CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} - -DBUILD_TOOL=OFF -DUSE_MBELIB=${USE_MBELIB} - -DLIBMBE_INCLUDE_DIR=${LIBMBE_INCLUDE_DIR} - -DLIBMBE_LIBRARY=${LIBMBE_LIBRARIES} - -DLIBSERIALDV_INCLUDE_DIR=${LIBSERIALDV_INCLUDE_DIR} - -DLIBSERIALDV_LIBRARY=${LIBSERIALDV_LIBRARY} - INSTALL_COMMAND "" - TEST_COMMAND "" -) -ExternalProject_Get_Property(dsdcc source_dir binary_dir) -set(LIBDSDCC_FOUND ON CACHE INTERNAL "") -set(LIBDSDCC_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/dsdcc/src" CACHE INTERNAL "") -if(WIN32) - set(LIBDSDCC_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/dsdcc.lib" CACHE INTERNAL "") - install(FILES "${SDRANGEL_BINARY_BIN_DIR}/dsdcc${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") -elseif(LINUX) - set(LIBDSDCC_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib/libdsdcc${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") -elseif(APPLE) - set(LIBDSDCC_LIBRARIES "${binary_dir}/libdsdcc${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") - install(DIRECTORY "${binary_dir}/" DESTINATION "${INSTALL_LIB_DIR}" - FILES_MATCHING PATTERN "libdsdcc*${CMAKE_SHARED_LIBRARY_SUFFIX}") - set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/") -endif() +if ((NOT LIBDSDCC_FOUND OR LIBDSDCC_EXTERNAL) AND LIBMBE_FOUND) + ExternalProject_Add(dsdcc + GIT_REPOSITORY https://github.com/f4exb/dsdcc.git + GIT_TAG ${DSDCC_TAG} + DEPENDS ${DSDCC_DEPENDS} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/dsdcc" + CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} + -DBUILD_TOOL=OFF -DUSE_MBELIB=${USE_MBELIB} + -DLIBMBE_INCLUDE_DIR=${LIBMBE_INCLUDE_DIR} + -DLIBMBE_LIBRARY=${LIBMBE_LIBRARIES} + -DLIBSERIALDV_INCLUDE_DIR=${LIBSERIALDV_INCLUDE_DIR} + -DLIBSERIALDV_LIBRARY=${LIBSERIALDV_LIBRARY} + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + ExternalProject_Get_Property(dsdcc source_dir binary_dir) + set(LIBDSDCC_FOUND ON CACHE INTERNAL "") + set(LIBDSDCC_EXTERNAL ON CACHE INTERNAL "") + set(LIBDSDCC_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/dsdcc/src" CACHE INTERNAL "") + if (WIN32) + set(LIBDSDCC_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/dsdcc.lib" CACHE INTERNAL "") + install(FILES "${SDRANGEL_BINARY_BIN_DIR}/dsdcc${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") + elseif (LINUX) + set(LIBDSDCC_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib/libdsdcc${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + elseif (APPLE) + set(LIBDSDCC_LIBRARIES "${binary_dir}/libdsdcc${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + install(DIRECTORY "${binary_dir}/" DESTINATION "${INSTALL_LIB_DIR}" + FILES_MATCHING PATTERN "libdsdcc*${CMAKE_SHARED_LIBRARY_SUFFIX}") + set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/") + endif () +endif ((NOT LIBDSDCC_FOUND OR LIBDSDCC_EXTERNAL) AND LIBMBE_FOUND) # requirements needed by many packages on windows -if(WIN32) - ExternalProject_Add(pthreads4w - GIT_REPOSITORY https://git.code.sf.net/p/pthreads4w/code - GIT_TAG ${PTHREADS4W_TAG} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/pthreads4w" - PATCH_COMMAND ${CMAKE_COMMAND} -E touch "/COPYING.LIB" - BUILD_IN_SOURCE 1 - CONFIGURE_COMMAND "" - BUILD_COMMAND nmake VC - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - ExternalProject_Get_Property(pthreads4w source_dir binary_dir) - set(PTHREADS4W_DEPENDS pthreads4w) - set(PTHREADS4W_FOUND ON CACHE INTERNAL "") - set(PTHREADS4W_INCLUDE_DIR "${source_dir}" CACHE INTERNAL "") - set(PTHREADS4W_LIBRARIES "${source_dir}/pthreadVC2.lib" CACHE INTERNAL "") - makeCopy("${source_dir}/pthreadVC2${CMAKE_SHARED_LIBRARY_SUFFIX}" "${SDRANGEL_BINARY_BIN_DIR}/pthreadVC2${CMAKE_SHARED_LIBRARY_SUFFIX}" pthreads4w) - # needed by bladerf - makeCopy("${source_dir}/pthreadVC2${CMAKE_SHARED_LIBRARY_SUFFIX}" "${source_dir}/dll/x64/pthreadVC2${CMAKE_SHARED_LIBRARY_SUFFIX}" pthreads4w) - install(FILES "${source_dir}/pthreadVC2${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") -endif(WIN32) +if (WIN32) + ExternalProject_Add(pthreads4w + GIT_REPOSITORY https://git.code.sf.net/p/pthreads4w/code + GIT_TAG ${PTHREADS4W_TAG} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/pthreads4w" + PATCH_COMMAND ${CMAKE_COMMAND} -E touch "/COPYING.LIB" + BUILD_IN_SOURCE 1 + CONFIGURE_COMMAND "" + BUILD_COMMAND nmake VC + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + ExternalProject_Get_Property(pthreads4w source_dir binary_dir) + set(PTHREADS4W_DEPENDS pthreads4w) + set(PTHREADS4W_FOUND ON CACHE INTERNAL "") + set(PTHREADS4W_EXTERNAL ON CACHE INTERNAL "") + set(PTHREADS4W_INCLUDE_DIR "${source_dir}" CACHE INTERNAL "") + set(PTHREADS4W_LIBRARIES "${source_dir}/pthreadVC2.lib" CACHE INTERNAL "") + makeCopy("${source_dir}/pthreadVC2${CMAKE_SHARED_LIBRARY_SUFFIX}" "${SDRANGEL_BINARY_BIN_DIR}/pthreadVC2${CMAKE_SHARED_LIBRARY_SUFFIX}" pthreads4w) + # needed by bladerf + makeCopy("${source_dir}/pthreadVC2${CMAKE_SHARED_LIBRARY_SUFFIX}" "${source_dir}/dll/x64/pthreadVC2${CMAKE_SHARED_LIBRARY_SUFFIX}" pthreads4w) + install(FILES "${source_dir}/pthreadVC2${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") +endif (WIN32) # Device interface libraries. Use external libraries build for these. Only Linux for now. if (LINUX) # apt install liblimesuite-dev (only on ubuntu 18.04). Can be picky on version though so let's build it. # needs pkgconfig and libusb - ExternalProject_Add(limesuite - GIT_REPOSITORY https://github.com/myriadrf/LimeSuite.git - GIT_TAG ${LIMESUITE_TAG} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/limesuite" - CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} -DLIME_SUITE_EXTVER=release -DENABLE_GUI=OFF -DENABLE_NOVENARF7=OFF -DENABLE_SOAPY_LMS7=OFF -DENABLE_OCTAVE=OFF -DENABLE_SIMD_FLAGS=SSE3 - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - ExternalProject_Get_Property(limesuite source_dir) - set(LIMESUITE_FOUND ON CACHE INTERNAL "") - set(LIMESUITE_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/limesuite/src/limesuite/src" CACHE INTERNAL "") - set(LIMESUITE_LIBRARY "${EXTERNAL_BUILD_LIBRARIES}/lib/libLimeSuite.so" CACHE INTERNAL "") - makeCopyFile("${source_dir}/src/limeRFE/limeRFE.h" "${source_dir}/src/lime/limeRFE.h" limesuite) + if (NOT LIMESUITE_FOUND OR LIMESUITE_EXTERNAL) + ExternalProject_Add(limesuite + GIT_REPOSITORY https://github.com/myriadrf/LimeSuite.git + GIT_TAG ${LIMESUITE_TAG} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/limesuite" + CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} -DLIME_SUITE_EXTVER=release -DENABLE_GUI=OFF -DENABLE_NOVENARF7=OFF -DENABLE_SOAPY_LMS7=OFF -DENABLE_OCTAVE=OFF -DENABLE_SIMD_FLAGS=SSE3 + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + ExternalProject_Get_Property(limesuite source_dir) + set(LIMESUITE_FOUND ON CACHE INTERNAL "") + set(LIMESUITE_EXTERNAL ON CACHE INTERNAL "") + set(LIMESUITE_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/limesuite/src/limesuite/src" CACHE INTERNAL "") + set(LIMESUITE_LIBRARY "${EXTERNAL_BUILD_LIBRARIES}/lib/libLimeSuite.so" CACHE INTERNAL "") + makeCopyFile("${source_dir}/src/limeRFE/limeRFE.h" "${source_dir}/src/lime/limeRFE.h" limesuite) + endif (NOT LIMESUITE_FOUND OR LIMESUITE_EXTERNAL) # apt install libbladerf-dev # needs pkgconfig and libusb - ExternalProject_Add(bladerf - GIT_REPOSITORY https://github.com/Nuand/bladeRF.git - GIT_TAG ${BLADERF_TAG} - GIT_SUBMODULES - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/bladerf" - CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} - SOURCE_SUBDIR host/ - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - set(LIBBLADERF_FOUND ON CACHE INTERNAL "") - set(LIBBLADERF_INCLUDE_DIRS "${EXTERNAL_BUILD_LIBRARIES}/bladerf/src/bladerf/host/libraries/libbladeRF/include" CACHE INTERNAL "") - set(LIBBLADERF_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib/libbladeRF.so" CACHE INTERNAL "") + if (NOT LIBBLADERF_FOUND OR LIBBLADERF_EXTERNAL) + ExternalProject_Add(bladerf + GIT_REPOSITORY https://github.com/Nuand/bladeRF.git + GIT_TAG ${BLADERF_TAG} + GIT_SUBMODULES + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/bladerf" + CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} + SOURCE_SUBDIR host/ + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + set(LIBBLADERF_FOUND ON CACHE INTERNAL "") + set(LIBBLADERF_EXTERNAL ON CACHE INTERNAL "") + set(LIBBLADERF_INCLUDE_DIRS "${EXTERNAL_BUILD_LIBRARIES}/bladerf/src/bladerf/host/libraries/libbladeRF/include" CACHE INTERNAL "") + set(LIBBLADERF_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib/libbladeRF.so" CACHE INTERNAL "") + endif (NOT LIBBLADERF_FOUND OR LIBBLADERF_EXTERNAL) # apt install libiio-dev # needs pkgconfig, libusb, libxml2, lzma, xz, libiconv - ExternalProject_Add(libiio - GIT_REPOSITORY https://github.com/analogdevicesinc/libiio.git - GIT_TAG ${LIBIIO_TAG} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/libiio" - CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} -DOSX_PACKAGE=OFF -DWITH_DOC=OFF - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - set(LIBIIO_FOUND ON CACHE INTERNAL "") - set(LIBIIO_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/libiio/src/libiio" CACHE INTERNAL "") - set(LIBIIO_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib/libiio.so" CACHE INTERNAL "") + if (NOT LIBIIO_FOUND OR LIBIIO_EXTERNAL) + ExternalProject_Add(libiio + GIT_REPOSITORY https://github.com/analogdevicesinc/libiio.git + GIT_TAG ${LIBIIO_TAG} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/libiio" + CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} -DOSX_PACKAGE=OFF -DWITH_DOC=OFF + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + set(LIBIIO_FOUND ON CACHE INTERNAL "") + set(LIBIIO_EXTERNAL ON CACHE INTERNAL "") + set(LIBIIO_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/libiio/src/libiio" CACHE INTERNAL "") + set(LIBIIO_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib/libiio.so" CACHE INTERNAL "") + endif (NOT LIBIIO_FOUND OR LIBIIO_EXTERNAL) # apt install libairspyhf-dev (only on ubuntu 18.04) # needs libusb and pkgconfig - ExternalProject_Add(airspyhf - GIT_REPOSITORY https://github.com/airspy/airspyhf.git - GIT_TAG ${AIRSPYHF_TAG} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/airspyhf" - CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - ExternalProject_Get_Property(airspyhf source_dir) - set(LIBAIRSPYHF_FOUND ON CACHE INTERNAL "") - set(LIBAIRSPYHF_INCLUDE_DIR "${source_dir}/.." CACHE INTERNAL "") - set(LIBAIRSPYHF_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib/libairspyhf.so" CACHE INTERNAL "") - makeLink("${source_dir}/libairspyhf/src" "${source_dir}/../libairspyhf" airspyhf) + if (NOT LIBAIRSPYHF_FOUND OR LIBAIRSPYHF_EXTERNAL) + ExternalProject_Add(airspyhf + GIT_REPOSITORY https://github.com/airspy/airspyhf.git + GIT_TAG ${AIRSPYHF_TAG} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/airspyhf" + CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + ExternalProject_Get_Property(airspyhf source_dir) + set(LIBAIRSPYHF_FOUND ON CACHE INTERNAL "") + set(LIBAIRSPYHF_EXTERNAL ON CACHE INTERNAL "") + set(LIBAIRSPYHF_INCLUDE_DIR "${source_dir}/.." CACHE INTERNAL "") + set(LIBAIRSPYHF_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib/libairspyhf.so" CACHE INTERNAL "") + makeLink("${source_dir}/libairspyhf/src" "${source_dir}/../libairspyhf" airspyhf) + endif (NOT LIBAIRSPYHF_FOUND OR LIBAIRSPYHF_EXTERNAL) # needs pkgconfig, libusb, autoconf, automake and libtool - ExternalProject_Add(perseus - GIT_REPOSITORY https://github.com/f4exb/libperseus-sdr.git - GIT_TAG ${PERSEUS_TAG} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/perseus" - CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - set(LIBPERSEUS_FOUND ON CACHE INTERNAL "") - set(LIBPERSEUS_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/perseus/src/perseus" CACHE INTERNAL "") - set(LIBPERSEUS_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib/libperseus-sdr.so" CACHE INTERNAL "") + if (NOT LIBPERSEUS_FOUND OR LIBPERSEUS_EXTERNAL) + ExternalProject_Add(perseus + GIT_REPOSITORY https://github.com/f4exb/libperseus-sdr.git + GIT_TAG ${PERSEUS_TAG} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/perseus" + CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + set(LIBPERSEUS_FOUND ON CACHE INTERNAL "") + set(LIBPERSEUS_EXTERNAL ON CACHE INTERNAL "") + set(LIBPERSEUS_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/perseus/src/perseus" CACHE INTERNAL "") + set(LIBPERSEUS_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib/libperseus-sdr.so" CACHE INTERNAL "") + endif (NOT LIBPERSEUS_FOUND OR LIBPERSEUS_EXTERNAL) # apt install librtlsdr-dev # needs pkgconfig and libusb - ExternalProject_Add(rtlsdr - GIT_REPOSITORY https://github.com/osmocom/rtl-sdr.git - GIT_TAG ${RTLSDR_TAG} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/rtlsdr" - CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} -DDETACH_KERNEL_DRIVER=ON -DINSTALL_UDEV_RULES=${RTLSDR_UDEV} - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - set(LIBRTLSDR_FOUND ON CACHE INTERNAL "") - set(LIBRTLSDR_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/rtlsdr/src/rtlsdr/include" CACHE INTERNAL "") - set(LIBRTLSDR_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib/librtlsdr.so" CACHE INTERNAL "") -endif(LINUX) + if (NOT LIBRTLSDR_FOUND OR LIBRTLSDR_EXTERNAL) + ExternalProject_Add(rtlsdr + GIT_REPOSITORY https://github.com/osmocom/rtl-sdr.git + GIT_TAG ${RTLSDR_TAG} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/rtlsdr" + CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} -DDETACH_KERNEL_DRIVER=ON -DINSTALL_UDEV_RULES=${RTLSDR_UDEV} + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + set(LIBRTLSDR_FOUND ON CACHE INTERNAL "") + set(LIBRTLSDR_EXTERNAL ON CACHE INTERNAL "") + set(LIBRTLSDR_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/rtlsdr/src/rtlsdr/include" CACHE INTERNAL "") + set(LIBRTLSDR_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib/librtlsdr.so" CACHE INTERNAL "") + endif (NOT LIBRTLSDR_FOUND OR LIBRTLSDR_EXTERNAL) -if(WIN32 OR APPLE) - if(ENABLE_RTLSDR) - if(WIN32) - set(RTLSDR_LIBUSB_INCLUDE "${LIBUSB_INCLUDE_DIR}/libusb-1.0") - else() - set(RTLSDR_LIBUSB_INCLUDE "${LIBUSB_INCLUDE_DIR}") - endif() # needs pkgconfig and libusb - ExternalProject_Add(rtlsdr - GIT_REPOSITORY https://github.com/osmocom/rtl-sdr.git - GIT_TAG ${RTLSDR_TAG} - DEPENDS ${PTHREADS4W_DEPENDS} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/rtlsdr" - CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} - -DINSTALL_UDEV_RULES=${RTLSDR_UDEV} - -DLIBUSB_LIBRARIES=${LIBUSB_LIBRARIES} - -DLIBUSB_INCLUDE_DIR=${RTLSDR_LIBUSB_INCLUDE} - -DTHREADS_PTHREADS_INCLUDE_DIR=${PTHREADS4W_INCLUDE_DIR} - -DTHREADS_PTHREADS_WIN32_LIBRARY=${PTHREADS4W_LIBRARIES} - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - ExternalProject_Get_Property(rtlsdr source_dir binary_dir) - set(LIBRTLSDR_FOUND ON CACHE INTERNAL "") - set(LIBRTLSDR_INCLUDE_DIR "${source_dir}/include" CACHE INTERNAL "") - if(WIN32) - set(LIBRTLSDR_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/rtlsdr.lib" CACHE INTERNAL "") - install(FILES "${SDRANGEL_BINARY_BIN_DIR}/rtlsdr${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") - elseif(APPLE) - set(LIBRTLSDR_LIBRARIES "${binary_dir}/src/librtlsdr${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") - install(DIRECTORY "${binary_dir}/src/" DESTINATION "${INSTALL_LIB_DIR}" - FILES_MATCHING PATTERN "librtlsdr*${CMAKE_SHARED_LIBRARY_SUFFIX}") - set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/src/") - endif() - endif(ENABLE_RTLSDR) + if (NOT LIBMIRISDR_FOUND OR LIBMIRISDR_EXTERNAL) + ExternalProject_Add(libmirisdr + GIT_REPOSITORY https://github.com/f4exb/libmirisdr-4.git + GIT_TAG ${MIRISDR_TAG} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/libmirisdr" + CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + set(LIBMIRISDR_FOUND ON CACHE INTERNAL "") + set(LIBMIRISDR_EXTERNAL ON CACHE INTERNAL "") + set(LIBMIRISDR_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/libmirisdr/src/libmirisdr/include" CACHE INTERNAL "") + set(LIBMIRISDR_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib/libmirisdr.so" CACHE INTERNAL "") + endif (NOT LIBMIRISDR_FOUND OR LIBMIRISDR_EXTERNAL) +endif (LINUX) - if(ENABLE_LIMESUITE) - # needs pkgconfig, libusb - ExternalProject_Add(limesuite - GIT_REPOSITORY https://github.com/myriadrf/LimeSuite.git - GIT_TAG ${LIMESUITE_TAG} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/limesuite" - CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} - -DLIME_SUITE_EXTVER=release - -DENABLE_GUI=OFF - -DENABLE_NOVENARF7=OFF - -DENABLE_SOAPY_LMS7=OFF - -DENABLE_OCTAVE=OFF - -DENABLE_QUICKTEST=OFF - -DENABLE_EXAMPLES=OFF - -DENABLE_SIMD_FLAGS=SSE3 - -DFX3_SDK_PATH=${FX3SDK_DIR} - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - ExternalProject_Get_Property(limesuite source_dir binary_dir) - set(LIMESUITE_FOUND ON CACHE INTERNAL "") - set(LIMESUITE_INCLUDE_DIR "${source_dir}/src" CACHE INTERNAL "") - if(WIN32) - set(LIMESUITE_LIBRARY "${SDRANGEL_BINARY_LIB_DIR}/LimeSuite.lib" CACHE INTERNAL "") - install(FILES "${SDRANGEL_BINARY_BIN_DIR}/LimeSuite${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") - makeCopy("${source_dir}/src/limeRFE/limeRFE.h" "${source_dir}/src/lime/limeRFE.h" limesuite) - elseif(APPLE) - set(LIMESUITE_LIBRARY "${binary_dir}/src/libLimeSuite${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") - install(DIRECTORY "${binary_dir}/src/" DESTINATION "${INSTALL_LIB_DIR}" - FILES_MATCHING PATTERN "libLimeSuite*${CMAKE_SHARED_LIBRARY_SUFFIX}") - set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/src/") - endif() - endif(ENABLE_LIMESUITE) +if (WIN32 OR APPLE) + if (ENABLE_RTLSDR) + if (WIN32) + set(RTLSDR_LIBUSB_INCLUDE "${LIBUSB_INCLUDE_DIR}/libusb-1.0") + else () + set(RTLSDR_LIBUSB_INCLUDE "${LIBUSB_INCLUDE_DIR}") + endif () + # needs pkgconfig and libusb + ExternalProject_Add(rtlsdr + GIT_REPOSITORY https://github.com/osmocom/rtl-sdr.git + GIT_TAG ${RTLSDR_TAG} + DEPENDS ${PTHREADS4W_DEPENDS} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/rtlsdr" + CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} + -DINSTALL_UDEV_RULES=${RTLSDR_UDEV} + -DLIBUSB_LIBRARIES=${LIBUSB_LIBRARIES} + -DLIBUSB_INCLUDE_DIR=${RTLSDR_LIBUSB_INCLUDE} + -DTHREADS_PTHREADS_INCLUDE_DIR=${PTHREADS4W_INCLUDE_DIR} + -DTHREADS_PTHREADS_WIN32_LIBRARY=${PTHREADS4W_LIBRARIES} + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + ExternalProject_Get_Property(rtlsdr source_dir binary_dir) + set(LIBRTLSDR_FOUND ON CACHE INTERNAL "") + set(LIBRTLSDR_EXTERNAL ON CACHE INTERNAL "") + set(LIBRTLSDR_INCLUDE_DIR "${source_dir}/include" CACHE INTERNAL "") + if (WIN32) + set(LIBRTLSDR_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/rtlsdr.lib" CACHE INTERNAL "") + install(FILES "${SDRANGEL_BINARY_BIN_DIR}/rtlsdr${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") + elseif (APPLE) + set(LIBRTLSDR_LIBRARIES "${binary_dir}/src/librtlsdr${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + install(DIRECTORY "${binary_dir}/src/" DESTINATION "${INSTALL_LIB_DIR}" + FILES_MATCHING PATTERN "librtlsdr*${CMAKE_SHARED_LIBRARY_SUFFIX}") + set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/src/") + endif () + endif (ENABLE_RTLSDR) - if(ENABLE_SOAPYSDR) - ExternalProject_Add(soapysdr - GIT_REPOSITORY https://github.com/pothosware/SoapySDR.git - GIT_TAG ${SOAPYSDR_TAG} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/soapysdr" - CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} - -DENABLE_PYTHON=OFF - -DENABLE_PYTHON3=OFF - -DENABLE_TESTS=OFF - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - ExternalProject_Get_Property(soapysdr source_dir binary_dir) - set(SOAPYSDR_FOUND ON CACHE INTERNAL "") - set(SOAPYSDR_INCLUDE_DIR "${source_dir}/include" CACHE INTERNAL "") - if(WIN32) - set(SOAPYSDR_LIBRARY "${SDRANGEL_BINARY_LIB_DIR}/SoapySDR.lib" CACHE INTERNAL "") - install(FILES "${SDRANGEL_BINARY_BIN_DIR}/SoapySDR${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") - elseif(APPLE) - set(SOAPYSDR_LIBRARY "${binary_dir}/lib/libSoapySDR${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") - install(DIRECTORY "${binary_dir}/lib/" DESTINATION "${INSTALL_LIB_DIR}" - FILES_MATCHING PATTERN "libSoapySDR*${CMAKE_SHARED_LIBRARY_SUFFIX}") - set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/lib/") - endif() - endif(ENABLE_SOAPYSDR) + if (ENABLE_LIMESUITE) + # needs pkgconfig, libusb + ExternalProject_Add(limesuite + GIT_REPOSITORY https://github.com/myriadrf/LimeSuite.git + GIT_TAG ${LIMESUITE_TAG} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/limesuite" + CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} + -DLIME_SUITE_EXTVER=release + -DENABLE_GUI=OFF + -DENABLE_NOVENARF7=OFF + -DENABLE_SOAPY_LMS7=OFF + -DENABLE_OCTAVE=OFF + -DENABLE_QUICKTEST=OFF + -DENABLE_EXAMPLES=OFF + -DENABLE_SIMD_FLAGS=SSE3 + -DFX3_SDK_PATH=${FX3SDK_DIR} + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + ExternalProject_Get_Property(limesuite source_dir binary_dir) + set(LIMESUITE_FOUND ON CACHE INTERNAL "") + set(LIMESUITE_EXTERNAL ON CACHE INTERNAL "") + set(LIMESUITE_INCLUDE_DIR "${source_dir}/src" CACHE INTERNAL "") + if (WIN32) + set(LIMESUITE_LIBRARY "${SDRANGEL_BINARY_LIB_DIR}/LimeSuite.lib" CACHE INTERNAL "") + install(FILES "${SDRANGEL_BINARY_BIN_DIR}/LimeSuite${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") + makeCopy("${source_dir}/src/limeRFE/limeRFE.h" "${source_dir}/src/lime/limeRFE.h" limesuite) + elseif (APPLE) + set(LIMESUITE_LIBRARY "${binary_dir}/src/libLimeSuite${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + install(DIRECTORY "${binary_dir}/src/" DESTINATION "${INSTALL_LIB_DIR}" + FILES_MATCHING PATTERN "libLimeSuite*${CMAKE_SHARED_LIBRARY_SUFFIX}") + set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/src/") + endif () + endif (ENABLE_LIMESUITE) - if(ENABLE_AIRSPY) - if(WIN32) - set(AIRSPY_LIBUSB_INCLUDE_DIR ${LIBUSB_INCLUDE_DIR}/libusb-1.0) - else() - set(AIRSPY_LIBUSB_INCLUDE_DIR ${LIBUSB_INCLUDE_DIR}) - endif() - # needs libusb, pthreads - ExternalProject_Add(airspy - GIT_REPOSITORY https://github.com/airspy/airspyone_host - GIT_TAG ${AIRSPY_TAG} - DEPENDS ${PTHREADS4W_DEPENDS} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/airspy" - CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} - -DLIBUSB_LIBRARIES=${LIBUSB_LIBRARIES} - -DLIBUSB_INCLUDE_DIR=${AIRSPY_LIBUSB_INCLUDE_DIR} - -DTHREADS_PTHREADS_INCLUDE_DIR=${PTHREADS4W_INCLUDE_DIR} - -DTHREADS_PTHREADS_WIN32_LIBRARY=${PTHREADS4W_LIBRARIES} - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - add_dependencies(airspy pthreads4w) - ExternalProject_Get_Property(airspy source_dir binary_dir) - set(LIBAIRSPY_FOUND ON CACHE INTERNAL "") - set(LIBAIRSPY_INCLUDE_DIR "${source_dir}/libairspy/src" CACHE INTERNAL "") - if(WIN32) - set(LIBAIRSPY_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/airspy.lib" CACHE INTERNAL "") - makeCopyDir("${source_dir}/libairspy/src" "${source_dir}/libairspy/src/libairspy" airspy) - makeCopy("${binary_dir}/airspy-tools/src/airspy${CMAKE_SHARED_LIBRARY_SUFFIX}" "${SDRANGEL_BINARY_BIN_DIR}/airspy${CMAKE_SHARED_LIBRARY_SUFFIX}" airspy) - install(FILES "${SDRANGEL_BINARY_BIN_DIR}/airspy${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") - elseif(APPLE) - set(LIBAIRSPY_LIBRARIES "${binary_dir}/libairspy/src/libairspy${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") - makeLink("${source_dir}/libairspy/src" "${source_dir}/libairspy/src/libairspy" airspy) - install(DIRECTORY "${binary_dir}/libairspy/src/" DESTINATION "${INSTALL_LIB_DIR}" - FILES_MATCHING PATTERN "libairspy*${CMAKE_SHARED_LIBRARY_SUFFIX}") - set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/libairspy/src") - endif() - endif(ENABLE_AIRSPY) + if (ENABLE_SOAPYSDR) + ExternalProject_Add(soapysdr + GIT_REPOSITORY https://github.com/pothosware/SoapySDR.git + GIT_TAG ${SOAPYSDR_TAG} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/soapysdr" + CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} + -DENABLE_PYTHON=OFF + -DENABLE_PYTHON3=OFF + -DENABLE_TESTS=OFF + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + ExternalProject_Get_Property(soapysdr source_dir binary_dir) + set(SOAPYSDR_FOUND ON CACHE INTERNAL "") + set(SOAPYSDR_EXTERNAL ON CACHE INTERNAL "") + set(SOAPYSDR_INCLUDE_DIR "${source_dir}/include" CACHE INTERNAL "") + if (WIN32) + set(SOAPYSDR_LIBRARY "${SDRANGEL_BINARY_LIB_DIR}/SoapySDR.lib" CACHE INTERNAL "") + install(FILES "${SDRANGEL_BINARY_BIN_DIR}/SoapySDR${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") + elseif (APPLE) + set(SOAPYSDR_LIBRARY "${binary_dir}/lib/libSoapySDR${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + install(DIRECTORY "${binary_dir}/lib/" DESTINATION "${INSTALL_LIB_DIR}" + FILES_MATCHING PATTERN "libSoapySDR*${CMAKE_SHARED_LIBRARY_SUFFIX}") + set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/lib/") + endif () + endif (ENABLE_SOAPYSDR) - if(ENABLE_AIRSPYHF) - if(WIN32) - set(AIRSPYHF_LIBUSB_INCLUDE_DIR ${LIBUSB_INCLUDE_DIR}/libusb-1.0) - else() - set(AIRSPYHF_LIBUSB_INCLUDE_DIR ${LIBUSB_INCLUDE_DIR}) - endif() - # needs pkgconfig, libusb, pthreads - ExternalProject_Add(airspyhf - GIT_REPOSITORY https://github.com/airspy/airspyhf.git - GIT_TAG ${AIRSPYHF_TAG} - DEPENDS ${PTHREADS4W_DEPENDS} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/airspyhf" - CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} - -DLIBUSB_LIBRARIES=${LIBUSB_LIBRARIES} - -DLIBUSB_INCLUDE_DIR=${AIRSPYHF_LIBUSB_INCLUDE_DIR} - -DTHREADS_PTHREADS_INCLUDE_DIR=${PTHREADS4W_INCLUDE_DIR} - -DTHREADS_PTHREADS_WIN32_LIBRARY=${PTHREADS4W_LIBRARIES} - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - add_dependencies(airspyhf pthreads4w) - ExternalProject_Get_Property(airspyhf source_dir binary_dir) - set(LIBAIRSPYHF_FOUND ON CACHE INTERNAL "") - set(LIBAIRSPYHF_INCLUDE_DIR "${source_dir}/libairspyhf/src" CACHE INTERNAL "") - if(WIN32) - set(LIBAIRSPYHF_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/airspyhf.lib" CACHE INTERNAL "") - makeCopyDir("${source_dir}/libairspyhf/src" "${source_dir}/libairspyhf/src/libairspyhf" airspyhf) - install(FILES "${SDRANGEL_BINARY_BIN_DIR}/airspyhf${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") - elseif(APPLE) - set(LIBAIRSPYHF_LIBRARIES "${binary_dir}/libairspyhf/src/libairspyhf${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") - makeLink("${source_dir}/libairspyhf/src" "${source_dir}/libairspyhf/src/libairspyhf" airspyhf) - install(DIRECTORY "${binary_dir}/libairspyhf/src/" DESTINATION "${INSTALL_LIB_DIR}" - FILES_MATCHING PATTERN "libairspyhf*${CMAKE_SHARED_LIBRARY_SUFFIX}") - set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/libairspyhf/src") - endif() - endif(ENABLE_AIRSPYHF) + if (ENABLE_AIRSPY) + if (WIN32) + set(AIRSPY_LIBUSB_INCLUDE_DIR ${LIBUSB_INCLUDE_DIR}/libusb-1.0) + else () + set(AIRSPY_LIBUSB_INCLUDE_DIR ${LIBUSB_INCLUDE_DIR}) + endif () + # needs libusb, pthreads + ExternalProject_Add(airspy + GIT_REPOSITORY https://github.com/airspy/airspyone_host + GIT_TAG ${AIRSPY_TAG} + DEPENDS ${PTHREADS4W_DEPENDS} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/airspy" + CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} + -DLIBUSB_LIBRARIES=${LIBUSB_LIBRARIES} + -DLIBUSB_INCLUDE_DIR=${AIRSPY_LIBUSB_INCLUDE_DIR} + -DTHREADS_PTHREADS_INCLUDE_DIR=${PTHREADS4W_INCLUDE_DIR} + -DTHREADS_PTHREADS_WIN32_LIBRARY=${PTHREADS4W_LIBRARIES} + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + add_dependencies(airspy pthreads4w) + ExternalProject_Get_Property(airspy source_dir binary_dir) + set(LIBAIRSPY_FOUND ON CACHE INTERNAL "") + set(LIBAIRSPY_EXTERNAL ON CACHE INTERNAL "") + set(LIBAIRSPY_INCLUDE_DIR "${source_dir}/libairspy/src" CACHE INTERNAL "") + if (WIN32) + set(LIBAIRSPY_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/airspy.lib" CACHE INTERNAL "") + makeCopyDir("${source_dir}/libairspy/src" "${source_dir}/libairspy/src/libairspy" airspy) + makeCopy("${binary_dir}/airspy-tools/src/airspy${CMAKE_SHARED_LIBRARY_SUFFIX}" "${SDRANGEL_BINARY_BIN_DIR}/airspy${CMAKE_SHARED_LIBRARY_SUFFIX}" airspy) + install(FILES "${SDRANGEL_BINARY_BIN_DIR}/airspy${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") + elseif (APPLE) + set(LIBAIRSPY_LIBRARIES "${binary_dir}/libairspy/src/libairspy${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + makeLink("${source_dir}/libairspy/src" "${source_dir}/libairspy/src/libairspy" airspy) + install(DIRECTORY "${binary_dir}/libairspy/src/" DESTINATION "${INSTALL_LIB_DIR}" + FILES_MATCHING PATTERN "libairspy*${CMAKE_SHARED_LIBRARY_SUFFIX}") + set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/libairspy/src") + endif () + endif (ENABLE_AIRSPY) - if(ENABLE_HACKRF) - # SOURCE_SUBDIR require cmake 3.7.0 - # otherwise use CONFIGURE_COMMAND - cmake_minimum_required(VERSION 3.7.0) - # needs pkgconfig, libusb, fftw, pthreads - if(WIN32) - set(HACKRF_LIBUSB_INCLUDE_DIR ${LIBUSB_INCLUDE_DIR}/libusb-1.0) - else() - set(HACKRF_LIBUSB_INCLUDE_DIR ${LIBUSB_INCLUDE_DIR}) - endif() - ExternalProject_Add(hackrf - GIT_REPOSITORY https://github.com/mossmann/hackrf.git - GIT_TAG ${HACKRF_TAG} - GIT_SUBMODULES "" - DEPENDS ${PTHREADS4W_DEPENDS} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/hackrf" - SOURCE_SUBDIR "host/libhackrf" - CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} - -DLIBUSB_LIBRARIES=${LIBUSB_LIBRARIES} - -DLIBUSB_INCLUDE_DIR=${HACKRF_LIBUSB_INCLUDE_DIR} - -DTHREADS_PTHREADS_INCLUDE_DIR=${PTHREADS4W_INCLUDE_DIR} - -DTHREADS_PTHREADS_WIN32_LIBRARY=${PTHREADS4W_LIBRARIES} - -DFFTW_INCLUDES=${FFTW3F_INCLUDE_DIRS} - -DFFTW_LIBRARIES=${FFTW3F_LIBRARIES} - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - add_dependencies(hackrf pthreads4w) - ExternalProject_Get_Property(hackrf source_dir binary_dir) - set(LIBHACKRF_FOUND ON CACHE INTERNAL "") - set(LIBHACKRF_INCLUDE_DIR "${source_dir}/host/libhackrf" CACHE INTERNAL "") - if(WIN32) - set(LIBHACKRF_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/hackrf.lib" CACHE INTERNAL "") - # include "libhackrf/hackrf.h" - makeCopyDir("${source_dir}/host/libhackrf/src" "${source_dir}/host/libhackrf/libhackrf" hackrf) - install(FILES "${SDRANGEL_BINARY_BIN_DIR}/hackrf${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") - elseif(APPLE) - set(LIBHACKRF_LIBRARIES "${binary_dir}/src/libhackrf${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") - # include "libhackrf/hackrf.h" - makeLink("${source_dir}/host/libhackrf/src" "${source_dir}/host/libhackrf/libhackrf" hackrf) - set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/") - install(DIRECTORY "${binary_dir}/src/" DESTINATION "${INSTALL_LIB_DIR}" - FILES_MATCHING PATTERN "libhackrf*${CMAKE_SHARED_LIBRARY_SUFFIX}") - endif() - endif(ENABLE_HACKRF) + if (ENABLE_AIRSPYHF) + if (WIN32) + set(AIRSPYHF_LIBUSB_INCLUDE_DIR ${LIBUSB_INCLUDE_DIR}/libusb-1.0) + else () + set(AIRSPYHF_LIBUSB_INCLUDE_DIR ${LIBUSB_INCLUDE_DIR}) + endif () + # needs pkgconfig, libusb, pthreads + ExternalProject_Add(airspyhf + GIT_REPOSITORY https://github.com/airspy/airspyhf.git + GIT_TAG ${AIRSPYHF_TAG} + DEPENDS ${PTHREADS4W_DEPENDS} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/airspyhf" + CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} + -DLIBUSB_LIBRARIES=${LIBUSB_LIBRARIES} + -DLIBUSB_INCLUDE_DIR=${AIRSPYHF_LIBUSB_INCLUDE_DIR} + -DTHREADS_PTHREADS_INCLUDE_DIR=${PTHREADS4W_INCLUDE_DIR} + -DTHREADS_PTHREADS_WIN32_LIBRARY=${PTHREADS4W_LIBRARIES} + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + add_dependencies(airspyhf pthreads4w) + ExternalProject_Get_Property(airspyhf source_dir binary_dir) + set(LIBAIRSPYHF_FOUND ON CACHE INTERNAL "") + set(LIBAIRSPYHF_EXTERNAL ON CACHE INTERNAL "") + set(LIBAIRSPYHF_INCLUDE_DIR "${source_dir}/libairspyhf/src" CACHE INTERNAL "") + if (WIN32) + set(LIBAIRSPYHF_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/airspyhf.lib" CACHE INTERNAL "") + makeCopyDir("${source_dir}/libairspyhf/src" "${source_dir}/libairspyhf/src/libairspyhf" airspyhf) + install(FILES "${SDRANGEL_BINARY_BIN_DIR}/airspyhf${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") + elseif (APPLE) + set(LIBAIRSPYHF_LIBRARIES "${binary_dir}/libairspyhf/src/libairspyhf${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + makeLink("${source_dir}/libairspyhf/src" "${source_dir}/libairspyhf/src/libairspyhf" airspyhf) + install(DIRECTORY "${binary_dir}/libairspyhf/src/" DESTINATION "${INSTALL_LIB_DIR}" + FILES_MATCHING PATTERN "libairspyhf*${CMAKE_SHARED_LIBRARY_SUFFIX}") + set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/libairspyhf/src") + endif () + endif (ENABLE_AIRSPYHF) - if(ENABLE_IIO) - if(WIN32) - ExternalProject_Add(libxml2 - GIT_REPOSITORY https://github.com/GNOME/libxml2.git - GIT_TAG ${LIBXML2_TAG} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/libxml2" - BUILD_IN_SOURCE 1 - CONFIGURE_COMMAND cd /win32 && cscript configure.js compiler=msvc iconv=no - BUILD_COMMAND cd /win32 && nmake -f Makefile.msvc - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - elseif(APPLE) - set(LIBXML2_PATCH_COMMAND /usr/bin/sed -i '' "s/libtoolize/glibtoolize/g" autogen.sh) - ExternalProject_Add(libxml2 - GIT_REPOSITORY https://github.com/GNOME/libxml2.git - GIT_TAG ${LIBXML2_TAG} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/libxml2" - BUILD_IN_SOURCE 1 - PATCH_COMMAND ${LIBXML2_PATCH_COMMAND} - CONFIGURE_COMMAND ./autogen.sh - BUILD_COMMAND make - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - endif() - ExternalProject_Get_Property(libxml2 source_dir binary_dir) - set(LIBXML2_DEPENDS libxml2) - set(LIBXML2_FOUND ON CACHE INTERNAL "") - set(LIBXML2_INCLUDE_DIR "${source_dir}/include" CACHE INTERNAL "") - if(WIN32) - set(LIBXML2_LIBRARIES "${source_dir}/win32/bin.msvc/libxml2.lib" CACHE INTERNAL "") - makeCopy("${source_dir}/win32/bin.msvc/libxml2${CMAKE_SHARED_LIBRARY_SUFFIX}" "${SDRANGEL_BINARY_BIN_DIR}/libxml2${CMAKE_SHARED_LIBRARY_SUFFIX}" libxml2) - install(FILES "${source_dir}/win32/bin.msvc/libxml2${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") - elseif(APPLE) - set(LIBXML2_LIBRARIES "${source_dir}/.libs/libxml2${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") - install(DIRECTORY "${source_dir}/.libs/" DESTINATION "${INSTALL_LIB_DIR}" - FILES_MATCHING PATTERN "libxml2*${CMAKE_SHARED_LIBRARY_SUFFIX}") - set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${source_dir}/.libs") - endif() - # needs pkgconfig, libusb, pthreads, libxml2 - ExternalProject_Add(libiio - GIT_REPOSITORY https://github.com/analogdevicesinc/libiio.git - GIT_TAG ${LIBIIO_TAG} - DEPENDS ${PTHREADS4W_DEPENDS} ${LIBXML2_DEPENDS} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/libiio" - CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} - -DLIBUSB_LIBRARIES=${LIBUSB_LIBRARIES} - -DLIBUSB_INCLUDE_DIR=${LIBUSB_INCLUDE_DIR} - -DTHREADS_PTHREADS_INCLUDE_DIR=${PTHREADS4W_INCLUDE_DIR} - -DTHREADS_PTHREADS_WIN32_LIBRARY=${PTHREADS4W_LIBRARIES} - -DLIBXML2_INCLUDE_DIR=${LIBXML2_INCLUDE_DIR} - -DLIBXML2_LIBRARIES=${LIBXML2_LIBRARIES} - -DCSHARP_BINDINGS=OFF - -DPYTHON_BINDINGS=OFF - -DWITH_MATLAB_BINDINGS_API=OFF - -DOSX_PACKAGE=OFF - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - add_dependencies(libiio pthreads4w) - ExternalProject_Get_Property(libiio source_dir binary_dir) - set(LIBIIO_FOUND ON CACHE INTERNAL "") - set(LIBIIO_INCLUDE_DIR "${source_dir}" CACHE INTERNAL "") - if(WIN32) - set(LIBIIO_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/libiio.lib" CACHE INTERNAL "") - install(FILES "${SDRANGEL_BINARY_BIN_DIR}/libiio${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") - elseif(APPLE) - set(LIBIIO_LIBRARIES "${binary_dir}/libiio${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") - install(DIRECTORY "${binary_dir}/" DESTINATION "${INSTALL_LIB_DIR}" - FILES_MATCHING PATTERN "libiio*${CMAKE_SHARED_LIBRARY_SUFFIX}") - string(REPLACE "v" "" IIO_VERSION ${IIO_TAG}) - makeCopy("${binary_dir}/libiio.framework/Versions/${IIO_VERSION}/libiio" "${binary_dir}/libiio${CMAKE_SHARED_LIBRARY_SUFFIX}" libiio) - add_custom_command(TARGET libiio POST_BUILD COMMAND install_name_tool -id "${binary_dir}/libiio${CMAKE_SHARED_LIBRARY_SUFFIX}" "${binary_dir}/libiio${CMAKE_SHARED_LIBRARY_SUFFIX}") - set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}") - endif() - endif(ENABLE_IIO) + if (ENABLE_HACKRF) + # SOURCE_SUBDIR require cmake 3.7.0 + # otherwise use CONFIGURE_COMMAND + cmake_minimum_required(VERSION 3.7.0) + # needs pkgconfig, libusb, fftw, pthreads + if (WIN32) + set(HACKRF_LIBUSB_INCLUDE_DIR ${LIBUSB_INCLUDE_DIR}/libusb-1.0) + else () + set(HACKRF_LIBUSB_INCLUDE_DIR ${LIBUSB_INCLUDE_DIR}) + endif () + ExternalProject_Add(hackrf + GIT_REPOSITORY https://github.com/mossmann/hackrf.git + GIT_TAG ${HACKRF_TAG} + GIT_SUBMODULES "" + DEPENDS ${PTHREADS4W_DEPENDS} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/hackrf" + SOURCE_SUBDIR "host/libhackrf" + CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} + -DLIBUSB_LIBRARIES=${LIBUSB_LIBRARIES} + -DLIBUSB_INCLUDE_DIR=${HACKRF_LIBUSB_INCLUDE_DIR} + -DTHREADS_PTHREADS_INCLUDE_DIR=${PTHREADS4W_INCLUDE_DIR} + -DTHREADS_PTHREADS_WIN32_LIBRARY=${PTHREADS4W_LIBRARIES} + -DFFTW_INCLUDES=${FFTW3F_INCLUDE_DIRS} + -DFFTW_LIBRARIES=${FFTW3F_LIBRARIES} + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + add_dependencies(hackrf pthreads4w) + ExternalProject_Get_Property(hackrf source_dir binary_dir) + set(LIBHACKRF_FOUND ON CACHE INTERNAL "") + set(LIBHACKRF_EXTERNAL ON CACHE INTERNAL "") + set(LIBHACKRF_INCLUDE_DIR "${source_dir}/host/libhackrf" CACHE INTERNAL "") + if (WIN32) + set(LIBHACKRF_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/hackrf.lib" CACHE INTERNAL "") + # include "libhackrf/hackrf.h" + makeCopyDir("${source_dir}/host/libhackrf/src" "${source_dir}/host/libhackrf/libhackrf" hackrf) + install(FILES "${SDRANGEL_BINARY_BIN_DIR}/hackrf${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") + elseif (APPLE) + set(LIBHACKRF_LIBRARIES "${binary_dir}/src/libhackrf${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + # include "libhackrf/hackrf.h" + makeLink("${source_dir}/host/libhackrf/src" "${source_dir}/host/libhackrf/libhackrf" hackrf) + set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/") + install(DIRECTORY "${binary_dir}/src/" DESTINATION "${INSTALL_LIB_DIR}" + FILES_MATCHING PATTERN "libhackrf*${CMAKE_SHARED_LIBRARY_SUFFIX}") + endif () + endif (ENABLE_HACKRF) - if(ENABLE_BLADERF) - # needs pkgconfig, libusb, pthreads - ExternalProject_Add(bladerf - GIT_REPOSITORY https://github.com/Nuand/bladeRF.git - GIT_TAG ${BLADERF_TAG} - DEPENDS ${PTHREADS4W_DEPENDS} - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/bladerf" - CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} - -DPKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE} - -DENABLE_BACKEND_USB=ON - -DENABLE_BACKEND_LIBUSB=ON - -DLIBUSB_HEADER_FILE=${LIBUSB_INCLUDE_DIR}/libusb-1.0/libusb.h - -Dusb_LIBRARY=${LIBUSB_LIBRARIES} - -DLIBUSB_PATH=${EXTERNAL_LIBRARY_FOLDER}/libusb - -DTHREADS_PTHREADS_INCLUDE_DIR=${PTHREADS4W_INCLUDE_DIR} - -DTHREADS_PTHREADS_WIN32_LIBRARY=${PTHREADS4W_LIBRARIES} - -DLIBPTHREADSWIN32_PATH=${PTHREADS4W_INCLUDE_DIR} - -DENABLE_FX3_BUILD=OFF - -DENABLE_HOST_BUILD=ON - -DENABLE_BACKEND_CYAPI=OFF - -DTREAT_WARNINGS_AS_ERRORS=OFF - INSTALL_COMMAND "" - TEST_COMMAND "" - ) - add_dependencies(bladerf pthreads4w) - ExternalProject_Get_Property(bladerf source_dir binary_dir) - set(LIBBLADERF_FOUND ON CACHE INTERNAL "") - set(LIBBLADERF_INCLUDE_DIRS "${source_dir}/host/libraries/libbladeRF/include" CACHE INTERNAL "") - if(WIN32) - set(LIBBLADERF_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/bladeRF.lib" CACHE INTERNAL "") - install(FILES "${SDRANGEL_BINARY_BIN_DIR}/bladeRF${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") - elseif(APPLE) - set(LIBBLADERF_LIBRARIES "${binary_dir}/host/output/libbladeRF${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") - install(DIRECTORY "${binary_dir}/host/output/" DESTINATION "${INSTALL_LIB_DIR}" - FILES_MATCHING PATTERN "libbladeRF*${CMAKE_SHARED_LIBRARY_SUFFIX}") - set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/host/output") - endif() - endif(ENABLE_BLADERF) -endif(WIN32 OR APPLE) + if (ENABLE_IIO) + if (WIN32) + ExternalProject_Add(libxml2 + GIT_REPOSITORY https://github.com/GNOME/libxml2.git + GIT_TAG ${LIBXML2_TAG} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/libxml2" + BUILD_IN_SOURCE 1 + CONFIGURE_COMMAND cd /win32 && cscript configure.js compiler=msvc iconv=no + BUILD_COMMAND cd /win32 && nmake -f Makefile.msvc + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + elseif (APPLE) + set(LIBXML2_PATCH_COMMAND /usr/bin/sed -i '' "s/libtoolize/glibtoolize/g" autogen.sh) + ExternalProject_Add(libxml2 + GIT_REPOSITORY https://github.com/GNOME/libxml2.git + GIT_TAG ${LIBXML2_TAG} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/libxml2" + BUILD_IN_SOURCE 1 + PATCH_COMMAND ${LIBXML2_PATCH_COMMAND} + CONFIGURE_COMMAND ./autogen.sh + BUILD_COMMAND make + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + endif () + ExternalProject_Get_Property(libxml2 source_dir binary_dir) + set(LIBXML2_DEPENDS libxml2) + set(LIBXML2_FOUND ON CACHE INTERNAL "") + set(LIBXML2_EXTERNAL ON CACHE INTERNAL "") + set(LIBXML2_INCLUDE_DIR "${source_dir}/include" CACHE INTERNAL "") + if (WIN32) + set(LIBXML2_LIBRARIES "${source_dir}/win32/bin.msvc/libxml2.lib" CACHE INTERNAL "") + makeCopy("${source_dir}/win32/bin.msvc/libxml2${CMAKE_SHARED_LIBRARY_SUFFIX}" "${SDRANGEL_BINARY_BIN_DIR}/libxml2${CMAKE_SHARED_LIBRARY_SUFFIX}" libxml2) + install(FILES "${source_dir}/win32/bin.msvc/libxml2${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") + elseif (APPLE) + set(LIBXML2_LIBRARIES "${source_dir}/.libs/libxml2${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + install(DIRECTORY "${source_dir}/.libs/" DESTINATION "${INSTALL_LIB_DIR}" + FILES_MATCHING PATTERN "libxml2*${CMAKE_SHARED_LIBRARY_SUFFIX}") + set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${source_dir}/.libs") + endif () + # needs pkgconfig, libusb, pthreads, libxml2 + ExternalProject_Add(libiio + GIT_REPOSITORY https://github.com/analogdevicesinc/libiio.git + GIT_TAG ${LIBIIO_TAG} + DEPENDS ${PTHREADS4W_DEPENDS} ${LIBXML2_DEPENDS} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/libiio" + CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} + -DLIBUSB_LIBRARIES=${LIBUSB_LIBRARIES} + -DLIBUSB_INCLUDE_DIR=${LIBUSB_INCLUDE_DIR} + -DTHREADS_PTHREADS_INCLUDE_DIR=${PTHREADS4W_INCLUDE_DIR} + -DTHREADS_PTHREADS_WIN32_LIBRARY=${PTHREADS4W_LIBRARIES} + -DLIBXML2_INCLUDE_DIR=${LIBXML2_INCLUDE_DIR} + -DLIBXML2_LIBRARIES=${LIBXML2_LIBRARIES} + -DCSHARP_BINDINGS=OFF + -DPYTHON_BINDINGS=OFF + -DWITH_MATLAB_BINDINGS_API=OFF + -DOSX_PACKAGE=OFF + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + add_dependencies(libiio pthreads4w) + ExternalProject_Get_Property(libiio source_dir binary_dir) + set(LIBIIO_FOUND ON CACHE INTERNAL "") + set(LIBIIO_EXTERNAL ON CACHE INTERNAL "") + set(LIBIIO_INCLUDE_DIR "${source_dir}" CACHE INTERNAL "") + if (WIN32) + set(LIBIIO_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/libiio.lib" CACHE INTERNAL "") + install(FILES "${SDRANGEL_BINARY_BIN_DIR}/libiio${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") + elseif (APPLE) + set(LIBIIO_LIBRARIES "${binary_dir}/libiio${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + install(DIRECTORY "${binary_dir}/" DESTINATION "${INSTALL_LIB_DIR}" + FILES_MATCHING PATTERN "libiio*${CMAKE_SHARED_LIBRARY_SUFFIX}") + string(REPLACE "v" "" IIO_VERSION ${IIO_TAG}) + makeCopy("${binary_dir}/libiio.framework/Versions/${IIO_VERSION}/libiio" "${binary_dir}/libiio${CMAKE_SHARED_LIBRARY_SUFFIX}" libiio) + add_custom_command(TARGET libiio POST_BUILD COMMAND install_name_tool -id "${binary_dir}/libiio${CMAKE_SHARED_LIBRARY_SUFFIX}" "${binary_dir}/libiio${CMAKE_SHARED_LIBRARY_SUFFIX}") + set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}") + endif () + endif (ENABLE_IIO) + + if (ENABLE_BLADERF) + # needs pkgconfig, libusb, pthreads + ExternalProject_Add(bladerf + GIT_REPOSITORY https://github.com/Nuand/bladeRF.git + GIT_TAG ${BLADERF_TAG} + DEPENDS ${PTHREADS4W_DEPENDS} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/bladerf" + CMAKE_ARGS ${DEFAULT_OUTPUT_DIRECTORIES} + -DPKG_CONFIG_EXECUTABLE=${PKG_CONFIG_EXECUTABLE} + -DENABLE_BACKEND_USB=ON + -DENABLE_BACKEND_LIBUSB=ON + -DLIBUSB_HEADER_FILE=${LIBUSB_INCLUDE_DIR}/libusb-1.0/libusb.h + -Dusb_LIBRARY=${LIBUSB_LIBRARIES} + -DLIBUSB_PATH=${EXTERNAL_LIBRARY_FOLDER}/libusb + -DTHREADS_PTHREADS_INCLUDE_DIR=${PTHREADS4W_INCLUDE_DIR} + -DTHREADS_PTHREADS_WIN32_LIBRARY=${PTHREADS4W_LIBRARIES} + -DLIBPTHREADSWIN32_PATH=${PTHREADS4W_INCLUDE_DIR} + -DENABLE_FX3_BUILD=OFF + -DENABLE_HOST_BUILD=ON + -DENABLE_BACKEND_CYAPI=OFF + -DTREAT_WARNINGS_AS_ERRORS=OFF + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + add_dependencies(bladerf pthreads4w) + ExternalProject_Get_Property(bladerf source_dir binary_dir) + set(LIBBLADERF_FOUND ON CACHE INTERNAL "") + set(LIBBLADERF_EXTERNAL ON CACHE INTERNAL "") + set(LIBBLADERF_INCLUDE_DIRS "${source_dir}/host/libraries/libbladeRF/include" CACHE INTERNAL "") + if (WIN32) + set(LIBBLADERF_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/bladeRF.lib" CACHE INTERNAL "") + install(FILES "${SDRANGEL_BINARY_BIN_DIR}/bladeRF${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") + elseif (APPLE) + set(LIBBLADERF_LIBRARIES "${binary_dir}/host/output/libbladeRF${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + install(DIRECTORY "${binary_dir}/host/output/" DESTINATION "${INSTALL_LIB_DIR}" + FILES_MATCHING PATTERN "libbladeRF*${CMAKE_SHARED_LIBRARY_SUFFIX}") + set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/host/output") + endif () + endif (ENABLE_BLADERF) +endif (WIN32 OR APPLE) diff --git a/plugins/channelrx/demoddsd/CMakeLists.txt b/plugins/channelrx/demoddsd/CMakeLists.txt index 89ef936b1..9185a3558 100644 --- a/plugins/channelrx/demoddsd/CMakeLists.txt +++ b/plugins/channelrx/demoddsd/CMakeLists.txt @@ -57,7 +57,7 @@ add_library(${TARGET_NAME} SHARED ${dsddemod_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(LIBDSDCC_EXTERNAL) add_dependencies(${TARGET_NAME} dsdcc) endif() @@ -67,7 +67,7 @@ target_link_libraries(${TARGET_NAME} sdrbase ${TARGET_LIB_GUI} ${LIBDSDCC_LIBRARIES} - ${LIBMBE_LIBRARY} + ${LIBMBE_LIBRARIES} ) install(TARGETS ${TARGET_NAME} DESTINATION ${INSTALL_FOLDER}) diff --git a/plugins/channelrx/demodfreedv/CMakeLists.txt b/plugins/channelrx/demodfreedv/CMakeLists.txt index 160b8893f..e8f7e0a50 100644 --- a/plugins/channelrx/demodfreedv/CMakeLists.txt +++ b/plugins/channelrx/demodfreedv/CMakeLists.txt @@ -48,7 +48,7 @@ add_library(${TARGET_NAME} SHARED ${freedv_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(CODEC2_EXTERNAL) add_dependencies(${TARGET_NAME} codec2) endif() diff --git a/plugins/channelrx/remotesink/CMakeLists.txt b/plugins/channelrx/remotesink/CMakeLists.txt index 172855119..64713e86d 100644 --- a/plugins/channelrx/remotesink/CMakeLists.txt +++ b/plugins/channelrx/remotesink/CMakeLists.txt @@ -63,7 +63,7 @@ add_library(${TARGET_NAME} SHARED ${remotesink_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(CM256CC_EXTERNAL) add_dependencies(${TARGET_NAME} cm256cc) endif() diff --git a/plugins/channeltx/modfreedv/CMakeLists.txt b/plugins/channeltx/modfreedv/CMakeLists.txt index 1e7af9440..0517d00d2 100644 --- a/plugins/channeltx/modfreedv/CMakeLists.txt +++ b/plugins/channeltx/modfreedv/CMakeLists.txt @@ -48,7 +48,7 @@ add_library(${TARGET_NAME} SHARED ${modfreedv_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(CODEC2_EXTERNAL) add_dependencies(${TARGET_NAME} codec2) endif() diff --git a/plugins/channeltx/remotesource/CMakeLists.txt b/plugins/channeltx/remotesource/CMakeLists.txt index 245555290..77738aa71 100644 --- a/plugins/channeltx/remotesource/CMakeLists.txt +++ b/plugins/channeltx/remotesource/CMakeLists.txt @@ -63,7 +63,7 @@ add_library(${TARGET_NAME} SHARED ${remotesource_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(CM256CC_EXTERNAL) add_dependencies(${TARGET_NAME} cm256cc) endif() diff --git a/plugins/samplesink/bladerf1output/CMakeLists.txt b/plugins/samplesink/bladerf1output/CMakeLists.txt index 8278bf814..f0a5e7d50 100644 --- a/plugins/samplesink/bladerf1output/CMakeLists.txt +++ b/plugins/samplesink/bladerf1output/CMakeLists.txt @@ -49,7 +49,7 @@ add_library(${TARGET_NAME} SHARED ${bladerf1output_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(LIBBLADERF_EXTERNAL) add_dependencies(${TARGET_NAME} bladerf) endif() diff --git a/plugins/samplesink/bladerf2output/CMakeLists.txt b/plugins/samplesink/bladerf2output/CMakeLists.txt index 776e53eed..d9fe673bd 100644 --- a/plugins/samplesink/bladerf2output/CMakeLists.txt +++ b/plugins/samplesink/bladerf2output/CMakeLists.txt @@ -49,7 +49,7 @@ add_library(${TARGET_NAME} SHARED ${bladerf2output_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(LIBBLADERF_EXTERNAL) add_dependencies(${TARGET_NAME} bladerf) endif() diff --git a/plugins/samplesink/limesdroutput/CMakeLists.txt b/plugins/samplesink/limesdroutput/CMakeLists.txt index 1088d8570..3335fb03e 100644 --- a/plugins/samplesink/limesdroutput/CMakeLists.txt +++ b/plugins/samplesink/limesdroutput/CMakeLists.txt @@ -49,7 +49,7 @@ add_library(${TARGET_NAME} SHARED ${limesdroutput_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(LIMESUITE_EXTERNAL) add_dependencies(${TARGET_NAME} limesuite) endif() diff --git a/plugins/samplesink/plutosdroutput/CMakeLists.txt b/plugins/samplesink/plutosdroutput/CMakeLists.txt index 8dd07379b..ba2aec4ea 100644 --- a/plugins/samplesink/plutosdroutput/CMakeLists.txt +++ b/plugins/samplesink/plutosdroutput/CMakeLists.txt @@ -49,7 +49,7 @@ add_library(${TARGET_NAME} SHARED ${plutosdroutput_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(LIBIIO_EXTERNAL) add_dependencies(${TARGET_NAME} libiio) endif() diff --git a/plugins/samplesink/remoteoutput/CMakeLists.txt b/plugins/samplesink/remoteoutput/CMakeLists.txt index 09e9b0a20..0e4a08738 100644 --- a/plugins/samplesink/remoteoutput/CMakeLists.txt +++ b/plugins/samplesink/remoteoutput/CMakeLists.txt @@ -63,7 +63,7 @@ add_library(${TARGET_NAME} SHARED ${remoteoutput_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(CM256CC_EXTERNAL) add_dependencies(${TARGET_NAME} cm256cc) endif() diff --git a/plugins/samplesource/airspy/CMakeLists.txt b/plugins/samplesource/airspy/CMakeLists.txt index 8525ce5d8..95a654ef5 100644 --- a/plugins/samplesource/airspy/CMakeLists.txt +++ b/plugins/samplesource/airspy/CMakeLists.txt @@ -47,7 +47,7 @@ add_library(${TARGET_NAME} SHARED ${airspy_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES AND NOT LINUX) +if(LIBAIRSPY_EXTERNAL AND NOT LINUX) add_dependencies(${TARGET_NAME} airspy) endif() diff --git a/plugins/samplesource/airspyhf/CMakeLists.txt b/plugins/samplesource/airspyhf/CMakeLists.txt index 0523774d3..8cc48f4ef 100644 --- a/plugins/samplesource/airspyhf/CMakeLists.txt +++ b/plugins/samplesource/airspyhf/CMakeLists.txt @@ -48,7 +48,7 @@ add_library(${TARGET_NAME} SHARED ${airspyhf_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(LIBAIRSPYHF_EXTERNAL) add_dependencies(${TARGET_NAME} airspyhf) endif() diff --git a/plugins/samplesource/bladerf1input/CMakeLists.txt b/plugins/samplesource/bladerf1input/CMakeLists.txt index 2c076cadd..dd1178b14 100644 --- a/plugins/samplesource/bladerf1input/CMakeLists.txt +++ b/plugins/samplesource/bladerf1input/CMakeLists.txt @@ -49,7 +49,7 @@ add_library(${TARGET_NAME} SHARED ${bladerf1input_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(LIBBLADERF_EXTERNAL) add_dependencies(${TARGET_NAME} bladerf) endif() diff --git a/plugins/samplesource/bladerf2input/CMakeLists.txt b/plugins/samplesource/bladerf2input/CMakeLists.txt index 72331744a..1b04e27a8 100644 --- a/plugins/samplesource/bladerf2input/CMakeLists.txt +++ b/plugins/samplesource/bladerf2input/CMakeLists.txt @@ -49,7 +49,7 @@ add_library(${TARGET_NAME} SHARED ${bladerf2input_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(LIBBLADERF_EXTERNAL) add_dependencies(${TARGET_NAME} bladerf) endif() diff --git a/plugins/samplesource/limesdrinput/CMakeLists.txt b/plugins/samplesource/limesdrinput/CMakeLists.txt index 120a0b78c..bc717fd7b 100644 --- a/plugins/samplesource/limesdrinput/CMakeLists.txt +++ b/plugins/samplesource/limesdrinput/CMakeLists.txt @@ -49,7 +49,7 @@ add_library(${TARGET_NAME} SHARED ${limesdrinput_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(LIMESUITE_EXTERNAL) add_dependencies(${TARGET_NAME} limesuite) endif() diff --git a/plugins/samplesource/perseus/CMakeLists.txt b/plugins/samplesource/perseus/CMakeLists.txt index 66fe7e527..f05280611 100644 --- a/plugins/samplesource/perseus/CMakeLists.txt +++ b/plugins/samplesource/perseus/CMakeLists.txt @@ -50,7 +50,7 @@ add_library(${TARGET_NAME} SHARED ${perseus_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(LIBPERSEUS_EXTERNAL) add_dependencies(${TARGET_NAME} perseus) endif() diff --git a/plugins/samplesource/plutosdrinput/CMakeLists.txt b/plugins/samplesource/plutosdrinput/CMakeLists.txt index 04353377d..5586d8d77 100644 --- a/plugins/samplesource/plutosdrinput/CMakeLists.txt +++ b/plugins/samplesource/plutosdrinput/CMakeLists.txt @@ -49,7 +49,7 @@ add_library(${TARGET_NAME} SHARED ${plutosdrinput_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(LIBIIO_EXTERNAL) add_dependencies(${TARGET_NAME} libiio) endif() diff --git a/plugins/samplesource/remoteinput/CMakeLists.txt b/plugins/samplesource/remoteinput/CMakeLists.txt index 1ac39da99..eb1b83715 100644 --- a/plugins/samplesource/remoteinput/CMakeLists.txt +++ b/plugins/samplesource/remoteinput/CMakeLists.txt @@ -60,7 +60,7 @@ add_library(${TARGET_NAME} SHARED ${remoteinput_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES) +if(CM256CC_EXTERNAL) add_dependencies(${TARGET_NAME} cm256cc) endif() diff --git a/plugins/samplesource/sdrplay/CMakeLists.txt b/plugins/samplesource/sdrplay/CMakeLists.txt index de8f9f920..49c763aeb 100644 --- a/plugins/samplesource/sdrplay/CMakeLists.txt +++ b/plugins/samplesource/sdrplay/CMakeLists.txt @@ -48,6 +48,10 @@ add_library(${TARGET_NAME} SHARED ${sdrplay_SOURCES} ) +if(LIBMIRISDR_EXTERNAL) + add_dependencies(${TARGET_NAME} libmirisdr) +endif(LIBMIRISDR_EXTERNAL) + target_link_libraries(${TARGET_NAME} Qt5::Core ${TARGET_LIB} diff --git a/sdrbase/CMakeLists.txt b/sdrbase/CMakeLists.txt index 45198cb76..ad54e2f67 100644 --- a/sdrbase/CMakeLists.txt +++ b/sdrbase/CMakeLists.txt @@ -326,7 +326,11 @@ add_library(sdrbase SHARED ${sdrbase_SOURCES} ) -if(ENABLE_EXTERNAL_LIBRARIES AND LIBSERIALDV_FOUND) +if(LIMESUITE_EXTERNAL) + add_dependencies(sdrbase limesuite) +endif() + +if(LIBSERIALDV_EXTERNAL) add_dependencies(sdrbase serialdv) endif()