summaryrefslogtreecommitdiff
path: root/core/libfirm
diff options
context:
space:
mode:
authorMichael Forney <mforney@mforney.org>2016-04-10 02:58:52 -0700
committerMichael Forney <mforney@mforney.org>2016-04-15 02:10:08 -0700
commitdbb513d4572e2eed5e540b7b7fb7e9c8f544cb04 (patch)
tree2260140732591d6ca455e493305884c21f063b3f /core/libfirm
parent5f753e71fa37011b9bf7bcec482fe4a4a904dc9e (diff)
Add some initial packages
Diffstat (limited to 'core/libfirm')
-rw-r--r--core/libfirm/gen.rc60
m---------core/libfirm/src0
2 files changed, 60 insertions, 0 deletions
diff --git a/core/libfirm/gen.rc b/core/libfirm/gen.rc
new file mode 100644
index 00000000..bbfcbee4
--- /dev/null
+++ b/core/libfirm/gen.rc
@@ -0,0 +1,60 @@
+cflags\
+ -I '$outdir' \
+ -I '$srcdir'/src/include/libfirm/adt\
+ -I '$srcdir'/src/include/libfirm\
+ -I '$srcdir'/src/ir/adt\
+ -I '$srcdir'/src/ir/ana\
+ -I '$srcdir'/src/ir/be/ia32\
+ -I '$srcdir'/src/ir/be\
+ -I '$srcdir'/src/ir/common\
+ -I '$srcdir'/src/ir/ident\
+ -I '$srcdir'/src/ir/ir\
+ -I '$srcdir'/src/ir/kaps\
+ -I '$srcdir'/src/ir/libcore\
+ -I '$srcdir'/src/ir/lower\
+ -I '$srcdir'/src/ir/lpp\
+ -I '$srcdir'/src/ir/opt\
+ -I '$srcdir'/src/ir/stat\
+ -I '$srcdir'/src/ir/tr\
+ -I '$srcdir'/src/ir/tv
+
+backends=( amd64 arm ia32 sparc TEMPLATE )
+
+rule irspec '$python $srcdir/src/scripts/gen_ir.py $srcdir/src/scripts/ir_spec.py $in >$out.tmp && mv $out.tmp $out'
+rule new_nodes '$perl $srcdir/src/ir/be/scripts/generate_new_opcodes.pl $in $outdir'
+rule regalloc_if '$perl $srcdir/src/ir/be/scripts/generate_regalloc_if.pl $in $outdir'
+rule emitter '$perl $srcdir/src/ir/be/scripts/generate_emitter.pl $in $outdir'
+
+cd src
+
+genhdrs=( nodes.h gen_irnode.h gen_proj_names.h )
+gensrcs=( gen_irnode.c gen_irio.c )
+for(gensrc in $genhdrs $gensrcs) {
+ build '$outdir'/$gensrc irspec '$srcdir'/src/scripts/templates/$gensrc
+}
+
+srcs=( ir/*/*.c '$outdir'/$gensrcs )
+objs=$srcs.o
+for(src in $srcs) cc $src '||' '$outdir/stamp'
+
+stampdeps=( $genhdrs )
+
+for(backend in $backends) {
+ types=( emitter regalloc_if new_nodes )
+ srcs=( ir/be/$backend/*.c '$outdir'/gen_$backend^_$types.c )
+ objs=( $objs $srcs.o )
+ stampdeps=( $stampdeps gen_$backend^_$types.h )
+ {
+ cflags -I '$srcdir'/src/ir/be/$backend
+ for(type in $types) {
+ outs=( '$outdir'/gen_$backend^_$type.^(c h) )\
+ build $"outs $type '$srcdir'/src/ir/be/$backend/$backend^_spec.pl
+ }
+ for(src in $srcs) cc $src '||' '$outdir/stamp'
+ } >$outdir/$backend.ninja
+ echo 'subninja $outdir'/$backend.ninja
+}
+
+ar libfirm.a $objs
+
+stamp $stampdeps
diff --git a/core/libfirm/src b/core/libfirm/src
new file mode 160000
+Subproject 03dcab7e4809422fd8c7ccf1802cd715242ef0b