mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-07 17:46:04 -05:00
b9df9eff69
Hamlib now used libusb-1.0 and since that is available on Windows we can now build with it across platforms. This change allows for that if the custom USB backends are configured in Hamlib. As it looks like Hamlib v3.1 will be suitable for WSJT-X this change also puts in place what is needed to link to a Hamlib SO/DLL/DYLIB when required. This is switched on by not defining the CMake variable hamlib_STATIC. This could be used on Windows and Mac but Linux still must have Hamlib statically linked due to repository versions being too old. For now Hamlib remains statically linked for consistency across platforms. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6581 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
83 lines
2.6 KiB
CMake
83 lines
2.6 KiB
CMake
# - 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 ()
|
|
message (STATUS "ENV{PKG_CONFIG_PATH} $ENV{PKG_CONFIG_PATH}")
|
|
|
|
# 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)
|