Guest User

Untitled

a guest
Dec 17th, 2017
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.13 KB | None | 0 0
  1. # - Try to find LibRDKafka headers and libraries.
  2. #
  3. # Usage of this module as follows:
  4. #
  5. # find_package(LibRDKafka)
  6. #
  7. # A required version can also be specified, for example:
  8. #
  9. # find_package(LibRDKafka 0.11.1)
  10. #
  11. # Variables used by this module, they can change the default behaviour and need
  12. # to be set before calling find_package:
  13. #
  14. # LibRDKafka_ROOT_DIR Set this variable to the root installation of
  15. # LibRDKafka if the module has problems finding
  16. # the proper installation path.
  17. #
  18. # Variables defined by this module:
  19. #
  20. # LIBRDKAFKA_FOUND System has LibRDKafka libs/headers
  21. # LibRDKafka_LIBRARIES The LibRDKafka libraries
  22. # LibRDKafka_INCLUDE_DIR The location of LibRDKafka headers
  23.  
  24. macro(HEXCHAR2DEC VAR VAL)
  25. if (${VAL} MATCHES "[0-9]")
  26. SET(${VAR} ${VAL})
  27. elseif(${VAL} MATCHES "[aA]")
  28. SET(${VAR} 10)
  29. elseif(${VAL} MATCHES "[bB]")
  30. SET(${VAR} 11)
  31. elseif(${VAL} MATCHES "[cC]")
  32. SET(${VAR} 12)
  33. elseif(${VAL} MATCHES "[dD]")
  34. SET(${VAR} 13)
  35. elseif(${VAL} MATCHES "[eE]")
  36. SET(${VAR} 14)
  37. elseif(${VAL} MATCHES "[fF]")
  38. SET(${VAR} 15)
  39. else()
  40. MESSAGE(FATAL_ERROR "Invalid format for hexidecimal character")
  41. endif()
  42.  
  43. endmacro(HEXCHAR2DEC)
  44.  
  45. macro(HEX2DEC VAR VAL)
  46.  
  47. SET(CURINDEX 0)
  48. STRING(LENGTH "${VAL}" CURLENGTH)
  49.  
  50. SET(${VAR} 0)
  51.  
  52. while (CURINDEX LESS CURLENGTH)
  53.  
  54. STRING(SUBSTRING "${VAL}" ${CURINDEX} 1 CHAR)
  55.  
  56. HEXCHAR2DEC(CHAR ${CHAR})
  57.  
  58. MATH(EXPR POWAH "(1<<((${CURLENGTH}-${CURINDEX}-1)*4))")
  59. MATH(EXPR CHAR "(${CHAR}*${POWAH})")
  60. MATH(EXPR ${VAR} "${${VAR}}+${CHAR}")
  61. MATH(EXPR CURINDEX "${CURINDEX}+1")
  62. endwhile()
  63.  
  64. endmacro(HEX2DEC)
  65.  
  66. macro(HEX2DECVERSION DECVERSION HEXVERSION)
  67.  
  68. STRING(SUBSTRING "${HEXVERSION}" 0 2 MAJOR_HEX)
  69. HEX2DEC(MAJOR_DEC ${MAJOR_HEX})
  70.  
  71. STRING(SUBSTRING "${HEXVERSION}" 2 2 MINOR_HEX)
  72. HEX2DEC(MINOR_DEC ${MINOR_HEX})
  73.  
  74. STRING(SUBSTRING "${HEXVERSION}" 4 2 REVISION_HEX)
  75. HEX2DEC(REVISION_DEC ${REVISION_HEX})
  76.  
  77. SET(${DECVERSION} ${MAJOR_DEC}.${MINOR_DEC}.${REVISION_DEC})
  78.  
  79. endmacro(HEX2DECVERSION)
  80.  
  81. if(NOT LibRDKafka_FIND_VERSION)
  82. if(NOT LibRDKafka_FIND_VERSION_MAJOR)
  83. set(LibRDKafka_FIND_VERSION_MAJOR 0)
  84. endif(NOT LibRDKafka_FIND_VERSION_MAJOR)
  85. if(NOT LibRDKafka_FIND_VERSION_MINOR)
  86. set(LibRDKafka_FIND_VERSION_MINOR 11)
  87. endif(NOT LibRDKafka_FIND_VERSION_MINOR)
  88. if(NOT LibRDKafka_FIND_VERSION_PATCH)
  89. set(LibRDKafka_FIND_VERSION_PATCH 0)
  90. endif(NOT LibRDKafka_FIND_VERSION_PATCH)
  91.  
  92. set(LibRDKafka_FIND_VERSION "${LibRDKafka_FIND_VERSION_MAJOR}.${LibRDKafka_FIND_VERSION_MINOR}.${LibRDKafka_FIND_VERSION_PATCH}")
  93. endif(NOT LibRDKafka_FIND_VERSION)
  94.  
  95. macro(_LibRDKafka_check_version)
  96. file(READ "${LibRDKafka_INCLUDE_DIR}/librdkafka/rdkafka.h" _LibRDKafka_version_header)
  97. string(REGEX MATCH "define[ \t]+RD_KAFKA_VERSION[ \t]+0x+([a-fA-F0-9]+)" _LibRDKafka_version_match "${_LibRDKafka_version_header}")
  98. set(LIBRDKAKFA_VERSION_HEX "${CMAKE_MATCH_1}")
  99. HEX2DECVERSION(LibRDKafka_VERSION ${LIBRDKAKFA_VERSION_HEX})
  100.  
  101. if(${LibRDKafka_VERSION} VERSION_LESS ${LibRDKafka_FIND_VERSION})
  102. set(LibRDKafka_VERSION_OK FALSE)
  103. else(${LibRDKafka_VERSION} VERSION_LESS ${LibRDKafka_FIND_VERSION})
  104. set(LibRDKafka_VERSION_OK TRUE)
  105. endif(${LibRDKafka_VERSION} VERSION_LESS ${LibRDKafka_FIND_VERSION})
  106.  
  107. if(NOT LibRDKafka_VERSION_OK)
  108. message(SEND_ERROR "LibRDKafka version ${LibRDKafka_VERSION} found in ${LibRDKafka_INCLUDE_DIR}, "
  109. "but at least version ${LibRDKafka_FIND_VERSION} is required")
  110. endif(NOT LibRDKafka_VERSION_OK)
  111. endmacro(_LibRDKafka_check_version)
  112.  
  113. find_path(LibRDKafka_ROOT_DIR
  114. NAMES include/LibRDKafka/rdkafkacpp.h
  115. PATHS /usr/local
  116. )
  117. find_path(LibRDKafka_INCLUDE_DIR
  118. NAMES LibRDKafka/rdkafkacpp.h
  119. HINTS ${LibRDKafka_ROOT_DIR}/include
  120. )
  121. find_library(LibRDKafka
  122. NAMES rdkafka++ LibRDKafkacpp
  123. HINTS ${LibRDKafka_ROOT_DIR}/lib
  124. )
  125. find_library(LibRDKafka_DEBUG
  126. NAMES LibRDKafkacpp_D
  127. HINTS ${LibRDKafka_ROOT_DIR}/lib
  128. )
  129. find_library(LibRDKafka_C
  130. NAMES rdkafka LibRDKafka
  131. HINTS ${LibRDKafka_ROOT_DIR}/lib
  132. )
  133. find_library(LibRDKafka_C_DEBUG
  134. NAMES LibRDKafka_D
  135. HINTS ${LIBRDKafka_ROOT_DIR}/lib
  136. )
  137.  
  138. if (LibRDKafka_INCLUDE_DIR)
  139. _LibRDKafka_check_version()
  140. endif ()
  141.  
  142. if( LibRDKafka_DEBUG )
  143.  
  144. set( LibRDKafka_LIBRARIES optimized ${LibRDKafka}
  145. debug ${LibRDKafka_DEBUG}
  146. )
  147.  
  148. else ()
  149.  
  150. set( LibRDKafka_LIBRARIES ${LibRDKafka}
  151. )
  152.  
  153. endif ()
  154.  
  155. if( LibRDKafka_C_DEBUG )
  156.  
  157. set( LibRDKafka_C_LIBRARIES optimized ${LibRDKafka_C}
  158. debug ${LibRDKafka_C_DEBUG}
  159. )
  160.  
  161. else ()
  162.  
  163. set( LibRDKafka_C_LIBRARIES ${LibRDKafka_C}
  164. )
  165.  
  166. endif ()
  167.  
  168. include(FindPackageHandleStandardArgs)
  169. find_package_handle_standard_args(LibRDKafka DEFAULT_MSG
  170. LibRDKafka_LIBRARIES
  171. LibRDKafka_C_LIBRARIES
  172. LibRDKafka_INCLUDE_DIR
  173. )
  174.  
  175. mark_as_advanced(
  176. LibRDKafka_ROOT_DIR
  177. LibRDKafka_LIBRARIES
  178. LibRDKafka_C_LIBRARIES
  179. LibRDKafka_INCLUDE_DIR
  180. )
Add Comment
Please, Sign In to add comment