ctkMacroBFDCheck.cmake 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  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. SET(BFD_LIBRARY_NAME libbfd.a)
  24. SET(TestBFD_LIBRARY_MODE STATIC)
  25. IF(CTK_LIB_Core_WITH_BFD_SHARED)
  26. SET(BFD_LIBRARY_NAME libbfd${CMAKE_SHARED_LIBRARY_SUFFIX})
  27. SET(TestBFD_LIBRARY_MODE SHARED)
  28. ENDIF()
  29. UNSET(BFD_LIBRARY CACHE)
  30. FIND_LIBRARY(BFD_LIBRARY ${BFD_LIBRARY_NAME})
  31. IF(HAVE_BFD_HEADER AND BFD_LIBRARY)
  32. # make sure we can build with libbfd
  33. #MESSAGE(STATUS "Checking libbfd")
  34. TRY_COMPILE(HAVE_BFD
  35. ${CMAKE_CURRENT_BINARY_DIR}/CMake/TestBFD
  36. ${CMAKE_CURRENT_SOURCE_DIR}/CMake/TestBFD
  37. TestBFD
  38. CMAKE_FLAGS
  39. -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
  40. -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
  41. -DBFD_LIBRARY_NAME:STRING=${BFD_LIBRARY_NAME}
  42. OUTPUT_VARIABLE OUTPUT)
  43. FILE(WRITE ${TestBFD_BUILD_LOG} ${OUTPUT})
  44. #MESSAGE(${OUTPUT})
  45. IF(HAVE_BFD)
  46. SET(BFD_LIBRARIES ${BFD_LIBRARY})
  47. ENDIF()
  48. ENDIF()
  49. ENDIF()
  50. ENDIF()
  51. IF(CTK_LIB_Core_WITH_BFD_SHARED AND NOT HAVE_BFD)
  52. MESSAGE(WARNING "warning: CTKCore: Failed to enable BFD support. Disabling CTKCore WITH_BFD_SHARED library option. "
  53. "See ${TestBFD_BUILD_LOG} for more details.")
  54. SET(CTK_LIB_Core_WITH_BFD_SHARED OFF CACHE BOOL "Enable CTKCore Library WITH_BFD_SHARED option" FORCE)
  55. ENDIF()
  56. IF(CTK_LIB_Core_WITH_BFD_STATIC AND NOT HAVE_BFD)
  57. MESSAGE(WARNING "warning: CTKCore: Failed to enable BFD support. Disabling CTKCore WITH_BFD_STATIC library option. "
  58. "See ${TestBFD_BUILD_LOG} for more details.")
  59. SET(CTK_LIB_Core_WITH_BFD_STATIC OFF CACHE BOOL "Enable CTKCore Library WITH_BFD_STATIC option" FORCE)
  60. endif()
  61. IF(HAVE_BFD)
  62. MESSAGE(STATUS "CTKCore: BFD support enabled [${BFD_LIBRARIES}]")
  63. ELSE()
  64. MESSAGE(STATUS "CTKCore: BFD support disabled")
  65. ENDIF()