Portability enhancements for Mac OSX.

Don't dup stdout into stderr in the test suite.
Don't rely on $port_type eq "UNIX" to mean case-preserving.
Check against the real output of ar when creating archives.
This commit is contained in:
Paul Smith
2013-09-21 18:47:26 -04:00
parent 300d1296fb
commit 7e77685bc3
4 changed files with 41 additions and 26 deletions

View File

@@ -11,9 +11,13 @@ exists $FEATURES{archives} or return -1;
# Create some .o files to work with
utouch(-60, qw(a1.o a2.o a3.o));
# Some versions of ar print different things on creation. Find out.
my $created = `ar rv libxx.a a1.o 2>&1`;
unlink('libxx.a');
# Very simple
run_make_test('all: libxx.a(a1.o)',
'', "ar rv libxx.a a1.o\nar: creating libxx.a\na - a1.o\n");
'', "ar rv libxx.a a1.o\n$created");
# Multiple .o's. Add a new one to the existing library
run_make_test('all: libxx.a(a1.o a2.o)',

View File

@@ -10,32 +10,33 @@ open(MAKEFILE,"> $makefile");
print MAKEFILE "FIRST: ; \@echo It chose GNUmakefile\n";
close(MAKEFILE);
# DOS/WIN32 platforms preserve case, but Makefile is the same file as makefile.
# Just test what we can here (avoid Makefile versus makefile test).
if ($port_type eq 'UNIX') {
# Create another makefile called "makefile"
open(MAKEFILE,"> makefile");
print MAKEFILE "SECOND: ; \@echo It chose makefile\n";
close(MAKEFILE);
}
# Create another makefile called "Makefile"
open(MAKEFILE,"> Makefile");
print MAKEFILE "THIRD: ; \@echo It chose Makefile\n";
# Create another makefile called "makefile"
open(MAKEFILE,"> makefile");
print MAKEFILE "SECOND: ; \@echo It chose makefile\n";
close(MAKEFILE);
# DOS/WIN32/MacOSX platforms are case-insensitive / case-preserving, so
# Makefile is the same file as makefile. Just test what we can here.
&run_make_with_options("","",&get_logfile);
&compare_output("It chose GNUmakefile\n",&get_logfile(1));
unlink $makefile;
if ($port_type eq 'UNIX') {
&run_make_with_options("","",&get_logfile);
&compare_output("It chose makefile\n",&get_logfile(1));
unlink "makefile";
my $case_sensitive = 0;
if (! -f 'Makefile') {
# Create another makefile called "Makefile"
$case_sensitive = 1;
open(MAKEFILE,"> Makefile");
print MAKEFILE "THIRD: ; \@echo It chose Makefile\n";
close(MAKEFILE);
}
&run_make_with_options("","",&get_logfile);
&compare_output("It chose Makefile\n",&get_logfile(1));
unlink "Makefile";
run_make_with_options("","",&get_logfile);
compare_output("It chose GNUmakefile\n",&get_logfile(1));
unlink($makefile);
run_make_with_options("","",&get_logfile);
compare_output("It chose makefile\n",&get_logfile(1));
unlink("makefile");
if ($case_sensitive) {
run_make_with_options("","",&get_logfile);
compare_output("It chose Makefile\n",&get_logfile(1));
unlink("Makefile");
}