#                                                                    -*-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

exists $FEATURES{'check-symlink'} or return -1;

use File::Spec;

# Set up a symlink sym -> dep
# We'll make both dep and targ older than sym
&utouch(-10, 'dep');
&utouch(-5, 'targ');

my $dirnm = (File::Spec->splitdir($testpath))[-1];
my $dep = File::Spec->catfile(File::Spec->updir(), $dirnm, 'dep');
symlink($dep, 'sym') or die "Cannot create symlink sym -> $dep\n";

# 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');

# Check handling when symlinks point to non-existent files.  Without -L we
# should get an error: with -L we should use the timestamp of the symlink.

symlink("../$dirnm/dep", 'sym');
run_make_test('targ: sym ; @echo make $@ from $<', '',
              "#MAKE#: *** No rule to make target 'sym', needed by 'targ'.  Stop.", 512);

run_make_test('targ: sym ; @echo make $@ from $<', '-L',
              'make targ from sym');


rmfiles('targ', 'sym');

1;
