mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-10-31 15:23:04 +00:00 
			
		
		
		
	Move definition og GNU Radio imported targets to the custom CMake module
This commit is contained in:
		
							
								
								
									
										126
									
								
								CMakeLists.txt
									
									
									
									
									
								
							
							
						
						
									
										126
									
								
								CMakeLists.txt
									
									
									
									
									
								
							| @@ -629,132 +629,6 @@ set_package_properties(GNURADIO PROPERTIES | |||||||
|     PURPOSE "Implements flowgraph scheduler, provides some processing blocks and classes to create new ones." |     PURPOSE "Implements flowgraph scheduler, provides some processing blocks and classes to create new ones." | ||||||
|     TYPE REQUIRED |     TYPE REQUIRED | ||||||
| ) | ) | ||||||
| if(GNURADIO_VERSION) |  | ||||||
|     if(GNURADIO_VERSION VERSION_LESS ${GNSSSDR_GNURADIO_MIN_VERSION}) |  | ||||||
|         unset(GNURADIO_RUNTIME_FOUND) |  | ||||||
|         message(STATUS "The GNU Radio version installed in your system (v${GNURADIO_VERSION}) is too old.") |  | ||||||
|     endif() |  | ||||||
| endif() |  | ||||||
| if(NOT GNURADIO_RUNTIME_FOUND) |  | ||||||
|     message(STATUS "CMake cannot find GNU Radio >= ${GNSSSDR_GNURADIO_MIN_VERSION}") |  | ||||||
|     if(OS_IS_LINUX) |  | ||||||
|         message("Go to https://github.com/gnuradio/pybombs") |  | ||||||
|         message("and follow the instructions to install GNU Radio in your system.") |  | ||||||
|     endif() |  | ||||||
|     if(OS_IS_MACOSX) |  | ||||||
|         message("You can install it easily via Macports:") |  | ||||||
|         message("  sudo port install gnuradio ") |  | ||||||
|         message("Alternatively, you can use homebrew:") |  | ||||||
|         message("  brew install gnuradio") |  | ||||||
|     endif() |  | ||||||
|     message(FATAL_ERROR "GNU Radio v${GNSSSDR_GNURADIO_MIN_VERSION} or later is required to build gnss-sdr.") |  | ||||||
| else() |  | ||||||
|     if(NOT TARGET Gnuradio::runtime) |  | ||||||
|         add_library(Gnuradio::runtime SHARED IMPORTED) |  | ||||||
|         list(GET GNURADIO_RUNTIME_LIBRARIES 0 FIRST_DIR) |  | ||||||
|         get_filename_component(GNURADIO_RUNTIME_DIR ${FIRST_DIR} ABSOLUTE) |  | ||||||
|         set_target_properties(Gnuradio::runtime PROPERTIES |  | ||||||
|             IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" |  | ||||||
|             IMPORTED_LOCATION "${GNURADIO_RUNTIME_DIR}" |  | ||||||
|             INTERFACE_INCLUDE_DIRECTORIES "${GNURADIO_RUNTIME_INCLUDE_DIRS}" |  | ||||||
|             INTERFACE_LINK_LIBRARIES "${GNURADIO_RUNTIME_LIBRARIES}" |  | ||||||
|         ) |  | ||||||
|     endif() |  | ||||||
| endif() |  | ||||||
|  |  | ||||||
| if(NOT GNURADIO_ANALOG_FOUND) |  | ||||||
|     message(FATAL_ERROR "*** The gnuradio-analog library v${GNSSSDR_GNURADIO_MIN_VERSION} or later is required to build gnss-sdr") |  | ||||||
| else() |  | ||||||
|     if(NOT TARGET Gnuradio::analog) |  | ||||||
|         add_library(Gnuradio::analog SHARED IMPORTED) |  | ||||||
|         list(GET GNURADIO_ANALOG_LIBRARIES 0 FIRST_DIR) |  | ||||||
|         get_filename_component(GNURADIO_ANALOG_DIR ${FIRST_DIR} ABSOLUTE) |  | ||||||
|         set_target_properties(Gnuradio::analog PROPERTIES |  | ||||||
|             IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" |  | ||||||
|             IMPORTED_LOCATION "${GNURADIO_ANALOG_DIR}" |  | ||||||
|             INTERFACE_INCLUDE_DIRECTORIES "${GNURADIO_ANALOG_INCLUDE_DIRS}" |  | ||||||
|             INTERFACE_LINK_LIBRARIES "${GNURADIO_ANALOG_LIBRARIES}" |  | ||||||
|         ) |  | ||||||
|     endif() |  | ||||||
| endif() |  | ||||||
|  |  | ||||||
| if(NOT GNURADIO_BLOCKS_FOUND) |  | ||||||
|     message(FATAL_ERROR "*** The gnuradio-blocks library v${GNSSSDR_GNURADIO_MIN_VERSION} or later is required to build gnss-sdr") |  | ||||||
| else() |  | ||||||
|     if(NOT TARGET Gnuradio::blocks) |  | ||||||
|         add_library(Gnuradio::blocks SHARED IMPORTED) |  | ||||||
|         list(GET GNURADIO_BLOCKS_LIBRARIES 0 FIRST_DIR) |  | ||||||
|         get_filename_component(GNURADIO_BLOCKS_DIR ${FIRST_DIR} ABSOLUTE) |  | ||||||
|         set_target_properties(Gnuradio::blocks PROPERTIES |  | ||||||
|             IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" |  | ||||||
|             IMPORTED_LOCATION "${GNURADIO_BLOCKS_DIR}" |  | ||||||
|             INTERFACE_INCLUDE_DIRECTORIES "${GNURADIO_BLOCKS_INCLUDE_DIRS}" |  | ||||||
|             INTERFACE_LINK_LIBRARIES "${GNURADIO_BLOCKS_LIBRARIES}" |  | ||||||
|         ) |  | ||||||
|     endif() |  | ||||||
| endif() |  | ||||||
|  |  | ||||||
| if(NOT GNURADIO_FILTER_FOUND) |  | ||||||
|     message(FATAL_ERROR "*** The gnuradio-filter library v${GNSSSDR_GNURADIO_MIN_VERSION} or later is required to build gnss-sdr") |  | ||||||
| else() |  | ||||||
|     if(NOT TARGET Gnuradio::filter) |  | ||||||
|         add_library(Gnuradio::filter SHARED IMPORTED) |  | ||||||
|         list(GET GNURADIO_FILTER_LIBRARIES 0 FIRST_DIR) |  | ||||||
|         get_filename_component(GNURADIO_FILTER_DIR ${FIRST_DIR} ABSOLUTE) |  | ||||||
|         set_target_properties(Gnuradio::filter PROPERTIES |  | ||||||
|             IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" |  | ||||||
|             IMPORTED_LOCATION "${GNURADIO_FILTER_DIR}" |  | ||||||
|             INTERFACE_INCLUDE_DIRECTORIES "${GNURADIO_FILTER_INCLUDE_DIRS}" |  | ||||||
|             INTERFACE_LINK_LIBRARIES "${GNURADIO_FILTER_LIBRARIES}" |  | ||||||
|         ) |  | ||||||
|     endif() |  | ||||||
| endif() |  | ||||||
|  |  | ||||||
| if(NOT GNURADIO_FFT_FOUND) |  | ||||||
|     message(FATAL_ERROR "*** The gnuradio-fft library v${GNSSSDR_GNURADIO_MIN_VERSION} or later is required to build gnss-sdr") |  | ||||||
| else() |  | ||||||
|     if(NOT TARGET Gnuradio::fft) |  | ||||||
|         add_library(Gnuradio::fft SHARED IMPORTED) |  | ||||||
|         list(GET GNURADIO_FFT_LIBRARIES 0 FIRST_DIR) |  | ||||||
|         get_filename_component(GNURADIO_FFT_DIR ${FIRST_DIR} ABSOLUTE) |  | ||||||
|         set_target_properties(Gnuradio::fft PROPERTIES |  | ||||||
|             IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" |  | ||||||
|             IMPORTED_LOCATION "${GNURADIO_FFT_DIR}" |  | ||||||
|             INTERFACE_INCLUDE_DIRECTORIES "${GNURADIO_FFT_INCLUDE_DIRS}" |  | ||||||
|             INTERFACE_LINK_LIBRARIES "${GNURADIO_FFT_LIBRARIES}" |  | ||||||
|         ) |  | ||||||
|     endif() |  | ||||||
| endif() |  | ||||||
|  |  | ||||||
| if(NOT GNURADIO_PMT_FOUND) |  | ||||||
|     message(FATAL_ERROR "*** The gnuradio-pmt library v${GNSSSDR_GNURADIO_MIN_VERSION} or later is required to build gnss-sdr") |  | ||||||
| else() |  | ||||||
|     if(NOT TARGET Gnuradio::pmt) |  | ||||||
|         add_library(Gnuradio::pmt SHARED IMPORTED) |  | ||||||
|         list(GET GNURADIO_PMT_LIBRARIES 0 FIRST_DIR) |  | ||||||
|         get_filename_component(GNURADIO_PMT_DIR ${FIRST_DIR} ABSOLUTE) |  | ||||||
|         set_target_properties(Gnuradio::pmt PROPERTIES |  | ||||||
|             IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" |  | ||||||
|             IMPORTED_LOCATION "${GNURADIO_PMT_DIR}" |  | ||||||
|             INTERFACE_INCLUDE_DIRECTORIES "${GNURADIO_PMT_INCLUDE_DIRS}" |  | ||||||
|             INTERFACE_LINK_LIBRARIES "${GNURADIO_PMT_LIBRARIES}" |  | ||||||
|         ) |  | ||||||
|     endif() |  | ||||||
| endif() |  | ||||||
|  |  | ||||||
| if(ENABLE_UHD AND UHD_FOUND AND GNURADIO_UHD_FOUND) |  | ||||||
|     if(NOT TARGET Gnuradio::uhd) |  | ||||||
|         add_library(Gnuradio::uhd SHARED IMPORTED) |  | ||||||
|         list(GET GNURADIO_UHD_LIBRARIES 0 FIRST_DIR) |  | ||||||
|         get_filename_component(GNURADIO_UHD_DIR ${FIRST_DIR} ABSOLUTE) |  | ||||||
|         set_target_properties(Gnuradio::uhd PROPERTIES |  | ||||||
|             IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" |  | ||||||
|             IMPORTED_LOCATION "${GNURADIO_UHD_DIR}" |  | ||||||
|             INTERFACE_INCLUDE_DIRECTORIES "${GNURADIO_UHD_INCLUDE_DIRS}" |  | ||||||
|             INTERFACE_LINK_LIBRARIES "${GNURADIO_UHD_LIBRARIES}" |  | ||||||
|         ) |  | ||||||
|     endif() |  | ||||||
| endif() |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -143,6 +143,21 @@ function(GR_MODULE EXTVAR PCNAME INCFILE LIBFILE) | |||||||
|         set(GNURADIO_FOUND FALSE) # Trick for feature_summary |         set(GNURADIO_FOUND FALSE) # Trick for feature_summary | ||||||
|     endif() |     endif() | ||||||
|  |  | ||||||
|  |     # Create imported target | ||||||
|  |     string(TOLOWER ${EXTVAR} gnuradio_component) | ||||||
|  |     if(NOT TARGET Gnuradio::${gnuradio_component}) | ||||||
|  |         add_library(Gnuradio::${gnuradio_component} SHARED IMPORTED) | ||||||
|  |         set(GNURADIO_LIBRARY ${GNURADIO_${EXTVAR}_LIBRARIES}) | ||||||
|  |         list(GET GNURADIO_LIBRARY 0 FIRST_DIR) | ||||||
|  |         get_filename_component(GNURADIO_DIR ${FIRST_DIR} ABSOLUTE) | ||||||
|  |         set_target_properties(Gnuradio::${gnuradio_component} PROPERTIES | ||||||
|  |             IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" | ||||||
|  |             IMPORTED_LOCATION "${GNURADIO_DIR}" | ||||||
|  |             INTERFACE_INCLUDE_DIRECTORIES "${GNURADIO_${EXTVAR}_INCLUDE_DIRS}" | ||||||
|  |             INTERFACE_LINK_LIBRARIES "${GNURADIO_LIBRARY}" | ||||||
|  |         ) | ||||||
|  |     endif() | ||||||
|  |  | ||||||
|     mark_as_advanced(GNURADIO_${EXTVAR}_LIBRARIES GNURADIO_${EXTVAR}_INCLUDE_DIRS) |     mark_as_advanced(GNURADIO_${EXTVAR}_LIBRARIES GNURADIO_${EXTVAR}_INCLUDE_DIRS) | ||||||
| endfunction() | endfunction() | ||||||
|  |  | ||||||
| @@ -218,3 +233,25 @@ if(NOT DEFINED GNURADIO_FOUND) | |||||||
|     set(GNURADIO_FOUND TRUE) |     set(GNURADIO_FOUND TRUE) | ||||||
| endif() | endif() | ||||||
| set(GNURADIO_VERSION ${PC_GNURADIO_RUNTIME_VERSION}) | set(GNURADIO_VERSION ${PC_GNURADIO_RUNTIME_VERSION}) | ||||||
|  |  | ||||||
|  | if(NOT GNSSSDR_GNURADIO_MIN_VERSION) | ||||||
|  |     set(GNSSSDR_GNURADIO_MIN_VERSION "3.7.3") | ||||||
|  | endif() | ||||||
|  |  | ||||||
|  | if(GNURADIO_VERSION) | ||||||
|  |     if(GNURADIO_VERSION VERSION_LESS ${GNSSSDR_GNURADIO_MIN_VERSION}) | ||||||
|  |         unset(GNURADIO_RUNTIME_FOUND) | ||||||
|  |         message(STATUS "The GNU Radio version installed in your system (v${GNURADIO_VERSION}) is too old.") | ||||||
|  |         if(OS_IS_LINUX) | ||||||
|  |             message("Go to https://github.com/gnuradio/pybombs") | ||||||
|  |             message("and follow the instructions to install GNU Radio in your system.") | ||||||
|  |         endif() | ||||||
|  |         if(OS_IS_MACOSX) | ||||||
|  |             message("You can install it easily via Macports:") | ||||||
|  |             message("  sudo port install gnuradio ") | ||||||
|  |             message("Alternatively, you can use homebrew:") | ||||||
|  |             message("  brew install gnuradio") | ||||||
|  |         endif() | ||||||
|  |         message(FATAL_ERROR "GNU Radio v${GNSSSDR_GNURADIO_MIN_VERSION} or later is required to build gnss-sdr.") | ||||||
|  |     endif() | ||||||
|  | endif() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Carles Fernandez
					Carles Fernandez