diff --git a/bin/mktreeopt.pike b/bin/mktreeopt.pike
index f6264ee37af150731dd7a56a291797a28613c007..e97b2cb8a2e6e0fc5149c0b6480f9427d05b43b6 100644
--- a/bin/mktreeopt.pike
+++ b/bin/mktreeopt.pike
@@ -1,5 +1,5 @@
 /*
- * $Id: mktreeopt.pike,v 1.9 1999/11/08 23:51:51 grubba Exp $
+ * $Id: mktreeopt.pike,v 1.10 1999/11/08 23:58:47 grubba Exp $
  *
  * Generates tree-transformation code from a specification.
  *
@@ -85,6 +85,16 @@
  *   // Code for ANY-ANY
  */
 
+constant header =
+"/* Tree transformation code.\n"
+" *\n"
+" * This file was generated from %O by\n"
+" * $Id: mktreeopt.pike,v 1.10 1999/11/08 23:58:47 grubba Exp $\n"
+" *\n"
+" * Do NOT edit!\n"
+" */\n"
+"\n";
+
 mapping(string: mixed) rules = ([]);
 
 void fail(string msg, mixed ... args)
@@ -903,7 +913,7 @@ int main(int argc, array(string) argv)
     }
   }
 
-  string result = generate_code();
+  string result = sprintf(header, fname) + generate_code();
 
   object dest = Stdio.File();