Browse Source

Tests: Update BuildDepends test for Xcode "new build system"

Xcode somehow tracks what we're running inside a custom command,
so we cannot prevent it from regenerating the `noregen.h` header
even though we do not declare any dependencies of it.
Brad King 5 years ago
parent
commit
832a78be2d
2 changed files with 10 additions and 0 deletions
  1. 4 0
      Tests/BuildDepends/Project/CMakeLists.txt
  2. 6 0
      Tests/BuildDepends/Project/bar.cxx

+ 4 - 0
Tests/BuildDepends/Project/CMakeLists.txt

@@ -59,6 +59,10 @@ add_executable(bar bar.cxx
   ${CMAKE_CURRENT_BINARY_DIR}/noregen.h
   )
 
+if(CMAKE_XCODE_BUILD_SYSTEM VERSION_GREATER_EQUAL 12)
+  target_compile_definitions(bar PRIVATE XCODE_NEW_BUILD_SYSTEM)
+endif()
+
 #-----------------------------------------------------------------------------
 if("${CMAKE_GENERATOR}" MATCHES "Make")
   # Test the IMPLICIT_DEPENDS feature.

+ 6 - 0
Tests/BuildDepends/Project/bar.cxx

@@ -7,8 +7,14 @@ int main(int argc, char** argv)
 {
   /* Make sure the noregen header was not regenerated.  */
   if (strcmp("foo", noregen_string) != 0) {
+#ifdef XCODE_NEW_BUILD_SYSTEM
+    fprintf(stderr,
+            "Known limitation: noregen.h was regenerated "
+            "but we cannot stop Xcode from doing this!\n");
+#else
     printf("FAILED: noregen.h was regenerated!\n");
     return 1;
+#endif
   }
 
   /* Print out the string that should have been regenerated.  */