|
|
@@ -24,6 +24,27 @@ elseif(RunCMake_GENERATOR STREQUAL Ninja)
|
|
|
run_cmake_command(NoWorkToDo-build ${CMAKE_COMMAND} --build .)
|
|
|
run_cmake_command(NoWorkToDo-nowork ${CMAKE_COMMAND} --build . -- -d explain)
|
|
|
endblock()
|
|
|
+
|
|
|
+ # Test that intermediate static libraries are rebuilt when the public
|
|
|
+ # interface of their dependency changes
|
|
|
+ block()
|
|
|
+ set(IncrementalSwift_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/IncrementalSwift-build)
|
|
|
+ set(IncrementalSwift_TEST_NO_CLEAN 1)
|
|
|
+ set(IncrementalSwift_TEST_OUTPUT_MERGE 1)
|
|
|
+ # Since files are modified during test, the files are created in the cmake
|
|
|
+ # file into the build directory
|
|
|
+ run_cmake(IncrementalSwift)
|
|
|
+ run_cmake_command(IncrementalSwift-first ${CMAKE_COMMAND} --build ${IncrementalSwift_TEST_BINARY_DIR})
|
|
|
+
|
|
|
+ # Modify public interface of libA requiring rebuild of libB
|
|
|
+ file(WRITE ${IncrementalSwift_TEST_BINARY_DIR}/a.swift
|
|
|
+ "public func callA() -> Float { return 32.0 }\n")
|
|
|
+
|
|
|
+ # Note: We still expect this to fail, but instead of failure at link time,
|
|
|
+ # it should fail while re-compiling libB because the function changed
|
|
|
+ run_cmake_command(IncrementalSwift-second ${CMAKE_COMMAND} --build ${IncrementalSwift_TEST_BINARY_DIR} -- -d explain)
|
|
|
+ endblock()
|
|
|
+
|
|
|
endif()
|
|
|
elseif(RunCMake_GENERATOR STREQUAL "Ninja Multi-Config")
|
|
|
if(CMAKE_Swift_COMPILER)
|