// Test scanning when the driver requires multiple jobs. E.g. with -save-temps
// there will be separate -E, -emit-llvm-bc, -S, and -cc1as jobs, which should
// each result in a "command" in the output.

// We use an x86_64-apple-darwin target to avoid host-dependent behaviour in
// the driver. Platforms without an integrated assembler have different commands
// REQUIRES: x86-registered-target

// RUN: rm -rf %t
// RUN: split-file %s %t
// RUN: sed -e "s|DIR|%/t|g" %t/cdb.json.in > %t/cdb.json

// RUN: clang-scan-deps -compilation-database %t/cdb.json -module-files-dir %t/modules \
// RUN:   -j 1 -format experimental-full -mode preprocess-dependency-directives \
// RUN:   > %t/deps.json

// RUN: cat %t/deps.json | sed 's:\\\\\?:/:g' | FileCheck %s -DPREFIX=%/t

// Build the -save-temps + -fmodules case
// RUN: %deps-to-rsp %t/deps.json --module-name=Mod > %t/Mod.rsp
// RUN: %deps-to-rsp %t/deps.json --tu-index 1 --tu-cmd-index 0 > %t/tu-cpp.rsp
// RUN: %deps-to-rsp %t/deps.json --tu-index 1 --tu-cmd-index 1 > %t/tu-emit-ir.rsp
// RUN: %deps-to-rsp %t/deps.json --tu-index 1 --tu-cmd-index 2 > %t/tu-emit-asm.rsp
// RUN: %deps-to-rsp %t/deps.json --tu-index 1 --tu-cmd-index 3 > %t/tu-cc1as.rsp
// RUN: %clang @%t/Mod.rsp
// RUN: %clang @%t/tu-cpp.rsp
// RUN: ls %t/tu_save_temps_module.i
// RUN: %clang @%t/tu-emit-ir.rsp
// RUN: ls %t/tu_save_temps_module.bc
// RUN: %clang @%t/tu-emit-asm.rsp
// RUN: ls %t/tu_save_temps_module.s
// RUN: %clang @%t/tu-cc1as.rsp
// RUN: ls %t/tu_save_temps_module.o


// CHECK:      "modules": [
// CHECK-NEXT:   {
// CHECK:          "clang-modulemap-file": "[[PREFIX]]{{.}}module.modulemap"
// CHECK:          "name": "Mod"
// CHECK:        }
// CHECK-NEXT: ]
// CHECK-NEXT: "translation-units": [
// CHECK-NEXT:   {
// CHECK:          "commands": [
// CHECK-NEXT:       {
// CHECK-NEXT:         "clang-context-hash":
// CHECK-NEXT:         "clang-module-deps": []
// CHECK-NEXT:         "command-line": [
// CHECK-NEXT:           "-cc1"
// CHECK:                "-o"
// CHECK-NEXT:           "{{.*}}tu_no_integrated_cpp{{.*}}.i"
// CHECK:                "-E"
// CHECK:              ]
// CHECK-NEXT:         "executable": "clang_tool"
// CHECK:              "input-file": "[[PREFIX]]{{.}}tu_no_integrated_cpp.c"
// CHECK-NEXT:       }
// CHECK-NEXT:       {
// CHECK-NEXT:         "clang-context-hash":
// CHECK-NEXT:         "clang-module-deps": []
// CHECK-NEXT:         "command-line": [
// CHECK-NEXT:           "-cc1"
// CHECK:                "-o"
// CHECK-NEXT:           "{{.*}}tu_no_integrated_cpp.o"
// CHECK:                "-emit-obj"
// CHECK:                "{{.*}}tu_no_integrated_cpp{{.*}}.i"
// CHECK:              ]
// CHECK-NEXT:         "executable": "clang_tool"
// CHECK:              "input-file": "[[PREFIX]]{{.}}tu_no_integrated_cpp.c"
// CHECK-NEXT:       }
// CHECK-NEXT:     ]
// CHECK-NEXT:   }
// CHECK-NEXT:   {
// CHECK-NEXT:     "commands": [
// CHECK-NEXT:       {
// CHECK:              "clang-module-deps": [
// CHECK-NEXT:           {
// CHECK:                  "module-name": "Mod"
// CHECK-NEXT:           }
// CHECK-NEXT:         ]
// CHECK-NEXT:         "command-line": [
// CHECK-NEXT:           "-cc1"
// CHECK:                "-o"
// CHECK-NEXT:           "{{.*}}tu_save_temps_module.i"
// CHECK:                "-E"
// CHECK:                "-fmodule-file={{.*}}[[PREFIX]]{{.}}modules{{.*}}Mod-{{.*}}.pcm"
// CHECK:                "{{.*}}tu_save_temps_module.c"
// CHECK:              ]
// CHECK-NEXT:         "executable": "clang_tool"
// CHECK:              "input-file": "[[PREFIX]]{{.}}tu_save_temps_module.c"
// CHECK-NEXT:       }
// CHECK-NEXT:       {
// CHECK:              "clang-module-deps": [
// CHECK-NEXT:           {
// CHECK:                  "module-name": "Mod"
// CHECK-NEXT:           }
// CHECK-NEXT:         ]
// CHECK-NEXT:         "command-line": [
// CHECK-NEXT:           "-cc1"
// CHECK:                "-o"
// CHECK-NEXT:           "{{.*}}tu_save_temps_module.bc"
// CHECK:                "-emit-llvm-bc"
// CHECK:                "{{.*}}tu_save_temps_module.i"
// CHECK:                "-fmodule-file={{.*}}[[PREFIX]]{{.}}modules{{.*}}Mod-{{.*}}.pcm"
// CHECK:              ]
// CHECK-NEXT:         "executable": "clang_tool"
// CHECK:              "input-file": "[[PREFIX]]{{.}}tu_save_temps_module.c"
// CHECK-NEXT:       }
// CHECK-NEXT:       {
// CHECK:              "clang-module-deps": [
// CHECK-NEXT:           {
// CHECK:                  "module-name": "Mod"
// CHECK-NEXT:           }
// CHECK-NEXT:         ]
// CHECK-NEXT:         "command-line": [
// CHECK-NEXT:           "-cc1"
// CHECK:                "-o"
// CHECK-NEXT:           "{{.*}}tu_save_temps_module.s"
// CHECK:                "-S"
// CHECK:                "{{.*}}tu_save_temps_module.bc"
// CHECK:              ]
// CHECK-NEXT:         "executable": "clang_tool"
// CHECK:              "input-file": "[[PREFIX]]{{.}}tu_save_temps_module.c"
// CHECK-NEXT:       }
// CHECK-NEXT:       {
// CHECK:              "clang-module-deps": [
// CHECK-NEXT:           {
// CHECK:                  "module-name": "Mod"
// CHECK-NEXT:           }
// CHECK-NEXT:         ]
// CHECK-NEXT:         "command-line": [
// CHECK-NEXT:           "-cc1as"
// CHECK:                "-o"
// CHECK-NEXT:           "{{.*}}tu_save_temps_module.o"
// CHECK:                "{{.*}}tu_save_temps_module.s"
// CHECK:              ]
// CHECK-NEXT:         "executable": "clang_tool"
// CHECK:              "input-file": "[[PREFIX]]{{.}}tu_save_temps_module.c"
// CHECK-NEXT:       }
// CHECK-NEXT:     ]
// CHECK-NEXT:   }
// CHECK-NEXT: ]


//--- cdb.json.in
[
  {
    "directory": "DIR"
    "command": "clang_tool -target x86_64-apple-darwin -c DIR/tu_no_integrated_cpp.c -no-integrated-cpp -o DIR/tu_no_integrated_cpp.o"
    "file": "DIR/tu_no_integrated_cpp.c"
  },
  {
    "directory": "DIR"
    "command": "clang_tool -target x86_64-apple-darwin -c DIR/tu_save_temps_module.c -save-temps=obj -o DIR/tu_save_temps_module.o -fmodules -fimplicit-modules -fimplicit-module-maps -fmodules-cache-path=DIR/cache"
    "file": "DIR/tu_save_temps_module.c"
  }
]

//--- plain_header.h
void foo(void);

//--- module_header.h
void bar(void);

//--- module.modulemap
module Mod { header "module_header.h" }

//--- tu_no_integrated_cpp.c
#include "plain_header.h"
void tu_no_integrated_cpp(void) { foo(); }

//--- tu_save_temps_module.c
#include "module_header.h"
void tu_save_temps(void) { bar(); }
