summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Forney <mforney@mforney.org>2017-08-21 00:53:08 -0700
committerMichael Forney <mforney@mforney.org>2017-10-23 21:43:52 -0700
commit224b5fdbf9659815321b9bd94de7839d500dd760 (patch)
tree578fb221d038f63f9cb32d1ae1bcd43295862030
parent7c4274cfb305a52296f0f03113f9bdabf3cd0aa4 (diff)
Add mechanism to probe for toolchain features
-rw-r--r--gen.lua1
-rw-r--r--probe/gen.lua3
-rw-r--r--rules.ninja3
-rw-r--r--scripts/probe.rc7
4 files changed, 14 insertions, 0 deletions
diff --git a/gen.lua b/gen.lua
index 77431aaa..bc11b49e 100644
--- a/gen.lua
+++ b/gen.lua
@@ -20,6 +20,7 @@ include 'rules.ninja'
toolchain 'target'
+subgen 'probe'
subgen 'pkg'
subgen 'src'
diff --git a/probe/gen.lua b/probe/gen.lua
new file mode 100644
index 00000000..641443d1
--- /dev/null
+++ b/probe/gen.lua
@@ -0,0 +1,3 @@
+local function probe(var)
+ build('probe', '$outdir/'..var, '$dir/'..var, {var=var})
+end
diff --git a/rules.ninja b/rules.ninja
index 19458c89..8d02c75d 100644
--- a/rules.ninja
+++ b/rules.ninja
@@ -39,6 +39,9 @@ rule mc
rule muse
command = muse $museflags -o $out $in
+rule probe
+ command = rc ./scripts/probe.rc $var $cc $cflags $ldflags -o /dev/null -x c $in >$out.tmp && mv $out.tmp $out
+
# misc tools
rule touch
command = touch $out
diff --git a/scripts/probe.rc b/scripts/probe.rc
new file mode 100644
index 00000000..aba1099d
--- /dev/null
+++ b/scripts/probe.rc
@@ -0,0 +1,7 @@
+flag e +
+
+var=$1
+shift
+if($* >[2]/dev/null)
+ echo '#define '$var' 1'
+status=()