ctkMacroBFDCheck.cmake 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #
  2. # ctkMacroBFDCheck.cmake - After this file is included into your main CMake script,
  3. # HAVE_BFD will be defined if libbfd is available.
  4. #
  5. IF(CTK_LIB_Core_WITH_BFD_STATIC AND CTK_LIB_Core_WITH_BFD_SHARED)
  6. MESSAGE(FATAL_ERROR "error: Options WITH_BFD_STATIC and WITH_BFD_SHARED are mutually exclusive ! "
  7. "hint: Enable either WITH_BFD_STATIC or WITH_BFD_SHARED.")
  8. ENDIF()
  9. IF(NOT CTK_BUILD_SHARED_LIBS AND CTK_LIB_Core_WITH_BFD_SHARED)
  10. MESSAGE(FATAL_ERROR "error: Options CTK_BUILD_SHARED_LIBS and WITH_BFD_STATIC are mutually exclusive ! "
  11. "hint: Disable WITH_BFD_SHARED and enable WITH_BFD_STATIC if needed.")
  12. ENDIF()
  13. SET(BFD_LIBRARIES)
  14. UNSET(HAVE_BFD CACHE)
  15. SET(TestBFD_BUILD_LOG "${CMAKE_CURRENT_BINARY_DIR}/CMake/TestBFD-build-log.txt")
  16. if(CTK_LIB_Core_WITH_BFD_STATIC OR CTK_LIB_Core_WITH_BFD_SHARED)
  17. IF(WIN32)
  18. MESSAGE(FATAL_ERROR "error: Options WITH_BFD_STATIC or WITH_BFD_SHARED are not support on Windows !")
  19. ENDIF()
  20. IF(NOT WIN32)
  21. INCLUDE(CheckIncludeFile)
  22. CHECK_INCLUDE_FILE(bfd.h HAVE_BFD_HEADER)
  23. IF(NOT HAVE_BFD_HEADER)
  24. FILE(WRITE ${TestBFD_BUILD_LOG} "Could *NOT* find the required header file: bfd.h")
  25. ENDIF()
  26. SET(BFD_LIBRARY_NAME libbfd.a)
  27. SET(TestBFD_LIBRARY_MODE STATIC)
  28. IF(CTK_LIB_Core_WITH_BFD_SHARED)
  29. SET(BFD_LIBRARY_NAME libbfd${CMAKE_SHARED_LIBRARY_SUFFIX})
  30. SET(TestBFD_LIBRARY_MODE SHARED)
  31. ENDIF()
  32. UNSET(BFD_LIBRARY CACHE)
  33. FIND_LIBRARY(BFD_LIBRARY ${BFD_LIBRARY_NAME})
  34. IF(NOT BFD_LIBRARY)
  35. FILE(WRITE ${TestBFD_BUILD_LOG} "Could *NOT* find the required bfd library: ${BFD_LIBRARY_NAME}")
  36. ENDIF()
  37. IF(HAVE_BFD_HEADER AND BFD_LIBRARY)
  38. # make sure we can build with libbfd
  39. #MESSAGE(STATUS "Checking libbfd")
  40. TRY_COMPILE(HAVE_BFD
  41. ${CMAKE_CURRENT_BINARY_DIR}/CMake/TestBFD
  42. ${CMAKE_CURRENT_SOURCE_DIR}/CMake/TestBFD
  43. TestBFD
  44. CMAKE_FLAGS
  45. -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
  46. -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
  47. -DBFD_LIBRARY_NAME:STRING=${BFD_LIBRARY_NAME}
  48. OUTPUT_VARIABLE OUTPUT)
  49. FILE(WRITE ${TestBFD_BUILD_LOG} ${OUTPUT})
  50. #MESSAGE(${OUTPUT})
  51. IF(HAVE_BFD)
  52. SET(BFD_LIBRARIES ${BFD_LIBRARY})
  53. ENDIF()
  54. ENDIF()
  55. ENDIF()
  56. ENDIF()
  57. IF(CTK_LIB_Core_WITH_BFD_SHARED AND NOT HAVE_BFD)
  58. MESSAGE(WARNING "warning: CTKCore: Failed to enable BFD support. Disabling CTKCore WITH_BFD_SHARED library option. "
  59. "See ${TestBFD_BUILD_LOG} for more details.")
  60. SET(CTK_LIB_Core_WITH_BFD_SHARED OFF CACHE BOOL "Enable CTKCore Library WITH_BFD_SHARED option" FORCE)
  61. ENDIF()
  62. IF(CTK_LIB_Core_WITH_BFD_STATIC AND NOT HAVE_BFD)
  63. MESSAGE(WARNING "warning: CTKCore: Failed to enable BFD support. Disabling CTKCore WITH_BFD_STATIC library option. "
  64. "See ${TestBFD_BUILD_LOG} for more details.")
  65. SET(CTK_LIB_Core_WITH_BFD_STATIC OFF CACHE BOOL "Enable CTKCore Library WITH_BFD_STATIC option" FORCE)
  66. endif()
  67. IF(HAVE_BFD)
  68. MESSAGE(STATUS "CTKCore: BFD support enabled [${BFD_LIBRARIES}]")
  69. ELSE()
  70. MESSAGE(STATUS "CTKCore: BFD support disabled")
  71. ENDIF()