Home | History | Annotate | Download | only in Driver
      1 // Don't attempt slash switches on msys bash.
      2 // REQUIRES: shell-preserves-root
      3 
      4 // Note: %s must be preceded by --, otherwise it may be interpreted as a
      5 // command-line option, e.g. on Mac where %s is commonly under /Users.
      6 
      7 // RUN: %clang_cl /c -### -- %s 2>&1 | FileCheck -check-prefix=DEFAULT %s
      8 // DEFAULT: "-o" "cl-outputs.obj"
      9 
     10 // RUN: %clang_cl /Foa -### -- %s 2>&1 | FileCheck -check-prefix=FoNAME %s
     11 // FoNAME:  "-o" "a.obj"
     12 
     13 // RUN: %clang_cl /Foa.ext /Fob.ext -### -- %s 2>&1 | FileCheck -check-prefix=FoNAMEEXT %s
     14 // FoNAMEEXT:  "-o" "b.ext"
     15 
     16 // RUN: %clang_cl /Fofoo.dir/ -### -- %s 2>&1 | FileCheck -check-prefix=FoDIR %s
     17 // FoDIR:  "-o" "foo.dir{{[/\\]+}}cl-outputs.obj"
     18 
     19 // RUN: %clang_cl /Fofoo.dir/a -### -- %s 2>&1 | FileCheck -check-prefix=FoDIRNAME %s
     20 // FoDIRNAME:  "-o" "foo.dir{{[/\\]+}}a.obj"
     21 
     22 // RUN: %clang_cl /Fofoo.dir/a.ext -### -- %s 2>&1 | FileCheck -check-prefix=FoDIRNAMEEXT %s
     23 // FoDIRNAMEEXT:  "-o" "foo.dir{{[/\\]+}}a.ext"
     24 
     25 // RUN: %clang_cl /Fo.. -### -- %s 2>&1 | FileCheck -check-prefix=FoCRAZY %s
     26 // FoCRAZY:  "-o" "..obj"
     27 
     28 // RUN: %clang_cl /Fo -### 2>&1 | FileCheck -check-prefix=FoMISSINGARG %s
     29 // FoMISSINGARG: error: argument to '/Fo' is missing (expected 1 value)
     30 
     31 // RUN: %clang_cl /Foa.obj -### -- %s %s 2>&1 | FileCheck -check-prefix=CHECK-MULTIPLESOURCEERROR %s
     32 // CHECK-MULTIPLESOURCEERROR: error: cannot specify '/Foa.obj' when compiling multiple source files
     33 
     34 // RUN: %clang_cl /Fomydir/ -### -- %s %s 2>&1 | FileCheck -check-prefix=CHECK-MULTIPLESOURCEOK %s
     35 // CHECK-MULTIPLESOURCEOK: "-o" "mydir{{[/\\]+}}cl-outputs.obj"
     36 
     37 
     38 // RUN: %clang_cl -### -- %s 2>&1 | FileCheck -check-prefix=DEFAULTEXE %s
     39 // DEFAULTEXE: cl-outputs.exe
     40 
     41 // RUN: %clang_cl /LD -### -- %s 2>&1 | FileCheck -check-prefix=DEFAULTDLL %s
     42 // RUN: %clang_cl /LDd -### -- %s 2>&1 | FileCheck -check-prefix=DEFAULTDLL %s
     43 // DEFAULTDLL: "-out:cl-outputs.dll"
     44 // DEFAULTDLL: "-implib:cl-outputs.lib"
     45 
     46 // RUN: %clang_cl /Fefoo -### -- %s 2>&1 | FileCheck -check-prefix=FeNOEXT %s
     47 // FeNOEXT: "-out:foo.exe"
     48 
     49 // RUN: %clang_cl /Fefoo /LD -### -- %s 2>&1 | FileCheck -check-prefix=FeNOEXTDLL %s
     50 // RUN: %clang_cl /Fefoo /LDd -### -- %s 2>&1 | FileCheck -check-prefix=FeNOEXTDLL %s
     51 // FeNOEXTDLL: "-out:foo.dll"
     52 // FeNOEXTDLL: "-implib:foo.lib"
     53 
     54 // RUN: %clang_cl /Fefoo.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeEXT %s
     55 // FeEXT: "-out:foo.ext"
     56 
     57 // RUN: %clang_cl /LD /Fefoo.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeEXTDLL %s
     58 // RUN: %clang_cl /LDd /Fefoo.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeEXTDLL %s
     59 // FeEXTDLL: "-out:foo.ext"
     60 // FeEXTDLL: "-implib:foo.lib"
     61 
     62 // RUN: %clang_cl /Fefoo.dir/ -### -- %s 2>&1 | FileCheck -check-prefix=FeDIR %s
     63 // FeDIR: "-out:foo.dir{{[/\\]+}}cl-outputs.exe"
     64 
     65 // RUN: %clang_cl /LD /Fefoo.dir/ -### -- %s 2>&1 | FileCheck -check-prefix=FeDIRDLL %s
     66 // RUN: %clang_cl /LDd /Fefoo.dir/ -### -- %s 2>&1 | FileCheck -check-prefix=FeDIRDLL %s
     67 // FeDIRDLL: "-out:foo.dir{{[/\\]+}}cl-outputs.dll"
     68 // FeDIRDLL: "-implib:foo.dir{{[/\\]+}}cl-outputs.lib"
     69 
     70 // RUN: %clang_cl /Fefoo.dir/a -### -- %s 2>&1 | FileCheck -check-prefix=FeDIRNAME %s
     71 // FeDIRNAME: "-out:foo.dir{{[/\\]+}}a.exe"
     72 
     73 // RUN: %clang_cl /LD /Fefoo.dir/a -### -- %s 2>&1 | FileCheck -check-prefix=FeDIRNAMEDLL %s
     74 // RUN: %clang_cl /LDd /Fefoo.dir/a -### -- %s 2>&1 | FileCheck -check-prefix=FeDIRNAMEDLL %s
     75 // FeDIRNAMEDLL: "-out:foo.dir{{[/\\]+}}a.dll"
     76 // FeDIRNAMEDLL: "-implib:foo.dir{{[/\\]+}}a.lib"
     77 
     78 // RUN: %clang_cl /Fefoo.dir/a.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeDIRNAMEEXT %s
     79 // FeDIRNAMEEXT: "-out:foo.dir{{[/\\]+}}a.ext"
     80 
     81 // RUN: %clang_cl /LD /Fefoo.dir/a.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeDIRNAMEEXTDLL %s
     82 // RUN: %clang_cl /LDd /Fefoo.dir/a.ext -### -- %s 2>&1 | FileCheck -check-prefix=FeDIRNAMEEXTDLL %s
     83 // FeDIRNAMEEXTDLL: "-out:foo.dir{{[/\\]+}}a.ext"
     84 // FeDIRNAMEEXTDLL: "-implib:foo.dir{{[/\\]+}}a.lib"
     85 
     86 // RUN: %clang_cl /Fe -### 2>&1 | FileCheck -check-prefix=FeMISSINGARG %s
     87 // FeMISSINGARG: error: argument to '/Fe' is missing (expected 1 value)
     88 
     89 // RUN: %clang_cl /Fefoo /Febar -### -- %s 2>&1 | FileCheck -check-prefix=FeOVERRIDE %s
     90 // FeOVERRIDE: "-out:bar.exe"
     91 
     92 
     93 // RUN: %clang_cl /FA -### -- %s 2>&1 | FileCheck -check-prefix=FA %s
     94 // FA: "-o" "cl-outputs.asm"
     95 // RUN: %clang_cl /FA /Fafoo -### -- %s 2>&1 | FileCheck -check-prefix=FaNAME %s
     96 // RUN: %clang_cl /Fafoo -### -- %s 2>&1 | FileCheck -check-prefix=FaNAME %s
     97 // FaNAME:  "-o" "foo.asm"
     98 // RUN: %clang_cl /FA /Faa.ext /Fab.ext -### -- %s 2>&1 | FileCheck -check-prefix=FaNAMEEXT %s
     99 // FaNAMEEXT:  "-o" "b.ext"
    100 // RUN: %clang_cl /FA /Fafoo.dir/ -### -- %s 2>&1 | FileCheck -check-prefix=FaDIR %s
    101 // FaDIR:  "-o" "foo.dir{{[/\\]+}}cl-outputs.asm"
    102 // RUN: %clang_cl /FA /Fafoo.dir/a -### -- %s 2>&1 | FileCheck -check-prefix=FaDIRNAME %s
    103 // FaDIRNAME:  "-o" "foo.dir{{[/\\]+}}a.asm"
    104 // RUN: %clang_cl /FA /Fafoo.dir/a.ext -### -- %s 2>&1 | FileCheck -check-prefix=FaDIRNAMEEXT %s
    105 // FaDIRNAMEEXT:  "-o" "foo.dir{{[/\\]+}}a.ext"
    106 // RUN: %clang_cl /Faa.asm -### -- %s %s 2>&1 | FileCheck -check-prefix=FaMULTIPLESOURCE %s
    107 // FaMULTIPLESOURCE: error: cannot specify '/Faa.asm' when compiling multiple source files
    108 
    109 // RUN: %clang_cl /P -### -- %s 2>&1 | FileCheck -check-prefix=P %s
    110 // P: "-E"
    111 // P: "-o" "cl-outputs.i"
    112 
    113 // RUN: %clang_cl /P /Fifoo -### -- %s 2>&1 | FileCheck -check-prefix=Fi1 %s
    114 // Fi1: "-E"
    115 // Fi1: "-o" "foo.i"
    116 
    117 // RUN: %clang_cl /P /Fifoo.x -### -- %s 2>&1 | FileCheck -check-prefix=Fi2 %s
    118 // Fi2: "-E"
    119 // Fi2: "-o" "foo.x"
    120