From 3d55ce50ef43ceae6497409feec15e82cbf6ca83 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Sun, 30 Jul 2023 13:05:00 +0100 Subject: [PATCH 01/16] Move find_package from external/CMakeLists.txt to root CMakeLists.txt so variables remain in scope. --- CMakeLists.txt | 28 +++++++++++++--- cmake/ci/build_codec2.sh | 2 +- external/CMakeLists.txt | 24 -------------- plugins/feature/CMakeLists.txt | 58 ++++++++++++++++++++++++++++------ 4 files changed, 73 insertions(+), 39 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 49f1525e4..9d9137ab2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -198,10 +198,6 @@ 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() - # declare build structures # !! change sdrbase/plugins/pluginmanager.cpp too !! add_definitions("-DLIB=\"lib${LIB_SUFFIX}\"") @@ -714,7 +710,31 @@ if(WIN32) endif() # When ENABLE_EXTERNAL_LIBRARIES is ON, we can build most of the required 3rd party libraries from source +# When ENABLE_EXTERNAL_LIBRARIES is AUTO, we only build 3rd party libraries that aren't already available if(ENABLE_EXTERNAL_LIBRARIES) + if (ENABLE_EXTERNAL_LIBRARIES STREQUAL "AUTO") + 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) + find_package(LibUSB) + find_package(Opus) + find_package(Boost) + find_package(ZLIB) + find_package(UHD) + find_package(FFmpeg COMPONENTS AVCODEC AVFORMAT AVUTIL SWSCALE) + find_package(FAAD) + find_package(FFTW3F) + find_package(OpenCV OPTIONAL_COMPONENTS core highgui imgproc imgcodecs videoio) + endif (ENABLE_EXTERNAL_LIBRARIES STREQUAL "AUTO") add_subdirectory(external) find_package(Boost REQUIRED) else() diff --git a/cmake/ci/build_codec2.sh b/cmake/ci/build_codec2.sh index dc5b6e364..da55fd55d 100644 --- a/cmake/ci/build_codec2.sh +++ b/cmake/ci/build_codec2.sh @@ -6,7 +6,7 @@ cd $HOME mkdir -p external && cd external mkdir -p drowe67 && cd drowe67 -git clone https://github.com/drowe67/codec2.git +git clone https://github.com/drowe67/codec2-dev.git codec2 cd codec2 git reset --hard "v1.0.3" diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index d901a31d6..69a46d32e 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -171,30 +171,6 @@ endif (WIN32) set(MACOS_EXTERNAL_LIBS_FIXUP "${CMAKE_BINARY_DIR}/${INSTALL_LIB_DIR}") -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) - find_package(LibUSB) - find_package(Opus) - find_package(Boost) - find_package(ZLIB) - find_package(UHD) - find_package(FFmpeg COMPONENTS AVCODEC AVFORMAT AVUTIL SWSCALE) - find_package(FAAD) - find_package(FFTW3F) - find_package(OpenCV OPTIONAL_COMPONENTS core highgui imgproc imgcodecs videoio) -endif (AUTO_EXTERNAL_LIBRARIES) - # While some of the following projects are not installed (to save time & space), some have to # be so that on MacOS, the paths embedded in the libraries to other libraries are correct (as they are set to # install path, not build). This is required for macdeployqt to be able to find them diff --git a/plugins/feature/CMakeLists.txt b/plugins/feature/CMakeLists.txt index e9abffe2c..8f882653a 100644 --- a/plugins/feature/CMakeLists.txt +++ b/plugins/feature/CMakeLists.txt @@ -2,78 +2,116 @@ project(feature) if (ENABLE_FEATURE_GS232CONTROLLER AND Qt${QT_DEFAULT_MAJOR_VERSION}SerialPort_FOUND) add_subdirectory(gs232controller) +else() + message(STATUS "Not building gs232controller (ENABLE_FEATURE_GS232CONTROLLER=${ENABLE_FEATURE_GS232CONTROLLER} Qt${QT_DEFAULT_MAJOR_VERSION}SerialPort_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}SerialPort_FOUND)") endif() if (ENABLE_FEATURE_MAP AND Qt${QT_DEFAULT_MAJOR_VERSION}Quick_FOUND AND Qt${QT_DEFAULT_MAJOR_VERSION}QuickWidgets_FOUND AND Qt${QT_DEFAULT_MAJOR_VERSION}Positioning_FOUND AND Qt${QT_DEFAULT_MAJOR_VERSION}Location_FOUND) add_subdirectory(map) +else() + message(STATUS "Not building map (ENABLE_FEATURE_MAP=${ENABLE_FEATURE_MAP} Qt${QT_DEFAULT_MAJOR_VERSION}Quick_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}Quick_FOUND} Qt${QT_DEFAULT_MAJOR_VERSION}QuickWidgets_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}QuickWidgets_FOUND} Qt${QT_DEFAULT_MAJOR_VERSION}Positioning_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}Positioning_FOUND} AND Qt${QT_DEFAULT_MAJOR_VERSION}Location_FOUND=${ AND Qt${QT_DEFAULT_MAJOR_VERSION}Location_FOUND})") endif() if (ENABLE_FEATURE_VORLOCALIZER AND Qt${QT_DEFAULT_MAJOR_VERSION}Quick_FOUND AND Qt${QT_DEFAULT_MAJOR_VERSION}QuickWidgets_FOUND AND Qt${QT_DEFAULT_MAJOR_VERSION}Positioning_FOUND) add_subdirectory(vorlocalizer) +else() + message(STATUS "Not building vorlocalizer (ENABLE_FEATURE_VORLOCALIZER=${ENABLE_FEATURE_VORLOCALIZER} Qt${QT_DEFAULT_MAJOR_VERSION}Quick_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}Quick_FOUND} Qt${QT_DEFAULT_MAJOR_VERSION}QuickWidgets_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}QuickWidgets_FOUND} Qt${QT_DEFAULT_MAJOR_VERSION}Positioning_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}Positioning_FOUND})") endif() if (ENABLE_FEATURE_AFC) add_subdirectory(afc) +else() + message(STATUS "Not building afc (ENABLE_FEATURE_AFC=${ENABLE_FEATURE_AFC})") endif() if (ENABLE_FEATURE_AIS) add_subdirectory(ais) +else() + message(STATUS "Not building ais (ENABLE_FEATURE_AIS=${ENABLE_FEATURE_AIS})") endif() if (ENABLE_FEATURE_ANTENNATOOLS) add_subdirectory(antennatools) +else() + message(STATUS "Not building antennatools (ENABLE_FEATURE_ANTENNATOOLS=${ENABLE_FEATURE_ANTENNATOOLS})") endif() if (ENABLE_FEATURE_APRS) add_subdirectory(aprs) +else() + message(STATUS "Not building aprs (ENABLE_FEATURE_APRS=${ENABLE_FEATURE_APRS})") endif() if (ENABLE_FEATURE_DEMODANALYZER) add_subdirectory(demodanalyzer) +else() + message(STATUS "Not building demodanalyzer (ENABLE_FEATURE_DEMODANALYZER=${ENABLE_FEATURE_DEMODANALYZER})") endif() if (ENABLE_FEATURE_PERTESTER) add_subdirectory(pertester) +else() + message(STATUS "Not building pertester (ENABLE_FEATURE_PERTESTER=${ENABLE_FEATURE_PERTESTER})") endif() if (ENABLE_FEATURE_RIGCTLSERVER) add_subdirectory(rigctlserver) +else() + message(STATUS "Not building rigctlserver (ENABLE_FEATURE_RIGCTLSERVER=${ENABLE_FEATURE_RIGCTLSERVER})") endif() if (ENABLE_FEATURE_SIMPLEPTT) add_subdirectory(simpleptt) +else() + message(STATUS "Not building simpleptt (ENABLE_FEATURE_SIMPLEPTT=${ENABLE_FEATURE_SIMPLEPTT})") endif() if (NOT SERVER_MODE) if (ENABLE_FEATURE_SATELLITETRACKER AND SGP4_FOUND AND Qt${QT_DEFAULT_MAJOR_VERSION}Positioning_FOUND AND Qt${QT_DEFAULT_MAJOR_VERSION}Charts_FOUND AND Qt${QT_DEFAULT_MAJOR_VERSION}TextToSpeech_FOUND) add_subdirectory(satellitetracker) - endif() - if (ENABLE_FEATURE_JOGDIALCONTROLLER) - add_subdirectory(jogdialcontroller) + else() + message(STATUS "Not building satellitetracker (ENABLE_FEATURE_SATELLITETRACKER=${ENABLE_FEATURE_SATELLITETRACKER} SGP4_FOUND=${SGP4_FOUND} Qt${QT_DEFAULT_MAJOR_VERSION}Positioning_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}Positioning_FOUND} Qt${QT_DEFAULT_MAJOR_VERSION}Charts_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}Charts_FOUND} Qt${QT_DEFAULT_MAJOR_VERSION}TextToSpeech_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}TextToSpeech_FOUND})") endif() else() if (ENABLE_FEATURE_SATELLITETRACKER AND SGP4_FOUND AND Qt${QT_DEFAULT_MAJOR_VERSION}Positioning_FOUND AND Qt${QT_DEFAULT_MAJOR_VERSION}Charts_FOUND) add_subdirectory(satellitetracker) + else() + message(STATUS "Not building satellitetracker (ENABLE_FEATURE_SATELLITETRACKER=${ENABLE_FEATURE_SATELLITETRACKER} SGP4_FOUND=${SGP4_FOUND} Qt${QT_DEFAULT_MAJOR_VERSION}Positioning_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}Positioning_FOUND} Qt${QT_DEFAULT_MAJOR_VERSION}Charts_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}Charts_FOUND})") endif() endif() -if (Qt${QT_DEFAULT_MAJOR_VERSION}Charts_FOUND) - if (ENABLE_FEATURE_RADIOSONDE) - add_subdirectory(radiosonde) - endif() - if (ENABLE_FEATURE_STARTRACKER) - add_subdirectory(startracker) - endif() +if (ENABLE_FEATURE_JOGDIALCONTROLLER AND NOT SERVER_MODE) + add_subdirectory(jogdialcontroller) +else() + message(STATUS "Not building jogdialcontroller (ENABLE_FEATURE_JOGDIALCONTROLLER=${ENABLE_FEATURE_JOGDIALCONTROLLER} SERVER_MODE=${SERVER_MODE})") +endif() + +if (ENABLE_FEATURE_RADIOSONDE AND Qt${QT_DEFAULT_MAJOR_VERSION}Charts_FOUND) + add_subdirectory(radiosonde) +else() + message(STATUS "Not building radiosonde (ENABLE_FEATURE_RADIOSONDE=${ENABLE_FEATURE_RADIOSONDE} Qt${QT_DEFAULT_MAJOR_VERSION}Charts_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}Charts_FOUND})") +endif() + +if (ENABLE_FEATURE_STARTRACKER AND Qt${QT_DEFAULT_MAJOR_VERSION}Charts_FOUND) + add_subdirectory(startracker) +else() + message(STATUS "Not building startracker (ENABLE_FEATURE_STARTRACKER=${ENABLE_FEATURE_STARTRACKER} Qt${QT_DEFAULT_MAJOR_VERSION}Charts_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}Charts_FOUND})") endif() if (ENABLE_FEATURE_LIMERFE AND ENABLE_LIMESUITE AND LIMESUITE_FOUND) add_subdirectory(limerfe) +else() + message(STATUS "Not building limerfe (ENABLE_FEATURE_LIMERFE=${ENABLE_FEATURE_LIMERFE} ENABLE_LIMESUITE=${ENABLE_LIMESUITE} LIMESUITE_FOUND=${LIMESUITE_FOUND})") endif() if (ENABLE_FEATURE_AMBE AND LIBSERIALDV_FOUND) add_subdirectory(ambe) +else() + message(STATUS "Not building ambe (ENABLE_FEATURE_AMBE=${ENABLE_FEATURE_AMBE} LIBSERIALDV_FOUND=${LIBSERIALDV_FOUND})") endif() if (ENABLE_FEATURE_REMOTECONTROL) add_subdirectory(remotecontrol) +else() + message(STATUS "Not building remotecontrol (ENABLE_FEATURE_REMOTECONTROL=${ENABLE_FEATURE_REMOTECONTROL})") endif() From 3ecf00f28e3ef5b9681a3f7c034e25a62cd48811 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Sun, 30 Jul 2023 13:33:57 +0100 Subject: [PATCH 02/16] Fix typo --- plugins/feature/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/feature/CMakeLists.txt b/plugins/feature/CMakeLists.txt index 8f882653a..43cdb07d3 100644 --- a/plugins/feature/CMakeLists.txt +++ b/plugins/feature/CMakeLists.txt @@ -9,7 +9,7 @@ endif() if (ENABLE_FEATURE_MAP AND Qt${QT_DEFAULT_MAJOR_VERSION}Quick_FOUND AND Qt${QT_DEFAULT_MAJOR_VERSION}QuickWidgets_FOUND AND Qt${QT_DEFAULT_MAJOR_VERSION}Positioning_FOUND AND Qt${QT_DEFAULT_MAJOR_VERSION}Location_FOUND) add_subdirectory(map) else() - message(STATUS "Not building map (ENABLE_FEATURE_MAP=${ENABLE_FEATURE_MAP} Qt${QT_DEFAULT_MAJOR_VERSION}Quick_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}Quick_FOUND} Qt${QT_DEFAULT_MAJOR_VERSION}QuickWidgets_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}QuickWidgets_FOUND} Qt${QT_DEFAULT_MAJOR_VERSION}Positioning_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}Positioning_FOUND} AND Qt${QT_DEFAULT_MAJOR_VERSION}Location_FOUND=${ AND Qt${QT_DEFAULT_MAJOR_VERSION}Location_FOUND})") + message(STATUS "Not building map (ENABLE_FEATURE_MAP=${ENABLE_FEATURE_MAP} Qt${QT_DEFAULT_MAJOR_VERSION}Quick_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}Quick_FOUND} Qt${QT_DEFAULT_MAJOR_VERSION}QuickWidgets_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}QuickWidgets_FOUND} Qt${QT_DEFAULT_MAJOR_VERSION}Positioning_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}Positioning_FOUND} Qt${QT_DEFAULT_MAJOR_VERSION}Location_FOUND=${Qt${QT_DEFAULT_MAJOR_VERSION}Location_FOUND})") endif() if (ENABLE_FEATURE_VORLOCALIZER AND Qt${QT_DEFAULT_MAJOR_VERSION}Quick_FOUND AND Qt${QT_DEFAULT_MAJOR_VERSION}QuickWidgets_FOUND AND Qt${QT_DEFAULT_MAJOR_VERSION}Positioning_FOUND) From 7564d8349a7b2f2211ec23a10f77dc93dc99a175 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Sun, 30 Jul 2023 15:45:11 +0100 Subject: [PATCH 03/16] Add set_global_cache function to set variable in cache and parent scope. --- external/CMakeLists.txt | 85 ++++++++++++++++++++++------------------- 1 file changed, 46 insertions(+), 39 deletions(-) diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 69a46d32e..7f49dbea4 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -192,6 +192,13 @@ macro(set_global NAME VALUE) set(${NAME} ${VALUE} PARENT_SCOPE) endmacro() +# Setting a cache variable doesn't update the variable in parent scope if already set, +# so we need to set the cache and parent_scope separately +macro(set_global_cache NAME VALUE) + set(${NAME} ${VALUE} CACHE INTERNAL "") + set(${NAME} ${VALUE} PARENT_SCOPE) +endmacro() + if (NOT LIBUSB_FOUND AND NOT USE_PRECOMPILED_LIBS) # Cloning git repo doesn't include configure, so we download the bz2 which does ExternalProject_Add(libusb @@ -203,7 +210,7 @@ if (NOT LIBUSB_FOUND AND NOT USE_PRECOMPILED_LIBS) ) ExternalProject_Get_Property(libusb install_dir) set_global(LIBUSB_DEPENDS libusb) - set(LIBUSB_FOUND ON CACHE INTERNAL "") + set_global_cache(LIBUSB_FOUND ON) set(LIBUSB_EXTERNAL ON CACHE INTERNAL "") set(LIBUSB_INCLUDE_DIR "${install_dir}/include/libusb-1.0" CACHE INTERNAL "") if (WIN32) @@ -225,7 +232,7 @@ if (NOT HIDAPI_FOUND AND NOT USE_PRECOMPILED_LIBS) ) ExternalProject_Get_Property(hidapi install_dir) set_global(HIDAPI_DEPENDS hidapi) - set(HIDAPI_FOUND ON CACHE INTERNAL "") + set_global_cache(HIDAPI_FOUND ON) set(HIDAPI_EXTERNAL ON CACHE INTERNAL "") set(HIDAPI_ROOT_DIR "${install_dir}" CACHE INTERNAL "") set(HIDAPI_INCLUDE_DIRS "${install_dir}/include/hidapi" CACHE INTERNAL "") @@ -245,7 +252,7 @@ if (NOT OPUS_FOUND AND NOT USE_PRECOMPILED_LIBS) ) ExternalProject_Get_Property(opus install_dir) set_global(OPUS_DEPENDS opus) - set(OPUS_FOUND ON CACHE INTERNAL "") + set_global_cache(OPUS_FOUND ON) set(OPUS_EXTERNAL ON CACHE INTERNAL "") set(OPUS_INCLUDE_DIRS "${install_dir}/include" CACHE INTERNAL "") set(OPUS_PKG_CONFIG_DIR "${install_dir}/lib/pkgconfig" CACHE INTERNAL "") @@ -268,7 +275,7 @@ if (NOT ZLIB_FOUND AND NOT USE_PRECOMPILED_LIBS) ) ExternalProject_Get_Property(zlib install_dir) set_global(ZLIB_DEPENDS zlib) - set(ZLIB_FOUND ON CACHE INTERNAL "") + set_global_cache(ZLIB_FOUND ON) set(ZLIB_EXTERNAL ON CACHE INTERNAL "") set(ZLIB_INCLUDE_DIRS "${install_dir}/include" CACHE INTERNAL "") if (WIN32) @@ -290,7 +297,7 @@ if (NOT FAAD_FOUND AND NOT USE_PRECOMPILED_LIBS) ) ExternalProject_Get_Property(faad source_dir binary_dir install_dir) set_global(FAAD_DEPENDS faad) - set(FAAD_FOUND ON CACHE INTERNAL "") + set_global_cache(FAAD_FOUND ON) set(FAAD_EXTERNAL ON CACHE INTERNAL "") set(FAAD_INCLUDE_DIR "${install_dir}/include" CACHE INTERNAL "") if (WIN32) @@ -314,7 +321,7 @@ if (NOT FFTW3F_FOUND AND NOT USE_PRECOMPILED_LIBS) ) ExternalProject_Get_Property(fftw3f source_dir binary_dir) set_global(FFTW3F_DEPENDS fftw3f) - set(FFTW3F_FOUND ON CACHE INTERNAL "") + set_global_cache(FFTW3F_FOUND ON) set(FFTW3F_EXTERNAL ON CACHE INTERNAL "") set(FFTW3F_INCLUDE_DIRS "${source_dir}/api" "${binary_dir}" CACHE INTERNAL "") if (WIN32) @@ -398,7 +405,7 @@ if (NOT FFMPEG_FOUND AND NOT USE_PRECOMPILED_LIBS) ExternalProject_Get_Property(x264 install_dir) set_global(X264_DEPENDS x264) set(X264_PKG_CONFIG_DIR "${install_dir}/lib/pkgconfig") - set(X264_FOUND ON CACHE INTERNAL "") + set_global_cache(X264_FOUND ON) set(X264_EXTERNAL ON CACHE INTERNAL "") if (APPLE) set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${install_dir}/lib") @@ -416,7 +423,7 @@ if (NOT FFMPEG_FOUND AND NOT USE_PRECOMPILED_LIBS) ExternalProject_Get_Property(x265 install_dir) set_global(X265_DEPENDS x265) set(X265_PKG_CONFIG_DIR "${install_dir}/lib/pkgconfig") - set(X265_FOUND ON CACHE INTERNAL "") + set_global_cache(X265_FOUND ON) set(X265_EXTERNAL ON CACHE INTERNAL "") if (APPLE) set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${install_dir}/lib") @@ -433,7 +440,7 @@ if (NOT FFMPEG_FOUND AND NOT USE_PRECOMPILED_LIBS) ExternalProject_Get_Property(fdk_aac install_dir) set_global(FDK_AAC_DEPENDS fdk_aac) set(FDK_AAC_PKG_CONFIG_DIR "${install_dir}/lib/pkgconfig") - set(FDK_AAC_FOUND ON CACHE INTERNAL "") + set_global_cache(FDK_AAC_FOUND ON) set(FDK_AAC_EXTERNAL ON CACHE INTERNAL "") if (APPLE) set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${install_dir}/lib") @@ -452,7 +459,7 @@ if (NOT FFMPEG_FOUND AND NOT USE_PRECOMPILED_LIBS) ExternalProject_Get_Property(mpg123 install_dir) set_global(MPG123_DEPENDS mpg123) set(MPG123_PKG_CONFIG_DIR "${install_dir}/lib/pkgconfig") - set(MPG123_FOUND ON CACHE INTERNAL "") + set_global_cache(MPG123_FOUND ON) set(MPG123_EXTERNAL ON CACHE INTERNAL "") if (APPLE) set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${install_dir}/lib") @@ -475,7 +482,7 @@ if (NOT FFMPEG_FOUND AND NOT USE_PRECOMPILED_LIBS) #set(LAME_PKG_CONFIG_DIR "${install_dir}/lib/pkgconfig") set(LAME_EXTRA_CFLAGS "-I${install_dir}/include") set(LAME_EXTRA_LDFLAGS "-L${install_dir}/lib") - set(LAME_FOUND ON CACHE INTERNAL "") + set_global_cache(LAME_FOUND ON) set(LAME_EXTERNAL ON CACHE INTERNAL "") if (APPLE) set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${install_dir}/lib") @@ -496,7 +503,7 @@ if (NOT FFMPEG_FOUND AND NOT USE_PRECOMPILED_LIBS) ExternalProject_Get_Property(ffmpeg install_dir) set_global(FFMPEG_DEPENDS ffmpeg) set(FFMPEG_INSTALL_DIR "${install_dir}") - set(FFMPEG_FOUND ON CACHE INTERNAL "") + set_global_cache(FFMPEG_FOUND ON) set(FFMPEG_EXTERNAL ON CACHE INTERNAL "") set(FFMPEG_INCLUDE_DIRS "${install_dir}/include" CACHE INTERNAL "") set(AVCODEC_INCLUDE_DIRS "${install_dir}/include" CACHE INTERNAL "") @@ -527,7 +534,7 @@ if (NOT OpenCV_FOUND AND NOT USE_PRECOMPILED_LIBS) ) ExternalProject_Get_Property(opencv source_dir binary_dir) set_global(OpenCV_DEPENDS opencv) - set(OpenCV_FOUND ON CACHE INTERNAL "") + set_global_cache(OpenCV_FOUND ON) set(OpenCV_EXTERNAL ON CACHE INTERNAL "") set(OpenCV_INCLUDE_DIRS "${source_dir}/modules/calib3d/include" @@ -584,7 +591,7 @@ if ((NOT CODEC2_FOUND OR CODEC2_EXTERNAL) AND NOT USE_PRECOMPILED_LIBS) ) ExternalProject_Get_Property(codec2 source_dir binary_dir) set_global(CODEC2_DEPENDS codec2) - set(CODEC2_FOUND ON CACHE INTERNAL "") + set_global_cache(CODEC2_FOUND ON) set(CODEC2_EXTERNAL ON CACHE INTERNAL "") set(CODEC2_INCLUDE_DIR "${source_dir}/src" "${binary_dir}" CACHE INTERNAL "") if (WIN32) @@ -625,7 +632,7 @@ if (NOT CM256CC_FOUND OR CM256CC_EXTERNAL) ) ExternalProject_Get_Property(cm256cc source_dir binary_dir) set_global(CM256CC_DEPENDS cm256cc) - set(CM256CC_FOUND ON CACHE INTERNAL "") + set_global_cache(CM256CC_FOUND ON) set(CM256CC_EXTERNAL ON CACHE INTERNAL "") # we need cm256cc/library.h set(CM256CC_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/cm256cc/src" CACHE INTERNAL "") @@ -658,7 +665,7 @@ if ((NOT LIBDSDCC_FOUND OR LIBDSDCC_EXTERNAL) AND (NOT LIBMBE_FOUND OR LIBMBE_EX ExternalProject_Get_Property(mbelib source_dir binary_dir) set(USE_MBELIB ON) set_global(DSDCC_DEPENDS mbelib) - set(LIBMBE_FOUND ON CACHE INTERNAL "") + set_global_cache(LIBMBE_FOUND ON) set(LIBMBE_EXTERNAL ON CACHE INTERNAL "") set(LIBMBE_INCLUDE_DIR "${source_dir}" CACHE INTERNAL "") if (WIN32) @@ -688,7 +695,7 @@ if (NOT LIBSERIALDV_FOUND OR LIBSERIALDV_EXTERNAL) TEST_COMMAND "" ) ExternalProject_Get_Property(serialdv source_dir binary_dir) - set(LIBSERIALDV_FOUND ON CACHE INTERNAL "") + set_global_cache(LIBSERIALDV_FOUND ON) set(LIBSERIALDV_EXTERNAL ON CACHE INTERNAL "") set(LIBSERIALDV_INCLUDE_DIR "${source_dir}" CACHE INTERNAL "") if (WIN32) @@ -729,7 +736,7 @@ if ((NOT LIBDSDCC_FOUND OR LIBDSDCC_EXTERNAL) AND LIBMBE_FOUND) TEST_COMMAND "" ) ExternalProject_Get_Property(dsdcc source_dir binary_dir) - set(LIBDSDCC_FOUND ON CACHE INTERNAL "") + set_global_cache(LIBDSDCC_FOUND ON) set(LIBDSDCC_EXTERNAL ON CACHE INTERNAL "") set(LIBDSDCC_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/dsdcc/src" CACHE INTERNAL "") if (WIN32) @@ -759,7 +766,7 @@ ExternalProject_Add(apt ) ExternalProject_Get_Property(apt source_dir binary_dir) set(APT_DEPENDS apt CACHE INTERNAL "") -set(APT_FOUND ON CACHE INTERNAL "") +set_global_cache(APT_FOUND ON) set(APT_EXTERNAL ON CACHE INTERNAL "") set(APT_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/apt/src/apt/src" CACHE INTERNAL "") if (WIN32) @@ -790,7 +797,7 @@ ExternalProject_Add(sgp4 ) ExternalProject_Get_Property(sgp4 source_dir binary_dir) set(SGP4_DEPENDS sgp4 CACHE INTERNAL "") -set(SGP4_FOUND ON CACHE INTERNAL "") +set_global_cache(SGP4_FOUND ON) set(SGP4_EXTERNAL ON CACHE INTERNAL "") set(SGP4_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/sgp4/src/sgp4/libsgp4" CACHE INTERNAL "") if (WIN32) @@ -818,7 +825,7 @@ if (WIN32) ) ExternalProject_Get_Property(pthreads4w source_dir binary_dir) set_global(PTHREADS4W_DEPENDS pthreads4w) - set(PTHREADS4W_FOUND ON CACHE INTERNAL "") + set_global_cache(PTHREADS4W_FOUND ON) set(PTHREADS4W_EXTERNAL ON CACHE INTERNAL "") set(PTHREADS4W_INCLUDE_DIR "${source_dir}" CACHE INTERNAL "") set(PTHREADS4W_LIBRARIES "${source_dir}/pthreadVC2.lib" CACHE INTERNAL "") @@ -875,7 +882,7 @@ if (ZLIB_FOUND AND FAAD_FOUND) endif(WIN32) ExternalProject_Get_Property(dab source_dir binary_dir) set_global(DAB_DEPENDS dab) - set(DAB_FOUND ON CACHE INTERNAL "") + set_global_cache(DAB_FOUND ON) set(DAB_EXTERNAL ON CACHE INTERNAL "") set(DAB_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/dab/src/dab" CACHE INTERNAL "") if (WIN32) @@ -895,7 +902,7 @@ 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 if (NOT LIMESUITE_FOUND OR LIMESUITE_EXTERNAL) - set(LIMESUITE_FOUND ON CACHE INTERNAL "") + set_global_cache(LIMESUITE_FOUND ON) 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${LIB_SUFFIX}/libLimeSuite.so" CACHE INTERNAL "") @@ -924,7 +931,7 @@ if (LINUX) # apt install libbladerf-dev # needs pkgconfig and libusb if (NOT LIBBLADERF_FOUND OR LIBBLADERF_EXTERNAL) - set(LIBBLADERF_FOUND ON CACHE INTERNAL "") + set_global_cache(LIBBLADERF_FOUND ON) 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}/bladerf/src/bladerf-build/output/libbladeRF.so.2" CACHE INTERNAL "") @@ -945,7 +952,7 @@ if (LINUX) # apt install libiio-dev # needs pkgconfig, libusb, libxml2, lzma, xz, libiconv if (NOT LIBIIO_FOUND OR LIBIIO_EXTERNAL) - set(LIBIIO_FOUND ON CACHE INTERNAL "") + set_global_cache(LIBIIO_FOUND ON) 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${LIB_SUFFIX}/libiio.so" CACHE INTERNAL "") @@ -967,7 +974,7 @@ if (LINUX) # apt install libairspyhf-dev (only on ubuntu 18.04) # needs libusb and pkgconfig if (NOT LIBAIRSPYHF_FOUND OR LIBAIRSPYHF_EXTERNAL) - set(LIBAIRSPYHF_FOUND ON CACHE INTERNAL "") + set_global_cache(LIBAIRSPYHF_FOUND ON) set(LIBAIRSPYHF_EXTERNAL ON CACHE INTERNAL "") set(LIBAIRSPYHF_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib${LIB_SUFFIX}/libairspyhf.so" CACHE INTERNAL "") ExternalProject_Add(airspyhf @@ -986,7 +993,7 @@ if (LINUX) # needs pkgconfig, libusb, autoconf, automake and libtool if (NOT LIBPERSEUS_FOUND OR LIBPERSEUS_EXTERNAL) - set(LIBPERSEUS_FOUND ON CACHE INTERNAL "") + set_global_cache(LIBPERSEUS_FOUND ON) 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${LIB_SUFFIX}/libperseus-sdr.so" CACHE INTERNAL "") @@ -1004,7 +1011,7 @@ if (LINUX) # apt install librtlsdr-dev # needs pkgconfig and libusb if (NOT LIBRTLSDR_FOUND OR LIBRTLSDR_EXTERNAL) - set(LIBRTLSDR_FOUND ON CACHE INTERNAL "") + set_global_cache(LIBRTLSDR_FOUND ON) 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${LIB_SUFFIX}/librtlsdr.so" CACHE INTERNAL "") @@ -1022,7 +1029,7 @@ if (LINUX) # needs pkgconfig and libusb if (NOT LIBMIRISDR_FOUND OR LIBMIRISDR_EXTERNAL) - set(LIBMIRISDR_FOUND ON CACHE INTERNAL "") + set_global_cache(LIBMIRISDR_FOUND ON) 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${LIB_SUFFIX}/libmirisdr.so" CACHE INTERNAL "") @@ -1067,7 +1074,7 @@ if (WIN32 OR APPLE) TEST_COMMAND "" ) ExternalProject_Get_Property(rtlsdr source_dir binary_dir) - set(LIBRTLSDR_FOUND ON CACHE INTERNAL "") + set_global_cache(LIBRTLSDR_FOUND ON) set(LIBRTLSDR_EXTERNAL ON CACHE INTERNAL "") set(LIBRTLSDR_INCLUDE_DIR "${source_dir}/include" CACHE INTERNAL "") if (WIN32) @@ -1110,7 +1117,7 @@ if (WIN32 OR APPLE) TEST_COMMAND "" ) ExternalProject_Get_Property(limesuite source_dir binary_dir install_dir) - set(LIMESUITE_FOUND ON CACHE INTERNAL "") + set_global_cache(LIMESUITE_FOUND ON) set(LIMESUITE_EXTERNAL ON CACHE INTERNAL "") set(LIMESUITE_INCLUDE_DIR "${install_dir}/include" CACHE INTERNAL "") if (WIN32) @@ -1143,7 +1150,7 @@ if (WIN32 OR APPLE) TEST_COMMAND "" ) ExternalProject_Get_Property(soapysdr source_dir binary_dir) - set(SOAPYSDR_FOUND ON CACHE INTERNAL "") + set_global_cache(SOAPYSDR_FOUND ON) set(SOAPYSDR_EXTERNAL ON CACHE INTERNAL "") set(SOAPYSDR_INCLUDE_DIR "${source_dir}/include" CACHE INTERNAL "") if (WIN32) @@ -1186,7 +1193,7 @@ if (WIN32 OR APPLE) add_dependencies(airspy pthreads4w) endif () ExternalProject_Get_Property(airspy source_dir binary_dir) - set(LIBAIRSPY_FOUND ON CACHE INTERNAL "") + set_global_cache(LIBAIRSPY_FOUND ON) set(LIBAIRSPY_EXTERNAL ON CACHE INTERNAL "") set(LIBAIRSPY_INCLUDE_DIR "${source_dir}/libairspy/src" CACHE INTERNAL "") if (WIN32) @@ -1228,7 +1235,7 @@ if (WIN32 OR APPLE) add_dependencies(airspyhf pthreads4w) endif() ExternalProject_Get_Property(airspyhf source_dir binary_dir) - set(LIBAIRSPYHF_FOUND ON CACHE INTERNAL "") + set_global_cache(LIBAIRSPYHF_FOUND ON) set(LIBAIRSPYHF_EXTERNAL ON CACHE INTERNAL "") set(LIBAIRSPYHF_INCLUDE_DIR "${source_dir}/libairspyhf/src" CACHE INTERNAL "") if (WIN32) @@ -1273,7 +1280,7 @@ if (WIN32 OR APPLE) add_dependencies(hackrf pthreads4w) endif() ExternalProject_Get_Property(hackrf source_dir binary_dir) - set(LIBHACKRF_FOUND ON CACHE INTERNAL "") + set_global_cache(LIBHACKRF_FOUND ON) set(LIBHACKRF_EXTERNAL ON CACHE INTERNAL "") set(LIBHACKRF_INCLUDE_DIR "${source_dir}/host/libhackrf" CACHE INTERNAL "") if (WIN32) @@ -1319,7 +1326,7 @@ if (WIN32 OR APPLE) endif () ExternalProject_Get_Property(libxml2 source_dir binary_dir) set_global(LIBXML2_DEPENDS libxml2) - set(LIBXML2_FOUND ON CACHE INTERNAL "") + set_global_cache(LIBXML2_FOUND ON) set(LIBXML2_EXTERNAL ON CACHE INTERNAL "") if (WIN32) set(LIBXML2_INCLUDE_DIR "${source_dir}/include" CACHE INTERNAL "") @@ -1366,7 +1373,7 @@ if (WIN32 OR APPLE) add_dependencies(libiio pthreads4w) endif() ExternalProject_Get_Property(libiio source_dir binary_dir) - set(LIBIIO_FOUND ON CACHE INTERNAL "") + set_global_cache(LIBIIO_FOUND ON) set(LIBIIO_EXTERNAL ON CACHE INTERNAL "") set(LIBIIO_INCLUDE_DIR "${source_dir}" CACHE INTERNAL "") if (WIN32) @@ -1417,7 +1424,7 @@ if (WIN32 OR APPLE) add_dependencies(bladerf pthreads4w) endif() ExternalProject_Get_Property(bladerf source_dir binary_dir) - set(LIBBLADERF_FOUND ON CACHE INTERNAL "") + set_global_cache(LIBBLADERF_FOUND ON) set(LIBBLADERF_EXTERNAL ON CACHE INTERNAL "") set(LIBBLADERF_INCLUDE_DIRS "${source_dir}/host/libraries/libbladeRF/include" CACHE INTERNAL "") if (WIN32) @@ -1447,7 +1454,7 @@ if (WIN32 OR APPLE) TEST_COMMAND "" ) ExternalProject_Get_Property(uhd install_dir) - set(UHD_FOUND ON CACHE INTERNAL "") + set_global_cache(UHD_FOUND ON) set(UHD_EXTERNAL ON CACHE INTERNAL "") set(UHD_INCLUDE_DIR "${install_dir}/include" CACHE INTERNAL "") if (WIN32) From fd3314a07bab1d5e5b277f89ba0f1fcc2ce4e144 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Sun, 30 Jul 2023 16:48:42 +0100 Subject: [PATCH 04/16] Only build libs if needed. Tidy up. --- CMakeLists.txt | 125 ++++++++++++++------------------- external/CMakeLists.txt | 152 +++++++++++++++++++++------------------- 2 files changed, 131 insertions(+), 146 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d9137ab2..45443c5bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -709,35 +709,11 @@ if(WIN32) ) endif() -# When ENABLE_EXTERNAL_LIBRARIES is ON, we can build most of the required 3rd party libraries from source +# When ENABLE_EXTERNAL_LIBRARIES is ON, we build most of the required 3rd party libraries from source # When ENABLE_EXTERNAL_LIBRARIES is AUTO, we only build 3rd party libraries that aren't already available -if(ENABLE_EXTERNAL_LIBRARIES) - if (ENABLE_EXTERNAL_LIBRARIES STREQUAL "AUTO") - 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) - find_package(LibUSB) - find_package(Opus) - find_package(Boost) - find_package(ZLIB) - find_package(UHD) - find_package(FFmpeg COMPONENTS AVCODEC AVFORMAT AVUTIL SWSCALE) - find_package(FAAD) - find_package(FFTW3F) - find_package(OpenCV OPTIONAL_COMPONENTS core highgui imgproc imgcodecs videoio) - endif (ENABLE_EXTERNAL_LIBRARIES STREQUAL "AUTO") - add_subdirectory(external) - find_package(Boost REQUIRED) -else() +# When ENABLE_EXTERNAL_LIBRARIES is OFF, we only use prebuilt libraries + +if (NOT ENABLE_EXTERNAL_LIBRARIES OR (ENABLE_EXTERNAL_LIBRARIES STREQUAL "AUTO")) find_package(Boost REQUIRED) find_package(FFTW3F REQUIRED) if(NOT ANDROID) @@ -756,56 +732,61 @@ else() find_package(AptDec) find_package(LibDAB) find_package(HIDAPI) + + # Devices + if(ENABLE_AIRSPY) + find_package(LibAIRSPY) + endif() + if(ENABLE_AIRSPYHF) + find_package(LibAIRSPYHF) + endif() + if(ENABLE_BLADERF) + find_package(LibBLADERF 2.0) + endif() + if(ENABLE_HACKRF) + find_package(LibHACKRF) + endif() + if(ENABLE_LIMESUITE) + find_package(LimeSuite) + if (LIMESUITE_FOUND) + add_definitions(-DHAS_LIMERFEUSB) + endif() + endif() + if(ENABLE_IIO) # PlutoSDR + find_package(LibIIO) + endif() + if(ENABLE_MIRISDR) + find_package(LibMiriSDR) + endif() + if(ENABLE_PERSEUS) + find_package(LibPerseus) + endif() + if(ENABLE_RTLSDR) + find_package(LibRTLSDR) + endif() + if(ENABLE_SDRPLAY) + find_package(SDRplay) + endif() + if(ENABLE_SOAPYSDR) + find_package(SoapySDR) + endif() + if(ENABLE_XTRX) + find_package(LibXTRX) + endif() + if(ENABLE_USRP) + find_package(UHD) + endif() +endif() + +if(ENABLE_EXTERNAL_LIBRARIES) + add_subdirectory(external) + find_package(Boost REQUIRED) endif() if (LIBSIGMF_FOUND AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") add_definitions(-DHAS_LIBSIGMF) endif() -# Devices -if(ENABLE_AIRSPY) - find_package(LibAIRSPY) -endif() -if(ENABLE_AIRSPYHF) - find_package(LibAIRSPYHF) -endif() -if(ENABLE_BLADERF) - find_package(LibBLADERF 2.0) -endif() -if(ENABLE_HACKRF) - find_package(LibHACKRF) -endif() -if(ENABLE_LIMESUITE) - find_package(LimeSuite) - if (LIMESUITE_FOUND) - add_definitions(-DHAS_LIMERFEUSB) - endif() -endif() -if(ENABLE_IIO) # PlutoSDR - find_package(LibIIO) -endif() -if(ENABLE_MIRISDR) - find_package(LibMiriSDR) -endif() -if(ENABLE_PERSEUS) - find_package(LibPerseus) -endif() -if(ENABLE_RTLSDR) - find_package(LibRTLSDR) -endif() -if(ENABLE_SDRPLAY) - find_package(SDRplay) -endif() -if(ENABLE_SOAPYSDR) - find_package(SoapySDR) -endif() -if(ENABLE_XTRX) - find_package(LibXTRX) -endif() -if(ENABLE_USRP) - find_package(UHD) -endif() - if(ENABLE_FUNCUBE AND LIBUSB_FOUND AND HIDAPI_FOUND) add_subdirectory(fcdlib) add_subdirectory(fcdhid) diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 7f49dbea4..8b6851d4d 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -223,7 +223,7 @@ if (NOT LIBUSB_FOUND AND NOT USE_PRECOMPILED_LIBS) endif () endif (NOT LIBUSB_FOUND AND NOT USE_PRECOMPILED_LIBS) -if (NOT HIDAPI_FOUND AND NOT USE_PRECOMPILED_LIBS) +if (NOT HIDAPI_FOUND AND NOT USE_PRECOMPILED_LIBS AND ENABLE_FUNCUBE) ExternalProject_Add(hidapi GIT_REPOSITORY https://github.com/libusb/hidapi.git PREFIX "${EXTERNAL_BUILD_LIBRARIES}/hidapi" @@ -522,7 +522,8 @@ if (NOT FFMPEG_FOUND AND NOT USE_PRECOMPILED_LIBS) endif (NOT FFMPEG_FOUND AND NOT USE_PRECOMPILED_LIBS) -if (NOT OpenCV_FOUND AND NOT USE_PRECOMPILED_LIBS) +# OpenCV only used by Mod ATV curently +if (NOT OpenCV_FOUND AND NOT USE_PRECOMPILED_LIBS AND ENABLE_CHANNELTX_MODATV) ExternalProject_Add(opencv GIT_REPOSITORY https://github.com/opencv/opencv.git GIT_TAG 4.5.5 @@ -750,66 +751,69 @@ if ((NOT LIBDSDCC_FOUND OR LIBDSDCC_EXTERNAL) AND LIBMBE_FOUND) endif ((NOT LIBDSDCC_FOUND OR LIBDSDCC_EXTERNAL) AND LIBMBE_FOUND) # For APT demodulator -if (WIN32) - set(APT_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/apt.lib" CACHE INTERNAL "") -elseif (LINUX) - set(APT_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib${LIB_SUFFIX}/libapt${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") -endif() -ExternalProject_Add(apt - GIT_REPOSITORY https://github.com/srcejon/aptdec.git - GIT_TAG libaptdec - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/apt" - CMAKE_ARGS ${COMMON_CMAKE_ARGS} - BUILD_BYPRODUCTS "${APT_LIBRARIES}" - INSTALL_COMMAND "" - TEST_COMMAND "" - ) -ExternalProject_Get_Property(apt source_dir binary_dir) -set(APT_DEPENDS apt CACHE INTERNAL "") -set_global_cache(APT_FOUND ON) -set(APT_EXTERNAL ON CACHE INTERNAL "") -set(APT_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/apt/src/apt/src" CACHE INTERNAL "") -if (WIN32) - install(FILES "${SDRANGEL_BINARY_BIN_DIR}/apt${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") -elseif (APPLE) - set(APT_LIBRARIES "${binary_dir}/libapt${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") - install(DIRECTORY "${binary_dir}/" DESTINATION "${INSTALL_LIB_DIR}" - FILES_MATCHING PATTERN "libapt*${CMAKE_SHARED_LIBRARY_SUFFIX}") - set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/") +if(ENABLE_CHANNELRX_DEMODAPT) + if (WIN32) + set(APT_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/apt.lib" CACHE INTERNAL "") + elseif (LINUX) + set(APT_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib${LIB_SUFFIX}/libapt${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + endif() + ExternalProject_Add(apt + GIT_REPOSITORY https://github.com/srcejon/aptdec.git + GIT_TAG libaptdec + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/apt" + CMAKE_ARGS ${COMMON_CMAKE_ARGS} + BUILD_BYPRODUCTS "${APT_LIBRARIES}" + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + ExternalProject_Get_Property(apt source_dir binary_dir) + set(APT_DEPENDS apt CACHE INTERNAL "") + set_global_cache(APT_FOUND ON) + set(APT_EXTERNAL ON CACHE INTERNAL "") + set(APT_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/apt/src/apt/src" CACHE INTERNAL "") + if (WIN32) + install(FILES "${SDRANGEL_BINARY_BIN_DIR}/apt${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") + elseif (APPLE) + set(APT_LIBRARIES "${binary_dir}/libapt${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + install(DIRECTORY "${binary_dir}/" DESTINATION "${INSTALL_LIB_DIR}" + FILES_MATCHING PATTERN "libapt*${CMAKE_SHARED_LIBRARY_SUFFIX}") + set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/") + endif () endif () -# For Satellite Tracker feature -# No tags for this in github - but doesn't change often -# Fails to build with CMAKE_INTERPROCEDURAL_OPTIMIZATION=ON on Windows -if (WIN32) - set(SGP4_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/sgp4s.lib" CACHE INTERNAL "") -elseif (LINUX) - set(SGP4_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib${LIB_SUFFIX}/libsgp4s${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") -endif() -ExternalProject_Add(sgp4 - GIT_REPOSITORY https://github.com/dnwrnr/sgp4.git - PREFIX "${EXTERNAL_BUILD_LIBRARIES}/sgp4" - CMAKE_ARGS ${COMMON_CMAKE_ARGS} - -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF - BUILD_BYPRODUCTS "${SGP4_LIBRARIES}" - INSTALL_COMMAND "" - TEST_COMMAND "" - ) -ExternalProject_Get_Property(sgp4 source_dir binary_dir) -set(SGP4_DEPENDS sgp4 CACHE INTERNAL "") -set_global_cache(SGP4_FOUND ON) -set(SGP4_EXTERNAL ON CACHE INTERNAL "") -set(SGP4_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/sgp4/src/sgp4/libsgp4" CACHE INTERNAL "") -if (WIN32) - install(FILES "${SDRANGEL_BINARY_BIN_DIR}/sgp4s${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") -elseif (APPLE) - set(SGP4_LIBRARIES "${binary_dir}/libsgp4/libsgp4s${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") - install(DIRECTORY "${binary_dir}/libsgp4" DESTINATION "${INSTALL_LIB_DIR}" - FILES_MATCHING PATTERN "libsgp4s*${CMAKE_SHARED_LIBRARY_SUFFIX}") - set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/libsgp4") +# For Satellite Tracker feature and APT demod +if(ENABLE_FEATURE_SATELLITETRACKER OR ENABLE_CHANNELRX_DEMODAPT) + # No tags for this in github - but doesn't change often + # Fails to build with CMAKE_INTERPROCEDURAL_OPTIMIZATION=ON on Windows + if (WIN32) + set(SGP4_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/sgp4s.lib" CACHE INTERNAL "") + elseif (LINUX) + set(SGP4_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib${LIB_SUFFIX}/libsgp4s${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + endif() + ExternalProject_Add(sgp4 + GIT_REPOSITORY https://github.com/dnwrnr/sgp4.git + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/sgp4" + CMAKE_ARGS ${COMMON_CMAKE_ARGS} + -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=OFF + BUILD_BYPRODUCTS "${SGP4_LIBRARIES}" + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + ExternalProject_Get_Property(sgp4 source_dir binary_dir) + set(SGP4_DEPENDS sgp4 CACHE INTERNAL "") + set_global_cache(SGP4_FOUND ON) + set(SGP4_EXTERNAL ON CACHE INTERNAL "") + set(SGP4_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/sgp4/src/sgp4/libsgp4" CACHE INTERNAL "") + if (WIN32) + install(FILES "${SDRANGEL_BINARY_BIN_DIR}/sgp4s${CMAKE_SHARED_LIBRARY_SUFFIX}" DESTINATION "${INSTALL_LIB_DIR}") + elseif (APPLE) + set(SGP4_LIBRARIES "${binary_dir}/libsgp4/libsgp4s${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + install(DIRECTORY "${binary_dir}/libsgp4" DESTINATION "${INSTALL_LIB_DIR}" + FILES_MATCHING PATTERN "libsgp4s*${CMAKE_SHARED_LIBRARY_SUFFIX}") + set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/libsgp4") + endif () endif () - # requirements needed by many packages on windows if (WIN32) ExternalProject_Add(pthreads4w @@ -836,7 +840,7 @@ if (WIN32) endif (WIN32) # For DAB demodulator -if (ZLIB_FOUND AND FAAD_FOUND) +if (ZLIB_FOUND AND FAAD_FOUND AND ENABLE_CHANNELRX_DEMODDAB) if (WIN32) set(DAB_LIBRARIES "${SDRANGEL_BINARY_LIB_DIR}/dab_lib.lib" CACHE INTERNAL "") elseif (LINUX) @@ -897,11 +901,11 @@ else() message(STATUS "Can't build DAB library as missing zlib or faad") endif() -# Device interface libraries. Use external libraries build for these. Only Linux for now. +# Device interface libraries. 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 - if (NOT LIMESUITE_FOUND OR LIMESUITE_EXTERNAL) + if (ENABLE_LIMESUITE AND (NOT LIMESUITE_FOUND OR LIMESUITE_EXTERNAL)) set_global_cache(LIMESUITE_FOUND ON) set(LIMESUITE_EXTERNAL ON CACHE INTERNAL "") set(LIMESUITE_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/limesuite/src/limesuite/src" CACHE INTERNAL "") @@ -926,11 +930,11 @@ if (LINUX) ) ExternalProject_Get_Property(limesuite source_dir) makeCopyFile("${source_dir}/src/limeRFE/limeRFE.h" "${source_dir}/src/lime/limeRFE.h" limesuite) - endif (NOT LIMESUITE_FOUND OR LIMESUITE_EXTERNAL) + endif () # apt install libbladerf-dev # needs pkgconfig and libusb - if (NOT LIBBLADERF_FOUND OR LIBBLADERF_EXTERNAL) + if (ENABLE_BLADERF AND (NOT LIBBLADERF_FOUND OR LIBBLADERF_EXTERNAL)) set_global_cache(LIBBLADERF_FOUND ON) set(LIBBLADERF_EXTERNAL ON CACHE INTERNAL "") set(LIBBLADERF_INCLUDE_DIRS "${EXTERNAL_BUILD_LIBRARIES}/bladerf/src/bladerf/host/libraries/libbladeRF/include" CACHE INTERNAL "") @@ -947,11 +951,11 @@ if (LINUX) TEST_COMMAND "" ) install(FILES "${LIBBLADERF_LIBRARIES}" DESTINATION "${INSTALL_LIB_DIR}") - endif (NOT LIBBLADERF_FOUND OR LIBBLADERF_EXTERNAL) + endif () # apt install libiio-dev # needs pkgconfig, libusb, libxml2, lzma, xz, libiconv - if (NOT LIBIIO_FOUND OR LIBIIO_EXTERNAL) + if (ENABLE_IIO AND (NOT LIBIIO_FOUND OR LIBIIO_EXTERNAL)) set_global_cache(LIBIIO_FOUND ON) set(LIBIIO_EXTERNAL ON CACHE INTERNAL "") set(LIBIIO_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/libiio/src/libiio" CACHE INTERNAL "") @@ -969,11 +973,11 @@ if (LINUX) INSTALL_COMMAND "" TEST_COMMAND "" ) - endif (NOT LIBIIO_FOUND OR LIBIIO_EXTERNAL) + endif () # apt install libairspyhf-dev (only on ubuntu 18.04) # needs libusb and pkgconfig - if (NOT LIBAIRSPYHF_FOUND OR LIBAIRSPYHF_EXTERNAL) + if (ENABLE_AIRSPYHF AND (NOT LIBAIRSPYHF_FOUND OR LIBAIRSPYHF_EXTERNAL)) set_global_cache(LIBAIRSPYHF_FOUND ON) set(LIBAIRSPYHF_EXTERNAL ON CACHE INTERNAL "") set(LIBAIRSPYHF_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib${LIB_SUFFIX}/libairspyhf.so" CACHE INTERNAL "") @@ -989,10 +993,10 @@ if (LINUX) ExternalProject_Get_Property(airspyhf source_dir) set(LIBAIRSPYHF_INCLUDE_DIR "${source_dir}/.." CACHE INTERNAL "") makeLink("${source_dir}/libairspyhf/src" "${source_dir}/../libairspyhf" airspyhf) - endif (NOT LIBAIRSPYHF_FOUND OR LIBAIRSPYHF_EXTERNAL) + endif () # needs pkgconfig, libusb, autoconf, automake and libtool - if (NOT LIBPERSEUS_FOUND OR LIBPERSEUS_EXTERNAL) + if (ENABLE_PERSEUS AND (NOT LIBPERSEUS_FOUND OR LIBPERSEUS_EXTERNAL)) set_global_cache(LIBPERSEUS_FOUND ON) set(LIBPERSEUS_EXTERNAL ON CACHE INTERNAL "") set(LIBPERSEUS_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/perseus/src/perseus" CACHE INTERNAL "") @@ -1006,11 +1010,11 @@ if (LINUX) INSTALL_COMMAND "" TEST_COMMAND "" ) - endif (NOT LIBPERSEUS_FOUND OR LIBPERSEUS_EXTERNAL) + endif () # apt install librtlsdr-dev # needs pkgconfig and libusb - if (NOT LIBRTLSDR_FOUND OR LIBRTLSDR_EXTERNAL) + if (ENABLE_RTLSDR AND (NOT LIBRTLSDR_FOUND OR LIBRTLSDR_EXTERNAL)) set_global_cache(LIBRTLSDR_FOUND ON) set(LIBRTLSDR_EXTERNAL ON CACHE INTERNAL "") set(LIBRTLSDR_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/rtlsdr/src/rtlsdr/include" CACHE INTERNAL "") @@ -1025,10 +1029,10 @@ if (LINUX) INSTALL_COMMAND "" TEST_COMMAND "" ) - endif (NOT LIBRTLSDR_FOUND OR LIBRTLSDR_EXTERNAL) + endif () # needs pkgconfig and libusb - if (NOT LIBMIRISDR_FOUND OR LIBMIRISDR_EXTERNAL) + if (ENABLE_MIRISDR AND (NOT LIBMIRISDR_FOUND OR LIBMIRISDR_EXTERNAL)) set_global_cache(LIBMIRISDR_FOUND ON) set(LIBMIRISDR_EXTERNAL ON CACHE INTERNAL "") set(LIBMIRISDR_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/libmirisdr/src/libmirisdr/include" CACHE INTERNAL "") @@ -1042,7 +1046,7 @@ if (LINUX) INSTALL_COMMAND "" TEST_COMMAND "" ) - endif (NOT LIBMIRISDR_FOUND OR LIBMIRISDR_EXTERNAL) + endif () endif (LINUX) From 2b10feb5af81f30c8312d72b02f6f28c6e802179 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Sun, 30 Jul 2023 16:50:48 +0100 Subject: [PATCH 05/16] Fix cmake warning --- external/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 8b6851d4d..5d0d78c33 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -240,7 +240,7 @@ if (NOT HIDAPI_FOUND AND NOT USE_PRECOMPILED_LIBS AND ENABLE_FUNCUBE) set(HIDAPI_LIBRARIES "${install_dir}/lib/libhidapi${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${install_dir}/lib") endif () -endif (NOT HIDAPI_FOUND AND NOT USE_PRECOMPILED_LIBS) +endif () if (NOT OPUS_FOUND AND NOT USE_PRECOMPILED_LIBS) ExternalProject_Add(opus @@ -570,7 +570,7 @@ if (NOT OpenCV_FOUND AND NOT USE_PRECOMPILED_LIBS AND ENABLE_CHANNELTX_MODATV) set(OpenCV_LIBS "${binary_dir}/lib/libopencv_core${CMAKE_SHARED_LIBRARY_SUFFIX};${binary_dir}/lib/libopencv_core${CMAKE_SHARED_LIBRARY_SUFFIX};${binary_dir}/lib/libopencv_highgui${CMAKE_SHARED_LIBRARY_SUFFIX};${binary_dir}/lib/libopencv_video${CMAKE_SHARED_LIBRARY_SUFFIX};${binary_dir}/lib/libopencv_videoio${CMAKE_SHARED_LIBRARY_SUFFIX};${binary_dir}/lib/libopencv_imgproc${CMAKE_SHARED_LIBRARY_SUFFIX};${binary_dir}/lib/libopencv_imgcodecs${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") set(MACOS_EXTERNAL_LIBS_FIXUP "${MACOS_EXTERNAL_LIBS_FIXUP};${binary_dir}/lib") endif () -endif (NOT OpenCV_FOUND AND NOT USE_PRECOMPILED_LIBS) +endif (NOT OpenCV_FOUND AND NOT USE_PRECOMPILED_LIBS AND ENABLE_CHANNELTX_MODATV) if ((NOT CODEC2_FOUND OR CODEC2_EXTERNAL) AND NOT USE_PRECOMPILED_LIBS) # needs speexdsp From b89f2c643cc11d24c510d63206e7974ffe574ebc Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Sun, 30 Jul 2023 17:12:43 +0100 Subject: [PATCH 06/16] Add libsigmf as an external project --- external/CMakeLists.txt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 5d0d78c33..e59bfb44f 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -19,6 +19,7 @@ set(LIBIIO_TAG 826563e41b5ce9890b75506f672017de8d76d52d) set(AIRSPYHF_TAG "1af81c0ca18944b8c9897c3c98dc0a991815b686") set(PERSEUS_TAG afefa23e3140ac79d845acb68cf0beeb86d09028) set(MIRISDR_TAG "v2.0.0") +set(LIBSIGMF_TAG "new-namespaces") set(PTHREADS4W_TAG "Version-2-11-0-release") set(RTLSDR_TAG 5e73f90f1d85d8db2e583f3dbf1cff052d71d59b) @@ -750,6 +751,23 @@ if ((NOT LIBDSDCC_FOUND OR LIBDSDCC_EXTERNAL) AND LIBMBE_FOUND) endif () endif ((NOT LIBDSDCC_FOUND OR LIBDSDCC_EXTERNAL) AND LIBMBE_FOUND) +if (LINUX AND (NOT LIBSIGMF_FOUND OR LIBSIGMF_EXTERNAL)) + set(LIBSIGMF_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib${LIB_SUFFIX}/libsigmf${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + ExternalProject_Add(libsigmf + GIT_REPOSITORY https://github.com/f4exb/libsigmf.git + GIT_TAG ${LIBSIGMF_TAG} + PREFIX "${EXTERNAL_BUILD_LIBRARIES}/libsigmf" + CMAKE_ARGS ${COMMON_CMAKE_ARGS} + BUILD_BYPRODUCTS "${LIBSIGMF_LIBRARIES}" + INSTALL_COMMAND "" + TEST_COMMAND "" + ) + ExternalProject_Get_Property(libsigmf source_dir binary_dir) + set_global_cache(LIBSIGMF_FOUND ON) + set(LIBSIGMF_EXTERNAL ON CACHE INTERNAL "") + set(LIBSIGMF_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/libsigmf/src" CACHE INTERNAL "") +endif (LINUX AND (NOT LIBSIGMF_FOUND OR LIBSIGMF_EXTERNAL)) + # For APT demodulator if(ENABLE_CHANNELRX_DEMODAPT) if (WIN32) From eb7d3e193dfdc720c18d29e79847be8e4b45e7f9 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Sun, 30 Jul 2023 18:20:40 +0100 Subject: [PATCH 07/16] Install libsigmf --- external/CMakeLists.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index e59bfb44f..0a6b861a8 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -759,13 +759,12 @@ if (LINUX AND (NOT LIBSIGMF_FOUND OR LIBSIGMF_EXTERNAL)) PREFIX "${EXTERNAL_BUILD_LIBRARIES}/libsigmf" CMAKE_ARGS ${COMMON_CMAKE_ARGS} BUILD_BYPRODUCTS "${LIBSIGMF_LIBRARIES}" - INSTALL_COMMAND "" TEST_COMMAND "" ) - ExternalProject_Get_Property(libsigmf source_dir binary_dir) + ExternalProject_Get_Property(libsigmf install_dir) set_global_cache(LIBSIGMF_FOUND ON) set(LIBSIGMF_EXTERNAL ON CACHE INTERNAL "") - set(LIBSIGMF_INCLUDE_DIR "${EXTERNAL_BUILD_LIBRARIES}/libsigmf/src" CACHE INTERNAL "") + set(LIBSIGMF_INCLUDE_DIR "${install_dir}/include" CACHE INTERNAL "") endif (LINUX AND (NOT LIBSIGMF_FOUND OR LIBSIGMF_EXTERNAL)) # For APT demodulator From d764c3635e7b425f0f3f300f345c9f75c8673b83 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Sun, 30 Jul 2023 19:28:44 +0100 Subject: [PATCH 08/16] Set INSTALL_PREFIX --- external/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 0a6b861a8..0433f99df 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -757,7 +757,7 @@ if (LINUX AND (NOT LIBSIGMF_FOUND OR LIBSIGMF_EXTERNAL)) GIT_REPOSITORY https://github.com/f4exb/libsigmf.git GIT_TAG ${LIBSIGMF_TAG} PREFIX "${EXTERNAL_BUILD_LIBRARIES}/libsigmf" - CMAKE_ARGS ${COMMON_CMAKE_ARGS} + CMAKE_ARGS ${COMMON_CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX= BUILD_BYPRODUCTS "${LIBSIGMF_LIBRARIES}" TEST_COMMAND "" ) From 51f8ece65bae724a0876191012b14bfb4e72bae8 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Sun, 30 Jul 2023 20:37:42 +0100 Subject: [PATCH 09/16] Use installed lib --- external/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 0433f99df..bb9db2e5f 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -752,19 +752,18 @@ if ((NOT LIBDSDCC_FOUND OR LIBDSDCC_EXTERNAL) AND LIBMBE_FOUND) endif ((NOT LIBDSDCC_FOUND OR LIBDSDCC_EXTERNAL) AND LIBMBE_FOUND) if (LINUX AND (NOT LIBSIGMF_FOUND OR LIBSIGMF_EXTERNAL)) - set(LIBSIGMF_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib${LIB_SUFFIX}/libsigmf${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") ExternalProject_Add(libsigmf GIT_REPOSITORY https://github.com/f4exb/libsigmf.git GIT_TAG ${LIBSIGMF_TAG} PREFIX "${EXTERNAL_BUILD_LIBRARIES}/libsigmf" CMAKE_ARGS ${COMMON_CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX= - BUILD_BYPRODUCTS "${LIBSIGMF_LIBRARIES}" TEST_COMMAND "" ) ExternalProject_Get_Property(libsigmf install_dir) set_global_cache(LIBSIGMF_FOUND ON) set(LIBSIGMF_EXTERNAL ON CACHE INTERNAL "") set(LIBSIGMF_INCLUDE_DIR "${install_dir}/include" CACHE INTERNAL "") + set(LIBSIGMF_LIBRARIES "${install_dir}/lib${LIB_SUFFIX}/libsigmf${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") endif (LINUX AND (NOT LIBSIGMF_FOUND OR LIBSIGMF_EXTERNAL)) # For APT demodulator From bf913b12a11a986dbd5d2fec317140d10747497d Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Sun, 30 Jul 2023 21:10:47 +0100 Subject: [PATCH 10/16] Update lib name --- external/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index bb9db2e5f..682833387 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -763,7 +763,7 @@ if (LINUX AND (NOT LIBSIGMF_FOUND OR LIBSIGMF_EXTERNAL)) set_global_cache(LIBSIGMF_FOUND ON) set(LIBSIGMF_EXTERNAL ON CACHE INTERNAL "") set(LIBSIGMF_INCLUDE_DIR "${install_dir}/include" CACHE INTERNAL "") - set(LIBSIGMF_LIBRARIES "${install_dir}/lib${LIB_SUFFIX}/libsigmf${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") + set(LIBSIGMF_LIBRARIES "${install_dir}/lib${LIB_SUFFIX}/liblibsigmf${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") endif (LINUX AND (NOT LIBSIGMF_FOUND OR LIBSIGMF_EXTERNAL)) # For APT demodulator From 37db1910c5b27dc32d68d506456715d84f8b2e71 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Sun, 30 Jul 2023 21:50:25 +0100 Subject: [PATCH 11/16] Add LIBSIGMF_DEPENDS --- external/CMakeLists.txt | 4 +++- sdrbase/CMakeLists.txt | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 682833387..bd3dd3a22 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -760,9 +760,11 @@ if (LINUX AND (NOT LIBSIGMF_FOUND OR LIBSIGMF_EXTERNAL)) TEST_COMMAND "" ) ExternalProject_Get_Property(libsigmf install_dir) + set_global(LIBSIGMF_DEPENDS libsigmf) set_global_cache(LIBSIGMF_FOUND ON) set(LIBSIGMF_EXTERNAL ON CACHE INTERNAL "") - set(LIBSIGMF_INCLUDE_DIR "${install_dir}/include" CACHE INTERNAL "") + set(LIBSIGMF_INCLUDE_DIR "${install_dir}/include" CACHE INT set_global(FFTW3F_DEPENDS fftw3f) +ERNAL "") set(LIBSIGMF_LIBRARIES "${install_dir}/lib${LIB_SUFFIX}/liblibsigmf${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") endif (LINUX AND (NOT LIBSIGMF_FOUND OR LIBSIGMF_EXTERNAL)) diff --git a/sdrbase/CMakeLists.txt b/sdrbase/CMakeLists.txt index b34566fb6..0bb193ab4 100644 --- a/sdrbase/CMakeLists.txt +++ b/sdrbase/CMakeLists.txt @@ -503,6 +503,10 @@ if(DEFINED OPUS_DEPENDS) add_dependencies(sdrbase "${OPUS_DEPENDS}") endif() +if(DEFINED LIBSIGMF_DEPENDS) + add_dependencies(sdrbase "${LIBSIGMF_DEPENDS}") +endif() + target_link_libraries(sdrbase ${OPUS_LIBRARIES} ${sdrbase_FFTW3F_LIB} From 6fee92f8dce3b8b4ed1a735db052d08bebd6e849 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Sun, 30 Jul 2023 22:11:31 +0100 Subject: [PATCH 12/16] Add build message for sample source --- plugins/samplesource/CMakeLists.txt | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/plugins/samplesource/CMakeLists.txt b/plugins/samplesource/CMakeLists.txt index 8583830cd..dc2ac9a35 100644 --- a/plugins/samplesource/CMakeLists.txt +++ b/plugins/samplesource/CMakeLists.txt @@ -6,68 +6,100 @@ add_subdirectory(localinput) if (CM256CC_FOUND AND (HAS_SSE3 OR HAS_NEON)) add_subdirectory(remoteinput) +else() + message(STATUS "Not building remoteinput (CM256CC_FOUND=${CM256CC_FOUND} HAS_SSE3=${HAS_SSE3} HAS_NEON=${HAS_NEON})") endif() if(ENABLE_AIRSPY AND LIBAIRSPY_FOUND) add_subdirectory(airspy) +else() + message(STATUS "Not building airspy (ENABLE_AIRSPY=${ENABLE_AIRSPY} LIBAIRSPY_FOUND=${LIBAIRSPY_FOUND})") endif() if(ENABLE_AIRSPYHF AND LIBAIRSPYHF_FOUND) add_subdirectory(airspyhf) +else() + message(STATUS "Not building airspyhf (ENABLE_AIRSPYHF=${ENABLE_AIRSPYHF} LIBAIRSPYHF_FOUND=${LIBAIRSPYHF_FOUND})") endif() if(ENABLE_BLADERF AND LIBBLADERF_FOUND) add_subdirectory(bladerf1input) add_subdirectory(bladerf2input) +else() + message(STATUS "Not building bladerf1input or bladerf2input (ENABLE_BLADERF=${ENABLE_BLADERF} LIBBLADERF_FOUND=${LIBBLADERF_FOUND})") endif() if(ENABLE_FUNCUBE AND LIBUSB_FOUND AND HIDAPI_FOUND) add_subdirectory(fcdpro) add_subdirectory(fcdproplus) +else() + message(STATUS "Not building fcdpro or fcdproplus (ENABLE_FUNCUBE=${ENABLE_FUNCUBE} LIBUSB_FOUND=${LIBUSB_FOUND} HIDAPI_FOUND=${HIDAPI_FOUND})") endif() if(ENABLE_HACKRF AND LIBHACKRF_FOUND) add_subdirectory(hackrfinput) +else() + message(STATUS "Not building hackrfinput (ENABLE_HACKRF=${ENABLE_HACKRF} LIBHACKRF_FOUND=${LIBHACKRF_FOUND})") endif() if(ENABLE_LIMESUITE AND LIMESUITE_FOUND) add_subdirectory(limesdrinput) +else() + message(STATUS "Not building limesdrinput (ENABLE_LIMESUITE=${ENABLE_LIMESUITE} LIMESUITE_FOUND=${LIMESUITE_FOUND})") endif() if(ENABLE_MIRISDR AND LIBMIRISDR_FOUND) add_subdirectory(sdrplay) +else() + message(STATUS "Not building sdrplay (ENABLE_MIRISDR=${ENABLE_MIRISDR} LIBMIRISDR_FOUND=${LIBMIRISDR_FOUND})") endif() if(ENABLE_SDRPLAY AND SDRPLAY_FOUND) add_subdirectory(sdrplayv3) +else() + message(STATUS "Not building sdrplayv3 (ENABLE_SDRPLAY=${ENABLE_SDRPLAY} SDRPLAY_FOUND=${SDRPLAY_FOUND})") endif() if(ENABLE_PERSEUS AND LIBPERSEUS_FOUND AND RX_SAMPLE_24BIT) add_subdirectory(perseus) +else() + message(STATUS "Not building perseus (ENABLE_PERSEUS=${ENABLE_PERSEUS} LIBPERSEUS_FOUND=${LIBPERSEUS_FOUND} RX_SAMPLE_24BIT=${RX_SAMPLE_24BIT})") endif() if(ENABLE_XTRX AND LIBXTRX_FOUND) add_subdirectory(xtrxinput) +else() + message(STATUS "Not building xtrxinput (ENABLE_XTRX=${ENABLE_XTRX} LIBXTRX_FOUND=${LIBXTRX_FOUND})") endif() if(ENABLE_IIO AND LIBIIO_FOUND) add_subdirectory(plutosdrinput) +else() + message(STATUS "Not building plutosdrinput (ENABLE_IIO=${ENABLE_IIO} LIBIIO_FOUND=${LIBIIO_FOUND})") endif() if(ENABLE_RTLSDR AND LIBRTLSDR_FOUND) add_subdirectory(rtlsdr) +else() + message(STATUS "Not building rtlsdr (ENABLE_RTLSDR=${ENABLE_RTLSDR} LIBRTLSDR_FOUND=${LIBRTLSDR_FOUND})") endif() if(ENABLE_SOAPYSDR AND SOAPYSDR_FOUND) add_subdirectory(soapysdrinput) +else() + message(STATUS "Not building soapysdrinput (ENABLE_SOAPYSDR=${ENABLE_SOAPYSDR} SOAPYSDR_FOUND=${SOAPYSDR_FOUND})") endif() if(LIBSIGMF_FOUND) add_subdirectory(sigmffileinput) +else() + message(STATUS "Not building sigmffileinput (LIBSIGMF_FOUND=${LIBSIGMF_FOUND})") endif() if(ENABLE_USRP AND UHD_FOUND) add_subdirectory(usrpinput) +else() + message(STATUS "Not building usrpinput (ENABLE_USRP=${ENABLE_USRP} UHD_FOUND=${UHD_FOUND})") endif() add_subdirectory(audioinput) From 109d64646c16b1bde9906ef47f793c69a0e446d9 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Sun, 30 Jul 2023 22:17:51 +0100 Subject: [PATCH 13/16] Add build message for sample sink --- plugins/samplesink/CMakeLists.txt | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/plugins/samplesink/CMakeLists.txt b/plugins/samplesink/CMakeLists.txt index 6821e1511..b895810b7 100644 --- a/plugins/samplesink/CMakeLists.txt +++ b/plugins/samplesink/CMakeLists.txt @@ -8,33 +8,49 @@ add_subdirectory(aaroniartsaoutput) if (CM256CC_FOUND AND (HAS_SSE3 OR HAS_NEON)) add_subdirectory(remoteoutput) +else() + message(STATUS "Not building remoteoutput (CM256CC_FOUND=${CM256CC_FOUND} HAS_SSE3=${HAS_SSE3} HAS_NEON=${HAS_NEON})") endif() if(ENABLE_BLADERF AND LIBBLADERF_FOUND) add_subdirectory(bladerf1output) add_subdirectory(bladerf2output) +else() + message(STATUS "Not building bladerf1output or bladerf2output (ENABLE_BLADERF=${ENABLE_BLADERF} LIBBLADERF_FOUND=${LIBBLADERF_FOUND})") endif() if(ENABLE_HACKRF AND LIBHACKRF_FOUND) add_subdirectory(hackrfoutput) +else() + message(STATUS "Not building hackrfoutput (ENABLE_HACKRF=${ENABLE_HACKRF} LIBHACKRF_FOUND=${LIBHACKRF_FOUND})") endif() if(ENABLE_LIMESUITE AND LIMESUITE_FOUND) add_subdirectory(limesdroutput) +else() + message(STATUS "Not building limesdroutput (ENABLE_LIMESUITE=${ENABLE_LIMESUITE} LIMESUITE_FOUND=${LIMESUITE_FOUND})") endif() if(ENABLE_XTRX AND LIBXTRX_FOUND) - add_subdirectory(xtrxoutput) + add_subdirectory(xtrxoutput) +else() + message(STATUS "Not building xtrxoutput (ENABLE_XTRX=${ENABLE_XTRX} LIBXTRX_FOUND=${LIBXTRX_FOUND})") endif() if(ENABLE_IIO AND LIBIIO_FOUND) add_subdirectory(plutosdroutput) +else() + message(STATUS "Not building plutosdroutput (ENABLE_IIO=${ENABLE_IIO} LIBIIO_FOUND=${LIBIIO_FOUND})") endif() if(ENABLE_SOAPYSDR AND SOAPYSDR_FOUND) add_subdirectory(soapysdroutput) +else() + message(STATUS "Not building soapysdroutput (ENABLE_SOAPYSDR=${ENABLE_SOAPYSDR} SOAPYSDR_FOUND=${SOAPYSDR_FOUND})") endif() if(ENABLE_USRP AND UHD_FOUND) add_subdirectory(usrpoutput) +else() + message(STATUS "Not building usrpoutput (ENABLE_USRP=${ENABLE_USRP} UHD_FOUND=${UHD_FOUND})") endif() From e16ff521d6a052a2a33c6ce802417a7fdd3d81b5 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Sun, 30 Jul 2023 23:07:46 +0100 Subject: [PATCH 14/16] Fix copy and paste error --- external/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index bd3dd3a22..78203d163 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -763,8 +763,7 @@ if (LINUX AND (NOT LIBSIGMF_FOUND OR LIBSIGMF_EXTERNAL)) set_global(LIBSIGMF_DEPENDS libsigmf) set_global_cache(LIBSIGMF_FOUND ON) set(LIBSIGMF_EXTERNAL ON CACHE INTERNAL "") - set(LIBSIGMF_INCLUDE_DIR "${install_dir}/include" CACHE INT set_global(FFTW3F_DEPENDS fftw3f) -ERNAL "") + set(LIBSIGMF_INCLUDE_DIR "${install_dir}/include" CACHE INTERNAL "") set(LIBSIGMF_LIBRARIES "${install_dir}/lib${LIB_SUFFIX}/liblibsigmf${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") endif (LINUX AND (NOT LIBSIGMF_FOUND OR LIBSIGMF_EXTERNAL)) From f56597ac36fde170b0f48182bb5adb0ce642bba0 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Mon, 31 Jul 2023 11:05:31 +0100 Subject: [PATCH 15/16] Ninja needs BUILD_BYPRODUCTS set, make doesn't --- external/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 78203d163..556676a00 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -752,11 +752,13 @@ if ((NOT LIBDSDCC_FOUND OR LIBDSDCC_EXTERNAL) AND LIBMBE_FOUND) endif ((NOT LIBDSDCC_FOUND OR LIBDSDCC_EXTERNAL) AND LIBMBE_FOUND) if (LINUX AND (NOT LIBSIGMF_FOUND OR LIBSIGMF_EXTERNAL)) + set(LIBSIGMF_LIBRARIES "${EXTERNAL_BUILD_LIBRARIES}/lib${LIB_SUFFIX}/liblibsigmf${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") ExternalProject_Add(libsigmf GIT_REPOSITORY https://github.com/f4exb/libsigmf.git GIT_TAG ${LIBSIGMF_TAG} PREFIX "${EXTERNAL_BUILD_LIBRARIES}/libsigmf" CMAKE_ARGS ${COMMON_CMAKE_ARGS} -DCMAKE_INSTALL_PREFIX= + BUILD_BYPRODUCTS "${LIBSIGMF_LIBRARIES}" TEST_COMMAND "" ) ExternalProject_Get_Property(libsigmf install_dir) @@ -764,7 +766,6 @@ if (LINUX AND (NOT LIBSIGMF_FOUND OR LIBSIGMF_EXTERNAL)) set_global_cache(LIBSIGMF_FOUND ON) set(LIBSIGMF_EXTERNAL ON CACHE INTERNAL "") set(LIBSIGMF_INCLUDE_DIR "${install_dir}/include" CACHE INTERNAL "") - set(LIBSIGMF_LIBRARIES "${install_dir}/lib${LIB_SUFFIX}/liblibsigmf${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE INTERNAL "") endif (LINUX AND (NOT LIBSIGMF_FOUND OR LIBSIGMF_EXTERNAL)) # For APT demodulator From ee2a759012340fe4f93e65772ec087aff3dc93e8 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Mon, 31 Jul 2023 11:29:07 +0100 Subject: [PATCH 16/16] Add build message for sample mimo --- plugins/samplemimo/CMakeLists.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/plugins/samplemimo/CMakeLists.txt b/plugins/samplemimo/CMakeLists.txt index bee67cbfa..c4fb3f6c7 100644 --- a/plugins/samplemimo/CMakeLists.txt +++ b/plugins/samplemimo/CMakeLists.txt @@ -2,23 +2,33 @@ project(samplemimo) if(ENABLE_BLADERF AND LIBBLADERF_FOUND) add_subdirectory(bladerf2mimo) +else() + message(STATUS "Not building bladerf2mimo (ENABLE_BLADERF=${ENABLE_BLADERF} LIBBLADERF_FOUND=${LIBBLADERF_FOUND})") endif() if(ENABLE_LIMESUITE AND LIMESUITE_FOUND) add_subdirectory(limesdrmimo) +else() + message(STATUS "Not building limesdrmimo (ENABLE_LIMESUITE=${ENABLE_LIMESUITE} LIMESUITE_FOUND=${LIMESUITE_FOUND})") endif() if(ENABLE_XTRX AND LIBXTRX_FOUND) add_subdirectory(xtrxmimo) +else() + message(STATUS "Not building xtrxmimo (ENABLE_XTRX=${ENABLE_XTRX} LIBXTRX_FOUND=${LIBXTRX_FOUND})") endif() if(ENABLE_IIO AND LIBIIO_FOUND) add_subdirectory(plutosdrmimo) +else() + message(STATUS "Not building plutosdrmimo (ENABLE_IIO=${ENABLE_IIO} LIBIIO_FOUND=${LIBIIO_FOUND})") endif() find_package (Hamlib) if(hamlib_FOUND) add_subdirectory(audiocatsiso) +else() + message(STATUS "Not building audiocatsiso (hamlib_FOUND=${hamlib_FOUND})") endif() add_subdirectory(metismiso)