File: FindLibHYDRASDR.cmake

package info (click to toggle)
soapyhydrasdr 0.1.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 192 kB
  • sloc: cpp: 628; makefile: 6
file content (92 lines) | stat: -rw-r--r-- 3,366 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# - Try to find LibHYDRASDR
# Once done this will define
#
#  LibHYDRASDR_FOUND - System has libhydrasdr
#  LibHYDRASDR_INCLUDE_DIRS - The libhydrasdr include directories
#  LibHYDRASDR_LIBRARIES - The libraries needed to use libhydrasdr
#  LibHYDRASDR_CFLAGS_OTHER - Compiler switches required for using libhydrasdr
#  LibHYDRASDR_VERSION - The libhydrasdr version

find_package(PkgConfig)
pkg_check_modules(PC_LibHYDRASDR hydrasdr)

# Try alternative pkg-config names if first attempt fails
if(NOT PC_LibHYDRASDR_FOUND)
    pkg_check_modules(PC_LibHYDRASDR libhydrasdr)
endif()

set(LibHYDRASDR_CFLAGS_OTHER ${PC_LibHYDRASDR_CFLAGS_OTHER})

# Define possible project-specific installation paths
set(PROJECT_INSTALL_PATHS
    "${CMAKE_CURRENT_SOURCE_DIR}/rfone_host_build/install/include"
    "${CMAKE_CURRENT_SOURCE_DIR}/../rfone_host_build/install/include"
    "${CMAKE_CURRENT_BINARY_DIR}/rfone_host_build/install/include"
    "${CMAKE_CURRENT_BINARY_DIR}/../rfone_host_build/install/include"
)

set(PROJECT_LIB_PATHS
    "${CMAKE_CURRENT_SOURCE_DIR}/rfone_host_build/install/lib"
    "${CMAKE_CURRENT_SOURCE_DIR}/../rfone_host_build/install/lib"
    "${CMAKE_CURRENT_BINARY_DIR}/rfone_host_build/install/lib"
    "${CMAKE_CURRENT_BINARY_DIR}/../rfone_host_build/install/lib"
)

find_path(
    LibHYDRASDR_INCLUDE_DIRS
    NAMES hydrasdr.h libhydrasdr/hydrasdr.h
    HINTS $ENV{LibHYDRASDR_DIR}/include
        ${PC_LibHYDRASDR_INCLUDEDIR}
    PATHS 
        # Project-specific paths (for CI builds)
        ${PROJECT_INSTALL_PATHS}
        # Standard system paths
        /usr/local/include
        /usr/include
        /opt/local/include
    PATH_SUFFIXES libhydrasdr
)

find_library(
    LibHYDRASDR_LIBRARIES
    NAMES hydrasdr libhydrasdr
    HINTS $ENV{LibHYDRASDR_DIR}/lib
        ${PC_LibHYDRASDR_LIBDIR}
    PATHS
        # Project-specific paths (for CI builds)
        ${PROJECT_LIB_PATHS}
        # Standard system paths
        /usr/local/lib
        /usr/lib
        /usr/lib/x86_64-linux-gnu
        /usr/lib64
        /opt/local/lib
)

set(LibHYDRASDR_VERSION ${PC_LibHYDRASDR_VERSION})

include(FindPackageHandleStandardArgs)
# handle the QUIETLY and REQUIRED arguments and set LibHYDRASDR_FOUND to TRUE
# if all listed variables are TRUE
# Note that `FOUND_VAR LibHYDRASDR_FOUND` is needed for cmake 3.2 and older.
find_package_handle_standard_args(LibHYDRASDR
                                  FOUND_VAR LibHYDRASDR_FOUND
                                  REQUIRED_VARS LibHYDRASDR_LIBRARIES LibHYDRASDR_INCLUDE_DIRS
                                  VERSION_VAR LibHYDRASDR_VERSION)

mark_as_advanced(LibHYDRASDR_LIBRARIES LibHYDRASDR_INCLUDE_DIRS)

# Debug output when found
if(LibHYDRASDR_FOUND)
    message(STATUS "LibHydraSDR found:")
    message(STATUS "  Version: ${LibHYDRASDR_VERSION}")
    message(STATUS "  Libraries: ${LibHYDRASDR_LIBRARIES}")
    message(STATUS "  Include dirs: ${LibHYDRASDR_INCLUDE_DIRS}")
    message(STATUS "  CFlags: ${LibHYDRASDR_CFLAGS_OTHER}")
else()
    message(STATUS "LibHydraSDR NOT found. Searched in:")
    message(STATUS "  Project paths: ${PROJECT_INSTALL_PATHS}")
    message(STATUS "  System paths: /usr/local/include, /usr/include")
    message(STATUS "  Library paths: ${PROJECT_LIB_PATHS}")
    message(STATUS "  System lib paths: /usr/local/lib, /usr/lib, /usr/lib/x86_64-linux-gnu")
endif()