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

# Apparently the Windows port of Perl reports that it does support symlinks
# (in that the symlink() function doesn't fail) but it really doesn't, so
# check for it explicitly.

if ($port_type eq 'W32' || !( eval { symlink("",""); 1 })) {
  # This test is N/A
  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');

$dirnm = (File::Spec->splitdir($cwddir))[-1];
symlink(File::Spec->catfile(File::Spec->updir(), $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');

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