summaryrefslogtreecommitdiff
path: root/rules.ninja
diff options
context:
space:
mode:
authorMichael Forney <mforney@mforney.org>2016-10-29 13:28:03 -0700
committerMichael Forney <mforney@mforney.org>2016-10-30 13:44:58 -0700
commit92751409f7e9c403cbfeb503cc494279c712c9ab (patch)
tree3ed7108ac6f7115218bbaa3b8d444f3be81ccf7c /rules.ninja
parentdd45ede13ab186614e6db9d0c65c9b16858167f6 (diff)
Provide mechanism to track library dependencies
Now, ar/lib rules can list static libraries or other .d files. These (as well as the target library) are written to a file called $lib.d. link/exe rules can list these .d files, causing them to be flattened into an RSP file and appear on the command line as @$rsp. The rule to generate the dependency list files depends on the libraries they contain, so they also act as a stamp file for the dependencies. This gives us dependency management for free.
Diffstat (limited to 'rules.ninja')
-rw-r--r--rules.ninja5
1 files changed, 5 insertions, 0 deletions
diff --git a/rules.ninja b/rules.ninja
index 45821074..6ab2b0da 100644
--- a/rules.ninja
+++ b/rules.ninja
@@ -17,6 +17,11 @@ rule link
rule ar
command = rm -f $out && $ar crs $out $in
+rule lines
+ command = ln -f $rspfile $out
+ rspfile = $out.tmp
+ rspfile_content = $in_newline
+
rule nasm
command = nasm $nasmflags -o $out $in