- if _, err := os.Stat(tgt); err == nil {
- if err = writeDep(fdDep, Cwd, path.Join(up, tgt)); err != nil {
- return err
+ tgtAbs, err := filepath.Abs(tgt)
+ if err != nil {
+ panic(err)
+ }
+ cwd := Cwd
+ if DepCwd != "" && Cwd != DepCwd {
+ cwd = DepCwd
+ }
+ tgtDir := path.Join(cwd, DirPrefix)
+ tgtRel, err := filepath.Rel(tgtDir, tgtAbs)
+ if err != nil {
+ panic(err)
+ }
+ if _, errStat := os.Stat(tgt); errStat == nil {
+ err = writeDep(fdDep, tgtDir, tgtRel)
+ } else {
+ trace(CDebug, "ifchange: %s <- %s (non-existing)", fdDep.Name(), tgtRel)
+ fields := []recfile.Field{
+ {Name: "Type", Value: DepTypeIfchange},
+ {Name: "Target", Value: tgtRel},