| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | # Copyright The OpenTelemetry Authors# SPDX-License-Identifier: Apache-2.0## The dependency on nlohmann_json can be provided different ways. By order of# decreasing priority, options are:## 1 - Search for a nlohmann_json package## Packages installed on the local machine are used if found.## The nlohmann_json dependency is not installed, as it already is.## 2 - Search for a nlohmann_json git submodule## When git submodule is used, the nlohmann_json code is located in:# third_party/nlohmann-json## The nlohmann_json dependency is installed, by building the sub directory with# JSON_Install=ON## 3 - Download nlohmann_json from github## Code from the development branch is used, unless a specific release tag is# provided in variable ${nlohmann-json}## The nlohmann_json dependency is installed, by building the downloaded code# with JSON_Install=ON## nlohmann_json package is required for most SDK build configurationsfind_package(nlohmann_json QUIET)set(nlohmann_json_clone FALSE)if(nlohmann_json_FOUND)  message(STATUS "nlohmann::json dependency satisfied by: package")elseif(TARGET nlohmann_json)  message(STATUS "nlohmann::json is already added as a CMake target!")elseif(EXISTS ${PROJECT_SOURCE_DIR}/.git       AND EXISTS           ${PROJECT_SOURCE_DIR}/third_party/nlohmann-json/CMakeLists.txt)  message(STATUS "nlohmann::json dependency satisfied by: git submodule")  set(JSON_BuildTests      OFF      CACHE INTERNAL "")  set(JSON_Install      ON      CACHE INTERNAL "")  # This option allows to link nlohmann_json::nlohmann_json target  add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/nlohmann-json)  # This option allows to add header to include directories  include_directories(    ${PROJECT_SOURCE_DIR}/third_party/nlohmann-json/single_include)else()  if("${nlohmann-json}" STREQUAL "")    set(nlohmann-json "develop")  endif()  message(STATUS "nlohmann::json dependency satisfied by: github download")  set(nlohmann_json_clone TRUE)  include(ExternalProject)  ExternalProject_Add(    nlohmann_json_download    PREFIX third_party    GIT_REPOSITORY https://github.com/nlohmann/json.git    GIT_TAG "${nlohmann-json}"    UPDATE_COMMAND ""    CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}               -DJSON_BuildTests=OFF -DJSON_Install=ON               -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}    TEST_AFTER_INSTALL 0    DOWNLOAD_NO_PROGRESS 1    LOG_CONFIGURE 1    LOG_BUILD 1    LOG_INSTALL 1)  ExternalProject_Get_Property(nlohmann_json_download INSTALL_DIR)  set(NLOHMANN_JSON_INCLUDE_DIR      ${INSTALL_DIR}/src/nlohmann_json_download/single_include)  add_library(nlohmann_json_ INTERFACE)  target_include_directories(    nlohmann_json_ INTERFACE "$<BUILD_INTERFACE:${NLOHMANN_JSON_INCLUDE_DIR}>"                             "$<INSTALL_INTERFACE:include>")  add_dependencies(nlohmann_json_ nlohmann_json_download)  add_library(nlohmann_json::nlohmann_json ALIAS nlohmann_json_)  if(OPENTELEMETRY_INSTALL)    install(      TARGETS nlohmann_json_      EXPORT "${PROJECT_NAME}-third_party_nlohmann_json_target"      RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}      LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}      ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}      COMPONENT third_party_nlohmann_json)  endif()endif()
 |