-# Compile a source file to an object, generating pre-compiled headers and
-# dependencies. The pre-compiled headers are generated only if the system
-# includes change. This function is designed to be used as a command in a rule.
-# It takes one argument only, the type of file to compile (typically "c" or
-# "cpp"). What to compile and the output files are built using the automatic
-# variables from a rule. You can add non-propagated object-specific flags
-# defining a variable with the name of the target followed with ".EXTRA_FLAGS".
+# Compile a source file to an object, generating pre-compiled headers (if
+# $(GCH) is non-empty) and dependencies. The pre-compiled headers are generated
+# only if the system includes change. This function is designed to be used as
+# a command in a rule. The first argument is the type of file to compile
+# (typically "c" or "cpp"). What to compile and the output files are built
+# using the automatic variables from a rule. The second argument is the base
+# output directory (typically $O). You can add non-propagated object-specific
+# flags defining a variable with the name of the target followed with
+# ".EXTRA_FLAGS".
+#
+# XXX: The pre-compiled headers generation is not very useful if you include
+# local files using #include <...>, because the system headers detection
+# is a little simplistic now, it just parse the source file and all its
+# dependencies searching for lines starting with "#include <" and
+# extracting the included files from them.