rust: generate headers as part of build

pull/2746/head
Jason Ish 9 years ago
parent d0880d75ff
commit 9231b0ae92

1
rust/.gitignore vendored

@ -3,3 +3,4 @@
/Cargo.toml
/target
/vendor
/gen

@ -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 \

@ -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(),

Loading…
Cancel
Save