]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
rust: generate headers as part of build
authorJason Ish <ish@unx.ca>
Thu, 11 May 2017 19:30:27 +0000 (13:30 -0600)
committerJason Ish <ish@unx.ca>
Mon, 5 Jun 2017 20:57:20 +0000 (14:57 -0600)
rust/.gitignore
rust/Makefile.am
rust/gen-c-headers.py

index b8e3c7476f7cce7e29c4fe887d78a51f08e92b4e..f0a2dd8e9510ed9b1348a92ceb7c7c89b0f2f3c6 100644 (file)
@@ -3,3 +3,4 @@
 /Cargo.toml
 /target
 /vendor
+/gen
index 3af85e2f13a7b4866ac6abc493748a710e5f9330..e16131a11c6768b521e95b179959c319186c8291 100644 (file)
@@ -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 \
index 391c51ccddeb66aede0c9c3d347447a985e02009..3d281622d3278c24edcc0b053047e6df18bbb74b 100755 (executable)
@@ -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(),