summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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