2017-12-05 18:16:34 +04:00
|
|
|
(* -*- tuareg -*- *)
|
|
|
|
|
|
|
|
(* Build a functorized version of the protocol with the
|
|
|
|
`tezos-protocol-compiler` This is bit hackish...
|
|
|
|
|
|
|
|
AFAIK the current version of jbuilder (1.0+beta16) does not allow
|
|
|
|
to compile with a custom `rule` the `(modules)` of a library.
|
|
|
|
|
|
|
|
A trick is to provide the `.cmx` through the `(library_flags)` and
|
|
|
|
to generate a empty `.ml` to correctly handle the dependencies... *)
|
|
|
|
|
2018-01-27 14:21:41 +04:00
|
|
|
#require "unix"
|
|
|
|
|
2018-01-29 04:16:58 +04:00
|
|
|
let prefix = "proto_"
|
|
|
|
let dirname = Filename.basename @@ Filename.dirname @@ Sys.getcwd ()
|
2017-12-05 18:16:34 +04:00
|
|
|
|
2017-12-06 22:51:49 +04:00
|
|
|
let predefined_version = None (* to be substituted in opam packages *)
|
|
|
|
|
2017-12-05 18:16:34 +04:00
|
|
|
let version =
|
2017-12-06 22:51:49 +04:00
|
|
|
match predefined_version with
|
|
|
|
| Some version -> version
|
|
|
|
| None ->
|
|
|
|
let x = String.length prefix in
|
|
|
|
let n = String.length dirname in
|
|
|
|
if not (n >= x && String.sub dirname 0 x = prefix) then
|
|
|
|
failwith "unexpected directory name" ;
|
|
|
|
String.sub dirname x (n - x)
|
|
|
|
|
|
|
|
let path =
|
|
|
|
match predefined_version with
|
2018-01-29 04:16:58 +04:00
|
|
|
| None -> "src/proto_" ^ version ^ "/lib_protocol"
|
2017-12-06 22:51:49 +04:00
|
|
|
| Some _ -> "."
|
2017-12-05 18:16:34 +04:00
|
|
|
|
2018-01-27 14:21:41 +04:00
|
|
|
let sources =
|
|
|
|
let d = Unix.opendir "src" in
|
|
|
|
let rec loop acc =
|
|
|
|
match Unix.readdir d with
|
|
|
|
| exception End_of_file ->
|
|
|
|
Unix.closedir d ;
|
|
|
|
acc
|
|
|
|
| file ->
|
|
|
|
let acc =
|
|
|
|
if Filename.check_suffix file ".mli"
|
|
|
|
|| Filename.check_suffix file ".ml" then
|
|
|
|
("src/" ^ file) :: acc
|
|
|
|
else
|
|
|
|
acc
|
|
|
|
in
|
|
|
|
loop acc in
|
|
|
|
loop []
|
|
|
|
|
2017-12-05 18:16:34 +04:00
|
|
|
let () = Format.kasprintf Jbuild_plugin.V1.send {|
|
|
|
|
|
|
|
|
(jbuild_version 1)
|
|
|
|
|
2018-01-30 19:30:22 +04:00
|
|
|
(rule
|
|
|
|
((targets (tezos_protocol_%s.cmo
|
|
|
|
tezos_protocol_%s_dummy_byte.ml))
|
|
|
|
(deps ((glob_files src/*.ml)
|
|
|
|
(glob_files src/*.mli)
|
|
|
|
src/TEZOS_PROTOCOL))
|
|
|
|
(action (with-stdout-to ${path-no-dep:tezos_protocol_%s_dummy_byte.ml}
|
|
|
|
(chdir ${ROOT}
|
|
|
|
(run ${bin:tezos-protocol-compiler-byte} -static ${path-no-dep:tezos_protocol_%s} ${path-no-dep:src}))))))
|
|
|
|
|
2017-12-05 18:16:34 +04:00
|
|
|
(rule
|
|
|
|
((targets (tezos_protocol_%s.o
|
|
|
|
tezos_protocol_%s.cmx
|
|
|
|
tezos_protocol_%s.cmi
|
|
|
|
tezos_protocol_%s_dummy.ml))
|
|
|
|
(deps ((glob_files src/*.ml)
|
|
|
|
(glob_files src/*.mli)
|
|
|
|
src/TEZOS_PROTOCOL))
|
|
|
|
(action (with-stdout-to ${path-no-dep:tezos_protocol_%s_dummy.ml}
|
|
|
|
(chdir ${ROOT}
|
|
|
|
(run ${bin:tezos-protocol-compiler} -static ${path-no-dep:tezos_protocol_%s} ${path-no-dep:src}))))))
|
|
|
|
|
|
|
|
(library
|
|
|
|
((name tezos_protocol_%s)
|
|
|
|
(public_name tezos-protocol-%s)
|
2017-12-06 22:51:49 +04:00
|
|
|
(library_flags (:standard -linkall %s/tezos_protocol_%s.cmx))
|
2017-12-11 19:36:24 +04:00
|
|
|
(flags (:standard -safe-string))
|
2017-12-05 18:16:34 +04:00
|
|
|
(wrapped false)
|
|
|
|
(modes (native))
|
|
|
|
(modules (Tezos_protocol_%s_dummy))))
|
|
|
|
|
2018-01-30 19:30:22 +04:00
|
|
|
(library
|
|
|
|
((name tezos_protocol_%s_byte)
|
|
|
|
(public_name tezos-protocol-%s.byte)
|
|
|
|
(library_flags (:standard -linkall %s/tezos_protocol_%s.cmo))
|
|
|
|
(flags (:standard -safe-string))
|
|
|
|
(wrapped false)
|
|
|
|
(modes (byte))
|
|
|
|
(modules (Tezos_protocol_%s_dummy_byte))))
|
|
|
|
|
2018-01-30 15:36:32 +04:00
|
|
|
(install
|
|
|
|
((section lib)
|
|
|
|
(files ("tezos_protocol_%s.cmx" "tezos_protocol_%s.cmi"))
|
|
|
|
(package tezos-protocol-%s)))
|
|
|
|
|
2017-12-05 18:16:34 +04:00
|
|
|
(alias
|
|
|
|
((name runtest_sandbox)
|
|
|
|
(deps (tezos_protocol_%s.cmx))))
|
|
|
|
|
|
|
|
(alias
|
|
|
|
((name runtest_indent)
|
2018-01-27 14:21:41 +04:00
|
|
|
(deps (@[<v>%a@]))
|
|
|
|
(action (run bash ${libexec:tezos-stdlib:test-ocp-indent.sh} ${^}))))
|
2017-12-05 18:16:34 +04:00
|
|
|
|
|
|
|
|}
|
2018-01-30 19:30:22 +04:00
|
|
|
version version version version
|
|
|
|
version version version version
|
|
|
|
version version version version
|
|
|
|
path version
|
|
|
|
version version version
|
|
|
|
path version
|
|
|
|
version version version
|
|
|
|
version version
|
2018-01-27 14:21:41 +04:00
|
|
|
Format.(pp_print_list (fun ppf -> Format.fprintf ppf "%S"))
|
|
|
|
sources
|