Posted to tcl by hypnotoad at Tue Sep 06 17:14:19 GMT 2016view raw

  1. package require practcl
  2.  
  3. ::practcl::target all {
  4. depends {a b c}
  5. }
  6. ::practcl::target clean {
  7. }
  8. ::practcl::target a {
  9. depends b c
  10. filename a
  11. }
  12. ::practcl::target b {
  13. depends Makefile.b
  14. }
  15. ::practcl::target Makefile.b {
  16. filename Makefile.b
  17. }
  18. ::practcl::target c {
  19. filename c
  20. }
  21. ::practcl::trigger {*}$argv
  22.  
  23. if $make(clean) {
  24. foreach file {a b c d e f Makefile.b} {
  25. if {[file exists $file]} { file delete -force $file }
  26. }
  27. }
  28.  
  29. if $make(a) {
  30. ::practcl::cat {b c} a
  31. }
  32. if $make(Makefile.b) {
  33. set fout [open Makefile.b w]
  34. puts $fout "b: d e f
  35. \tcat d e f > b.new
  36. \techo test:B >> b.new
  37. \tmv b.new b'
  38.  
  39. d:
  40. \techo test:D > d
  41. \tsleep 10
  42.  
  43. e:
  44. \ttest:E > e
  45. \tsleep 10
  46.  
  47. f:
  48. \techo test:F > f
  49. \tsleep 10"
  50. close $fout
  51. }
  52.  
  53. if $make(b) {
  54. domake [pwd] -f Makefile.b b
  55. }
  56. if $make(c) {
  57. set fout [open $target(c) w]
  58. puts $fout "test:C"
  59. close $fout
  60. after 10000
  61. }