FindLibSolv.cmake 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. # FindLibSolv - Find libsolv headers and libraries.
  2. #
  3. # Sample:
  4. #
  5. # SET( LibSolv_USE_STATIC_LIBS OFF )
  6. # FIND_PACKAGE( LibSolv REQUIRED ext )
  7. # IF( LibSolv_FOUND )
  8. # INCLUDE_DIRECTORIES( ${LibSolv_INCLUDE_DIRS} )
  9. # TARGET_LINK_LIBRARIES( ... ${LibSolv_LIBRARIES} )
  10. # ENDIF()
  11. #
  12. # Variables used by this module need to be set before calling find_package
  13. # (not that they are cmale cased like the modiulemane itself):
  14. #
  15. # LibSolv_USE_STATIC_LIBS Can be set to ON to force the use of the static
  16. # libsolv libraries. Defaults to OFF.
  17. #
  18. # Supported components:
  19. #
  20. # ext Also include libsolvext
  21. #
  22. # Variables provided by this module:
  23. #
  24. # LibSolv_FOUND Include dir, libsolv and all extra libraries
  25. # specified in the COMPONENTS list were found.
  26. #
  27. # LibSolv_LIBRARIES Link to these to use all the libraries you specified.
  28. #
  29. # LibSolv_INCLUDE_DIRS Include directories.
  30. #
  31. # For each component you specify in find_package(), the following (UPPER-CASE)
  32. # variables are set to pick and choose components instead of just using LibSolv_LIBRARIES:
  33. #
  34. # LIBSOLV_FOUND TRUE if libsolv was found
  35. # LIBSOLV_LIBRARY libsolv libraries
  36. #
  37. # LIBSOLV_${COMPONENT}_FOUND TRUE if the library component was found
  38. # LIBSOLV_${COMPONENT}_LIBRARY The libraries for the specified component
  39. #
  40. # Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
  41. IF(LibSolv_USE_STATIC_LIBS)
  42. SET( _ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
  43. SET(CMAKE_FIND_LIBRARY_SUFFIXES .a )
  44. ENDIF()
  45. # Look for the header files
  46. UNSET(LibSolv_INCLUDE_DIRS CACHE)
  47. FIND_PATH(LibSolv_INCLUDE_DIRS NAMES solv/solvable.h)
  48. # Look for the core library
  49. UNSET(LIBSOLV_LIBRARY CACHE)
  50. FIND_LIBRARY(LIBSOLV_LIBRARY NAMES solv)
  51. FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibSolv DEFAULT_MSG LIBSOLV_LIBRARY LibSolv_INCLUDE_DIRS)
  52. MARK_AS_ADVANCED(
  53. LIBSOLV_FOUND
  54. LIBSOLV_LIBRARY
  55. )
  56. # Prepare return values and collectiong more components
  57. SET(LibSolv_FOUND ${LIBSOLV_FOUND})
  58. SET(LibSolv_LIBRARIES ${LIBSOLV_LIBRARY})
  59. MARK_AS_ADVANCED(
  60. LibSolv_FOUND
  61. LibSolv_LIBRARIES
  62. LibSolv_INCLUDE_DIRS
  63. )
  64. # Look for components
  65. FOREACH(COMPONENT ${LibSolv_FIND_COMPONENTS})
  66. STRING(TOUPPER ${COMPONENT} _UPPERCOMPONENT)
  67. UNSET(LIBSOLV_${_UPPERCOMPONENT}_LIBRARY CACHE)
  68. FIND_LIBRARY(LIBSOLV_${_UPPERCOMPONENT}_LIBRARY NAMES solv${COMPONENT})
  69. SET(LibSolv_${COMPONENT}_FIND_REQUIRED ${LibSolv_FIND_REQUIRED})
  70. SET(LibSolv_${COMPONENT}_FIND_QUIETLY ${LibSolv_FIND_QUIETLY})
  71. FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibSolv_${COMPONENT} DEFAULT_MSG LIBSOLV_${_UPPERCOMPONENT}_LIBRARY)
  72. MARK_AS_ADVANCED(
  73. LIBSOLV_${_UPPERCOMPONENT}_FOUND
  74. LIBSOLV_${_UPPERCOMPONENT}_LIBRARY
  75. )
  76. IF(LIBSOLV_${_UPPERCOMPONENT}_FOUND)
  77. SET(LibSolv_LIBRARIES ${LibSolv_LIBRARIES} ${LIBSOLV_${_UPPERCOMPONENT}_LIBRARY})
  78. ELSE()
  79. SET(LibSolv_FOUND FALSE)
  80. ENDIF()
  81. ENDFOREACH()
  82. # restore CMAKE_FIND_LIBRARY_SUFFIXES
  83. IF(Solv_USE_STATIC_LIBS)
  84. SET(CMAKE_FIND_LIBRARY_SUFFIXES ${_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES} )
  85. ENDIF()
  86. IF(LibSolv_FOUND AND NOT LibSolv_FIND_QUIETLY)
  87. MESSAGE(STATUS "Found LibSolv: ${LibSolv_INCLUDE_DIRS} ${LibSolv_LIBRARIES}")
  88. ENDIF()