summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Forney <mforney@mforney.org>2016-10-23 23:55:40 -0700
committerMichael Forney <mforney@mforney.org>2016-10-30 13:44:58 -0700
commit232d3f227c6eef2e2003a1e25786d20ed186e25f (patch)
treede59d498ed828265821855e3318b277754d36410
parent1e4272543281e050bb222945376a224a5ec9fd87 (diff)
Add waylandproto rule and helper
-rw-r--r--desktop/gen.rc2
-rw-r--r--desktop/wayland/gen.rc22
-rw-r--r--ninja.rc9
-rw-r--r--rules.ninja3
4 files changed, 21 insertions, 15 deletions
diff --git a/desktop/gen.rc b/desktop/gen.rc
index 1eb79be3..e10c250d 100644
--- a/desktop/gen.rc
+++ b/desktop/gen.rc
@@ -1,5 +1,3 @@
-rule wayland_proto 'wayland-scanner $type $in $out.tmp && mv $out.tmp $out'
-
subgen expat
subgen fontconfig
subgen freetype
diff --git a/desktop/wayland/gen.rc b/desktop/wayland/gen.rc
index 38a06db8..bbd76953 100644
--- a/desktop/wayland/gen.rc
+++ b/desktop/wayland/gen.rc
@@ -3,7 +3,7 @@ cflags\
-isystem '$builddir'/desktop/libffi/include\
-I include\
-I '$dir' \
- -I '$outdir'/include \
+ -I '$outdir'/include\
-I '$srcdir'/src
build '$outdir'/wayland-version.h sed '$srcdir'/src/wayland-version.h.in ; exprs=(\
@@ -21,36 +21,32 @@ exe wayland-scanner -d phony/desktop/expat/headers\
src/^(scanner.c wayland-util.c.o)\
'$builddir'/desktop/expat/libexpat.a
-for(type in client server) {
- build '$outdir'/include/wayland-$type-protocol.h\
- wayland_proto '$srcdir'/protocol/wayland.xml
- with type $type-header
-}
+waylandproto protocol/wayland.xml\
+ include/wayland-^(client server)^-protocol.h\
+ src/wayland-protocol.c
+
hdrs=wayland-^(client-core client egl-core egl server-core server util version)^.h
for(hdr in $hdrs) build '$outdir'/include/$hdr copy '$srcdir'/src/$hdr
build '$outdir'/include/wayland-cursor.h copy '$srcdir'/cursor/wayland-cursor.h
phony headers include/^($hdrs wayland-^(cursor.h (client server)^-protocol.h))
-build '$outdir'/wayland-protocol.c\
- wayland_proto '$srcdir'/protocol/wayland.xml
-with type code
-cc '$outdir'/wayland-protocol.c
-
lib libwayland-server.a -d 'phony/$dir/headers' src/^(\
connection.c.o\
wayland-os.c.o\
+ wayland-protocol.c.o\
wayland-server.c\
wayland-shm.c\
wayland-util.c.o\
event-loop.c\
-) wayland-protocol.c.o '$builddir'/desktop/libffi/libffi.a
+) '$builddir'/desktop/libffi/libffi.a
lib libwayland-client.a -d 'phony/$dir/headers' src/^(\
connection.c.o\
wayland-os.c.o\
+ wayland-protocol.c.o\
wayland-client.c\
wayland-util.c.o\
-) wayland-protocol.c.o '$builddir'/desktop/libffi/libffi.a
+) '$builddir'/desktop/libffi/libffi.a
fetch git
diff --git a/ninja.rc b/ninja.rc
index d1f3550b..76136caa 100644
--- a/ninja.rc
+++ b/ninja.rc
@@ -151,6 +151,15 @@ fn yacc {
}
}
+fn waylandproto {
+ proto='$srcdir'/$1
+ shift
+ build '$outdir'/$1 waylandproto $proto ; with type client-header
+ build '$outdir'/$2 waylandproto $proto ; with type server-header
+ build '$outdir'/$3 waylandproto $proto ; with type code
+ cc '$outdir'/$3 '||' phony/desktop/wayland/headers
+}
+
# packaging rules
fn file {
diff --git a/rules.ninja b/rules.ninja
index 6ab2b0da..89842b63 100644
--- a/rules.ninja
+++ b/rules.ninja
@@ -53,6 +53,9 @@ rule sed
rule awk
command = awk $expr $in >$out.tmp && mv $out.tmp $out
+rule waylandproto
+ command = wayland-scanner $type $in $out.tmp && mv $out.tmp $out
+
rule githash
command = rc ./scripts/hash.rc $builddir/$repo.git $args $in >$out.tmp && mv $out.tmp $out