mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-13 23:10:26 -08:00
242 lines
5.8 KiB
Perl
242 lines
5.8 KiB
Perl
#!/usr/local/perl
|
|
# $HopeName$
|
|
#
|
|
# Settings that depend on the platform, including C compiler and command syntax
|
|
#
|
|
# And the %identify hash of useful information
|
|
# to record in the test results.
|
|
#
|
|
|
|
1;
|
|
|
|
#
|
|
# Set lots of variables correctly, depending on the platform
|
|
# (which was determined in 'options')
|
|
#
|
|
# Currently, it should work correctly on NT, Solaris, Linux, MacOS X.
|
|
#
|
|
|
|
sub platform_settings {
|
|
if ($PLATFORM =~ "^nt_") {
|
|
&settings_nt();
|
|
if ($PLATFORM =~ "^nt_x86_cap") {
|
|
&settings_nt_cap();
|
|
} elsif ($PLATFORM =~ "^nt_x86_coff") {
|
|
&settings_nt_coff();
|
|
}
|
|
} elsif ($PLATFORM =~ "^SunOS") {
|
|
&settings_unix();
|
|
if ($PLATFORM =~ "sos8gp") {
|
|
&settings_gprof();
|
|
}
|
|
} elsif ($PLATFORM =~ "^Linux") {
|
|
&settings_unix();
|
|
&settings_linux();
|
|
} elsif ($PLATFORM =~ "^Mac_OS_10" || $PLATFORM =~ "^Darwin_") {
|
|
&settings_unix();
|
|
&settings_macosx();
|
|
} elsif ($PLATFORM =~ "__unix") {
|
|
&logcomment("I don't know anything specific about $PLATFORM --");
|
|
&logcomment("using generic unix/gcc settings.");
|
|
&settings_unix();
|
|
} else {
|
|
die "Sorry: I don't know how to use ".$PLATFORM."\n";
|
|
}
|
|
}
|
|
|
|
|
|
sub settings_nt {
|
|
$dirsep = "\\";
|
|
$cc_command = "cl";
|
|
# following line used to include /DMMQA_VERS_$MPS_INTERFACE_VERSION
|
|
$cc_opts = "/nologo /DWIN32 /D_WINDOWS /W3 /Zi /Oy- /MD /DMMQA_PROD_$MPS_PRODUCT";
|
|
$cc_link = "$obj_dir/platform.obj";
|
|
$cc_link_opts = "/link /NODEFAULTLIB:LIBCMT /NODEFAULTLIB:LIBCMTD /NODEFAULTLIB:LIBC /NODEFAULTLIB:LIBCD /NODEFAULTLIB:MSVCRTD /DEFAULTLIB:MSVCRT /debugtype:both /pdb:none /debug:full";
|
|
$cc_include = "/I$testlib_dir /I$MPS_INCLUDE_DIR /I$obj_dir";
|
|
$cc_def = "/D";
|
|
$cc_defeq = "=";
|
|
$cc_preonly = "/EP";
|
|
$cc_conly = "/c";
|
|
$cc_obj = "/Fo";
|
|
$cc_exe = "/Fe";
|
|
$cc_objandexe = 1;
|
|
$obj_suffix = ".obj";
|
|
$try_command = "";
|
|
$catcommand = "$script_dir/ntx86bin/cat.exe";
|
|
$comwrap = "\"";
|
|
$comwrapend = "\"";
|
|
$stdout_red = ">";
|
|
$stdout_dup = "| $script_dir/ntx86bin/tee.exe";
|
|
$stdin_red = "<";
|
|
$stdboth_red = ">%s 2>&1";
|
|
$quotestring = \&nt_quotestring;
|
|
$platmailfile = \&nt_mailfile;
|
|
$stringscommand = "$script_dir/ntx86bin/strings.exe -20 -c";
|
|
$preprocommand = "$cc_command /nologo $cc_preonly";
|
|
$exesuff = ".exe";
|
|
}
|
|
|
|
sub settings_nt_cap {
|
|
$cc_opts = "$cc_opts /Gh";
|
|
$cc_link = "$cc_link CAP.lib";
|
|
$cc_link_opts = "/link /NODEFAULTLIB:LIBCMT /NODEFAULTLIB:LIBCMTD /NODEFAULTLIB:LIBC /NODEFAULTLIB:LIBCD /NODEFAULTLIB:MSVCRTD /DEFAULTLIB:MSVCRT /debug:full /debugtype:both /pdb:none";
|
|
}
|
|
|
|
sub settings_nt_coff {
|
|
$cc_link_opts = "/link /NODEFAULTLIB:LIBCMT /NODEFAULTLIB:LIBCMTD /NODEFAULTLIB:LIBC /NODEFAULTLIB:LIBCD /NODEFAULTLIB:MSVCRTD /DEFAULTLIB:MSVCRT /debugtype:coff /debug:full";
|
|
}
|
|
|
|
|
|
sub settings_unix {
|
|
$dirsep = "/";
|
|
$cc_link = "$obj_dir/platform.o -lm";
|
|
$cc_link_opts = "-z muldefs";
|
|
$cc_command = "gcc";
|
|
$cc_opts = "-ansi -pedantic -Wall -Wstrict-prototypes ".
|
|
"-Winline -Waggregate-return -Wnested-externs -Wcast-qual ".
|
|
"-Wshadow -Wmissing-prototypes -Wcast-align ".
|
|
"-O -g -ggdb3 ".
|
|
"-DMMQA_PROD_$MPS_PRODUCT";
|
|
$cc_include = "-I$testlib_dir -I$MPS_INCLUDE_DIR -I$obj_dir";
|
|
$cc_def = "-D";
|
|
$cc_defeq = "=";
|
|
$cc_preonly = "-E";
|
|
$cc_conly = "-c";
|
|
$cc_obj = "-o ";
|
|
$cc_exe = "-o ";
|
|
$cc_objandexe = 0;
|
|
$obj_suffix = ".o";
|
|
$try_command = "sh -c ";
|
|
$catcommand = "cat";
|
|
$comwrap = "sh -c \"ulimit -c 0; ";
|
|
$comwrapend = "\"";
|
|
$stdout_red = ">";
|
|
$stdout_dup = "| tee";
|
|
$stdin_red = "<";
|
|
$stdboth_red = ">%s 2>&1";
|
|
$quotestring = \&unix_quotestring;
|
|
$platmailfile = \&unix_mailfile;
|
|
$stringscommand = "strings";
|
|
$preprocommand = "$cc_command $cc_preonly";
|
|
$exesuff = "";
|
|
}
|
|
|
|
|
|
sub settings_gprof {
|
|
$cc_opts = "-pg ".$cc_opts;
|
|
}
|
|
|
|
|
|
sub settings_linux {
|
|
$cc_link = $cc_link . " -lpthread";
|
|
}
|
|
|
|
|
|
sub settings_macosx {
|
|
$cc_command = "cc";
|
|
$cc_link = "$obj_dir/platform.o";
|
|
$cc_link_opts = "-Xlinker -m";
|
|
# See comments in impl.gmk.xcppgc and impl.h.osxc
|
|
$cc_opts =~ s/-Wstrict-prototypes//;
|
|
$cc_opts .= " -Wno-unused -Wno-long-long -D__inline__=";
|
|
$stdboth_red = ">&%s";
|
|
$preprocommand = "$cc_command $cc_preonly";
|
|
}
|
|
|
|
|
|
#
|
|
# Wrapping up strings to quote them in system calls
|
|
#
|
|
|
|
sub nt_quotestring {
|
|
return $_[0];
|
|
}
|
|
|
|
sub unix_quotestring {
|
|
local ($_) = @_;
|
|
s/'/'\''/;
|
|
return "'".$_."'";
|
|
}
|
|
|
|
#
|
|
# Subroutines to send email (for archiving test results).
|
|
#
|
|
|
|
sub nt_mailfile {
|
|
local ($file, $to, $subj, $from) = @_;
|
|
|
|
if (exists $ENV{"USERNAME"}) {
|
|
$from = $ENV{"USERNAME"};
|
|
} else {
|
|
$from = "mm-qa";
|
|
}
|
|
&mysystem(
|
|
"$script_dir/ntx86bin/blat.exe ".
|
|
"$file -server mailhost -f $from -t $to -s \"$subj\" -q");
|
|
}
|
|
|
|
sub unix_mailfile {
|
|
local ($file, $to, $subj) = @_;
|
|
|
|
&mysystem(
|
|
"{ echo 'To: $to'; echo 'Subject: $subj'; cat $file; } | /usr/lib/sendmail -t");
|
|
}
|
|
|
|
|
|
#
|
|
# %identify records useful information to present in the test results
|
|
# &identify sets it up.
|
|
#
|
|
|
|
sub identify {
|
|
%identify = ();
|
|
if ($PLATFORM =~ /^nt/) {
|
|
&identify_nt;
|
|
} elsif ($PLATFORM =~ /__unix/) {
|
|
&identify_unix;
|
|
}
|
|
$identify{"time"} = localtime;
|
|
$identify{"harness_version"} = $HARNESS_VERSION;
|
|
}
|
|
|
|
|
|
sub envvar {
|
|
if (exists $ENV{$_[1]}) {
|
|
$identify{$_[0]} = $ENV{$_[1]};
|
|
}
|
|
}
|
|
|
|
sub comvar {
|
|
my ($var, $com, $pat) = @_;
|
|
if (open(COM, $com." 2>&1 |")) {
|
|
while (<COM>) {
|
|
chop;
|
|
if ($pat eq "" || /$pat/) {
|
|
$identify{$_[0]} = $_;
|
|
last;
|
|
}
|
|
}
|
|
close(COM);
|
|
}
|
|
}
|
|
|
|
|
|
sub identify_nt {
|
|
&envvar("machine", "COMPUTERNAME");
|
|
&envvar("user", "USERNAME");
|
|
&envvar("OS", "OS");
|
|
&envvar("arch", "PROCESSOR_ARCHITECTURE");
|
|
&comvar("c_version", "cl /?", "");
|
|
}
|
|
|
|
|
|
sub identify_unix {
|
|
&comvar("machine", "uname -n", "");
|
|
&comvar("user", "who am i", "");
|
|
if (exists $identify{"user"}) {
|
|
$identify{"user"} =~ s/\s.*//;
|
|
}
|
|
&comvar("c_version", "gcc -v", "version");
|
|
&comvar("OS", "uname", "");
|
|
&comvar("arch", "uname -a", "");
|
|
}
|