CMakeLists.txt 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. # Copyright The OpenTelemetry Authors
  2. # SPDX-License-Identifier: Apache-2.0
  3. add_library(opentelemetry_api INTERFACE)
  4. target_include_directories(
  5. opentelemetry_api
  6. INTERFACE "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>"
  7. "$<INSTALL_INTERFACE:include>")
  8. set_target_properties(opentelemetry_api PROPERTIES EXPORT_NAME api)
  9. otel_add_component(
  10. COMPONENT
  11. api
  12. TARGETS
  13. opentelemetry_api
  14. FILES_DIRECTORY
  15. "include/opentelemetry"
  16. FILES_DESTINATION
  17. "include"
  18. FILES_MATCHING
  19. PATTERN
  20. "*.h")
  21. if(OPENTELEMETRY_INSTALL)
  22. unset(TARGET_DEPS)
  23. endif()
  24. if(BUILD_TESTING)
  25. add_subdirectory(test)
  26. endif()
  27. if(WITH_NO_DEPRECATED_CODE)
  28. target_compile_definitions(opentelemetry_api
  29. INTERFACE OPENTELEMETRY_NO_DEPRECATED_CODE)
  30. endif()
  31. if(WITH_STL STREQUAL "OFF")
  32. message(STATUS "Building WITH_STL=OFF")
  33. elseif(WITH_STL STREQUAL "CXX11")
  34. message(STATUS "Building WITH_STL=CXX11")
  35. target_compile_definitions(opentelemetry_api
  36. INTERFACE OPENTELEMETRY_STL_VERSION=2011)
  37. elseif(WITH_STL STREQUAL "CXX14")
  38. message(STATUS "Building WITH_STL=CXX14")
  39. target_compile_definitions(opentelemetry_api
  40. INTERFACE OPENTELEMETRY_STL_VERSION=2014)
  41. elseif(WITH_STL STREQUAL "CXX17")
  42. message(STATUS "Building WITH_STL=CXX17")
  43. target_compile_definitions(opentelemetry_api
  44. INTERFACE OPENTELEMETRY_STL_VERSION=2017)
  45. elseif(WITH_STL STREQUAL "CXX20")
  46. message(STATUS "Building WITH_STL=CXX20")
  47. target_compile_definitions(opentelemetry_api
  48. INTERFACE OPENTELEMETRY_STL_VERSION=2020)
  49. elseif(WITH_STL STREQUAL "CXX23")
  50. message(STATUS "Building WITH_STL=CXX23")
  51. target_compile_definitions(opentelemetry_api
  52. INTERFACE OPENTELEMETRY_STL_VERSION=2023)
  53. elseif(WITH_STL STREQUAL "ON")
  54. message(STATUS "Building WITH_STL=ON")
  55. # "ON" corresponds to "CXX23" at this time.
  56. target_compile_definitions(opentelemetry_api
  57. INTERFACE OPENTELEMETRY_STL_VERSION=2023)
  58. else()
  59. message(
  60. FATAL_ERROR "WITH_STL must be ON, OFF, CXX11, CXX14, CXX17, CXX20 or CXX23")
  61. endif()
  62. if(WITH_GSL)
  63. target_compile_definitions(opentelemetry_api INTERFACE HAVE_GSL)
  64. # Guidelines Support Library path. Used if we are not on not get C++20.
  65. #
  66. find_package(Microsoft.GSL QUIET)
  67. if(TARGET Microsoft.GSL::GSL)
  68. target_link_libraries(opentelemetry_api INTERFACE Microsoft.GSL::GSL)
  69. list(APPEND TARGET_DEPS "gsl")
  70. else()
  71. set(GSL_DIR third_party/ms-gsl)
  72. target_include_directories(
  73. opentelemetry_api INTERFACE "$<BUILD_INTERFACE:${GSL_DIR}/include>")
  74. endif()
  75. endif()
  76. if(WITH_NO_GETENV)
  77. target_compile_definitions(opentelemetry_api INTERFACE NO_GETENV)
  78. endif()
  79. if(WIN32)
  80. if(WITH_ETW)
  81. target_compile_definitions(opentelemetry_api INTERFACE HAVE_MSGPACK)
  82. endif()
  83. endif()
  84. if(WITH_ASYNC_EXPORT_PREVIEW)
  85. target_compile_definitions(opentelemetry_api INTERFACE ENABLE_ASYNC_EXPORT)
  86. endif()
  87. target_compile_definitions(
  88. opentelemetry_api
  89. INTERFACE OPENTELEMETRY_ABI_VERSION_NO=${OPENTELEMETRY_ABI_VERSION_NO})
  90. if(WITH_OTLP_RETRY_PREVIEW)
  91. target_compile_definitions(opentelemetry_api
  92. INTERFACE ENABLE_OTLP_RETRY_PREVIEW)
  93. endif()
  94. if(WITH_OTLP_GRPC_SSL_MTLS_PREVIEW)
  95. target_compile_definitions(opentelemetry_api
  96. INTERFACE ENABLE_OTLP_GRPC_SSL_MTLS_PREVIEW)
  97. endif()
  98. if(WITH_METRICS_EXEMPLAR_PREVIEW)
  99. target_compile_definitions(opentelemetry_api
  100. INTERFACE ENABLE_METRICS_EXEMPLAR_PREVIEW)
  101. endif()
  102. if(WITH_THREAD_INSTRUMENTATION_PREVIEW)
  103. target_compile_definitions(opentelemetry_api
  104. INTERFACE ENABLE_THREAD_INSTRUMENTATION_PREVIEW)
  105. endif()
  106. if(WITH_OTLP_HTTP_COMPRESSION)
  107. target_compile_definitions(opentelemetry_api
  108. INTERFACE ENABLE_OTLP_COMPRESSION_PREVIEW)
  109. endif()
  110. if(APPLE)
  111. target_link_libraries(opentelemetry_api INTERFACE "-framework CoreFoundation")
  112. endif()
  113. include(${PROJECT_SOURCE_DIR}/cmake/pkgconfig.cmake)
  114. if(OPENTELEMETRY_INSTALL)
  115. opentelemetry_add_pkgconfig(
  116. api "OpenTelemetry API"
  117. "A header-only library to support instrumentation with OpenTelemetry."
  118. "${TARGET_DEPS}")
  119. endif()