generator_lib: Use forward slashes for CMake even on Windows

Fixed: dawn:2071
Change-Id: I999beeee407c4447e4b14de6d0a95c1b72c17e14
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/151840
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/generator/generator_lib.py b/generator/generator_lib.py
index 2056bae..fa18a0d 100644
--- a/generator/generator_lib.py
+++ b/generator/generator_lib.py
@@ -231,6 +231,16 @@
     return paths
 
 
+# Computes the string representing a cmake list of paths.
+def _cmake_path_list(paths):
+    if os.name == "nt":
+        # On Windows CMake still expects paths to be separated by forward
+        # slashes
+        return (";".join(paths)).replace("\\", "/")
+    else:
+        return ";".join(paths)
+
+
 def run_generator(generator):
     parser = argparse.ArgumentParser(
         description=generator.get_description(),
@@ -310,7 +320,7 @@
                         " ".join(dependencies))
 
         if args.print_cmake_dependencies:
-            sys.stdout.write(";".join(dependencies))
+            sys.stdout.write(_cmake_path_list(dependencies))
             return 0
 
     # The caller wants to assert that the outputs are what it expects.
@@ -329,9 +339,11 @@
 
     # Print the list of all the outputs for cmake.
     if args.print_cmake_outputs:
-        sys.stdout.write(";".join([
-            os.path.join(args.output_dir, render.output) for render in renders
-        ]))
+        sys.stdout.write(
+            _cmake_path_list([
+                os.path.join(args.output_dir, render.output)
+                for render in renders
+            ]))
         return 0
 
     outputs = _do_renders(renders, args.template_dir)