RunCMakeTest.cmake 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. include(RunCMake)
  2. # Isolate test cases from caller's environment.
  3. set(ENV{CMAKE_PREFIX_PATH} "")
  4. set(ENV{CMAKE_APPBUNDLE_PATH} "")
  5. set(ENV{CMAKE_FRAMEWORK_PATH} "")
  6. run_cmake(PkgConfigDoesNotExist)
  7. if(NOT WIN32)
  8. # FIXME: The Windows implementation of these tests do not work.
  9. # They are disabled until they can be updated to a working state.
  10. run_cmake(FindPkgConfig_CMP0126_NEW)
  11. run_cmake(FindPkgConfig_NO_PKGCONFIG_PATH)
  12. run_cmake(FindPkgConfig_PKGCONFIG_PATH)
  13. run_cmake(FindPkgConfig_PKGCONFIG_PATH_NO_CMAKE_PATH)
  14. run_cmake(FindPkgConfig_PKGCONFIG_PATH_NO_CMAKE_ENVIRONMENT_PATH)
  15. run_cmake(FindPkgConfig_GET_MATCHING_ARGN)
  16. endif()
  17. run_cmake(FindPkgConfig_extract_frameworks)
  18. if(APPLE)
  19. run_cmake(FindPkgConfig_extract_frameworks_target)
  20. run_cmake(FindPkgConfig_CMAKE_FRAMEWORK_PATH)
  21. run_cmake(FindPkgConfig_CMAKE_APPBUNDLE_PATH)
  22. endif()
  23. # We need a real pkg-config to run the test for get_variable.
  24. find_package(PkgConfig)
  25. if (PKG_CONFIG_FOUND)
  26. string(FIND "${CMAKE_CURRENT_BINARY_DIR}" " " IS_SPACES_IN_PATH)
  27. if(IS_SPACES_IN_PATH GREATER -1)
  28. string(REPLACE " " "\\ " ESCAPED_ROOT "${CMAKE_CURRENT_BINARY_DIR}")
  29. file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/test_spaces.pc" "
  30. libdir=${ESCAPED_ROOT}
  31. Name: test_spaces.pc
  32. Version: 0.0
  33. Description: test spaces
  34. Libs: -L\${libdir}
  35. ")
  36. set(PKG_CONFIG_PATH_SAVED "$ENV{PKG_CONFIG_PATH}")
  37. set(ENV{PKG_CONFIG_PATH} "${CMAKE_CURRENT_BINARY_DIR}")
  38. execute_process(COMMAND "${PKG_CONFIG_EXECUTABLE}" --libs test_spaces
  39. ERROR_QUIET COMMAND_ERROR_IS_FATAL ANY
  40. OUTPUT_VARIABLE test_spaces_LIBS)
  41. set(ENV{PKG_CONFIG_PATH} "${PKG_CONFIG_PATH_SAVED}")
  42. string(STRIP "${test_spaces_LIBS}" test_spaces_LIBS_STRIPPED)
  43. if(NOT "${test_spaces_LIBS_STRIPPED}" STREQUAL "-L${ESCAPED_ROOT}")
  44. set(PKG_CONFIG_DONT_SUPPORT_SPACES_IN_PATH TRUE)
  45. endif()
  46. endif()
  47. run_cmake(FindPkgConfig_GET_VARIABLE)
  48. run_cmake(FindPkgConfig_GET_VARIABLE_DEFINE_VARIABLES)
  49. run_cmake(FindPkgConfig_GET_VARIABLE_PREFIX_PATH)
  50. run_cmake(FindPkgConfig_GET_VARIABLE_PKGCONFIG_PATH)
  51. run_cmake(FindPkgConfig_GET_VARIABLE_MULTIPLE_VALUES)
  52. run_cmake(FindPkgConfig_cache_variables)
  53. run_cmake(FindPkgConfig_IMPORTED_TARGET)
  54. run_cmake(FindPkgConfig_VERSION_OPERATORS)
  55. run_cmake(FindPkgConfig_GET_MATCHING_MODULE_NAME)
  56. run_cmake(FindPkgConfig_empty_target)
  57. if(NOT PKG_CONFIG_DONT_SUPPORT_SPACES_IN_PATH)
  58. run_cmake(FindPkgConfig_SYSTEM_PATH)
  59. endif()
  60. endif ()