1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-16 08:10:43 -08:00
emacs/mps/qa/test/script/compile
Richard Tucker c0c8adfcb3 Add timing
Copied from Perforce
 Change: 18872
 ServerID: perforce.ravenbrook.com
1997-10-13 15:55:40 +01:00

108 lines
2.4 KiB
Perl

#!/usr/local/perl
#
# provides subroutines to compile or compile and link
# tests and test libraries.
#
# In future, this will probably do some clever stuff
# depending on the platform &c, but for now it's just
# what works on SunOS.
#
1;
%plat_link = ();
$plat_link{"sol2.4_sparc"} = "-lm";
sub compiler_settings {
if ($PLATFORM =~ "^nt_") {
$cc_command = "cl";
$cc_opts = "/DWIN32 /D_WINDOWS /W3 /Z7 /DMMQA_VERS_$INTERFACE_VERSION";
$cc_link = "$obj_dir/platform.o";
$cc_include = "/I$testlib_dir /I$MPS_INCLUDE_DIR";
$cc_conly = "/c";
$cc_obj = "/Fo";
$cc_exe = "/Fe";
$try_command = "";
} elsif ($PLATFORM =~ "^(sun|sol)") {
if ($PLATFORM =~ "^sol") {
$cc_link = "$obj_dir/platform.o -lm";
} else {
$cc_link = "$obj_dir/platform.o";
}
$cc_command = "gcc";
$cc_opts = "-ansi -pedantic -Wall -Wstrict-prototypes ".
"-Winline -Waggregate-return -Wnested-externs -Wcast-qual ".
"-Wshadow -Wmissing-prototypes -Wredundant-decls -Wcast-align ".
"-O -g -ggdb3 -DMMQA_VERS_$INTERFACE_VERSION";
$cc_include = "-I$testlib_dir -I$MPS_INCLUDE_DIR";
$cc_conly = "-c";
$cc_obj = "-o ";
$cc_exe = "-o ";
$try_command = "sh -c ";
} else {
die "Sorry: I don't know how to compile on ".$PLATFORM."\n";
}
}
sub compile {
local($srcfile, $objfile) = @_;
&compiler_settings;
$command = "$cc_command $cc_conly $cc_opts $cc_obj$objfile ".
"$srcfile $cc_include";
if (system($command)) {
return 0;
} else {
return 1;
}
}
sub compile_and_link {
local($srcfile, $exefile, $linkfiles) = @_;
&compiler_settings;
$command = "$cc_command $cc_opts $cc_exe$exefile $srcfile ".
"$linkfiles $MPS_LINK_OBJ $cc_link $cc_include";
if (system($command)) {
return 0;
} else {
return 1;
}
}
sub try_test {
local ($exefile, $tim0) = @_;
$tim0 = time;
system($try_command.$exefile);
$seconds = time-$tim0;
print "$seconds second";
unless ($seconds == 1) {print "s"};
print ".\n";
}
sub run_test {
local ($exefile) = @_;
local ($tempfile) = "$obj_dir/tmp_f";
system($try_command.$exefile." >> ".$tempfile."1 2> ".$tempfile."2");
system("cat ".$tempfile."1 ".$tempfile."2 | ".$tempfile."3");
die "*** need to munge $tempfile3 into results format";
open(OUTPUT, "tmp_output");
&filevars(OUTPUT);
# *** need new version of this here!
close(OUTPUT);
if (&passfail()) {
print "RESULT: PASS\n";
} else {
print "RESULT: FAIL\n";
}
}