瀏覽代碼

Merge topic 'remove-simpleinstall'

31e79050b2 Tests: Remove the SimpleInstall test
36ef57a939 Tests: Add test for cmake --build . --target package
11ca374b28 Tests: Add test for install(SCRIPT ... COMPONENT)
2201fb6f43 Tests: Add test for InstallRequiredSystemLibraries
5a7a006fdd Tests: Add test for $<0:...> in ExportImport
69ca768e78 Tests: Add test for install(TARGETS) RPATH functionality
25c3fb6c35 Tests: Add test for install(FILES) with PERMISSIONS
b5df4faa20 Tests: Add test for installing parts of targets in different directories
...

Acked-by: Kitware Robot <[email protected]>
Merge-request: !2209
Brad King 7 年之前
父節點
當前提交
11d71e6cd0
共有 100 個文件被更改,包括 250 次插入1247 次删除
  1. 0 28
      Tests/CMakeLists.txt
  2. 3 3
      Tests/ExportImport/Export/CMakeLists.txt
  3. 23 7
      Tests/RunCMake/CPack/CPackTestHelpers.cmake
  4. 1 1
      Tests/RunCMake/CPack/RPM/default_expected_stderr.txt
  5. 1 0
      Tests/RunCMake/CPack/RunCMakeTest.cmake
  6. 1 0
      Tests/RunCMake/install/DIRECTORY-OPTIONAL-all-check.cmake
  7. 1 0
      Tests/RunCMake/install/DIRECTORY-OPTIONAL.cmake
  8. 1 0
      Tests/RunCMake/install/DIRECTORY-PATTERN-all-check.cmake
  9. 36 0
      Tests/RunCMake/install/DIRECTORY-PATTERN.cmake
  10. 1 0
      Tests/RunCMake/install/Deprecated-all-check.cmake
  11. 13 0
      Tests/RunCMake/install/Deprecated.cmake
  12. 1 0
      Tests/RunCMake/install/FILES-OPTIONAL-all-check.cmake
  13. 1 0
      Tests/RunCMake/install/FILES-OPTIONAL.cmake
  14. 1 0
      Tests/RunCMake/install/FILES-PERMISSIONS-all-check.cmake
  15. 5 0
      Tests/RunCMake/install/FILES-PERMISSIONS.cmake
  16. 1 0
      Tests/RunCMake/install/InstallRequiredSystemLibraries-stderr.txt
  17. 10 0
      Tests/RunCMake/install/InstallRequiredSystemLibraries.cmake
  18. 1 0
      Tests/RunCMake/install/PRE_POST_INSTALL_SCRIPT-all-check.cmake
  19. 7 0
      Tests/RunCMake/install/PRE_POST_INSTALL_SCRIPT.cmake
  20. 18 0
      Tests/RunCMake/install/RunCMakeTest.cmake
  21. 1 0
      Tests/RunCMake/install/SCRIPT-COMPONENT-all-check.cmake
  22. 1 0
      Tests/RunCMake/install/SCRIPT-COMPONENT-dev-check.cmake
  23. 1 0
      Tests/RunCMake/install/SCRIPT-COMPONENT-uns-check.cmake
  24. 5 0
      Tests/RunCMake/install/SCRIPT-COMPONENT.cmake
  25. 1 0
      Tests/RunCMake/install/SCRIPT-all-check.cmake
  26. 4 0
      Tests/RunCMake/install/SCRIPT.cmake
  27. 1 0
      Tests/RunCMake/install/TARGETS-CONFIGURATIONS-all-check.cmake
  28. 2 0
      Tests/RunCMake/install/TARGETS-CONFIGURATIONS.cmake
  29. 1 0
      Tests/RunCMake/install/TARGETS-OPTIONAL-all-check.cmake
  30. 1 0
      Tests/RunCMake/install/TARGETS-OPTIONAL-stderr.txt
  31. 4 0
      Tests/RunCMake/install/TARGETS-OPTIONAL.cmake
  32. 13 0
      Tests/RunCMake/install/TARGETS-OUTPUT_NAME-all-check.cmake
  33. 27 0
      Tests/RunCMake/install/TARGETS-OUTPUT_NAME.cmake
  34. 1 0
      Tests/RunCMake/install/TARGETS-Parts-all-check.cmake
  35. 7 0
      Tests/RunCMake/install/TARGETS-Parts.cmake
  36. 14 0
      Tests/RunCMake/install/TARGETS-RPATH-all-check.cmake
  37. 14 0
      Tests/RunCMake/install/TARGETS-RPATH.cmake
  38. 5 0
      Tests/RunCMake/install/install_script.cmake
  39. 4 1
      Tests/RunCMake/install/obj1.c
  40. 6 0
      Tests/RunCMake/install/obj1.h
  41. 0 0
      Tests/RunCMake/install/pattern/empty.c
  42. 0 0
      Tests/RunCMake/install/pattern/empty.h
  43. 0 0
      Tests/RunCMake/install/pattern/empty.txt
  44. 1 0
      Tests/RunCMake/install/postinstall.cmake
  45. 1 0
      Tests/RunCMake/install/preinstall.cmake
  46. 0 0
      Tests/RunCMake/install/script
  47. 0 0
      Tests/RunCMake/install/script.bat
  48. 9 0
      Tests/RunCMake/install/testobj1.c
  49. 0 398
      Tests/SimpleInstall/CMakeLists.txt
  50. 0 5
      Tests/SimpleInstall/InstallScript1.cmake
  51. 0 14
      Tests/SimpleInstall/InstallScript2.cmake
  52. 0 12
      Tests/SimpleInstall/InstallScript3.cmake
  53. 0 22
      Tests/SimpleInstall/InstallScript4.cmake
  54. 0 10
      Tests/SimpleInstall/PackageScript.cmake
  55. 0 6
      Tests/SimpleInstall/PostInstall.cmake
  56. 0 2
      Tests/SimpleInstall/PreInstall.cmake
  57. 0 3
      Tests/SimpleInstall/TestSubDir/CMakeLists.txt
  58. 0 10
      Tests/SimpleInstall/TestSubDir/TSD.cxx
  59. 0 1
      Tests/SimpleInstall/TestSubDir/TSD.h
  60. 0 9
      Tests/SimpleInstall/TestSubDir/TSD_utils.cxx
  61. 0 6
      Tests/SimpleInstall/foo.c
  62. 0 10
      Tests/SimpleInstall/foo.h
  63. 0 34
      Tests/SimpleInstall/inst.cxx
  64. 0 2
      Tests/SimpleInstall/inst2.cxx
  65. 0 6
      Tests/SimpleInstall/lib1.cxx
  66. 0 1
      Tests/SimpleInstall/lib1.h
  67. 0 6
      Tests/SimpleInstall/lib2.cxx
  68. 0 11
      Tests/SimpleInstall/lib2.h
  69. 0 6
      Tests/SimpleInstall/lib3.cxx
  70. 0 11
      Tests/SimpleInstall/lib3.h
  71. 0 6
      Tests/SimpleInstall/lib4.cxx
  72. 0 11
      Tests/SimpleInstall/lib4.h
  73. 0 1
      Tests/SimpleInstall/scripts/.gitattributes
  74. 0 1
      Tests/SimpleInstall/scripts/CMakeLists.txt
  75. 0 397
      Tests/SimpleInstallS2/CMakeLists.txt
  76. 0 5
      Tests/SimpleInstallS2/InstallScript1.cmake
  77. 0 14
      Tests/SimpleInstallS2/InstallScript2.cmake
  78. 0 12
      Tests/SimpleInstallS2/InstallScript3.cmake
  79. 0 22
      Tests/SimpleInstallS2/InstallScript4.cmake
  80. 0 10
      Tests/SimpleInstallS2/PackageScript.cmake
  81. 0 6
      Tests/SimpleInstallS2/PostInstall.cmake
  82. 0 2
      Tests/SimpleInstallS2/PreInstall.cmake
  83. 0 3
      Tests/SimpleInstallS2/TestSubDir/CMakeLists.txt
  84. 0 10
      Tests/SimpleInstallS2/TestSubDir/TSD.cxx
  85. 0 1
      Tests/SimpleInstallS2/TestSubDir/TSD.h
  86. 0 9
      Tests/SimpleInstallS2/TestSubDir/TSD_utils.cxx
  87. 0 6
      Tests/SimpleInstallS2/foo.c
  88. 0 10
      Tests/SimpleInstallS2/foo.h
  89. 0 34
      Tests/SimpleInstallS2/inst.cxx
  90. 0 2
      Tests/SimpleInstallS2/inst2.cxx
  91. 0 6
      Tests/SimpleInstallS2/lib1.cxx
  92. 0 1
      Tests/SimpleInstallS2/lib1.h
  93. 0 6
      Tests/SimpleInstallS2/lib2.cxx
  94. 0 11
      Tests/SimpleInstallS2/lib2.h
  95. 0 6
      Tests/SimpleInstallS2/lib3.cxx
  96. 0 11
      Tests/SimpleInstallS2/lib3.h
  97. 0 6
      Tests/SimpleInstallS2/lib4.cxx
  98. 0 11
      Tests/SimpleInstallS2/lib4.h
  99. 0 1
      Tests/SimpleInstallS2/scripts/.gitattributes
  100. 0 1
      Tests/SimpleInstallS2/scripts/CMakeLists.txt

+ 0 - 28
Tests/CMakeLists.txt

@@ -869,33 +869,6 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
     )
   list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/BuildDepends")
 
-  set(SimpleInstallInstallDir
-    "${CMake_BINARY_DIR}/Tests/SimpleInstall/InstallDirectory")
-  add_test(SimpleInstall ${CMAKE_CTEST_COMMAND}
-    --build-and-test
-    "${CMake_SOURCE_DIR}/Tests/SimpleInstall"
-    "${CMake_BINARY_DIR}/Tests/SimpleInstall"
-    ${build_generator_args}
-    --build-project TestSimpleInstall
-    --build-two-config
-    --build-options ${build_options}
-    "-DCMAKE_INSTALL_PREFIX:PATH=${SimpleInstallInstallDir}"
-    "-DCTEST_TEST_CPACK:BOOL=${CTEST_TEST_CPACK}"
-    --test-command   ${SimpleInstallInstallDir}/MyTest/bin/SimpleInstExe)
-  list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/SimpleInstall")
-  add_test(SimpleInstall-Stage2 ${CMAKE_CTEST_COMMAND}
-    --build-and-test
-    "${CMake_SOURCE_DIR}/Tests/SimpleInstallS2"
-    "${CMake_BINARY_DIR}/Tests/SimpleInstallS2"
-    ${build_generator_args}
-    --build-project TestSimpleInstall
-    --build-two-config
-    --build-options ${build_options}
-    "-DCMAKE_INSTALL_PREFIX:PATH=${SimpleInstallInstallDir}"
-    "-DSTAGE2:BOOL=1"
-    --test-command   ${SimpleInstallInstallDir}/MyTest/bin/SimpleInstExeS2)
-  list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/SimpleInstallS2")
-
   set(MissingInstallInstallDir
     "${CMake_BINARY_DIR}/Tests/MissingInstall/InstallDirectory")
   add_test(MissingInstall ${CMAKE_CTEST_COMMAND}
@@ -1821,7 +1794,6 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
   set_tests_properties ( testdriver2 PROPERTIES DEPENDS testdriver1)
   set_tests_properties ( testdriver3 PROPERTIES DEPENDS testdriver2)
   set_tests_properties ( linkorder2 PROPERTIES DEPENDS linkorder1)
-  set_tests_properties ( SimpleInstall-Stage2 PROPERTIES DEPENDS SimpleInstall)
 
   # Test static linking on toolchains known to support it.
   if(CMAKE_C_COMPILER_ID STREQUAL "GNU"

+ 3 - 3
Tests/ExportImport/Export/CMakeLists.txt

@@ -510,9 +510,9 @@ install(
   cmp0022NEW cmp0022OLD
   systemlib
   EXPORT exp
-  RUNTIME DESTINATION $<1:bin>
-  LIBRARY DESTINATION $<1:lib> NAMELINK_SKIP
-  ARCHIVE DESTINATION $<1:lib>
+  RUNTIME DESTINATION $<1:bin>$<0:/wrong>
+  LIBRARY DESTINATION $<1:lib>$<0:/wrong> NAMELINK_SKIP
+  ARCHIVE DESTINATION $<1:lib>$<0:/wrong>
   ${maybe_OBJECTS_DESTINATION}
   FRAMEWORK DESTINATION Frameworks
   BUNDLE DESTINATION Applications

+ 23 - 7
Tests/RunCMake/CPack/CPackTestHelpers.cmake

@@ -1,10 +1,14 @@
 cmake_policy(SET CMP0057 NEW)
 
-function(run_cpack_test_common_ TEST_NAME types build SUBTEST_SUFFIX source PACKAGING_TYPE)
+function(run_cpack_test_common_ TEST_NAME types build SUBTEST_SUFFIX source PACKAGING_TYPE package_target)
   if(TEST_TYPE IN_LIST types)
     set(RunCMake_TEST_NO_CLEAN TRUE)
-    set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${TEST_NAME}-build")
-    set(full_test_name_ "${TEST_NAME}")
+    if(package_target)
+      set(full_test_name_ "${TEST_NAME}-package-target")
+    else()
+      set(full_test_name_ "${TEST_NAME}")
+    endif()
+    set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${full_test_name_}-build")
 
     if(SUBTEST_SUFFIX)
       set(RunCMake_TEST_BINARY_DIR "${RunCMake_TEST_BINARY_DIR}-${SUBTEST_SUFFIX}-subtest")
@@ -67,9 +71,15 @@ function(run_cpack_test_common_ TEST_NAME types build SUBTEST_SUFFIX source PACK
       unset(pack_params_)
     endif()
 
+    if(package_target)
+      set(cpack_command_ ${CMAKE_COMMAND} --build "${RunCMake_TEST_BINARY_DIR}" --target package)
+    else()
+      set(cpack_command_ ${CMAKE_CPACK_COMMAND} ${pack_params_})
+    endif()
+
     # execute cpack
     execute_process(
-      COMMAND ${CMAKE_CPACK_COMMAND} ${pack_params_}
+      COMMAND ${cpack_command_}
       WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}"
       RESULT_VARIABLE "result_"
       OUTPUT_FILE "${RunCMake_TEST_BINARY_DIR}/test_output.txt"
@@ -113,18 +123,24 @@ endfunction()
 
 function(run_cpack_test TEST_NAME types build PACKAGING_TYPES)
   foreach(packaging_type_ IN LISTS PACKAGING_TYPES)
-    run_cpack_test_common_("${TEST_NAME}" "${types}" "${build}" "" false "${packaging_type_}")
+    run_cpack_test_common_("${TEST_NAME}" "${types}" "${build}" "" false "${packaging_type_}" false)
+  endforeach()
+endfunction()
+
+function(run_cpack_test_package_target TEST_NAME types build PACKAGING_TYPES)
+  foreach(packaging_type_ IN LISTS PACKAGING_TYPES)
+    run_cpack_test_common_("${TEST_NAME}" "${types}" "${build}" "" false "${packaging_type_}" true)
   endforeach()
 endfunction()
 
 function(run_cpack_test_subtests TEST_NAME SUBTEST_SUFFIXES types build PACKAGING_TYPES)
   foreach(suffix_ IN LISTS SUBTEST_SUFFIXES)
     foreach(packaging_type_ IN LISTS PACKAGING_TYPES)
-      run_cpack_test_common_("${TEST_NAME}" "${types}" "${build}" "${suffix_}" false "${packaging_type_}")
+      run_cpack_test_common_("${TEST_NAME}" "${types}" "${build}" "${suffix_}" false "${packaging_type_}" false)
     endforeach()
   endforeach()
 endfunction()
 
 function(run_cpack_source_test TEST_NAME types)
-  run_cpack_test_common_("${TEST_NAME}" "${types}" false "" true "")
+  run_cpack_test_common_("${TEST_NAME}" "${types}" false "" true "" false)
 endfunction()

+ 1 - 1
Tests/RunCMake/CPack/RPM/default_expected_stderr.txt

@@ -1 +1 @@
-^(CPackRPM: Will use GENERATED spec file: (/[^/]*)*/Tests/RunCMake/RPM/CPack/[^-]*-build((-[^-]*-subtest/)|/)_CPack_Packages/.*/RPM/SPECS/[^\.]*\.spec(\n|$))*$
+^(CPackRPM: Will use GENERATED spec file: (/[^/]*)*/Tests/RunCMake/RPM/CPack/[^-]*(-package-target)?-build((-[^-]*-subtest/)|/)_CPack_Packages/.*/RPM/SPECS/[^\.]*\.spec(\n|$))*$

+ 1 - 0
Tests/RunCMake/CPack/RunCMakeTest.cmake

@@ -19,6 +19,7 @@ run_cpack_test(INSTALL_SCRIPTS "RPM" false "COMPONENT")
 run_cpack_test(LONG_FILENAMES "DEB" false "MONOLITHIC")
 run_cpack_test_subtests(MAIN_COMPONENT "invalid;found" "RPM" false "COMPONENT")
 run_cpack_test(MINIMAL "RPM;DEB;7Z;TBZ2;TGZ;TXZ;TZ;ZIP;STGZ;Ext" false "MONOLITHIC;COMPONENT")
+run_cpack_test_package_target(MINIMAL "RPM;DEB;7Z;TBZ2;TGZ;TXZ;TZ;ZIP;STGZ;Ext" false "MONOLITHIC;COMPONENT")
 run_cpack_test_subtests(PACKAGE_CHECKSUM "invalid;MD5;SHA1;SHA224;SHA256;SHA384;SHA512" "TGZ" false "MONOLITHIC")
 run_cpack_test(PARTIALLY_RELOCATABLE_WARNING "RPM" false "COMPONENT")
 run_cpack_test(PER_COMPONENT_FIELDS "RPM;DEB" false "COMPONENT")

+ 1 - 0
Tests/RunCMake/install/DIRECTORY-OPTIONAL-all-check.cmake

@@ -0,0 +1 @@
+check_installed([[^dir;dir/empty.txt$]])

+ 1 - 0
Tests/RunCMake/install/DIRECTORY-OPTIONAL.cmake

@@ -0,0 +1 @@
+install(DIRECTORY dir/ noexist/ DESTINATION dir OPTIONAL)

+ 1 - 0
Tests/RunCMake/install/DIRECTORY-PATTERN-all-check.cmake

@@ -0,0 +1 @@
+check_installed([[^dir1;dir1/empty\.c;dir1/empty\.h;dir2;dir2/pattern;dir2/pattern/empty\.txt;dir3;dir3/empty\.c;dir3/empty\.h;dir3/empty\.txt;dir4;dir4/empty\.c;dir4/empty\.h;dir4/empty\.txt;empty$]])

+ 36 - 0
Tests/RunCMake/install/DIRECTORY-PATTERN.cmake

@@ -0,0 +1,36 @@
+install(
+  DIRECTORY pattern/
+  DESTINATION dir1
+  FILES_MATCHING
+  PATTERN "*.h"
+  REGEX "\\.c$"
+  )
+
+# FIXME: If/when CMake gains a good way to read file permissions, we should
+# check that these permissions were set correctly.
+install(
+  DIRECTORY pattern
+  DESTINATION dir2
+  FILE_PERMISSIONS OWNER_READ OWNER_WRITE
+  DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
+  PATTERN "*.h" EXCLUDE
+  REGEX "\\.c$" EXCLUDE
+  )
+
+install(
+  DIRECTORY pattern/
+  DESTINATION dir3
+  PATTERN "*.h"
+  PERMISSIONS OWNER_READ OWNER_WRITE
+  )
+
+install(
+  DIRECTORY pattern/
+  DESTINATION dir4
+  USE_SOURCE_PERMISSIONS
+  )
+
+install(
+  DIRECTORY
+  DESTINATION empty
+  )

+ 1 - 0
Tests/RunCMake/install/Deprecated-all-check.cmake

@@ -0,0 +1 @@
+check_installed([[^bin;bin/myexe(\.exe)?;scripts1;scripts1/script;scripts1/script\.bat;scripts2;scripts2/script;scripts2/script\.bat;scripts3;scripts3/script;scripts3/script\.bat;src;src/empty\.c;src/obj1\.c;src/obj\2.c$]])

+ 13 - 0
Tests/RunCMake/install/Deprecated.cmake

@@ -0,0 +1,13 @@
+enable_language(C)
+
+add_executable(myexe main.c)
+
+install_files(/src FILES empty.c)
+install_files(/src .c obj1)
+install_files(/src "^obj2.c$")
+
+install_targets(/bin myexe)
+
+install_programs(/scripts1 FILES script script.bat)
+install_programs(/scripts2 script script.bat)
+install_programs(/scripts3 "^script(\.bat)?$")

+ 1 - 0
Tests/RunCMake/install/FILES-OPTIONAL-all-check.cmake

@@ -0,0 +1 @@
+check_installed([[^src;src/main.c$]])

+ 1 - 0
Tests/RunCMake/install/FILES-OPTIONAL.cmake

@@ -0,0 +1 @@
+install(FILES main.c noexist.c DESTINATION src OPTIONAL)

+ 1 - 0
Tests/RunCMake/install/FILES-PERMISSIONS-all-check.cmake

@@ -0,0 +1 @@
+check_installed([[^src;src/empty.c]])

+ 5 - 0
Tests/RunCMake/install/FILES-PERMISSIONS.cmake

@@ -0,0 +1,5 @@
+install(
+  FILES empty.c
+  DESTINATION src
+  PERMISSIONS OWNER_READ OWNER_WRITE
+  )

+ 1 - 0
Tests/RunCMake/install/InstallRequiredSystemLibraries-stderr.txt

@@ -0,0 +1 @@
+.*

+ 10 - 0
Tests/RunCMake/install/InstallRequiredSystemLibraries.cmake

@@ -0,0 +1,10 @@
+enable_language(C)
+set(CMAKE_INSTALL_MFC_LIBRARIES 1)
+set(CMAKE_INSTALL_DEBUG_LIBRARIES 1)
+set(CMAKE_INSTALL_UCRT_LIBRARIES 1)
+set(CMAKE_INSTALL_OPENMP_LIBRARIES 1)
+include(InstallRequiredSystemLibraries)
+
+# FIXME: This test emits warnings because InstallRequiredSystemLibraries
+# doesn't currently work properly. The warnings have been suppressed in
+# InstallRequiredSystemLibraries-stderr.txt. This needs to be fixed.

+ 1 - 0
Tests/RunCMake/install/PRE_POST_INSTALL_SCRIPT-all-check.cmake

@@ -0,0 +1 @@
+check_installed([[^bin;bin/myexe(\.exe)?;postinstall;preinstall]])

+ 7 - 0
Tests/RunCMake/install/PRE_POST_INSTALL_SCRIPT.cmake

@@ -0,0 +1,7 @@
+enable_language(C)
+
+add_executable(myexe main.c)
+set_property(TARGET myexe PROPERTY PRE_INSTALL_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/preinstall.cmake")
+set_property(TARGET myexe PROPERTY POST_INSTALL_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/postinstall.cmake")
+
+install(TARGETS myexe DESTINATION bin)

+ 18 - 0
Tests/RunCMake/install/RunCMakeTest.cmake

@@ -73,8 +73,26 @@ if(NOT RunCMake_GENERATOR STREQUAL "Xcode" OR NOT "$ENV{CMAKE_OSX_ARCHITECTURES}
 endif()
 
 run_install_test(TARGETS-InstallFromSubDir)
+run_install_test(TARGETS-OPTIONAL)
+run_install_test(FILES-OPTIONAL)
+run_install_test(DIRECTORY-OPTIONAL)
+
+set(RunCMake_TEST_OPTIONS "-DCMAKE_BUILD_TYPE:STRING=Debug")
+run_install_test(TARGETS-OUTPUT_NAME)
+unset(RunCMake_TEST_OPTIONS)
+
+run_install_test(Deprecated)
+run_install_test(PRE_POST_INSTALL_SCRIPT)
+run_install_test(SCRIPT)
+run_install_test(TARGETS-CONFIGURATIONS)
+run_install_test(DIRECTORY-PATTERN)
+run_install_test(TARGETS-Parts)
+run_install_test(FILES-PERMISSIONS)
+run_install_test(TARGETS-RPATH)
+run_install_test(InstallRequiredSystemLibraries)
 
 set(run_install_test_components 1)
 run_install_test(FILES-EXCLUDE_FROM_ALL)
 run_install_test(TARGETS-EXCLUDE_FROM_ALL)
 run_install_test(TARGETS-NAMELINK_COMPONENT)
+run_install_test(SCRIPT-COMPONENT)

+ 1 - 0
Tests/RunCMake/install/SCRIPT-COMPONENT-all-check.cmake

@@ -0,0 +1 @@
+check_installed([[^empty1.txt;empty2.txt$]])

+ 1 - 0
Tests/RunCMake/install/SCRIPT-COMPONENT-dev-check.cmake

@@ -0,0 +1 @@
+check_installed([[^empty1.txt;empty2.txt$]])

+ 1 - 0
Tests/RunCMake/install/SCRIPT-COMPONENT-uns-check.cmake

@@ -0,0 +1 @@
+check_installed([[^$]])

+ 5 - 0
Tests/RunCMake/install/SCRIPT-COMPONENT.cmake

@@ -0,0 +1,5 @@
+install(
+  SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/install_script.cmake"
+  CODE "write_empty_file(empty2.txt)"
+  COMPONENT dev
+  )

+ 1 - 0
Tests/RunCMake/install/SCRIPT-all-check.cmake

@@ -0,0 +1 @@
+check_installed([[^empty1.txt;empty2.txt$]])

+ 4 - 0
Tests/RunCMake/install/SCRIPT.cmake

@@ -0,0 +1,4 @@
+install(
+  SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/install_script.cmake"
+  CODE "write_empty_file(empty2.txt)"
+  )

+ 1 - 0
Tests/RunCMake/install/TARGETS-CONFIGURATIONS-all-check.cmake

@@ -0,0 +1 @@
+check_installed([[^src;src/main-d.c$]])

+ 2 - 0
Tests/RunCMake/install/TARGETS-CONFIGURATIONS.cmake

@@ -0,0 +1,2 @@
+install(FILES main.c DESTINATION src CONFIGURATIONS Debug RENAME main-d.c)
+install(FILES main.c DESTINATION src CONFIGURATIONS Release RENAME main-r.c)

+ 1 - 0
Tests/RunCMake/install/TARGETS-OPTIONAL-all-check.cmake

@@ -0,0 +1 @@
+check_installed([[^bin;bin/myexe(\.exe)?$]])

+ 1 - 0
Tests/RunCMake/install/TARGETS-OPTIONAL-stderr.txt

@@ -0,0 +1 @@
+^WARNING: Target "notall" has EXCLUDE_FROM_ALL set and will not be built by default but an install rule has been provided for it\.  CMake does not define behavior for this case\.$

+ 4 - 0
Tests/RunCMake/install/TARGETS-OPTIONAL.cmake

@@ -0,0 +1,4 @@
+enable_language(C)
+add_executable(myexe main.c)
+add_executable(notall EXCLUDE_FROM_ALL main.c)
+install(TARGETS myexe notall DESTINATION bin OPTIONAL)

+ 13 - 0
Tests/RunCMake/install/TARGETS-OUTPUT_NAME-all-check.cmake

@@ -0,0 +1,13 @@
+if(WIN32)
+  set(test123 [[bin/test1out\.exe;bin/test2deb\.exe;bin/test3exc\.exe]])
+  set(libtest45 [[bin/libtest4\.dll;bin/libtest4\.dll\.a;bin/libtest5ar\.a]])
+  set(test45 [[bin/test4\.dll;bin/test4\.lib;bin/test5ar\.lib]])
+
+  check_installed("^bin;(${libtest45};${test123})|(${test123};${test45})\$")
+elseif(CYGWIN)
+  check_installed([[^bin;bin/cygtest4\.dll;bin/libtest4\.dll\.a;bin/libtest5ar\.a;bin/test1out\.exe;bin/test2deb\.exe;bin/test3exc\.exe$]])
+elseif(APPLE)
+  check_installed([[^bin;bin/libtest4lib\.dylib;bin/libtest5ar\.a;bin/test1out;bin/test2deb;bin/test3exc$]])
+else()
+  check_installed([[^bin;bin/libtest4lib\.so;bin/libtest5ar\.a;bin/test1out;bin/test2deb;bin/test3exc$]])
+endif()

+ 27 - 0
Tests/RunCMake/install/TARGETS-OUTPUT_NAME.cmake

@@ -0,0 +1,27 @@
+enable_language(C)
+
+add_executable(test1 main.c)
+set_property(TARGET test1 PROPERTY OUTPUT_NAME test1out)
+set_property(TARGET test1 PROPERTY RELEASE_OUTPUT_NAME test1rel)
+
+add_executable(test2 main.c)
+set_property(TARGET test2 PROPERTY OUTPUT_NAME test2out)
+set_property(TARGET test2 PROPERTY DEBUG_OUTPUT_NAME test2deb)
+
+add_executable(test3 main.c)
+set_property(TARGET test3 PROPERTY RUNTIME_OUTPUT_NAME test3exc)
+
+add_library(test4 SHARED obj1.c)
+set_property(TARGET test4 PROPERTY LIBRARY_OUTPUT_NAME test4lib)
+
+add_library(test5 STATIC obj1.c)
+set_property(TARGET test5 PROPERTY ARCHIVE_OUTPUT_NAME test5ar)
+
+install(TARGETS
+  test1
+  test2
+  test3
+  test4
+  test5
+  DESTINATION bin
+  )

+ 1 - 0
Tests/RunCMake/install/TARGETS-Parts-all-check.cmake

@@ -0,0 +1 @@
+check_installed([[^include;include/obj1\.h;lib;lib/(mylib\.lib|(lib|cyg)mylib\.a)$]])

+ 7 - 0
Tests/RunCMake/install/TARGETS-Parts.cmake

@@ -0,0 +1,7 @@
+enable_language(C)
+add_library(mylib STATIC obj1.c)
+set_property(TARGET mylib PROPERTY PUBLIC_HEADER obj1.h)
+install(TARGETS mylib
+  ARCHIVE DESTINATION lib
+  PUBLIC_HEADER DESTINATION include
+  )

+ 14 - 0
Tests/RunCMake/install/TARGETS-RPATH-all-check.cmake

@@ -0,0 +1,14 @@
+execute_process(
+  COMMAND "${CMAKE_INSTALL_PREFIX}/bin/myexe"
+  RESULT_VARIABLE MYEXE_RESULT
+  OUTPUT_VARIABLE MYEXE_OUTPUT
+  ERROR_VARIABLE MYEXE_ERROR
+  )
+
+if(NOT MYEXE_RESULT EQUAL "0")
+  set(RunCMake_TEST_FAILED "myexe returned [${MYEXE_RESULT}], was expecting [0]")
+elseif(NOT MYEXE_OUTPUT STREQUAL "")
+  set(RunCMake_TEST_FAILED "myexe printed nonempty output:\n${MYEXE_OUTPUT}")
+elseif(NOT MYEXE_ERROR STREQUAL "")
+  set(RunCMake_TEST_FAILED "myexe printed nonempty error:\n${MYEXE_ERROR}")
+endif()

+ 14 - 0
Tests/RunCMake/install/TARGETS-RPATH.cmake

@@ -0,0 +1,14 @@
+cmake_minimum_required(VERSION 3.9)
+
+enable_language(C)
+
+set(CMAKE_BUILD_WITH_INSTALL_RPATH 1)
+add_library(mylib SHARED obj1.c)
+add_executable(myexe testobj1.c)
+target_link_libraries(myexe mylib)
+set_property(TARGET myexe PROPERTY INSTALL_RPATH "${CMAKE_CURRENT_BINARY_DIR}/root-all/bin")
+set_target_properties(mylib PROPERTIES VERSION 1.0 SOVERSION 1)
+
+install(TARGETS mylib myexe
+  DESTINATION bin
+  )

+ 5 - 0
Tests/RunCMake/install/install_script.cmake

@@ -0,0 +1,5 @@
+function(write_empty_file FILENAME)
+  file(WRITE "${CMAKE_INSTALL_PREFIX}/${FILENAME}" "")
+endfunction()
+
+write_empty_file(empty1.txt)

+ 4 - 1
Tests/RunCMake/install/obj1.c

@@ -1,4 +1,7 @@
-int obj1(void)
+#ifdef _WIN32
+__declspec(dllexport)
+#endif
+  int obj1(void)
 {
   return 0;
 }

+ 6 - 0
Tests/RunCMake/install/obj1.h

@@ -0,0 +1,6 @@
+#ifndef OBJ1_H
+#define OBJ1_H
+
+int obj1(void);
+
+#endif /* OBJ1_H */

+ 0 - 0
Tests/RunCMake/install/pattern/empty.c


+ 0 - 0
Tests/RunCMake/install/pattern/empty.h


+ 0 - 0
Tests/RunCMake/install/pattern/empty.txt


+ 1 - 0
Tests/RunCMake/install/postinstall.cmake

@@ -0,0 +1 @@
+file(WRITE "${CMAKE_INSTALL_PREFIX}/postinstall" "postinstall")

+ 1 - 0
Tests/RunCMake/install/preinstall.cmake

@@ -0,0 +1 @@
+file(WRITE "${CMAKE_INSTALL_PREFIX}/preinstall" "preinstall")

+ 0 - 0
Tests/SimpleInstall/scripts/sample_script → Tests/RunCMake/install/script


+ 0 - 0
Tests/SimpleInstall/scripts/sample_script.bat → Tests/RunCMake/install/script.bat


+ 9 - 0
Tests/RunCMake/install/testobj1.c

@@ -0,0 +1,9 @@
+#ifdef _WIN32
+__declspec(dllimport)
+#endif
+  int obj1(void);
+
+int main(void)
+{
+  return obj1();
+}

+ 0 - 398
Tests/SimpleInstall/CMakeLists.txt

@@ -1,398 +0,0 @@
-cmake_minimum_required (VERSION 3.9)
-project (TestSimpleInstall)
-set(CMAKE_VERBOSE_MAKEFILE 1)
-set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
-  "${TestSimpleInstall_BINARY_DIR}/bin")
-set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY
-  "${TestSimpleInstall_BINARY_DIR}/lib/static")
-set(CMAKE_LIBRARY_OUTPUT_DIRECTORY
-  "${TestSimpleInstall_BINARY_DIR}/lib")
-
-# Skip generating the rpath pointing at the build tree to make sure
-# the executable is installed with the proper rpath in the install
-# tree.
-set(CMAKE_SKIP_BUILD_RPATH 1)
-
-# Make sure the executable can run from the install tree.
-set(CMAKE_INSTALL_NAME_DIR ${CMAKE_INSTALL_PREFIX}/MyTest/lib)
-
-# Skip the dependency that causes a build when installing.  This
-# avoids infinite loops when the post-build rule below installs.
-set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY 1)
-set(CMAKE_SKIP_PACKAGE_ALL_DEPENDENCY 1)
-
-set(CMAKE_DEBUG_POSTFIX "_test_debug_postfix")
-
-set(EXTRA_INSTALL_FLAGS)
-message("Extra install: ${EXTRA_INSTALL_FLAGS}")
-
-if(STAGE2)
-  set(LIBPATHS
-    ${CMAKE_INSTALL_PREFIX}/MyTest/lib/static
-    ${CMAKE_INSTALL_PREFIX}/MyTest/lib
-    )
-  set(t1NAMES test1 test1${CMAKE_DEBUG_POSTFIX} test1rel)
-  set(t2NAMES test2 test2${CMAKE_DEBUG_POSTFIX})
-  set(t4NAMES test4out test4out${CMAKE_DEBUG_POSTFIX})
-
-  # Make sure the install script ran.
-  set(CMAKE_INSTALL_SCRIPT_DID_RUN 0)
-  include(${CMAKE_INSTALL_PREFIX}/MyTest/InstallScriptOut.cmake OPTIONAL)
-  if(CMAKE_INSTALL_SCRIPT_DID_RUN)
-    message(STATUS "Stage 1 did run install script 2.")
-  else()
-    message(SEND_ERROR "Stage 1 did not run install script 2.")
-  endif()
-
-  if(CYGWIN OR MINGW)
-    set(LIBPATHS ${LIBPATHS} "${CMAKE_INSTALL_PREFIX}/MyTest/bin")
-  endif()
-  message("Search for library in: ${LIBPATHS}")
-
-  set(TEST1_LIBRARY "TEST1_LIBRARY-NOTFOUND" CACHE FILEPATH "Force find." FORCE)
-  set(TEST2_LIBRARY "TEST2_LIBRARY-NOTFOUND" CACHE FILEPATH "Force find." FORCE)
-  set(TEST4_LIBRARY "TEST4_LIBRARY-NOTFOUND" CACHE FILEPATH "Force find." FORCE)
-
-  find_library(TEST1_LIBRARY
-    NAMES ${t1NAMES}
-    PATHS ${LIBPATHS}
-    DOC "First library")
-  find_library(TEST2_LIBRARY
-    NAMES ${t2NAMES}
-    PATHS ${LIBPATHS}
-    DOC "Second library")
-  find_library(TEST4_LIBRARY
-    NAMES ${t4NAMES}
-    PATHS ${LIBPATHS}
-    DOC "Fourth library")
-
-  # Test importing a library found on disk.
-  add_library(lib_test4 UNKNOWN IMPORTED)
-  set_property(TARGET lib_test4 PROPERTY IMPORTED_LOCATION ${TEST4_LIBRARY})
-
-  include_directories(${CMAKE_INSTALL_PREFIX}/MyTest/include)
-  add_executable (SimpleInstExeS2 inst2.cxx foo.c foo.h)
-  target_link_libraries(SimpleInstExeS2 ${TEST1_LIBRARY} ${TEST2_LIBRARY} lib_test4)
-  set(install_target SimpleInstExeS2)
-
-  if("${TEST1_LIBRARY}" MATCHES "static")
-    message(STATUS "test1 correctly found in lib/static")
-  else()
-    message(SEND_ERROR "test1 not found in lib/static!")
-  endif()
-
-  # Check for failure of configuration-specific installation.
-  if(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/include/Release/lib1debug.h")
-    message(FATAL_ERROR "Debug-configuration file installed for Release!")
-  endif()
-  if(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/include/Debug/lib1release.h")
-    message(FATAL_ERROR "Release-configuration file installed for Debug!")
-  endif()
-
-  # Check for failure of directory installation.
-  if(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/TestSubDir/TSD.h")
-    message(FATAL_ERROR "Directory installation did not install TSD.h")
-  endif()
-  if(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/TestSubDir/CVS")
-    message(FATAL_ERROR "Directory installation installed CVS directory.")
-  endif()
-  if(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/CVS")
-    message(FATAL_ERROR "Directory installation installed CVS directory.")
-  endif()
-  if(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/CMakeLists.txt")
-    message(FATAL_ERROR "Directory installation installed CMakeLists.txt.")
-  endif()
-  if(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/alt/TestSubDir/TSD.h")
-    message(FATAL_ERROR "Directory installation did not install alternate TSD.h")
-  endif()
-  if(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/alt/TestSubDir/TSD.cxx")
-    message(FATAL_ERROR "Directory installation installed alternate TSD.cxx")
-  endif()
-
-  # Check that scripts properly installed.
-  if(WIN32 AND NOT CYGWIN)
-    set(BAT .bat)
-  else()
-    set(BAT)
-  endif()
-  foreach(loc share share/old1 share/old2 share/old3 share/alt)
-    set(CUR_SCRIPT "${CMAKE_INSTALL_PREFIX}/MyTest/${loc}/sample_script${BAT}")
-    execute_process(
-      COMMAND ${CUR_SCRIPT}
-      RESULT_VARIABLE SAMPLE_SCRIPT_RESULT
-      OUTPUT_VARIABLE SAMPLE_SCRIPT_OUTPUT
-      )
-    if(NOT "${SAMPLE_SCRIPT_RESULT}" STREQUAL "0")
-      message(FATAL_ERROR
-        "Sample script [${CUR_SCRIPT}] failed: [${SAMPLE_SCRIPT_RESULT}]")
-    endif()
-    if(NOT "${SAMPLE_SCRIPT_OUTPUT}" MATCHES "Sample Script Output")
-      message(FATAL_ERROR
-        "Bad sample script [${CUR_SCRIPT}] output: [${SAMPLE_SCRIPT_OUTPUT}]")
-    endif()
-  endforeach()
-
-  # Check for failure of empty directory installation.
-  if(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/empty")
-    message(FATAL_ERROR "Empty directory installation did not install.")
-  endif()
-  file(GLOB EMPTY_FILES "${CMAKE_INSTALL_PREFIX}/MyTest/share/empty/*")
-  if(EMPTY_FILES)
-    message(FATAL_ERROR "Empty directory installed [${EMPTY_FILES}].")
-  endif()
-
-  # Make sure the test executable can run from the install tree.
-  set_target_properties(SimpleInstExeS2 PROPERTIES
-    INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/MyTest/lib)
-
-  install_targets(/MyTest/bin SimpleInstExeS2)
-
-# try to import the exported targets again
-  set(SimpleInstallS1_DIR ${CMAKE_INSTALL_PREFIX}/MyTest/lib)
-  find_package(SimpleInstallS1 REQUIRED)
-  get_target_property(simpleInstallImported S1_SimpleInstall IMPORTED)
-  if(NOT simpleInstallImported)
-    message(FATAL_ERROR "Target S1_SimpleInstall could not be imported")
-  endif()
-
-else()
-  # Wipe out the install directory to do a fresh test.
-  file(REMOVE_RECURSE ${CMAKE_INSTALL_PREFIX}/MyTest)
-
-  # this is stage 1, so create libraries and modules and install everything
-  add_library(test1 STATIC lib1.cxx)
-  add_library(test2 SHARED lib2.cxx)
-  add_library(test3 MODULE lib3.cxx)
-  add_library(test4 SHARED lib4.cxx)
-
-  # Test <ARCHIVE|LIBRARY|RUNTIME>_OUTPUT_NAME properties.
-  set_property(TARGET test4 PROPERTY ARCHIVE_OUTPUT_NAME test4out)
-  set_property(TARGET test4 PROPERTY LIBRARY_OUTPUT_NAME test4out)
-
-  add_executable (SimpleInstall inst.cxx foo.c foo.h)
-  target_link_libraries(SimpleInstall test1 test2 test4)
-  set(install_target SimpleInstall)
-
-  set_target_properties(SimpleInstall PROPERTIES OUTPUT_NAME SimpleInstExe)
-  # Disable VERSION test until it is implemented in the Xcode generator.
-  if(NOT XCODE)
-    set_target_properties(SimpleInstall PROPERTIES VERSION 1.2)
-  endif()
-
-  # Make sure the test executable can run from the install tree.
-  set_target_properties(SimpleInstall PROPERTIES
-    INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/MyTest/lib)
-
-  # Test per-configuration output name.
-  set_target_properties(test1 PROPERTIES RELEASE_OUTPUT_NAME test1rel)
-  set_target_properties(test2 PROPERTIES PUBLIC_HEADER foo.h)
-
-  if(CMAKE_GENERATOR MATCHES "Makefiles")
-    add_subdirectory(TestSubDir)
-    add_dependencies(SimpleInstall TSD)
-  endif()
-
-  add_dependencies(SimpleInstall test3)
-  add_dependencies(test2 test3)
-  add_dependencies(test4 test2)
-
-  install(TARGETS SimpleInstall test1 test2 test3 EXPORT SimpleInstallS1
-    RUNTIME DESTINATION MyTest/bin        COMPONENT Runtime     # .exe, .dll
-    LIBRARY DESTINATION MyTest/lib        COMPONENT Runtime     # .so, mod.dll
-    ARCHIVE DESTINATION MyTest/lib/static COMPONENT Development # .a, .lib
-    PUBLIC_HEADER DESTINATION MyTest/include COMPONENT Development
-    )
-
-  install(TARGETS test4 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
-    RUNTIME DESTINATION MyTest/bin
-    LIBRARY DESTINATION MyTest/lib
-    ARCHIVE DESTINATION MyTest/lib/static
-    OPTIONAL # for coverage...target should always exist
-    )
-  install(FILES lib1.h DESTINATION MyTest/include/$<1:foo>$<0:/wrong>)
-  install(FILES lib2.h
-    DESTINATION $<1:MyTest/include/foo>$<0:/wrong>
-    COMPONENT Development
-    PERMISSIONS OWNER_READ OWNER_WRITE
-    RENAME lib2renamed.h
-    )
-
-  # Test old-style install commands.
-  install_files(/MyTest/include FILES lib3.h)
-  install_files(/MyTest/include/old .h lib3)
-  install_files(/MyTest/include/old "^lib2.h$")
-  install_programs(/MyTest/share/old1 FILES
-    scripts/sample_script scripts/sample_script.bat)
-  install_programs(/MyTest/share/old2
-    scripts/sample_script scripts/sample_script.bat)
-
-# "export" the targets collected in "SimpleInstallS1"
-  install(EXPORT SimpleInstallS1 FILE SimpleInstallS1Config.cmake
-                                 DESTINATION MyTest/lib
-                                 NAMESPACE S1_ )
-
-  export(TARGETS SimpleInstall test1 test2 test3
-         FILE "${CMAKE_CURRENT_BINARY_DIR}/SimpleInstallS1Config.cmake"
-         NAMESPACE S2_ )
-
-  add_subdirectory(scripts)
-
-  # Test optional installation.
-  install(FILES does_not_exist.h DESTINATION MyTest/include/foo OPTIONAL)
-
-  # Test configuration-specific installation.
-  install(FILES lib1.h RENAME lib1release.h CONFIGURATIONS Release
-    DESTINATION MyTest/include/Release
-    )
-  install(FILES lib1.h RENAME lib1debug.h CONFIGURATIONS Debug
-    DESTINATION MyTest/include/Debug
-    )
-
-  # Test directory installation.
-  file(REMOVE_RECURSE "${CMAKE_INSTALL_PREFIX}/MyTest/share/CVS")
-  file(REMOVE_RECURSE "${CMAKE_INSTALL_PREFIX}/MyTest/share/TestSubDir/CVS")
-  install(
-    DIRECTORY TestSubDir $<1:scripts/>$<0:/wrong> DESTINATION $<1:MyTest/share>$<0:/wrong>
-    FILE_PERMISSIONS OWNER_READ OWNER_WRITE
-    DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
-                          GROUP_READ GROUP_EXECUTE
-    PATTERN "CVS" EXCLUDE
-    REGEX "\\.txt$" EXCLUDE
-    PATTERN "scripts/*" PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
-    )
-
-  # Alternate directory installation for coverage.
-  install(
-    DIRECTORY $<1:scripts/>$<0:/wrong> DESTINATION $<1:MyTest/share/alt>$<0:/wrong>
-    COMPONENT Development
-    USE_SOURCE_PERMISSIONS
-    PATTERN "CVS" EXCLUDE
-    REGEX "\\.txt$" EXCLUDE
-    )
-  install(
-    DIRECTORY TestSubDir DESTINATION $<1:MyTest/share/alt>$<0:/wrong>
-    FILE_PERMISSIONS OWNER_READ OWNER_WRITE
-    DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
-                          GROUP_READ GROUP_EXECUTE
-    FILES_MATCHING PATTERN "*.h"
-    )
-
-  # Test empty directory installation.
-  install(DIRECTORY DESTINATION MyTest/share/empty)
-
-  # Test optional directory installation.
-  install(DIRECTORY does-not-exist DESTINATION MyTest/share OPTIONAL)
-
-  # Test user-specified install scripts, with and without COMPONENT.
-  install(
-    SCRIPT InstallScript1.cmake
-    CODE "set(INSTALL_CODE_DID_RUN 1)"
-    SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/InstallScript2.cmake
-    )
-  install(
-    SCRIPT InstallScript3.cmake
-    CODE "set(INSTALL_CODE_WITH_COMPONENT_DID_RUN 1)"
-    SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/InstallScript4.cmake
-    COMPONENT Development
-    )
-  set_directory_properties(PROPERTIES
-    ADDITIONAL_MAKE_CLEAN_FILES
-    "${CMAKE_INSTALL_PREFIX}/InstallScriptOut.cmake;${CMAKE_INSTALL_PREFIX}/InstallScript4Out.cmake")
-
-  set_target_properties(SimpleInstall PROPERTIES PRE_INSTALL_SCRIPT
-    ${CMAKE_CURRENT_SOURCE_DIR}/PreInstall.cmake)
-  set_target_properties(SimpleInstall PROPERTIES POST_INSTALL_SCRIPT
-    ${CMAKE_CURRENT_SOURCE_DIR}/PostInstall.cmake)
-  set_target_properties(test4 PROPERTIES VERSION 1.2 SOVERSION 3
-        INSTALL_NAME_DIR @executable_path/../lib)
-endif()
-
-get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
-if(_isMultiConfig)
-  set(SI_CONFIG --config $<CONFIGURATION>)
-else()
-  set(SI_CONFIG)
-endif()
-
-# Dummy test of CPack
-set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Test of packaging with cpack")
-set(CPACK_PACKAGE_VENDOR "Kitware")
-set(CPACK_INSTALL_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/PackageScript.cmake")
-
-if(WIN32 AND NOT UNIX)
-  find_program(NSIS_MAKENSIS NAMES makensis
-    PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS]
-    DOC "Where is makensis.exe located"
-    )
-  if(NOT NSIS_MAKENSIS)
-    set(CPACK_GENERATOR TGZ)
-  endif()
-endif()
-if(UNIX AND NOT APPLE)
-  set(CPACK_GENERATOR "TGZ;STGZ;TZ")
-  #  find_program(found_compress
-  #    NAMES compress)
-  #  if(found_compress)
-  #    find_program(file_command NAMES file)
-  #    if(NOT file_command)
-  #      set(file_command file)
-  #    endif()
-  #    execute_process(COMMAND ${file_command} ${found_compress}
-  #      OUTPUT_VARIABLE output)
-  #    set(SKIP_TZ FALSE)
-  #    if("${output}" MATCHES "script")
-  #      set(SKIP_TZ TRUE)
-  #    endif()
-  #    if("${output}" MATCHES "dummy.sh")
-  #      set(SKIP_TZ TRUE)
-  #    endif()
-  #    if(NOT SKIP_TZ)
-  #      message("compress found and it was not a script")
-  #      message("output from file command: [${output}]")
-  #      list(APPEND CPACK_GENERATOR "TZ")
-  #    else()
-  #      message("compress found, but it was a script so don't use it")
-  #      message("output from file command: [${output}]")
-  #    endif()
-  #  endif()
-  find_program(found_bz2
-    NAMES bzip2)
-  if(found_bz2)
-    list(APPEND CPACK_GENERATOR "TBZ2")
-  endif()
-endif()
-
-set(CPACK_PACKAGE_EXECUTABLES "SimpleInstall" "Simple Install")
-set(CMAKE_INSTALL_MFC_LIBRARIES 1)
-set(CMAKE_INSTALL_DEBUG_LIBRARIES 1)
-set(CMAKE_INSTALL_UCRT_LIBRARIES 1)
-set(CMAKE_INSTALL_OPENMP_LIBRARIES 1)
-include(InstallRequiredSystemLibraries)
-
-if(CTEST_TEST_CPACK)
-  set(package_command COMMAND
-    ${CMAKE_COMMAND} --build . --target package ${SI_CONFIG}
-    )
-
-  # Avoid settings that require the .zip file command line tools...
-  # (just build an NSIS installer without component support)
-  #
-  set(CPACK_BINARY_ZIP OFF)
-  set(CPACK_MONOLITHIC_INSTALL ON)
-else()
-  set(package_command)
-endif()
-
-include(CPack)
-
-set(install_command COMMAND
-  ${CMAKE_COMMAND} --build . --target install ${SI_CONFIG}
-  )
-
-add_custom_command(
-  TARGET ${install_target}
-  POST_BUILD
-  ${install_command}
-  ${package_command}
-  COMMENT "Install Project"
-  )

+ 0 - 5
Tests/SimpleInstall/InstallScript1.cmake

@@ -1,5 +0,0 @@
-message("This is install script 1.")
-set(INSTALL_SCRIPT_1_DID_RUN 1)
-if(INSTALL_CODE_DID_RUN)
-  message(FATAL_ERROR "Install script 1 did not run before install code.")
-endif()

+ 0 - 14
Tests/SimpleInstall/InstallScript2.cmake

@@ -1,14 +0,0 @@
-message("This is install script 2.")
-if(INSTALL_SCRIPT_1_DID_RUN)
-  message("Install script ordering works.")
-else()
-  message(FATAL_ERROR "Install script 1 did not run before install script 2.")
-endif()
-if(INSTALL_CODE_DID_RUN)
-  message("Install code ordering works.")
-else()
-  message(FATAL_ERROR "Install script 2 did not run after install code.")
-endif()
-file(WRITE "${CMAKE_INSTALL_PREFIX}/MyTest/InstallScriptOut.cmake"
-  "set(CMAKE_INSTALL_SCRIPT_DID_RUN 1)\n"
-  )

+ 0 - 12
Tests/SimpleInstall/InstallScript3.cmake

@@ -1,12 +0,0 @@
-message("This is install script 3.")
-set(INSTALL_SCRIPT_3_DID_RUN 1)
-if(INSTALL_CODE_WITH_COMPONENT_DID_RUN)
-  message(FATAL_ERROR "Install script 3 did not run before install code with component.")
-endif()
-
-if(CMAKE_INSTALL_COMPONENT)
-if(NOT "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Development")
-  message("CMAKE_INSTALL_COMPONENT=\"${CMAKE_INSTALL_COMPONENT}\"")
-  message(FATAL_ERROR "Install script 3 should only run for \"Development\" INSTALL COMPONENT.")
-endif()
-endif()

+ 0 - 22
Tests/SimpleInstall/InstallScript4.cmake

@@ -1,22 +0,0 @@
-message("This is install script 4.")
-if(INSTALL_SCRIPT_3_DID_RUN)
-  message("Install script ordering works.")
-else()
-  message(FATAL_ERROR "Install script 3 did not run before install script 4.")
-endif()
-if(INSTALL_CODE_WITH_COMPONENT_DID_RUN)
-  message("Install code ordering works.")
-else()
-  message(FATAL_ERROR "Install script 4 did not run after install with component code.")
-endif()
-
-if(CMAKE_INSTALL_COMPONENT)
-if(NOT "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Development")
-  message("CMAKE_INSTALL_COMPONENT=\"${CMAKE_INSTALL_COMPONENT}\"")
-  message(FATAL_ERROR "Install script 4 should only run for \"Development\" INSTALL COMPONENT.")
-endif()
-endif()
-
-file(WRITE "${CMAKE_INSTALL_PREFIX}/MyTest/InstallScript4Out.cmake"
-  "set(CMAKE_INSTALL_SCRIPT_4_DID_RUN 1)\n"
-  )

+ 0 - 10
Tests/SimpleInstall/PackageScript.cmake

@@ -1,10 +0,0 @@
-message("This is packaging script")
-message("It writes a file with all variables available in ${CMAKE_INSTALL_PREFIX}/AllVariables.txt")
-
-file(WRITE ${CMAKE_INSTALL_PREFIX}/AllVariables.txt "")
-get_cmake_property(res VARIABLES)
-foreach(var ${res})
-  file(APPEND ${CMAKE_INSTALL_PREFIX}/AllVariables.txt
-             "${var} \"${${var}}\"\n")
-endforeach()
-

+ 0 - 6
Tests/SimpleInstall/PostInstall.cmake

@@ -1,6 +0,0 @@
-message("In post install")
-if(PRE_INSTALL_DID_RUN)
-  message("Pre and post install work fine")
-else()
-  message(FATAL_ERROR "Pre install did not run before post install")
-endif()

+ 0 - 2
Tests/SimpleInstall/PreInstall.cmake

@@ -1,2 +0,0 @@
-message("This is in pre install")
-set(PRE_INSTALL_DID_RUN 1)

+ 0 - 3
Tests/SimpleInstall/TestSubDir/CMakeLists.txt

@@ -1,3 +0,0 @@
-add_executable(TSD TSD.cxx TSD_utils.cxx)
-install_files(/MyTest/include FILES TSD.h)
-install_targets(/MyTest/bin TSD)

+ 0 - 10
Tests/SimpleInstall/TestSubDir/TSD.cxx

@@ -1,10 +0,0 @@
-#include <stdio.h>
-
-#include "TSD.h"
-
-int main()
-{
-  int res = TSD("TEST");
-  printf("Hello from TSD\n");
-  return res;
-}

+ 0 - 1
Tests/SimpleInstall/TestSubDir/TSD.h

@@ -1 +0,0 @@
-int TSD(const char*);

+ 0 - 9
Tests/SimpleInstall/TestSubDir/TSD_utils.cxx

@@ -1,9 +0,0 @@
-#include <string.h>
-
-int TSD(const char* foo)
-{
-  if (strcmp(foo, "TEST") == 0) {
-    return 0;
-  }
-  return 1;
-}

+ 0 - 6
Tests/SimpleInstall/foo.c

@@ -1,6 +0,0 @@
-char* foo = "Foo";
-
-int SomeFunctionInFoo()
-{
-  return 5;
-}

+ 0 - 10
Tests/SimpleInstall/foo.h

@@ -1,10 +0,0 @@
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern char* foo;
-extern int SomeFunctionInFoo();
-
-#ifdef __cplusplus
-}
-#endif

+ 0 - 34
Tests/SimpleInstall/inst.cxx

@@ -1,34 +0,0 @@
-#include "foo.h"
-
-#ifdef STAGE_2
-#  include <foo/lib1.h>
-#  include <foo/lib2renamed.h>
-#  include <lib3.h>
-#  include <old/lib2.h>
-#  include <old/lib3.h>
-#else
-#  include "lib1.h"
-#  include "lib2.h"
-#endif
-
-#include "lib4.h"
-
-#include <stdio.h>
-
-int main()
-{
-  if (Lib1Func() != 2.0) {
-    printf("Problem with lib1\n");
-    return 1;
-  }
-  if (Lib2Func() != 1.0) {
-    printf("Problem with lib2\n");
-    return 1;
-  }
-  if (Lib4Func() != 4.0) {
-    printf("Problem with lib4\n");
-    return 1;
-  }
-  printf("The value of Foo: %s\n", foo);
-  return SomeFunctionInFoo() - 5;
-}

+ 0 - 2
Tests/SimpleInstall/inst2.cxx

@@ -1,2 +0,0 @@
-#define STAGE_2
-#include "inst.cxx"

+ 0 - 6
Tests/SimpleInstall/lib1.cxx

@@ -1,6 +0,0 @@
-#include "lib1.h"
-
-float Lib1Func()
-{
-  return 2.0;
-}

+ 0 - 1
Tests/SimpleInstall/lib1.h

@@ -1 +0,0 @@
-extern float Lib1Func();

+ 0 - 6
Tests/SimpleInstall/lib2.cxx

@@ -1,6 +0,0 @@
-#include "lib2.h"
-
-float Lib2Func()
-{
-  return 1.0;
-}

+ 0 - 11
Tests/SimpleInstall/lib2.h

@@ -1,11 +0,0 @@
-#ifdef _WIN32
-#  ifdef test2_EXPORTS
-#    define CM_TEST_LIB_EXPORT __declspec(dllexport)
-#  else
-#    define CM_TEST_LIB_EXPORT __declspec(dllimport)
-#  endif
-#else
-#  define CM_TEST_LIB_EXPORT
-#endif
-
-CM_TEST_LIB_EXPORT float Lib2Func();

+ 0 - 6
Tests/SimpleInstall/lib3.cxx

@@ -1,6 +0,0 @@
-#include "lib3.h"
-
-float Lib3Func()
-{
-  return 2.0;
-}

+ 0 - 11
Tests/SimpleInstall/lib3.h

@@ -1,11 +0,0 @@
-#ifdef _WIN32
-#  ifdef test3_EXPORTS
-#    define CM_TEST_LIB_EXPORT __declspec(dllexport)
-#  else
-#    define CM_TEST_LIB_EXPORT __declspec(dllimport)
-#  endif
-#else
-#  define CM_TEST_LIB_EXPORT
-#endif
-
-CM_TEST_LIB_EXPORT float Lib3Func();

+ 0 - 6
Tests/SimpleInstall/lib4.cxx

@@ -1,6 +0,0 @@
-#include "lib4.h"
-
-float Lib4Func()
-{
-  return 4.0;
-}

+ 0 - 11
Tests/SimpleInstall/lib4.h

@@ -1,11 +0,0 @@
-#ifdef _WIN32
-#  ifdef test4_EXPORTS
-#    define CM_TEST_LIB_EXPORT __declspec(dllexport)
-#  else
-#    define CM_TEST_LIB_EXPORT __declspec(dllimport)
-#  endif
-#else
-#  define CM_TEST_LIB_EXPORT
-#endif
-
-CM_TEST_LIB_EXPORT float Lib4Func();

+ 0 - 1
Tests/SimpleInstall/scripts/.gitattributes

@@ -1 +0,0 @@
-sample_script    crlf=input

+ 0 - 1
Tests/SimpleInstall/scripts/CMakeLists.txt

@@ -1 +0,0 @@
-install_programs(/MyTest/share/old3 "^sample_script(\\.bat)?$")

+ 0 - 397
Tests/SimpleInstallS2/CMakeLists.txt

@@ -1,397 +0,0 @@
-cmake_minimum_required (VERSION 3.9)
-project (TestSimpleInstall)
-set(CMAKE_VERBOSE_MAKEFILE 1)
-set(CMAKE_RUNTIME_OUTPUT_DIRECTORY
-  "${TestSimpleInstall_BINARY_DIR}/bin")
-set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY
-  "${TestSimpleInstall_BINARY_DIR}/lib/static")
-set(CMAKE_LIBRARY_OUTPUT_DIRECTORY
-  "${TestSimpleInstall_BINARY_DIR}/lib")
-
-# Skip generating the rpath pointing at the build tree to make sure
-# the executable is installed with the proper rpath in the install
-# tree.
-set(CMAKE_SKIP_BUILD_RPATH 1)
-
-# Make sure the executable can run from the install tree.
-set(CMAKE_INSTALL_NAME_DIR ${CMAKE_INSTALL_PREFIX}/MyTest/lib)
-
-# Skip the dependency that causes a build when installing.  This
-# avoids infinite loops when the post-build rule below installs.
-set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY 1)
-set(CMAKE_SKIP_PACKAGE_ALL_DEPENDENCY 1)
-
-set(CMAKE_DEBUG_POSTFIX "_test_debug_postfix")
-
-set(EXTRA_INSTALL_FLAGS)
-message("Extra install: ${EXTRA_INSTALL_FLAGS}")
-
-if(STAGE2)
-  set(LIBPATHS
-    ${CMAKE_INSTALL_PREFIX}/MyTest/lib/static
-    ${CMAKE_INSTALL_PREFIX}/MyTest/lib
-    )
-  set(t1NAMES test1 test1${CMAKE_DEBUG_POSTFIX} test1rel)
-  set(t2NAMES test2 test2${CMAKE_DEBUG_POSTFIX})
-  set(t4NAMES test4out test4out${CMAKE_DEBUG_POSTFIX})
-
-  # Make sure the install script ran.
-  set(CMAKE_INSTALL_SCRIPT_DID_RUN 0)
-  include(${CMAKE_INSTALL_PREFIX}/MyTest/InstallScriptOut.cmake OPTIONAL)
-  if(CMAKE_INSTALL_SCRIPT_DID_RUN)
-    message(STATUS "Stage 1 did run install script 2.")
-  else()
-    message(SEND_ERROR "Stage 1 did not run install script 2.")
-  endif()
-
-  if(CYGWIN OR MINGW)
-    set(LIBPATHS ${LIBPATHS} "${CMAKE_INSTALL_PREFIX}/MyTest/bin")
-  endif()
-  message("Search for library in: ${LIBPATHS}")
-
-  set(TEST1_LIBRARY "TEST1_LIBRARY-NOTFOUND" CACHE FILEPATH "Force find." FORCE)
-  set(TEST2_LIBRARY "TEST2_LIBRARY-NOTFOUND" CACHE FILEPATH "Force find." FORCE)
-  set(TEST4_LIBRARY "TEST4_LIBRARY-NOTFOUND" CACHE FILEPATH "Force find." FORCE)
-
-  find_library(TEST1_LIBRARY
-    NAMES ${t1NAMES}
-    PATHS ${LIBPATHS}
-    DOC "First library")
-  find_library(TEST2_LIBRARY
-    NAMES ${t2NAMES}
-    PATHS ${LIBPATHS}
-    DOC "Second library")
-  find_library(TEST4_LIBRARY
-    NAMES ${t4NAMES}
-    PATHS ${LIBPATHS}
-    DOC "Fourth library")
-
-  # Test importing a library found on disk.
-  add_library(lib_test4 UNKNOWN IMPORTED)
-  set_property(TARGET lib_test4 PROPERTY IMPORTED_LOCATION ${TEST4_LIBRARY})
-
-  include_directories(${CMAKE_INSTALL_PREFIX}/MyTest/include)
-  add_executable (SimpleInstExeS2 inst2.cxx foo.c foo.h)
-  target_link_libraries(SimpleInstExeS2 ${TEST1_LIBRARY} ${TEST2_LIBRARY} lib_test4)
-  set(install_target SimpleInstExeS2)
-
-  if("${TEST1_LIBRARY}" MATCHES "static")
-    message(STATUS "test1 correctly found in lib/static")
-  else()
-    message(SEND_ERROR "test1 not found in lib/static!")
-  endif()
-
-  # Check for failure of configuration-specific installation.
-  if(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/include/Release/lib1debug.h")
-    message(FATAL_ERROR "Debug-configuration file installed for Release!")
-  endif()
-  if(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/include/Debug/lib1release.h")
-    message(FATAL_ERROR "Release-configuration file installed for Debug!")
-  endif()
-
-  # Check for failure of directory installation.
-  if(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/TestSubDir/TSD.h")
-    message(FATAL_ERROR "Directory installation did not install TSD.h")
-  endif()
-  if(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/TestSubDir/CVS")
-    message(FATAL_ERROR "Directory installation installed CVS directory.")
-  endif()
-  if(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/CVS")
-    message(FATAL_ERROR "Directory installation installed CVS directory.")
-  endif()
-  if(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/CMakeLists.txt")
-    message(FATAL_ERROR "Directory installation installed CMakeLists.txt.")
-  endif()
-  if(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/alt/TestSubDir/TSD.h")
-    message(FATAL_ERROR "Directory installation did not install alternate TSD.h")
-  endif()
-  if(EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/alt/TestSubDir/TSD.cxx")
-    message(FATAL_ERROR "Directory installation installed alternate TSD.cxx")
-  endif()
-
-  # Check that scripts properly installed.
-  if(WIN32 AND NOT CYGWIN)
-    set(BAT .bat)
-  else()
-    set(BAT)
-  endif()
-  foreach(loc share share/old1 share/old2 share/old3 share/alt)
-    set(CUR_SCRIPT "${CMAKE_INSTALL_PREFIX}/MyTest/${loc}/sample_script${BAT}")
-    execute_process(
-      COMMAND ${CUR_SCRIPT}
-      RESULT_VARIABLE SAMPLE_SCRIPT_RESULT
-      OUTPUT_VARIABLE SAMPLE_SCRIPT_OUTPUT
-      )
-    if(NOT "${SAMPLE_SCRIPT_RESULT}" STREQUAL "0")
-      message(FATAL_ERROR
-        "Sample script [${CUR_SCRIPT}] failed: [${SAMPLE_SCRIPT_RESULT}]")
-    endif()
-    if(NOT "${SAMPLE_SCRIPT_OUTPUT}" MATCHES "Sample Script Output")
-      message(FATAL_ERROR
-        "Bad sample script [${CUR_SCRIPT}] output: [${SAMPLE_SCRIPT_OUTPUT}]")
-    endif()
-  endforeach()
-
-  # Check for failure of empty directory installation.
-  if(NOT EXISTS "${CMAKE_INSTALL_PREFIX}/MyTest/share/empty")
-    message(FATAL_ERROR "Empty directory installation did not install.")
-  endif()
-  file(GLOB EMPTY_FILES "${CMAKE_INSTALL_PREFIX}/MyTest/share/empty/*")
-  if(EMPTY_FILES)
-    message(FATAL_ERROR "Empty directory installed [${EMPTY_FILES}].")
-  endif()
-
-  # Make sure the test executable can run from the install tree.
-  set_target_properties(SimpleInstExeS2 PROPERTIES
-    INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/MyTest/lib)
-
-  install_targets(/MyTest/bin SimpleInstExeS2)
-
-# try to import the exported targets again
-  set(SimpleInstallS1_DIR ${CMAKE_INSTALL_PREFIX}/MyTest/lib)
-  find_package(SimpleInstallS1 REQUIRED)
-  get_target_property(simpleInstallImported S1_SimpleInstall IMPORTED)
-  if(NOT simpleInstallImported)
-    message(FATAL_ERROR "Target S1_SimpleInstall could not be imported")
-  endif()
-
-else()
-  # Wipe out the install directory to do a fresh test.
-  file(REMOVE_RECURSE ${CMAKE_INSTALL_PREFIX}/MyTest)
-
-  # this is stage 1, so create libraries and modules and install everything
-  add_library(test1 STATIC lib1.cxx)
-  add_library(test2 SHARED lib2.cxx)
-  add_library(test3 MODULE lib3.cxx)
-  add_library(test4 SHARED lib4.cxx)
-
-  # Test <ARCHIVE|LIBRARY|RUNTIME>_OUTPUT_NAME properties.
-  set_property(TARGET test4 PROPERTY ARCHIVE_OUTPUT_NAME test4out)
-  set_property(TARGET test4 PROPERTY LIBRARY_OUTPUT_NAME test4out)
-
-  add_executable (SimpleInstall inst.cxx foo.c foo.h)
-  target_link_libraries(SimpleInstall test1 test2 test4)
-  set(install_target SimpleInstall)
-
-  set_target_properties(SimpleInstall PROPERTIES OUTPUT_NAME SimpleInstExe)
-  # Disable VERSION test until it is implemented in the Xcode generator.
-  if(NOT XCODE)
-    set_target_properties(SimpleInstall PROPERTIES VERSION 1.2)
-  endif()
-
-  # Make sure the test executable can run from the install tree.
-  set_target_properties(SimpleInstall PROPERTIES
-    INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/MyTest/lib)
-
-  # Test per-configuration output name.
-  set_target_properties(test1 PROPERTIES RELEASE_OUTPUT_NAME test1rel)
-  set_target_properties(test2 PROPERTIES PUBLIC_HEADER foo.h)
-
-  if(CMAKE_GENERATOR MATCHES "Makefiles")
-    add_subdirectory(TestSubDir)
-    add_dependencies(SimpleInstall TSD)
-  endif()
-
-  add_dependencies(SimpleInstall test3)
-  add_dependencies(test2 test3)
-  add_dependencies(test4 test2)
-
-  install(TARGETS SimpleInstall test1 test2 test3 EXPORT SimpleInstallS1
-    RUNTIME DESTINATION MyTest/bin        COMPONENT Runtime     # .exe, .dll
-    LIBRARY DESTINATION MyTest/lib        COMPONENT Runtime     # .so, mod.dll
-    ARCHIVE DESTINATION MyTest/lib/static COMPONENT Development # .a, .lib
-    PUBLIC_HEADER DESTINATION MyTest/include COMPONENT Development
-    )
-
-  install(TARGETS test4 PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
-    RUNTIME DESTINATION MyTest/bin
-    LIBRARY DESTINATION MyTest/lib
-    ARCHIVE DESTINATION MyTest/lib/static
-    OPTIONAL # for coverage...target should always exist
-    )
-  install(FILES lib1.h DESTINATION MyTest/include/$<1:foo>$<0:/wrong>)
-  install(FILES lib2.h
-    DESTINATION $<1:MyTest/include/foo>$<0:/wrong>
-    COMPONENT Development
-    PERMISSIONS OWNER_READ OWNER_WRITE
-    RENAME lib2renamed.h
-    )
-
-  # Test old-style install commands.
-  install_files(/MyTest/include FILES lib3.h)
-  install_files(/MyTest/include/old .h lib3)
-  install_files(/MyTest/include/old "^lib2.h$")
-  install_programs(/MyTest/share/old1 FILES
-    scripts/sample_script scripts/sample_script.bat)
-  install_programs(/MyTest/share/old2
-    scripts/sample_script scripts/sample_script.bat)
-
-# "export" the targets collected in "SimpleInstallS1"
-  install(EXPORT SimpleInstallS1 FILE SimpleInstallS1Config.cmake
-                                 DESTINATION MyTest/lib
-                                 NAMESPACE S1_ )
-
-  export(TARGETS SimpleInstall test1 test2 test3
-         FILE "${CMAKE_CURRENT_BINARY_DIR}/SimpleInstallS1Config.cmake"
-         NAMESPACE S2_ )
-
-  add_subdirectory(scripts)
-
-  # Test optional installation.
-  install(FILES does_not_exist.h DESTINATION MyTest/include/foo OPTIONAL)
-
-  # Test configuration-specific installation.
-  install(FILES lib1.h RENAME lib1release.h CONFIGURATIONS Release
-    DESTINATION MyTest/include/Release
-    )
-  install(FILES lib1.h RENAME lib1debug.h CONFIGURATIONS Debug
-    DESTINATION MyTest/include/Debug
-    )
-
-  # Test directory installation.
-  file(REMOVE_RECURSE "${CMAKE_INSTALL_PREFIX}/MyTest/share/CVS")
-  file(REMOVE_RECURSE "${CMAKE_INSTALL_PREFIX}/MyTest/share/TestSubDir/CVS")
-  install(
-    DIRECTORY TestSubDir $<1:scripts/>$<0:/wrong> DESTINATION $<1:MyTest/share>$<0:/wrong>
-    FILE_PERMISSIONS OWNER_READ OWNER_WRITE
-    DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
-                          GROUP_READ GROUP_EXECUTE
-    PATTERN "CVS" EXCLUDE
-    REGEX "\\.txt$" EXCLUDE
-    PATTERN "scripts/*" PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
-    )
-
-  # Alternate directory installation for coverage.
-  install(
-    DIRECTORY $<1:scripts/>$<0:/wrong> DESTINATION $<1:MyTest/share/alt>$<0:/wrong>
-    COMPONENT Development
-    USE_SOURCE_PERMISSIONS
-    PATTERN "CVS" EXCLUDE
-    REGEX "\\.txt$" EXCLUDE
-    )
-  install(
-    DIRECTORY TestSubDir DESTINATION $<1:MyTest/share/alt>$<0:/wrong>
-    FILE_PERMISSIONS OWNER_READ OWNER_WRITE
-    DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
-                          GROUP_READ GROUP_EXECUTE
-    FILES_MATCHING PATTERN "*.h"
-    )
-
-  # Test empty directory installation.
-  install(DIRECTORY DESTINATION MyTest/share/empty)
-
-  # Test optional directory installation.
-  install(DIRECTORY does-not-exist DESTINATION MyTest/share OPTIONAL)
-
-  # Test user-specified install scripts, with and without COMPONENT.
-  install(
-    SCRIPT InstallScript1.cmake
-    CODE "set(INSTALL_CODE_DID_RUN 1)"
-    SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/InstallScript2.cmake
-    )
-  install(
-    SCRIPT InstallScript3.cmake
-    CODE "set(INSTALL_CODE_WITH_COMPONENT_DID_RUN 1)"
-    SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/InstallScript4.cmake
-    COMPONENT Development
-    )
-  set_directory_properties(PROPERTIES
-    ADDITIONAL_MAKE_CLEAN_FILES
-    "${CMAKE_INSTALL_PREFIX}/InstallScriptOut.cmake;${CMAKE_INSTALL_PREFIX}/InstallScript4Out.cmake")
-
-  set_target_properties(SimpleInstall PROPERTIES PRE_INSTALL_SCRIPT
-    ${CMAKE_CURRENT_SOURCE_DIR}/PreInstall.cmake)
-  set_target_properties(SimpleInstall PROPERTIES POST_INSTALL_SCRIPT
-    ${CMAKE_CURRENT_SOURCE_DIR}/PostInstall.cmake)
-  set_target_properties(test4 PROPERTIES VERSION 1.2 SOVERSION 3
-        INSTALL_NAME_DIR @executable_path/../lib)
-endif()
-
-get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
-if(_isMultiConfig)
-  set(SI_CONFIG --config $<CONFIGURATION>)
-else()
-  set(SI_CONFIG)
-endif()
-
-# Dummy test of CPack
-set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Test of packaging with cpack")
-set(CPACK_PACKAGE_VENDOR "Kitware")
-set(CPACK_INSTALL_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/PackageScript.cmake")
-
-if(WIN32 AND NOT UNIX)
-  find_program(NSIS_MAKENSIS NAMES makensis
-    PATHS [HKEY_LOCAL_MACHINE\\SOFTWARE\\NSIS]
-    DOC "Where is makensis.exe located"
-    )
-  if(NOT NSIS_MAKENSIS)
-    set(CPACK_GENERATOR TGZ)
-  endif()
-endif()
-if(UNIX AND NOT APPLE)
-  set(CPACK_GENERATOR "TGZ;STGZ;TZ")
-  #  find_program(found_compress
-  #    NAMES compress)
-  #  if(found_compress)
-  #    find_program(file_command NAMES file)
-  #    if(NOT file_command)
-  #      set(file_command file)
-  #    endif()
-  #    execute_process(COMMAND ${file_command} ${found_compress}
-  #      OUTPUT_VARIABLE output)
-  #    set(SKIP_TZ FALSE)
-  #    if("${output}" MATCHES "script")
-  #      set(SKIP_TZ TRUE)
-  #    endif()
-  #    if("${output}" MATCHES "dummy.sh")
-  #      set(SKIP_TZ TRUE)
-  #    endif()
-  #    if(NOT SKIP_TZ)
-  #      message("compress found and it was not a script")
-  #      message("output from file command: [${output}]")
-  #      list(APPEND CPACK_GENERATOR "TZ")
-  #    else()
-  #      message("compress found, but it was a script so don't use it")
-  #      message("output from file command: [${output}]")
-  #    endif()
-  #  endif()
-  find_program(found_bz2
-    NAMES bzip2)
-  if(found_bz2)
-    list(APPEND CPACK_GENERATOR "TBZ2")
-  endif()
-endif()
-
-set(CPACK_PACKAGE_EXECUTABLES "SimpleInstall" "Simple Install")
-set(CMAKE_INSTALL_MFC_LIBRARIES 1)
-set(CMAKE_INSTALL_DEBUG_LIBRARIES 1)
-set(CMAKE_INSTALL_UCRT_LIBRARIES 1)
-include(InstallRequiredSystemLibraries)
-
-if(CTEST_TEST_CPACK)
-  set(package_command COMMAND
-    ${CMAKE_COMMAND} --build . --target package ${SI_CONFIG}
-    )
-
-  # Avoid settings that require the .zip file command line tools...
-  # (just build an NSIS installer without component support)
-  #
-  set(CPACK_BINARY_ZIP OFF)
-  set(CPACK_MONOLITHIC_INSTALL ON)
-else()
-  set(package_command)
-endif()
-
-include(CPack)
-
-set(install_command COMMAND
-  ${CMAKE_COMMAND} --build . --target install ${SI_CONFIG}
-  )
-
-add_custom_command(
-  TARGET ${install_target}
-  POST_BUILD
-  ${install_command}
-  ${package_command}
-  COMMENT "Install Project"
-  )

+ 0 - 5
Tests/SimpleInstallS2/InstallScript1.cmake

@@ -1,5 +0,0 @@
-message("This is install script 1.")
-set(INSTALL_SCRIPT_1_DID_RUN 1)
-if(INSTALL_CODE_DID_RUN)
-  message(FATAL_ERROR "Install script 1 did not run before install code.")
-endif()

+ 0 - 14
Tests/SimpleInstallS2/InstallScript2.cmake

@@ -1,14 +0,0 @@
-message("This is install script 2.")
-if(INSTALL_SCRIPT_1_DID_RUN)
-  message("Install script ordering works.")
-else()
-  message(FATAL_ERROR "Install script 1 did not run before install script 2.")
-endif()
-if(INSTALL_CODE_DID_RUN)
-  message("Install code ordering works.")
-else()
-  message(FATAL_ERROR "Install script 2 did not run after install code.")
-endif()
-file(WRITE "${CMAKE_INSTALL_PREFIX}/MyTest/InstallScriptOut.cmake"
-  "set(CMAKE_INSTALL_SCRIPT_DID_RUN 1)\n"
-  )

+ 0 - 12
Tests/SimpleInstallS2/InstallScript3.cmake

@@ -1,12 +0,0 @@
-message("This is install script 3.")
-set(INSTALL_SCRIPT_3_DID_RUN 1)
-if(INSTALL_CODE_WITH_COMPONENT_DID_RUN)
-  message(FATAL_ERROR "Install script 3 did not run before install code with component.")
-endif()
-
-if(CMAKE_INSTALL_COMPONENT)
-if(NOT "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Development")
-  message("CMAKE_INSTALL_COMPONENT=\"${CMAKE_INSTALL_COMPONENT}\"")
-  message(FATAL_ERROR "Install script 3 should only run for \"Development\" INSTALL COMPONENT.")
-endif()
-endif()

+ 0 - 22
Tests/SimpleInstallS2/InstallScript4.cmake

@@ -1,22 +0,0 @@
-message("This is install script 4.")
-if(INSTALL_SCRIPT_3_DID_RUN)
-  message("Install script ordering works.")
-else()
-  message(FATAL_ERROR "Install script 3 did not run before install script 4.")
-endif()
-if(INSTALL_CODE_WITH_COMPONENT_DID_RUN)
-  message("Install code ordering works.")
-else()
-  message(FATAL_ERROR "Install script 4 did not run after install with component code.")
-endif()
-
-if(CMAKE_INSTALL_COMPONENT)
-if(NOT "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Development")
-  message("CMAKE_INSTALL_COMPONENT=\"${CMAKE_INSTALL_COMPONENT}\"")
-  message(FATAL_ERROR "Install script 4 should only run for \"Development\" INSTALL COMPONENT.")
-endif()
-endif()
-
-file(WRITE "${CMAKE_INSTALL_PREFIX}/MyTest/InstallScript4Out.cmake"
-  "set(CMAKE_INSTALL_SCRIPT_4_DID_RUN 1)\n"
-  )

+ 0 - 10
Tests/SimpleInstallS2/PackageScript.cmake

@@ -1,10 +0,0 @@
-message("This is packaging script")
-message("It writes a file with all variables available in ${CMAKE_INSTALL_PREFIX}/AllVariables.txt")
-
-file(WRITE ${CMAKE_INSTALL_PREFIX}/AllVariables.txt "")
-get_cmake_property(res VARIABLES)
-foreach(var ${res})
-  file(APPEND ${CMAKE_INSTALL_PREFIX}/AllVariables.txt
-             "${var} \"${${var}}\"\n")
-endforeach()
-

+ 0 - 6
Tests/SimpleInstallS2/PostInstall.cmake

@@ -1,6 +0,0 @@
-message("In post install")
-if(PRE_INSTALL_DID_RUN)
-  message("Pre and post install work fine")
-else()
-  message(FATAL_ERROR "Pre install did not run before post install")
-endif()

+ 0 - 2
Tests/SimpleInstallS2/PreInstall.cmake

@@ -1,2 +0,0 @@
-message("This is in pre install")
-set(PRE_INSTALL_DID_RUN 1)

+ 0 - 3
Tests/SimpleInstallS2/TestSubDir/CMakeLists.txt

@@ -1,3 +0,0 @@
-add_executable(TSD TSD.cxx TSD_utils.cxx)
-install_files(/MyTest/include FILES TSD.h)
-install_targets(/MyTest/bin TSD)

+ 0 - 10
Tests/SimpleInstallS2/TestSubDir/TSD.cxx

@@ -1,10 +0,0 @@
-#include <stdio.h>
-
-#include "TSD.h"
-
-int main()
-{
-  int res = TSD("TEST");
-  printf("Hello from TSD\n");
-  return res;
-}

+ 0 - 1
Tests/SimpleInstallS2/TestSubDir/TSD.h

@@ -1 +0,0 @@
-int TSD(const char*);

+ 0 - 9
Tests/SimpleInstallS2/TestSubDir/TSD_utils.cxx

@@ -1,9 +0,0 @@
-#include <string.h>
-
-int TSD(const char* foo)
-{
-  if (strcmp(foo, "TEST") == 0) {
-    return 0;
-  }
-  return 1;
-}

+ 0 - 6
Tests/SimpleInstallS2/foo.c

@@ -1,6 +0,0 @@
-char* foo = "Foo";
-
-int SomeFunctionInFoo()
-{
-  return 5;
-}

+ 0 - 10
Tests/SimpleInstallS2/foo.h

@@ -1,10 +0,0 @@
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern char* foo;
-extern int SomeFunctionInFoo();
-
-#ifdef __cplusplus
-}
-#endif

+ 0 - 34
Tests/SimpleInstallS2/inst.cxx

@@ -1,34 +0,0 @@
-#include "foo.h"
-
-#ifdef STAGE_2
-#  include <foo/lib1.h>
-#  include <foo/lib2renamed.h>
-#  include <lib3.h>
-#  include <old/lib2.h>
-#  include <old/lib3.h>
-#else
-#  include "lib1.h"
-#  include "lib2.h"
-#endif
-
-#include "lib4.h"
-
-#include <stdio.h>
-
-int main()
-{
-  if (Lib1Func() != 2.0) {
-    printf("Problem with lib1\n");
-    return 1;
-  }
-  if (Lib2Func() != 1.0) {
-    printf("Problem with lib2\n");
-    return 1;
-  }
-  if (Lib4Func() != 4.0) {
-    printf("Problem with lib4\n");
-    return 1;
-  }
-  printf("The value of Foo: %s\n", foo);
-  return SomeFunctionInFoo() - 5;
-}

+ 0 - 2
Tests/SimpleInstallS2/inst2.cxx

@@ -1,2 +0,0 @@
-#define STAGE_2
-#include "inst.cxx"

+ 0 - 6
Tests/SimpleInstallS2/lib1.cxx

@@ -1,6 +0,0 @@
-#include "lib1.h"
-
-float Lib1Func()
-{
-  return 2.0;
-}

+ 0 - 1
Tests/SimpleInstallS2/lib1.h

@@ -1 +0,0 @@
-extern float Lib1Func();

+ 0 - 6
Tests/SimpleInstallS2/lib2.cxx

@@ -1,6 +0,0 @@
-#include "lib2.h"
-
-float Lib2Func()
-{
-  return 1.0;
-}

+ 0 - 11
Tests/SimpleInstallS2/lib2.h

@@ -1,11 +0,0 @@
-#ifdef _WIN32
-#  ifdef test2_EXPORTS
-#    define CM_TEST_LIB_EXPORT __declspec(dllexport)
-#  else
-#    define CM_TEST_LIB_EXPORT __declspec(dllimport)
-#  endif
-#else
-#  define CM_TEST_LIB_EXPORT
-#endif
-
-CM_TEST_LIB_EXPORT float Lib2Func();

+ 0 - 6
Tests/SimpleInstallS2/lib3.cxx

@@ -1,6 +0,0 @@
-#include "lib3.h"
-
-float Lib3Func()
-{
-  return 2.0;
-}

+ 0 - 11
Tests/SimpleInstallS2/lib3.h

@@ -1,11 +0,0 @@
-#ifdef _WIN32
-#  ifdef test3_EXPORTS
-#    define CM_TEST_LIB_EXPORT __declspec(dllexport)
-#  else
-#    define CM_TEST_LIB_EXPORT __declspec(dllimport)
-#  endif
-#else
-#  define CM_TEST_LIB_EXPORT
-#endif
-
-CM_TEST_LIB_EXPORT float Lib3Func();

+ 0 - 6
Tests/SimpleInstallS2/lib4.cxx

@@ -1,6 +0,0 @@
-#include "lib4.h"
-
-float Lib4Func()
-{
-  return 4.0;
-}

+ 0 - 11
Tests/SimpleInstallS2/lib4.h

@@ -1,11 +0,0 @@
-#ifdef _WIN32
-#  ifdef test4_EXPORTS
-#    define CM_TEST_LIB_EXPORT __declspec(dllexport)
-#  else
-#    define CM_TEST_LIB_EXPORT __declspec(dllimport)
-#  endif
-#else
-#  define CM_TEST_LIB_EXPORT
-#endif
-
-CM_TEST_LIB_EXPORT float Lib4Func();

+ 0 - 1
Tests/SimpleInstallS2/scripts/.gitattributes

@@ -1 +0,0 @@
-sample_script    crlf=input

+ 0 - 1
Tests/SimpleInstallS2/scripts/CMakeLists.txt

@@ -1 +0,0 @@
-install_programs(/MyTest/share/old3 "^sample_script(\\.bat)?$")

部分文件因文件數量過多而無法顯示