NetdataUtil.cmake 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. # Utility functions used by other modules.
  2. #
  3. # Copyright (c) 2024 Netdata Inc.
  4. # SPDX-License-Identifier: GPL-3.0-or-later
  5. include_guard()
  6. # Determine the version of the host kernel.
  7. #
  8. # Only works on UNIX-like systems, stores the version in the cache
  9. # variable HOST_KERNEL_VERSION.
  10. function(netdata_detect_host_kernel_version)
  11. if(DEFINED HOST_KERNEL_VERSION)
  12. return()
  13. endif()
  14. message(CHECK_START "Determining host kernel version")
  15. execute_process(COMMAND uname -r
  16. RESULT_VARIABLE _uname_result
  17. OUTPUT_VARIABLE _uname_output)
  18. if(NOT _uname_result)
  19. message(CHECK_FAIL "unknown")
  20. set(HOST_KERNEL_VERSION "0.0.0" CACHE STRING "Detected host kernel version")
  21. return()
  22. endif()
  23. string(REGEX REPLACE "-.+$" "" _kversion "${_uname_output}")
  24. message(CHECK_PASS "${_kversion}")
  25. set(HOST_KERNEL_VERSION "${_kversion}" CACHE STRING "Detected host kernel version")
  26. endfunction()
  27. # Check what libc we're using.
  28. #
  29. # Sets the specified variable to the name of the libc or "unknown"
  30. function(netdata_identify_libc _libc_name)
  31. if(NOT DEFINED _ND_DETECTED_LIBC)
  32. message(INFO "Detecting libc implementation")
  33. execute_process(COMMAND ldd --version
  34. COMMAND grep -q -i -E "glibc|gnu libc"
  35. RESULT_VARIABLE LDD_IS_GLIBC
  36. OUTPUT_VARIABLE LDD_OUTPUT
  37. ERROR_VARIABLE LDD_OUTPUT)
  38. if(LDD_IS_GLIBC)
  39. set(${_libc_name} glibc PARENT_SCOPE)
  40. set(_ND_DETECTED_LIBC glibc CACHE INTERNAL "")
  41. return()
  42. endif()
  43. execute_process(COMMAND ldd --version
  44. COMMAND grep -q -i -E "musl"
  45. RESULT_VARIABLE LDD_IS_MUSL
  46. OUTPUT_VARIABLE LDD_OUTPUT
  47. ERROR_VARIABLE LDD_OUTPUT)
  48. if(LDD_IS_MUSL)
  49. set(${_libc_name} musl PARENT_SCOPE)
  50. set(_ND_DETECTED_LIBC musl CACHE INTERNAL "")
  51. return()
  52. endif()
  53. set(${_libc_name} unknown PARENT_SCOPE)
  54. set(_ND_DETECTED_LIBC unknown CACHE INTERNAL "")
  55. else()
  56. set(${_libc_name} ${_ND_DETECTED_LIBC} PARENT_SCOPE)
  57. endif()
  58. endfunction()