mirror of
https://github.com/mirror/make.git
synced 2026-08-31 03:38:03 +08:00
* New feature: -L option
* New function: $(info ...) * Disallow $(eval ...) to create prereq relationships inside command scripts (caused core dumps) * Try to allow more tests to succeed in Windows/DOS by sanitizing CRLF and \ * Various bug fixes and code cleanups (see the ChangeLog entry)
This commit is contained in:
@@ -67,7 +67,7 @@ run_make_test('
|
||||
/%: export foo := foo
|
||||
|
||||
/bar:
|
||||
@test "$(foo)" == "$$foo"
|
||||
@test "$(foo)" = "$$foo"
|
||||
', '', '');
|
||||
|
||||
|
||||
|
||||
@@ -158,4 +158,14 @@ $(eval $(FOO))
|
||||
', '', 'hello
|
||||
world');
|
||||
|
||||
|
||||
# We don't allow new target/prerequisite relationships to be defined within a
|
||||
# command script, because these are evaluated after snap_deps() and that
|
||||
# causes lots of problems (like core dumps!)
|
||||
# See Savannah bug # 12124.
|
||||
|
||||
run_make_test('deps: ; $(eval deps: foo)', '',
|
||||
'#MAKEFILE#:1: *** prerequisites cannot be defined in command scripts. Stop.',
|
||||
512);
|
||||
|
||||
1;
|
||||
|
||||
@@ -24,13 +24,10 @@ close(MAKEFILE);
|
||||
$answer = "mkdir -p dir/subdir\ntouch dir/subdir/file.b\ncp dir/subdir/file.b dir/subdir/file.a\n";
|
||||
&compare_output($answer,&get_logfile(1));
|
||||
|
||||
|
||||
# Test implicit rules
|
||||
|
||||
&touch('foo.c');
|
||||
run_make_test('
|
||||
foo: foo.o
|
||||
',
|
||||
run_make_test('foo: foo.o',
|
||||
'CC="@echo cc" OUTPUT_OPTION=',
|
||||
'cc -c foo.c
|
||||
cc foo.o -o foo');
|
||||
|
||||
47
tests/scripts/options/symlinks
Normal file
47
tests/scripts/options/symlinks
Normal file
@@ -0,0 +1,47 @@
|
||||
# -*-perl-*-
|
||||
|
||||
$description = "Test the -L option.";
|
||||
|
||||
$details = "Verify that symlink handling with and without -L works properly.";
|
||||
|
||||
# Only run these tests if the system sypports symlinks
|
||||
if (eval { symlink("",""); 1 }) {
|
||||
|
||||
# Set up a symlink sym -> dep
|
||||
# We'll make both dep and targ older than sym
|
||||
$pwd =~ m%/([^/]+)$%;
|
||||
$dirnm = $1;
|
||||
&utouch(-10, 'dep');
|
||||
&utouch(-5, 'targ');
|
||||
symlink("../$dirnm/dep", 'sym');
|
||||
|
||||
# Without -L, nothing should happen
|
||||
# With -L, it should update targ
|
||||
run_make_test('targ: sym ; @echo make $@ from $<', '',
|
||||
"#MAKE#: `targ' is up to date.");
|
||||
run_make_test(undef, '-L', "make targ from sym");
|
||||
|
||||
# Now update dep; in all cases targ should be out of date.
|
||||
&touch('dep');
|
||||
run_make_test(undef, '', "make targ from sym");
|
||||
run_make_test(undef, '-L', "make targ from sym");
|
||||
|
||||
# Now update targ; in all cases targ should be up to date.
|
||||
&touch('targ');
|
||||
run_make_test(undef, '', "#MAKE#: `targ' is up to date.");
|
||||
run_make_test(undef, '-L', "#MAKE#: `targ' is up to date.");
|
||||
|
||||
# Add in a new link between sym and dep. Be sure it's newer than targ.
|
||||
sleep(1);
|
||||
rename('dep', 'dep1');
|
||||
symlink('dep1', 'dep');
|
||||
|
||||
# Without -L, nothing should happen
|
||||
# With -L, it should update targ
|
||||
run_make_test(undef, '', "#MAKE#: `targ' is up to date.");
|
||||
run_make_test(undef, '-L', "make targ from sym");
|
||||
|
||||
rmfiles('targ', 'dep', 'sym', 'dep1');
|
||||
}
|
||||
|
||||
1;
|
||||
@@ -1,3 +1,5 @@
|
||||
# -*-perl-*-
|
||||
|
||||
$description = "The following test creates a makefile to test MAKE \n"
|
||||
."(very generic)";
|
||||
|
||||
@@ -26,7 +28,7 @@ $answer = "$mkpath\n$mkpath -f $makefile foo\n"
|
||||
|
||||
&run_make_with_options($makefile,"",&get_logfile,0);
|
||||
|
||||
&delete("foo");
|
||||
&rmfiles("foo");
|
||||
# COMPARE RESULTS
|
||||
&compare_output($answer,&get_logfile(1));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user