mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-10-31 13:00:26 -04:00 
			
		
		
		
	Audio CAT SISO: find Hamlib and make build conditional to it
This commit is contained in:
		
							parent
							
								
									537653999a
								
							
						
					
					
						commit
						7ae44d6e12
					
				
							
								
								
									
										49
									
								
								cmake/Modules/FindHamlib.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								cmake/Modules/FindHamlib.cmake
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,49 @@ | ||||
| # - Try to find hamlib | ||||
| # Once done, this will define: | ||||
| # | ||||
| #  hamlib_FOUND - system has Hamlib-2 | ||||
| #  hamlib_INCLUDE_DIRS - the Hamlib-2 include directories | ||||
| #  hamlib_LIBRARIES - link these to use Hamlib-2 | ||||
| 
 | ||||
| if (NOT hamlib_FOUND) | ||||
| 
 | ||||
|     include (LibFindMacros) | ||||
| 
 | ||||
|     # Use pkg-config to get hints about paths | ||||
|     libfind_pkg_check_modules (hamlib_PKGCONF hamlib) | ||||
| 
 | ||||
|     FIND_PATH(hamlib_INCLUDE_DIRS | ||||
|         NAMES hamlib/rig.h | ||||
|         HINTS ${HAMLIB_DIR}/include | ||||
|               ${hamlib_PKGCONF_INCLUDE_DIRS} | ||||
|               ${CMAKE_INSTALL_PREFIX}/include | ||||
|         PATHS /usr/local/include | ||||
|               /usr/include | ||||
|     ) | ||||
| 
 | ||||
|     FIND_LIBRARY(hamlib_LIBRARIES | ||||
|         NAMES hamlib | ||||
|         HINTS ${HAMLIB_DIR}/lib | ||||
|               ${HAMLIB_DIR}/lib64 | ||||
|               ${hamlib_PKGCONF_LIBRARY_DIRS} | ||||
|               ${CMAKE_INSTALL_PREFIX}/lib | ||||
|               ${CMAKE_INSTALL_PREFIX}/lib64 | ||||
|         PATHS /usr/local/lib | ||||
|               /usr/local/lib64 | ||||
|               /usr/lib | ||||
|               /usr/lib64 | ||||
|     ) | ||||
| 
 | ||||
|     if(hamlib_INCLUDE_DIRS AND hamlib_LIBRARIES) | ||||
|         set(hamlib_FOUND TRUE CACHE INTERNAL "Hamlib found") | ||||
|         message(STATUS "Found Hamlib: ${hamlib_INCLUDE_DIRS}, ${hamlib_LIBRARIES}") | ||||
|     else() | ||||
|         set(hamlib_FOUND FALSE CACHE INTERNAL "Hamlib found") | ||||
|         message(STATUS "Hamlib not found") | ||||
|     endif() | ||||
| 
 | ||||
|     INCLUDE(FindPackageHandleStandardArgs) | ||||
|     FIND_PACKAGE_HANDLE_STANDARD_ARGS(HAMLIB DEFAULT_MSG hamlib_LIBRARIES hamlib_INCLUDE_DIRS) | ||||
|     MARK_AS_ADVANCED(hamlib_LIBRARIES hamlib_INCLUDE_DIRS) | ||||
| 
 | ||||
| endif (NOT hamlib_FOUND) | ||||
							
								
								
									
										98
									
								
								cmake/Modules/LibFindMacros.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								cmake/Modules/LibFindMacros.cmake
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,98 @@ | ||||
| # Works the same as find_package, but forwards the "REQUIRED" and "QUIET" arguments | ||||
| # used for the current package. For this to work, the first parameter must be the | ||||
| # prefix of the current package, then the prefix of the new package etc, which are | ||||
| # passed to find_package. | ||||
| macro (libfind_package PREFIX) | ||||
|   set (LIBFIND_PACKAGE_ARGS ${ARGN}) | ||||
|   if (${PREFIX}_FIND_QUIETLY) | ||||
|     set (LIBFIND_PACKAGE_ARGS ${LIBFIND_PACKAGE_ARGS} QUIET) | ||||
|   endif (${PREFIX}_FIND_QUIETLY) | ||||
|   if (${PREFIX}_FIND_REQUIRED) | ||||
|     set (LIBFIND_PACKAGE_ARGS ${LIBFIND_PACKAGE_ARGS} REQUIRED) | ||||
|   endif (${PREFIX}_FIND_REQUIRED) | ||||
|   find_package(${LIBFIND_PACKAGE_ARGS}) | ||||
| endmacro (libfind_package) | ||||
| 
 | ||||
| # CMake developers made the UsePkgConfig system deprecated in the same release (2.6) | ||||
| # where they added pkg_check_modules. Consequently I need to support both in my scripts | ||||
| # to avoid those deprecated warnings. Here's a helper that does just that. | ||||
| # Works identically to pkg_check_modules, except that no checks are needed prior to use. | ||||
| macro (libfind_pkg_check_modules PREFIX PKGNAME) | ||||
|   if (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) | ||||
|     include(UsePkgConfig) | ||||
|     pkgconfig(${PKGNAME} ${PREFIX}_INCLUDE_DIRS ${PREFIX}_LIBRARY_DIRS ${PREFIX}_LDFLAGS ${PREFIX}_CFLAGS) | ||||
|   else (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) | ||||
|     find_package(PkgConfig) | ||||
|     if (PKG_CONFIG_FOUND) | ||||
|       pkg_check_modules(${PREFIX} ${PKGNAME}) | ||||
|     endif (PKG_CONFIG_FOUND) | ||||
|   endif (${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 4) | ||||
| endmacro (libfind_pkg_check_modules) | ||||
| 
 | ||||
| # Do the final processing once the paths have been detected. | ||||
| # If include dirs are needed, ${PREFIX}_PROCESS_INCLUDES should be set to contain | ||||
| # all the variables, each of which contain one include directory. | ||||
| # Ditto for ${PREFIX}_PROCESS_LIBS and library files. | ||||
| # Will set ${PREFIX}_FOUND, ${PREFIX}_INCLUDE_DIRS and ${PREFIX}_LIBRARIES. | ||||
| # Also handles errors in case library detection was required, etc. | ||||
| macro (libfind_process PREFIX) | ||||
|   # Skip processing if already processed during this run | ||||
|   if (NOT ${PREFIX}_FOUND) | ||||
|     # Start with the assumption that the library was found | ||||
|     set (${PREFIX}_FOUND TRUE) | ||||
| 
 | ||||
|     # Process all includes and set _FOUND to false if any are missing | ||||
|     foreach (i ${${PREFIX}_PROCESS_INCLUDES}) | ||||
|       if (${i}) | ||||
|         set (${PREFIX}_INCLUDE_DIRS ${${PREFIX}_INCLUDE_DIRS} ${${i}}) | ||||
|         mark_as_advanced(${i}) | ||||
|       else (${i}) | ||||
|         set (${PREFIX}_FOUND FALSE) | ||||
|       endif (${i}) | ||||
|     endforeach (i) | ||||
| 
 | ||||
|     # Process all libraries and set _FOUND to false if any are missing | ||||
|     foreach (i ${${PREFIX}_PROCESS_LIBS}) | ||||
|       if (${i}) | ||||
|         set (${PREFIX}_LIBRARIES ${${PREFIX}_LIBRARIES} ${${i}}) | ||||
|         mark_as_advanced(${i}) | ||||
|       else (${i}) | ||||
|         set (${PREFIX}_FOUND FALSE) | ||||
|       endif (${i}) | ||||
|     endforeach (i) | ||||
| 
 | ||||
|     # Print message and/or exit on fatal error | ||||
|     if (${PREFIX}_FOUND) | ||||
|       if (NOT ${PREFIX}_FIND_QUIETLY) | ||||
|         message (STATUS "Found ${PREFIX} ${${PREFIX}_VERSION}") | ||||
|       endif (NOT ${PREFIX}_FIND_QUIETLY) | ||||
|     else (${PREFIX}_FOUND) | ||||
|       if (${PREFIX}_FIND_REQUIRED) | ||||
|         foreach (i ${${PREFIX}_PROCESS_INCLUDES} ${${PREFIX}_PROCESS_LIBS}) | ||||
|           message("${i}=${${i}}") | ||||
|         endforeach (i) | ||||
|         message (FATAL_ERROR "Required library ${PREFIX} NOT FOUND.\nInstall the library (dev version) and try again. If the library is already installed, use ccmake to set the missing variables manually.") | ||||
|       endif (${PREFIX}_FIND_REQUIRED) | ||||
|     endif (${PREFIX}_FOUND) | ||||
|   endif (NOT ${PREFIX}_FOUND) | ||||
| endmacro (libfind_process) | ||||
| 
 | ||||
| macro(libfind_library PREFIX basename) | ||||
|   set(TMP "") | ||||
|   if(MSVC80) | ||||
|     set(TMP -vc80) | ||||
|   endif(MSVC80) | ||||
|   if(MSVC90) | ||||
|     set(TMP -vc90) | ||||
|   endif(MSVC90) | ||||
|   set(${PREFIX}_LIBNAMES ${basename}${TMP}) | ||||
|   if(${ARGC} GREATER 2) | ||||
|     set(${PREFIX}_LIBNAMES ${basename}${TMP}-${ARGV2}) | ||||
|     string(REGEX REPLACE "\\." "_" TMP ${${PREFIX}_LIBNAMES}) | ||||
|     set(${PREFIX}_LIBNAMES ${${PREFIX}_LIBNAMES} ${TMP}) | ||||
|   endif(${ARGC} GREATER 2) | ||||
|   find_library(${PREFIX}_LIBRARY | ||||
|     NAMES ${${PREFIX}_LIBNAMES} | ||||
|     PATHS ${${PREFIX}_PKGCONF_LIBRARY_DIRS} | ||||
|   ) | ||||
| endmacro(libfind_library) | ||||
| @ -16,7 +16,11 @@ if(ENABLE_IIO AND LIBIIO_FOUND) | ||||
|     add_subdirectory(plutosdrmimo) | ||||
| endif() | ||||
| 
 | ||||
| add_subdirectory(audiocatsiso) | ||||
| find_package (Hamlib) | ||||
| if(hamlib_FOUND) | ||||
|     add_subdirectory(audiocatsiso) | ||||
| endif() | ||||
| 
 | ||||
| add_subdirectory(metismiso) | ||||
| add_subdirectory(testmi) | ||||
| add_subdirectory(testmosync) | ||||
|  | ||||
| @ -21,6 +21,7 @@ set(audiocatsiso_HEADERS | ||||
| include_directories( | ||||
|     ${CMAKE_SOURCE_DIR}/swagger/sdrangel/code/qt5/client | ||||
|     ${CMAKE_SOURCE_DIR}/devices | ||||
|     ${hamlib_INCLUDE_DIRS} | ||||
| ) | ||||
| 
 | ||||
| if (NOT SERVER_MODE) | ||||
| @ -54,6 +55,7 @@ target_link_libraries(${TARGET_NAME} | ||||
| 	sdrbase | ||||
| 	${TARGET_LIB_GUI} | ||||
|     swagger | ||||
|     ${hamlib_LIBRARIES} | ||||
| ) | ||||
| 
 | ||||
| install(TARGETS ${TARGET_NAME} DESTINATION ${INSTALL_FOLDER}) | ||||
|  | ||||
| @ -776,7 +776,7 @@ | ||||
|         </sizepolicy> | ||||
|        </property> | ||||
|        <property name="toolTip"> | ||||
|         <string>CAT Device</string> | ||||
|         <string>CAT serial device</string> | ||||
|        </property> | ||||
|       </widget> | ||||
|      </item> | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user