# This is duplicated with LIBRPMOSTREE_RUST_SRCS because this
# Makefile needs to be independent
binding_rust_sources = $(shell find rust/src/ -name '*.rs') Cargo.toml Cargo.lock

all: rpmostree-cxxrs.h rpmostree-cxxrs.cxx rust/cxx.h
.PHONY: all

rust/cxx.h: Makefile.bindings
	./target/cxxbridge/bin/cxxbridge --header | clang-format --assume-filename=$@ >$@.tmp && mv $@.tmp $@

rpmostree-cxxrs.h: $(binding_rust_sources) rust/cxx.h ./target/cxxbridge/bin/cxxbridge
	$(AM_V_GEN) if ./target/cxxbridge/bin/cxxbridge rust/src/lib.rs --header | clang-format --assume-filename=$@ > $@.tmp; then \
	  if test -f $@ && cmp $@.tmp $@ 2>/dev/null; then rm -f $@.tmp; else \
	    mv $@.tmp $@; \
	  fi; \
	else \
	  echo cxxbridge failed; exit 1; \
	fi
rpmostree-cxxrs.cxx: $(binding_rust_sources) rpmostree-cxxrs.h
	$(AM_V_GEN) if ./target/cxxbridge/bin/cxxbridge --include rpmostree-cxxrs.h rust/src/lib.rs | clang-format --assume-filename=$@ > $@.tmp; then \
	  if test -f $@ && cmp $@.tmp $@ 2>/dev/null; then rm -f $@.tmp; else \
	    mv $@.tmp $@; \
	  fi; \
	else \
	  echo cxxbridge failed; exit 1; \
	fi
