From 75ca6251bdadca9771a5b767624011e4d6c2bc34 Mon Sep 17 00:00:00 2001
From: Julien Girard <julien.girard2@cea.fr>
Date: Wed, 6 Oct 2021 15:36:21 +0200
Subject: [PATCH] Added automated interface generation rule

---
 .gitlab-ci.yml                      |  1 +
 lib/onnx/dune                       | 18 ++++++++++++++----
 lib/onnx/generate_onnx_interface.sh |  7 +++++++
 3 files changed, 22 insertions(+), 4 deletions(-)
 create mode 100755 lib/onnx/generate_onnx_interface.sh

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b2243fb7..8fe240f9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -12,6 +12,7 @@ tests:
   - if [ ! -d _opam ]; then echo "no local switch in the CI cache, we setup a new switch"; opam switch create --yes --no-install . ocaml-base-compiler.4.11.1; fi
   - eval $(opam env)
   - sudo apt-get update
+  - sudo apt install -y protobuf-compiler
   - opam repository add remote https://opam.ocaml.org
   - opam depext --yes ocplib-endian base fmt alt-ergo.2.4.0
   - opam install . --deps-only --with-test --yes
diff --git a/lib/onnx/dune b/lib/onnx/dune
index 8040d480..b6defdaa 100644
--- a/lib/onnx/dune
+++ b/lib/onnx/dune
@@ -1,5 +1,15 @@
 (library
- (name onnx)
- (public_name onnx)
- (libraries base csv piqirun.pb)
- (synopsis "ONNX parser"))
+  (name onnx)
+  (public_name onnx)
+  (libraries base csv piqirun.pb)
+  (synopsis "ONNX parser"))
+(rule
+  (targets onnx_piqi.ml onnx_piqi.mli)
+  (action
+    (run ./generate_onnx_interface.sh)
+    )
+  (deps
+    onnx.proto
+    generate_onnx_interface.sh)
+  (mode
+    promote))
diff --git a/lib/onnx/generate_onnx_interface.sh b/lib/onnx/generate_onnx_interface.sh
new file mode 100755
index 00000000..3925d518
--- /dev/null
+++ b/lib/onnx/generate_onnx_interface.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+piqi of-proto onnx.proto
+sed -ie 's/-START-VERSION/START-VERSION/' onnx.proto.piqi
+piqic-ocaml onnx.proto.piqi
+sed -ie 's/external/externall/g' onnx_piqi.ml
+ocamlfind ocamlc -package piqirun.pb -i onnx_piqi.ml > onnx_piqi.mli
-- 
GitLab