CMakeLists.txt 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. # Copyright The OpenTelemetry Authors
  2. # SPDX-License-Identifier: Apache-2.0
  3. cmake_minimum_required(VERSION 3.14)
  4. project(opentelemetry-cpp-component-install-tests LANGUAGES CXX)
  5. if(NOT INSTALL_TEST_CMAKE_OPTIONS)
  6. set(INSTALL_TEST_CMAKE_OPTIONS
  7. "-DCMAKE_CXX_STANDARD=14 -DCMAKE_BUILD_TYPE=Debug")
  8. endif()
  9. separate_arguments(INSTALL_TEST_CMAKE_OPTIONS)
  10. message(
  11. STATUS "INSTALL_TEST_CMAKE_OPTIONS is set to ${INSTALL_TEST_CMAKE_OPTIONS}")
  12. find_package(opentelemetry-cpp CONFIG REQUIRED)
  13. message(
  14. STATUS
  15. "OPENTELEMETRY_CPP_COMPONENTS_INSTALLED = ${OPENTELEMETRY_CPP_COMPONENTS_INSTALLED}"
  16. )
  17. # Check that INSTALL_TEST_COMPONENTS is set and contains installed components
  18. if(NOT INSTALL_TEST_COMPONENTS)
  19. message(
  20. STATUS
  21. "INSTALL_TEST_COMPONENTS is not set. Setting to OPENTELEMETRY_CPP_COMPONENTS_INSTALLED"
  22. )
  23. set(INSTALL_TEST_COMPONENTS ${OPENTELEMETRY_CPP_COMPONENTS_INSTALLED})
  24. else()
  25. set(COMPONENTS_ARE_VALID TRUE)
  26. foreach(component ${INSTALL_TEST_COMPONENTS})
  27. if(NOT component IN_LIST OPENTELEMETRY_CPP_COMPONENTS_INSTALLED)
  28. message(
  29. ERROR
  30. " Component ${component} is not an installed opentelemetry-cpp component"
  31. )
  32. set(COMPONENTS_ARE_VALID FALSE)
  33. endif()
  34. endforeach()
  35. if(NOT COMPONENTS_ARE_VALID)
  36. message(FATAL_ERROR "INSTALL_TEST_COMPONENTS contains invalid components")
  37. endif()
  38. endif()
  39. message(STATUS "INSTALL_TEST_COMPONENTS = ${INSTALL_TEST_COMPONENTS}")
  40. set(INSTALL_TEST_SRC_DIR "${CMAKE_SOURCE_DIR}/../src")
  41. enable_testing()
  42. # -----------------------------------------------------------
  43. # CMake Usage tests for find_package(opentelemetry-cpp ...)
  44. #
  45. # 1. Test find_package with no components specified
  46. # 2. Test find_package with components specified but not sorted in dependency
  47. # order
  48. # 3. Test find_package with components specified but missing dependent components
  49. # 4. Test find_package with components specified but including
  50. # unsupported/unknown components
  51. add_test(
  52. NAME cmake-usage-no-components-test
  53. COMMAND
  54. ${CMAKE_COMMAND} --log-level=DEBUG -S
  55. ${CMAKE_SOURCE_DIR}/usage_tests/no_components -B
  56. build-cmake-usage-no-components-test
  57. "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ${INSTALL_TEST_CMAKE_OPTIONS})
  58. add_test(
  59. NAME cmake-usage-unsorted-components-test
  60. COMMAND
  61. ${CMAKE_COMMAND} --log-level=DEBUG -S
  62. ${CMAKE_SOURCE_DIR}/usage_tests/unsorted_components -B
  63. build-cmake-usage-unsorted-components-test
  64. "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ${INSTALL_TEST_CMAKE_OPTIONS})
  65. add_test(
  66. NAME cmake-usage-missing-components-test
  67. COMMAND
  68. ${CMAKE_COMMAND} --log-level=DEBUG -S
  69. ${CMAKE_SOURCE_DIR}/usage_tests/missing_components -B
  70. build-cmake-usage-missing-components-test
  71. "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ${INSTALL_TEST_CMAKE_OPTIONS})
  72. add_test(
  73. NAME cmake-usage-unsupported-components-test
  74. COMMAND
  75. ${CMAKE_COMMAND} --log-level=DEBUG -S
  76. ${CMAKE_SOURCE_DIR}/usage_tests/unsupported_components -B
  77. build-cmake-usage-unsupported-components-test
  78. "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ${INSTALL_TEST_CMAKE_OPTIONS})
  79. # -----------------------------------------------------------
  80. # Test the full package install using legacy cmake build instructions
  81. # find_package(opentelemetry-cpp CONFIG REQUIRED)
  82. # Test cmake configuration
  83. add_test(
  84. NAME full-package-cmake-config-test
  85. COMMAND
  86. ${CMAKE_COMMAND} --log-level=DEBUG -S ${CMAKE_SOURCE_DIR}/package_test -B
  87. build-full-package-test "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}"
  88. ${INSTALL_TEST_CMAKE_OPTIONS}
  89. "-DINSTALL_TEST_COMPONENTS=${INSTALL_TEST_COMPONENTS}"
  90. "-DINSTALL_TEST_SRC_DIR=${INSTALL_TEST_SRC_DIR}")
  91. # Build the full package test executable
  92. add_test(NAME full-package-build-test
  93. COMMAND ${CMAKE_COMMAND} --build
  94. ${CMAKE_BINARY_DIR}/build-full-package-test --parallel)
  95. # Run the full package test executable
  96. add_test(NAME full-package-run-test
  97. COMMAND ${CMAKE_BINARY_DIR}/build-full-package-test/full_test)
  98. # -----------------------------------------------------------
  99. # -----------------------------------------------------------
  100. # Loop over all the components to test
  101. foreach(component ${INSTALL_TEST_COMPONENTS})
  102. # Test cmake configuration
  103. add_test(
  104. NAME component-${component}-cmake-config-test
  105. COMMAND
  106. ${CMAKE_COMMAND} --log-level=DEBUG -S
  107. ${CMAKE_SOURCE_DIR}/component_tests/${component} -B
  108. build-${component}-test "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}"
  109. ${INSTALL_TEST_CMAKE_OPTIONS}
  110. "-DINSTALL_TEST_SRC_DIR=${INSTALL_TEST_SRC_DIR}")
  111. # Build the component test executable
  112. add_test(NAME component-${component}-build-test
  113. COMMAND ${CMAKE_COMMAND} --build
  114. ${CMAKE_BINARY_DIR}/build-${component}-test --parallel)
  115. # Run the component test executable
  116. add_test(
  117. NAME component-${component}-run-test
  118. COMMAND ${CMAKE_BINARY_DIR}/build-${component}-test/${component}_test)
  119. endforeach()