#                                                                    -*-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 
  -1;
} else {

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

  # 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("../$dirname/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;
}
