# Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  

# Define libmudflap callbacks for dg.exp.
# This file is a copy of libstdc++-v3's dejagnu driver, with minor changes.

# Useful hook:  if ${hostname}_init exists, it will be called, almost
# the last thing before testing begins.  This can be defined in, e.g.,
# ~/.dejagnurc or $DEJAGNU.

proc load_gcc_lib { filename } {
    global srcdir
    load_file $srcdir/../../gcc/testsuite/lib/$filename
}

load_lib mfdg.exp
load_lib libgloss.exp
load_gcc_lib target-libpath.exp

proc libmudflap-init { language } {
    global env
    global srcdir outdir blddir objdir tool_root_dir
    global cxx cxxflags
    global includes
    global libs
    global gluefile wrap_flags
    global ld_library_path

    switch $language {
        "c" { set cxx [find_gcc] }
        "c++" { set cxx [find_g++] }
        default { error "bad language code $language"; return }
    }

    verbose -log "libmudflap-init $cxx"

    set blddir [lookfor_file [get_multilibs] libmudflap]
    set cxxblddir [lookfor_file [get_multilibs] libstdc++-v3]
    set cxxflags_file "${cxxblddir}/scripts/testsuite_flags"

    # By default, we assume we want to run program images.
    global dg-do-what-default
    set dg-do-what-default run

    # set LD_LIBRARY_PATH so that libgcc_s, libstdc++ binaries can be found.
    # locate libgcc.a so we don't need to account for different values of
    # SHLIB_EXT on different platforms
    set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a]
    if {$gccdir != ""} {
	set gccdir [file dirname $gccdir]
    }

    set ld_library_path "."
    append ld_library_path ":${gccdir}"
    append ld_library_path ":${cxxblddir}/src/.libs"
    if {[is_remote host] == 0} {
	foreach i "[exec ${gccdir}/xgcc --print-multi-lib]" {
	    set mldir ""
	    regexp -- "\[a-z0-9=/\.-\]*;" $i mldir
	    set mldir [string trimright $mldir "\;@"]
	    if { "$mldir" == "." } {
		continue
	    }
	    if { [llength [glob -nocomplain ${gccdir}/${mldir}/libgcc_s*.so.*]] >= 1 } {
		append ld_library_path ":${gccdir}/${mldir}"
	    }
	}
    }
    append ld_library_path ":${blddir}/.libs"

    set libs "-L${blddir}/.libs"
    set cxxflags "-ggdb3 -DDEBUG_ASSERT"
    set includes "-I${srcdir} -I${srcdir}/.. -I.."

    if {$language == "c++"} {
        if {[file exists $cxxflags_file]} then {
            set includes "${includes} [exec sh $cxxflags_file --build-includes]"
            set cxxflags "${cxxflags} [exec sh $cxxflags_file --cxxflags]"
            # c++ libs are included by --build-cxx below
            set cxx "[exec sh $cxxflags_file --build-cxx]"
        } else {
            lappend libs "-L${cxxblddir}src/.libs"
            lappend includes "-I../../libstdc++-v3/include"
        }
    }

    global mfconfig_libs
    global add_flags
    append add_flags " $mfconfig_libs"

    set_ld_library_path_env_vars
    if [info exists env(LD_LIBRARY_PATH)] {
	verbose -log "LD_LIBRARY_PATH = $env(LD_LIBRARY_PATH)"
    }

    if { [target_info needs_status_wrapper]!=""} {
      file delete ${objdir}/testglue.o;
      set gluefile ${objdir}/testglue.o;
      set result [build_wrapper $gluefile];
      if { $result != "" } {
          set gluefile [lindex $result 0];
          set wrap_flags [lindex $result 1];
      } else {
          unset gluefile
      }
    }
}

proc libmudflap-dg-test { prog do_what extra_tool_flags } {
    # Set up the compiler flags, based on what we're going to do.

    switch $do_what {
	"preprocess" {
	    set compile_type "preprocess"
	    set output_file "[file rootname [file tail $prog]].i"
	}
	"compile" {
	    set compile_type "assembly"
	    set output_file "[file rootname [file tail $prog]].s"
	}
	"assemble" {
	    set compile_type "object"
	    set output_file "[file rootname [file tail $prog]].o"
	}
	"link" {
	    set compile_type "executable"
	    set output_file "./[file rootname [file tail $prog]].exe"
	}
	"run" {
	    set compile_type "executable"
	    # FIXME: "./" is to cope with "." not being in $PATH.
	    # Should this be handled elsewhere?
	    # YES.
	    set output_file "./[file rootname [file tail $prog]].exe"
	    # This is the only place where we care if an executable was
	    # created or not.  If it was, dg.exp will try to run it.
	    remote_file build delete $output_file;
	}
	default {
	    perror "$do_what: not a valid dg-do keyword"
	    return ""
	}
    }
    set options ""
    if { $extra_tool_flags != "" } {
	lappend options "additional_flags=$extra_tool_flags"
    }

    global mfconfig_libs
    lappend options "libs=$mfconfig_libs"

    set comp_output [libmudflap_target_compile "$prog" "$output_file" "$compile_type" $options];
    set comp_output [prune_gcc_output $comp_output ];

    return [list $comp_output $output_file]
}


proc libmudflap_target_compile { source dest type options } {
    global gluefile 
    global wrap_flags
    global cxx
    global cxxflags
    global includes
    global libs
    global blddir

    if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } {
	lappend options "libs=${gluefile}"
	lappend options "ldflags=${wrap_flags}"
    }

    set cxx_final $cxx
    set cxxlibglossflags  [libgloss_link_flags]
    set cxx_final [concat $cxx_final $cxxlibglossflags]
    set cxx_final [concat $cxx_final $cxxflags]
    set cxx_final [concat $cxx_final $includes]
    set cxx_final [concat $cxx_final $libs]

    lappend options "compiler=$cxx_final"

    # Picks up the freshly-built testsuite library corresponding to the
    # multilib under test.
    lappend options "ldflags=-L${blddir}/testsuite"

    return [target_compile $source $dest $type $options]
}


# A bit sloppy...  Returns a list of source files (full pathnames) to
# compile.  We mimic the mkcheck script in that the first time this is run,
# all existing files are listed in "testsuite_files" in the output
# directory.  Subsequent runs pull the list from that file, allowing users
# to trim the list down to problematic tests.
### This is supposed to be done via RUNTESTFLAGS, but that doesn't work.
proc libmudflap-list-sourcefiles { } {
    global srcdir
    global outdir

    set files_file "${outdir}/testsuite_files"
    set sfiles ""
    if { [file exists $files_file] } {
	set f [open $files_file]
	while { ! [eof $f] } {
	    set t [gets $f]
	    if { [string length "$t"] != 0 } {
		lappend sfiles ${srcdir}/${t}
	    }
	}
    } else {
	set f [open $files_file "w"]
	set where_we_were [pwd]
	cd $srcdir
	foreach s [lsort [glob -nocomplain "*/*.cc" "*/*/*.cc" "{,*/}*/*/*/*.cc" ]] {
	    lappend sfiles ${srcdir}/${s}
	    puts $f $s
	}
	cd $where_we_were
    }
    close $f

    # Disable wchar_t tests if library not configured to support
    # wchar_t testing. 
    set wchar_file "${outdir}/testsuite_wchar_t"    
    if { [file exists $wchar_file] } {
	return $sfiles
    } else {
	# Remove wchar_t tests files from list.
	set res {}
	foreach w $sfiles {
	    if [regexp "wchar_t" $w] {
		verbose -log "element out list is $w"
	    } else {
		verbose -log "element in list is $w"
		lappend res $w
	    }
	}
	return $res
    }
}


proc prune_gcc_output { text } {
    regsub -all {(^|\n)[^\n]*ld: warning: libgcc_s[^\n]*not found[^\n]*try using[^\n]*} $text "" text
    regsub -all {(^|\n)[^\n]*In function.*pthread_create[^\n]*} $text "" text
    regsub -all {(^|\n)[^\n]*the use of .pthread.*is deprecated[^\n]*} $text "" text
    regsub -all {(^|\n)[^\n]*Dwarf Error:.*FORM value: 14[^\n]*} $text "" text
    regsub -all {(^|\n)[^\n]*In function[^\n]*} $text "" text
    regsub -all {(^|\n)[^\n]*Using.*in statically linked applications requires[^\n]*} $text "" text

    return $text
}
