| # find_sim -- find a usable simulator |
| # This proc is local to this file and is used to locate a simulator to use. |
| # First we see if SIM=foo was specified on the command line. |
| # Otherwise we search the build tree, then $PATH. |
| |
| proc find_sim { target_alias sim_dir sim_name } { |
| global tool_root_dir; |
| global SIM |
| |
| if [info exists SIM] { |
| return $SIM |
| } |
| |
| if [is_remote host] { |
| if ![board_info host exists no_transform_name] { |
| return ${target_alias}-${sim_name}; |
| } else { |
| return ${sim_name}; |
| } |
| } |
| |
| # We have to search because tool_root_dir may actually point to that blasted |
| # "target" subdirectory. |
| set try [lookfor_file ${tool_root_dir} sim/${sim_dir}/${sim_name}]; |
| if { $try != "" } { |
| return $try; |
| } |
| return ${target_alias}-${sim_name}; |
| } |
| |
| proc setup_sim { subdir_name } { |
| global target_alias; |
| global tool_root_dir; |
| global board; |
| |
| if [info exists target_alias] { |
| set tmp $target_alias; |
| } else { |
| if [board_info $board exists target_install] { |
| set tmp [lindex [board_info $board target_install] 0]; |
| } |
| } |
| |
| if ![board_info $board exists sim] { |
| set_board_info sim [find_sim $tmp $subdir_name run]; |
| } |
| |
| verbose "Using simulator [board_info $board sim]\n" |
| } |
| |
| set_board_info is_simulator 1; |