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
|
# Patched to use static BFD
# Backup the original value of the requested library suffixes
set(_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
# Static libraries end with .a on Unix and .lib on Windows
set(CMAKE_FIND_LIBRARY_SUFFIXES .a .lib)
find_path(bfd_INCLUDE_DIR bfd.h)
find_library(bfd_LIBRARY bfd)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(StaticBFD DEFAULT_MSG bfd_LIBRARY
bfd_INCLUDE_DIR)
find_path(iberty_INCLUDE_DIR libiberty/libiberty.h)
find_library(iberty_LIBRARY iberty)
find_path(sframe_INCLUDE_DIR sframe.h)
find_library(sframe_LIBRARY sframe)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(StaticBFD DEFAULT_MSG bfd_LIBRARY
bfd_INCLUDE_DIR)
find_package_handle_standard_args(StaticIBERTY DEFAULT_MSG iberty_LIBRARY
iberty_INCLUDE_DIR)
find_package_handle_standard_args(StaticSFRAME DEFAULT_MSG sframe_LIBRARY
sframe_INCLUDE_DIR)
# Reset the library suffixes to the original value
set(CMAKE_FIND_LIBRARY_SUFFIXES ${_CMAKE_FIND_LIBRARY_SUFFIXES})
# Unset the temporary to not pollute the global namespace
unset(_CMAKE_FIND_LIBRARY_SUFFIXES)
# We found the static BFD library and then we set this target which
# LLVM CMake uses to find the "shared" library. Then BFD gets linked
# statically with LFortran and everything works. This is dependent
# on LLVM's CMake. If it changes, we also have to change the handling
# here.
add_library(bfd::libbfd_shared INTERFACE IMPORTED)
set_property(TARGET bfd::libbfd_shared PROPERTY INTERFACE_INCLUDE_DIRECTORIES
${bfd_INCLUDE_DIR})
set_property(TARGET bfd::libbfd_shared PROPERTY INTERFACE_LINK_LIBRARIES
${bfd_LIBRARY} ${iberty_LIBRARY} ${sframe_LIBRARY})
|