LookingGlass/common/cmake/FindBFD.cmake
Quantum fc7dd7dbb7 [common] cmake: correctly link static libbfd.a
When linking against libbfd.so, just passing libbfd.so to the compiler is
sufficient. When linking against the static version libbfd.a, however,
we must additionally link against libiberty.a and libz.a.

This commit adds a CMake helper to find the correct libraries that need
to be passed to link against libbfd correctly.
2021-03-03 16:37:34 +11:00

41 lines
1.3 KiB
CMake

# Try to find the BFD librairies
# BFD_FOUND - system has BFD lib
# BFD_INCLUDE_DIR - the BFD include directory
# BFD_LIBRARIES - Libraries needed to use BFD
if (BFD_INCLUDE_DIR AND BFD_LIBRARIES)
# Already in cache, be silent
set(BFD_FIND_QUIETLY TRUE)
endif (BFD_INCLUDE_DIR AND BFD_LIBRARIES)
find_path(BFD_INCLUDE_DIR NAMES bfd.h)
find_library(BFD_LIBRARIES NAMES bfd)
include(FindPackageHandleStandardArgs)
if (";${BFD_LIBRARIES};" MATCHES "bfd.a;")
MESSAGE(STATUS "Linking against static bfd")
find_library(BFD_LIBIBERTY_LIBRARIES NAMES libiberty.a)
find_package_handle_standard_args(BFD_LIBIBERTY DEFAULT_MSG BFD_LIBIBERTY_LIBRARIES)
find_library(BFD_LIBZ_LIBRARIES NAMES libz.a)
find_package_handle_standard_args(BFD_LIBZ DEFAULT_MSG BFD_LIBZ_LIBRARIES)
if (NOT ${BFD_LIBIBERTY_FOUND})
message(FATAL_ERROR "Using static libbfd.a, but libiberty.a not available")
elseif (NOT ${BFD_LIBZ_FOUND})
message(FATAL_ERROR "Using static libbfd.a, but libz.a not available")
else()
list(APPEND BFD_LIBRARIES ${BFD_LIBIBERTY_LIBRARIES} ${BFD_LIBZ_LIBRARIES})
endif()
endif()
MESSAGE(STATUS "BFD libs: " "${BFD_LIBRARIES}")
find_package_handle_standard_args(BFD DEFAULT_MSG BFD_LIBRARIES BFD_INCLUDE_DIR)
MESSAGE(STATUS "BFD libs: " "${BFD_LIBRARIES}")
mark_as_advanced(BFD_INCLUDE_DIR BFD_LIBRARIES)