summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Forney <mforney@mforney.org>2016-07-02 15:57:14 -0700
committerMichael Forney <mforney@mforney.org>2016-07-02 21:40:25 -0700
commit07e26ae6c04733909fc8577c9d37fd70ce87e687 (patch)
treed066976235be45f1cfb75c443f7a3f255eb0b09b
parent81ecddb2551467519b2afe0869d4bdb872ab9ac2 (diff)
Add support for nasm sources
-rw-r--r--ninja.rc23
-rw-r--r--rules.ninja3
2 files changed, 19 insertions, 7 deletions
diff --git a/ninja.rc b/ninja.rc
index d8815072..6939f317 100644
--- a/ninja.rc
+++ b/ninja.rc
@@ -55,17 +55,21 @@ fn cflags {
set cflags '$cflags' $*
}
-fn cc {
- src=$1 obj=$src.o {
- shift
+fn compile {
+ rule=$1 src=$2 obj=$src.o {
+ shift 2
if(! ~ $src '$'*) {
src='$srcdir'/$src
obj='$outdir'/$obj
}
- build $obj cc $src $*
+ build $obj $rule $src $*
}
}
+fn cc {
+ compile cc $*
+}
+
fn link {
out='$outdir'/$1 objs=() {
shift
@@ -96,11 +100,16 @@ fn objects {
shift 2
}
for(src) {
- if(~ $src *.[cS] *.cc *.cpp) {
- cc $src $deps
+ switch($src) {
+ case *.[cS] *.cc *.cpp
+ compile cc $src $deps
+ obj=$src.o
+ case *.asm
+ compile nasm $src $deps
obj=$src.o
+ case *
+ obj=$src
}
- if not obj=$src
objs=($objs $obj)
}
$rule $out $objs
diff --git a/rules.ninja b/rules.ninja
index ebb8a983..b4c05116 100644
--- a/rules.ninja
+++ b/rules.ninja
@@ -17,6 +17,9 @@ rule link
rule ar
command = rm -f $out && $ar crs $out $in
+rule nasm
+ command = nasm $nasmflags -o $out $in
+
# misc tools
rule touch
command = touch $out