📄 pascal.exp
字号:
# Copyright 2007, 2008 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 3 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, see <http://www.gnu.org/licenses/>.load_lib libgloss.expset pascal_init_done 0# This procedure looks for a suitable pascal compiler# For now only GNU pascal compiler and Free Pascal compiler# are searched.# First, environment variable GPC is checked# if present, GPC compiler is assumed to be the value of# that environment variable.# Second, environment variable FPC is checked# if present, Free Pascal compiler is assumed to be the value of# that environment variable.# Third, gpc executable is searched using `which gpc` # Lastly, fpc executable is searched using `which fpc` # Using environment variable allows to force# which compiler is used in testsuite proc pascal_init {} { global pascal_init_done global pascal_compiler_is_gpc global pascal_compiler_is_fpc global gpc_compiler global fpc_compiler global env if { $pascal_init_done == 1 } { return } set pascal_compiler_is_gpc 0 set pascal_compiler_is_fpc 0 set gpc_compiler [transform gpc] set fpc_compiler [transform fpc] if ![is_remote host] { if { [info exists env(GPC)] } { set pascal_compiler_is_gpc 1 set gpc_compiler $env(GPC) verbose -log "Assuming GNU Pascal ($gpc_compiler)" } elseif { [info exists env(FPC)] } { set pascal_compiler_is_fpc 1 set fpc_compiler $env(FPC) verbose -log "Assuming Free Pascal ($fpc_compiler)" } elseif { [which $gpc_compiler] != 0 } { set pascal_compiler_is_gpc 1 verbose -log "GNU Pascal compiler found" } elseif { [which $fpc_compiler] != 0 } { set pascal_compiler_is_fpc 1 verbose -log "Free Pascal compiler found" } } set pascal_init_done 1} proc gpc_compile {source dest type options} { global gpc_compiler set add_flags "" if {$type == "object"} { append add_flags " -c" } if { $type == "preprocess" } { append add_flags " -E" } if { $type == "assembly" } { append add_flags " -S" } foreach i $options { if { $i == "debug" } { if [board_info $dest exists debug_flags] { append add_flags " [board_info $dest debug_flags]"; } else { append add_flags " -g" } } } set result [remote_exec host $gpc_compiler "-o $dest --automake $add_flags $source"] return $result}proc fpc_compile {source dest type options} { global fpc_compiler set add_flags "" if {$type == "object"} { append add_flags " -Cn" } if { $type == "preprocess" } { return "Free Pascal can not preprocess" } if { $type == "assembly" } { append add_flags " -al" } foreach i $options { if { $i == "debug" } { if [board_info $dest exists debug_flags] { append add_flags " [board_info $dest debug_flags]"; } else { append add_flags " -g" } } } set result [remote_exec host $fpc_compiler "-o$dest $add_flags $source"] return $result}proc gdb_compile_pascal {source dest type options} { global pascal_init_done global pascal_compiler_is_gpc global pascal_compiler_is_fpc if { $pascal_init_done == 0 } { pascal_init } if { $pascal_compiler_is_fpc == 1 } { set result [fpc_compile $source $dest $type $options] } elseif { $pascal_compiler_is_gpc == 1 } { set result [gpc_compile $source $dest $type $options] } else { unsupported "No pascal compiler found" return "No pascal compiler. Compilation failed." } if ![file exists $dest] { unsupported "Pascal compilation failed: $result" return "Pascal compilation failed." }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -