File: Findhamlib.cmake

package info (click to toggle)
js8call 2.2.0%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 22,416 kB
  • sloc: cpp: 563,285; f90: 9,265; ansic: 937; python: 132; sh: 93; makefile: 6
file content (81 lines) | stat: -rw-r--r-- 2,650 bytes parent folder | download | duplicates (2)
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
# - Try to find hamlib
#
# Once done, this will define:
#
#  hamlib_FOUND - system has Hamlib
#  hamlib_INCLUDE_DIRS - the Hamlib include directories
#  hamlib_LIBRARIES - link these to use Hamlib
#  hamlib_LIBRARY_DIRS - required shared/dynamic libraries are here
#
# If hamlib_STATIC is TRUE then static linking will be assumed
#

include (LibFindMacros)

set (hamlib_LIBRARY_DIRS)

# pkg-config?
find_path (__hamlib_pc_path NAMES hamlib.pc
  PATH_SUFFIXES lib/pkgconfig
  )
if (__hamlib_pc_path)
  set (ENV{PKG_CONFIG_PATH} "${__hamlib_pc_path}" "$ENV{PKG_CONFIG_PATH}")
  unset (__hamlib_pc_path CACHE)
endif ()

# Use pkg-config to get hints about paths, libs and, flags
unset (__pkg_config_checked_hamlib CACHE)
# pkg_config will fail on Windows if the Hamlib USB backends are
# configured since libusb-1.0 does not ship with a pkg_config file on
# Windows, that's OK because we fix it up below
libfind_pkg_check_modules (PC_HAMLIB hamlib)

if (NOT PC_HAMLIB_FOUND)
  # The headers
  find_path (hamlib_INCLUDEDIR hamlib/rig.h)
  # The libraries
  if (hamlib_STATIC)
    libfind_library (hamlib libhamlib.a)
  else ()
    libfind_library (hamlib hamlib)
  endif ()
  if (WIN32)
    set (hamlib_EXTRA_LIBRARIES ws2_32)
  else ()
    set (hamlib_EXTRA_LIBRARIES m dl)
  endif ()

  # libusb-1.0 has no pkg-config file on Windows so we have to find it
  # ourselves
  find_library (LIBUSB NAMES usb-1.0 PATH_SUFFIXES MinGW32/dll)
  if (LIBUSB)
    set (hamlib_EXTRA_LIBRARIES ${LIBUSB} ${hamlib_EXTRA_LIBRARIES})
    get_filename_component (hamlib_libusb_path ${LIBUSB} PATH)
    set (hamlib_LIBRARY_DIRS ${hamlib_LIBRARY_DIRS} ${hamlib_libusb_path})
  endif (LIBUSB)
  set (hamlib_PROCESS_INCLUDES hamlib_INCLUDEDIR)
  set (hamlib_PROCESS_LIBS hamlib_LIBRARY hamlib_EXTRA_LIBRARIES)
else ()
  if (hamlib_STATIC)
    set (hamlib_PROCESS_INCLUDES PC_HAMLIB_STATIC_INCLUDE_DIRS)
    set (hamlib_PROCESS_LIBS PC_HAMLIB_STATIC_LDFLAGS)
    set (hamlib_LIBRARY_DIRS ${PC_HAMLIB_STATIC_LIBRARY_DIRS})
  else ()
    set (hamlib_PROCESS_INCLUDES PC_HAMLIB_INCLUDE_DIRS)
    set (hamlib_PROCESS_LIBS PC_HAMLIB_LDFLAGS)
    set (hamlib_LIBRARY_DIRS ${PC_HAMLIB_LIBRARY_DIRS})
  endif ()
endif ()
libfind_process (hamlib)

if (WIN32)
  find_path (hamlib_dll_path libhamlib-2.dll)
  if (hamlib_dll_path)
    set (hamlib_LIBRARY_DIRS ${hamlib_LIBRARY_DIRS} ${hamlib_dll_path})
  endif ()
endif ()

# Handle the  QUIETLY and REQUIRED  arguments and set  HAMLIB_FOUND to
# TRUE if all listed variables are TRUE
include (FindPackageHandleStandardArgs)
find_package_handle_standard_args (hamlib DEFAULT_MSG hamlib_INCLUDE_DIRS hamlib_LIBRARIES hamlib_LIBRARY_DIRS)