RunCMakeTest.cmake 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. include(RunCMake)
  2. macro(run_cmake test)
  3. list(APPEND RunCMake_TEST_OPTIONS -DTEST_PROP=${TEST_PROP})
  4. set(RunCMake-stderr-file ${test}-stderr_${TEST_PROP}.txt)
  5. _run_cmake(${test})
  6. endmacro()
  7. # Protect tests from running inside the default install prefix.
  8. set(RunCMake_TEST_OPTIONS "-DCMAKE_INSTALL_PREFIX=${RunCMake_BINARY_DIR}/NotDefaultPrefix")
  9. run_cmake(RelativePathInInterface)
  10. run_cmake(RelativePathInGenex)
  11. run_cmake(export-NOWARN)
  12. run_cmake(SourceDirectoryInInterface)
  13. run_cmake(BinaryDirectoryInInterface)
  14. set(RunCMake_TEST_OPTIONS "-DCMAKE_INSTALL_PREFIX=${RunCMake_BINARY_DIR}/DirInInstallPrefix/prefix")
  15. run_cmake(DirInInstallPrefix)
  16. configure_file(
  17. "${RunCMake_SOURCE_DIR}/CMakeLists.txt"
  18. "${RunCMake_BINARY_DIR}/copy/CMakeLists.txt"
  19. COPYONLY
  20. )
  21. configure_file(
  22. "${RunCMake_SOURCE_DIR}/empty.cpp"
  23. "${RunCMake_BINARY_DIR}/copy/empty.cpp"
  24. COPYONLY
  25. )
  26. configure_file(
  27. "${RunCMake_SOURCE_DIR}/SourceDirectoryInInterface.cmake"
  28. "${RunCMake_BINARY_DIR}/copy/SourceDirectoryInInterface.cmake"
  29. COPYONLY
  30. )
  31. set(RunCMake_TEST_OPTIONS
  32. "-DCMAKE_INSTALL_PREFIX=${RunCMake_BINARY_DIR}/copy/SourceDirectoryInInterface/prefix"
  33. "-DTEST_FILE=${RunCMake_BINARY_DIR}/copy/SourceDirectoryInInterface.cmake"
  34. )
  35. set(RunCMake_TEST_SOURCE_DIR "${RunCMake_BINARY_DIR}/copy")
  36. run_cmake(InstallInSrcDir)
  37. unset(RunCMake_TEST_SOURCE_DIR)
  38. set(RunCMake_TEST_OPTIONS "-DCMAKE_INSTALL_PREFIX=${RunCMake_BINARY_DIR}/InstallInBinDir-build/prefix")
  39. set(RunCMake_TEST_OPTIONS
  40. "-DCMAKE_INSTALL_PREFIX=${RunCMake_BINARY_DIR}/InstallInBinDir-build/prefix"
  41. "-DTEST_FILE=${RunCMake_SOURCE_DIR}/BinaryDirectoryInInterface.cmake"
  42. )
  43. set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/InstallInBinDir-build")
  44. run_cmake(InstallInBinDir)
  45. unset(RunCMake_TEST_BINARY_DIR)
  46. configure_file(
  47. "${RunCMake_SOURCE_DIR}/CMakeLists.txt"
  48. "${RunCMake_BINARY_DIR}/prefix/src/CMakeLists.txt"
  49. COPYONLY
  50. )
  51. configure_file(
  52. "${RunCMake_SOURCE_DIR}/empty.cpp"
  53. "${RunCMake_BINARY_DIR}/prefix/src/empty.cpp"
  54. COPYONLY
  55. )
  56. configure_file(
  57. "${RunCMake_SOURCE_DIR}/SourceDirectoryInInterface.cmake"
  58. "${RunCMake_BINARY_DIR}/prefix/src/SourceDirectoryInInterface.cmake"
  59. COPYONLY
  60. )
  61. foreach(policyStatus NEW OLD "")
  62. if (TEST_PROP STREQUAL INCLUDE_DIRECTORIES)
  63. if (NOT "${policyStatus}" STREQUAL "")
  64. set(policyOption -DCMAKE_POLICY_DEFAULT_CMP0052=${policyStatus})
  65. else()
  66. unset(policyOption)
  67. set(policyStatus WARN)
  68. endif()
  69. set(policySuffix -CMP0052-${policyStatus})
  70. endif()
  71. set(RunCMake_TEST_OPTIONS
  72. "-DCMAKE_INSTALL_PREFIX=${RunCMake_BINARY_DIR}/prefix" ${policyOption}
  73. "-DTEST_FILE=${RunCMake_SOURCE_DIR}/BinaryDirectoryInInterface.cmake"
  74. )
  75. # Set the RunCMake_TEST_SOURCE_DIR here to the copy too. This is needed to run
  76. # the test suite in-source properly. Otherwise the install directory would be
  77. # a subdirectory or the source directory, which is allowed and tested separately
  78. # below.
  79. set(RunCMake_TEST_SOURCE_DIR "${RunCMake_BINARY_DIR}/prefix/src")
  80. set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/prefix/BinInInstallPrefix${policySuffix}-build")
  81. run_cmake(BinInInstallPrefix${policySuffix})
  82. unset(RunCMake_TEST_BINARY_DIR)
  83. set(RunCMake_TEST_OPTIONS
  84. "-DCMAKE_INSTALL_PREFIX=${RunCMake_BINARY_DIR}/prefix" ${policyOption}
  85. "-DTEST_FILE=${RunCMake_BINARY_DIR}/prefix/src/SourceDirectoryInInterface.cmake"
  86. )
  87. run_cmake(SrcInInstallPrefix${policySuffix})
  88. unset(RunCMake_TEST_SOURCE_DIR)
  89. if (NOT TEST_PROP STREQUAL INCLUDE_DIRECTORIES)
  90. break()
  91. endif()
  92. endforeach()
  93. set(RunCMake_TEST_OPTIONS "-DCMAKE_INSTALL_PREFIX=${RunCMake_BINARY_DIR}/InstallPrefixInInterface-build/prefix")
  94. run_cmake(InstallPrefixInInterface)
  95. configure_file(
  96. "${RunCMake_SOURCE_DIR}/CMakeLists.txt"
  97. "${RunCMake_BINARY_DIR}/installToSrc/CMakeLists.txt"
  98. COPYONLY
  99. )
  100. configure_file(
  101. "${RunCMake_SOURCE_DIR}/empty.cpp"
  102. "${RunCMake_BINARY_DIR}/installToSrc/empty.cpp"
  103. COPYONLY
  104. )
  105. configure_file(
  106. "${RunCMake_SOURCE_DIR}/InstallPrefixInInterface.cmake"
  107. "${RunCMake_BINARY_DIR}/installToSrc/InstallPrefixInInterface.cmake"
  108. COPYONLY
  109. )
  110. set(RunCMake_TEST_OPTIONS
  111. "-DCMAKE_INSTALL_PREFIX=${RunCMake_BINARY_DIR}/installToSrc/InstallPrefixInInterface/prefix"
  112. "-DTEST_FILE=${RunCMake_BINARY_DIR}/installToSrc/InstallPrefixInInterface.cmake"
  113. )
  114. set(RunCMake_TEST_SOURCE_DIR "${RunCMake_BINARY_DIR}/installToSrc")
  115. run_cmake(InstallToPrefixInSrcDirOutOfSource)
  116. unset(RunCMake_TEST_SOURCE_DIR)
  117. file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}/installToSrcInSrc")
  118. set(RunCMake_TEST_NO_CLEAN ON)
  119. configure_file(
  120. "${RunCMake_SOURCE_DIR}/CMakeLists.txt"
  121. "${RunCMake_BINARY_DIR}/installToSrcInSrc/CMakeLists.txt"
  122. COPYONLY
  123. )
  124. configure_file(
  125. "${RunCMake_SOURCE_DIR}/empty.cpp"
  126. "${RunCMake_BINARY_DIR}/installToSrcInSrc/empty.cpp"
  127. COPYONLY
  128. )
  129. configure_file(
  130. "${RunCMake_SOURCE_DIR}/InstallPrefixInInterface.cmake"
  131. "${RunCMake_BINARY_DIR}/installToSrcInSrc/InstallPrefixInInterface.cmake"
  132. COPYONLY
  133. )
  134. set(RunCMake_TEST_OPTIONS
  135. "-DCMAKE_INSTALL_PREFIX=${RunCMake_BINARY_DIR}/installToSrcInSrc/InstallPrefixInInterface/prefix"
  136. "-DTEST_FILE=${RunCMake_BINARY_DIR}/installToSrcInSrc/InstallPrefixInInterface.cmake"
  137. )
  138. set(RunCMake_TEST_SOURCE_DIR "${RunCMake_BINARY_DIR}/installToSrcInSrc")
  139. set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/installToSrcInSrc")
  140. run_cmake(InstallToPrefixInSrcDirInSource)
  141. unset(RunCMake_TEST_SOURCE_DIR)
  142. unset(RunCMake_TEST_BINARY_DIR)
  143. unset(RunCMake_TEST_NO_CLEAN)