From: Jason Ish Date: Thu, 11 May 2017 19:30:27 +0000 (-0600) Subject: rust: generate headers as part of build X-Git-Tag: suricata-4.0.0-beta1~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9231b0ae92339934f46548eaa5fd4b0503f41e0e;p=thirdparty%2Fsuricata.git rust: generate headers as part of build --- diff --git a/rust/.gitignore b/rust/.gitignore index b8e3c7476f..f0a2dd8e95 100644 --- a/rust/.gitignore +++ b/rust/.gitignore @@ -3,3 +3,4 @@ /Cargo.toml /target /vendor +/gen diff --git a/rust/Makefile.am b/rust/Makefile.am index 3af85e2f13..e16131a11c 100644 --- a/rust/Makefile.am +++ b/rust/Makefile.am @@ -1,7 +1,9 @@ EXTRA_DIST = Cargo.toml \ Cargo.lock \ - src/lib.rs \ - .cargo/config.in + src \ + .cargo/config.in \ + gen-c-headers.py \ + gen/c-headers if HAVE_RUST EXTRA_DIST += vendor @@ -15,10 +17,23 @@ if !DEBUG RELEASE = --release endif +gen/c-headers: +if HAVE_PYTHON + cd $(top_srcdir)/rust && python ./gen-c-headers.py +else + @echo "python not available, will not generate headers" +endif + if HAVE_RUST all-local: +if HAVE_PYTHON cd $(top_srcdir)/rust && CARGO_TARGET_DIR=$(abs_builddir)/target \ + python ./gen-c-headers.py && \ cargo build $(RELEASE) $(FROZEN) +else + cd $(top_srcdir)/rust && CARGO_TARGET_DIR=$(abs_builddir)/target \ + cargo build $(RELEASE) $(FROZEN) +endif clean-local: cd $(top_srcdir)/rust && CARGO_TARGET_DIR=$(abs_builddir)/target \ @@ -26,6 +41,7 @@ clean-local: distclean-local: rm -rf vendor + rm -rf gen check: cd $(top_srcdir)/rust && CARGO_TARGET_DIR=$(abs_builddir)/target \ diff --git a/rust/gen-c-headers.py b/rust/gen-c-headers.py index 391c51ccdd..3d281622d3 100755 --- a/rust/gen-c-headers.py +++ b/rust/gen-c-headers.py @@ -105,7 +105,7 @@ def convert_type(rs_type): def make_output_filename(filename): parts = filename.split(os.path.sep)[2:] last = os.path.splitext(parts.pop())[0] - outpath = "../src/rust-%s-%s.h" % ( + outpath = "./gen/c-headers/rust-%s-%s-gen.h" % ( "-".join(parts), last) return outpath.replace("--", "-") @@ -172,6 +172,8 @@ def gen_headers(filename): if writer.tell() > 0: print("Writing %s" % (output_filename)) + if not os.path.exists(os.path.dirname(output_filename)): + os.makedirs(os.path.dirname(output_filename)) with open(output_filename, "w") as output: output.write(template % { "prototypes": writer.getvalue(),