Test if the compiler supports Ada, and enable Ada tests if so. While I was
[oota-llvm.git] / test / lib / llvm-dg.exp
index 7c104c0f4625539f0fc77631616c9e89b435eec5..6f83800888d50e7432c396fe4cf119361fad19b1 100644 (file)
@@ -1,4 +1,9 @@
-proc llvm-runtest { programs objdir srcdir subdir target_triplet llvmgcc llvmgxx prcontext} {
+proc llvm-runtest { programs } { 
+    global srcroot objroot srcdir objdir subdir target_triplet prcontext 
+    global llvmgcc llvmgxx global llvmgcc_version llvmgccmajvers 
+    global gccpath gxxpath compile_c compile_cxx link shlibext llvmlibsdir
+
+    set timeout 60
 
     set path [file join $objdir $subdir]
     
@@ -42,28 +47,32 @@ proc llvm-runtest { programs objdir srcdir subdir target_triplet llvmgcc llvmgxx
                set runline
                set hasRunline 1
 
-               #replace %s with filename
-               regsub -all {%s} $runline $test new_runline
-
-               #replace %t with temp filenames
-               regsub -all {%t} $new_runline [file join Output $tmpFile] new_runline
-
+                set new_runline $runline
                #replace %prcontext with prcontext.tcl (Must replace before %p)
                regsub -all {%prcontext} $new_runline $prcontext new_runline
-
-               #replace %p with path to source, 
-               regsub -all {%p} $new_runline $srcdir new_runline
-
                #replace %llvmgcc with actual path to llvmgcc
-               regsub -all {%llvmgcc} $new_runline $llvmgcc new_runline
-
+               regsub -all {%llvmgcc} $new_runline "$llvmgcc -emit-llvm" new_runline
                #replace %llvmgxx with actual path to llvmg++
-               regsub -all {%llvmgxx} $new_runline $llvmgxx new_runline
-               
+               regsub -all {%llvmgxx} $new_runline "$llvmgxx -emit-llvm" new_runline
+               #replace %compile_c with C compilation command
+               regsub -all {%compile_c} $new_runline "$compile_c" new_runline
+               #replace %compile_cxx with C++ compilation command
+               regsub -all {%compile_cxx} $new_runline "$compile_cxx" new_runline
+               #replace %link with C++ link command
+               regsub -all {%link} $new_runline "$link" new_runline
+               #replace %shlibext with shared library extension
+               regsub -all {%shlibext} $new_runline "$shlibext" new_runline
+               #replace %llvmlibsdir with configure library directory
+               regsub -all {%llvmlibsdir} $new_runline "$llvmlibsdir" new_runline
+               #replace %p with path to source, 
+               regsub -all {%p} $new_runline [file join $srcdir $subdir] new_runline
+               #replace %s with filename
+               regsub -all {%s} $new_runline $test new_runline
+               #replace %t with temp filenames
+               regsub -all {%t} $new_runline [file join Output $tmpFile] new_runline
                puts $scriptFileId $new_runline
            } elseif {[regexp {XFAIL:[ *](.+)} $line match targets]} {
                set targets
-               
 
                #split up target if more then 1 specified
                foreach target [split $targets ,] {
@@ -71,6 +80,10 @@ proc llvm-runtest { programs objdir srcdir subdir target_triplet llvmgcc llvmgxx
                        set outcome XFAIL
                    } elseif { [regexp $target $target_triplet match] } {
                        set outcome XFAIL
+                   } elseif { [regexp {llvmgcc(([0-9]+)|([0-9]+[.][0-9]+))} $target match submatch submatch2]  } {
+               if { [regexp ^($submatch)$|^(($submatch)(\.)) $llvmgcc_version match] } {
+                         set outcome XFAIL
+                       }
                    }
                    
                }
@@ -87,7 +100,7 @@ proc llvm-runtest { programs objdir srcdir subdir target_triplet llvmgcc llvmgxx
        } else {
 
            #run script and catch errors
-           set retval [ catch {exec /bin/sh $script >& $output} ]
+           set retval [ catch {exec /bin/sh $script >& $output} errmsg ]
            
            if { $retval == 1 } {
                #Get output
@@ -99,10 +112,10 @@ proc llvm-runtest { programs objdir srcdir subdir target_triplet llvmgcc llvmgxx
                switch $outcome {
                    PASS {
                        file delete $output
-                       fail "$test: \n$result"
+                       fail "$test: \n$errmsg\n$result"
                    }
                    XFAIL {
-                       xfail "$test: \n$result"
+                       xfail "$test: \n$errmsg\n$result"
                    }
                    default {
                        file delete $output
@@ -121,5 +134,3 @@ proc llvm-runtest { programs objdir srcdir subdir target_triplet llvmgcc llvmgxx
        }
     }
 }
-
-