Fix reason support by keeping the original extension
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
This commit is contained in:
parent
e6e4589c47
commit
c0a6438fcc
|
@ -4,13 +4,17 @@ open Jbuild
|
||||||
|
|
||||||
module SC = Super_context
|
module SC = Super_context
|
||||||
|
|
||||||
|
let pped_path path ~obj_dir ~suffix =
|
||||||
|
(* We need to insert the suffix before the extension as some tools
|
||||||
|
inspect the extension *)
|
||||||
|
let base, ext = Filename.split_extension (Path.basename path) in
|
||||||
|
Path.relative obj_dir (base ^ suffix ^ ext)
|
||||||
|
|
||||||
let pped_module m ~obj_dir ~f =
|
let pped_module m ~obj_dir ~f =
|
||||||
Module.map_files m ~f:(fun kind file ->
|
Module.map_files m ~f:(fun kind file ->
|
||||||
let pp_fname =
|
let pp_path = pped_path file.path ~obj_dir ~suffix:".pp" in
|
||||||
Path.relative obj_dir (Path.basename file.path ^ ".pp")
|
f kind file.path pp_path;
|
||||||
in
|
{ file with path = pp_path })
|
||||||
f kind file.path pp_fname;
|
|
||||||
{ file with path = pp_fname })
|
|
||||||
|
|
||||||
module Driver = struct
|
module Driver = struct
|
||||||
module M = struct
|
module M = struct
|
||||||
|
@ -422,7 +426,7 @@ let setup_reason_rules sctx ~obj_dir (m : Module.t) =
|
||||||
let ml =
|
let ml =
|
||||||
{ Module.File.
|
{ Module.File.
|
||||||
syntax = OCaml
|
syntax = OCaml
|
||||||
; path = Path.relative obj_dir (Path.basename f.path ^ ".ast")
|
; path = pped_path f.path ~obj_dir ~suffix:".ast"
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
SC.add_rule sctx (rule f.path ml.path);
|
SC.add_rule sctx (rule f.path ml.path);
|
||||||
|
|
|
@ -41,7 +41,7 @@ Same, but with error pointing to .ppx
|
||||||
Test the argument syntax
|
Test the argument syntax
|
||||||
|
|
||||||
$ dune build test_ppx_args.cma
|
$ dune build test_ppx_args.cma
|
||||||
ppx .test_ppx_args.objs/test_ppx_args.ml.pp
|
ppx .test_ppx_args.objs/test_ppx_args.pp.ml
|
||||||
.ppx/driver_print_args@foo/ppx.exe
|
.ppx/driver_print_args@foo/ppx.exe
|
||||||
-arg1
|
-arg1
|
||||||
-arg2
|
-arg2
|
||||||
|
@ -50,9 +50,9 @@ Test the argument syntax
|
||||||
--cookie
|
--cookie
|
||||||
library-name="test_ppx_args"
|
library-name="test_ppx_args"
|
||||||
-o
|
-o
|
||||||
.test_ppx_args.objs/test_ppx_args.ml.pp
|
.test_ppx_args.objs/test_ppx_args.pp.ml
|
||||||
--impl
|
--impl
|
||||||
test_ppx_args.ml
|
test_ppx_args.ml
|
||||||
Error: Rule failed to generate the following targets:
|
Error: Rule failed to generate the following targets:
|
||||||
- .test_ppx_args.objs/test_ppx_args.ml.pp
|
- .test_ppx_args.objs/test_ppx_args.pp.ml
|
||||||
[1]
|
[1]
|
||||||
|
|
|
@ -2,18 +2,18 @@
|
||||||
ocamlc lib/stubs$ext_obj
|
ocamlc lib/stubs$ext_obj
|
||||||
ocamlmklib lib/dllx_stubs$ext_dll,lib/libx_stubs$ext_lib
|
ocamlmklib lib/dllx_stubs$ext_dll,lib/libx_stubs$ext_lib
|
||||||
ocamlopt .ppx/js_of_ocaml-ppx/ppx.exe
|
ocamlopt .ppx/js_of_ocaml-ppx/ppx.exe
|
||||||
ppx lib/.x.objs/x.ml.pp
|
ppx lib/.x.objs/x.pp.ml
|
||||||
ocamldep lib/.x.objs/x.ml.pp.d
|
ocamldep lib/.x.objs/x.pp.ml.d
|
||||||
ocamlc lib/.x.objs/x__.{cmi,cmo,cmt}
|
ocamlc lib/.x.objs/x__.{cmi,cmo,cmt}
|
||||||
ocamlopt lib/.x.objs/x__.{cmx,o}
|
ocamlopt lib/.x.objs/x__.{cmx,o}
|
||||||
ppx lib/.x.objs/y.ml.pp
|
ppx lib/.x.objs/y.pp.ml
|
||||||
ocamldep lib/.x.objs/y.ml.pp.d
|
ocamldep lib/.x.objs/y.pp.ml.d
|
||||||
ocamlc lib/.x.objs/x__Y.{cmi,cmo,cmt}
|
ocamlc lib/.x.objs/x__Y.{cmi,cmo,cmt}
|
||||||
ocamlopt lib/.x.objs/x__Y.{cmx,o}
|
ocamlopt lib/.x.objs/x__Y.{cmx,o}
|
||||||
ppx bin/.technologic.eobjs/technologic.ml.pp
|
ppx bin/.technologic.eobjs/technologic.pp.ml
|
||||||
ocamldep bin/.technologic.eobjs/technologic.ml.pp.d
|
ocamldep bin/.technologic.eobjs/technologic.pp.ml.d
|
||||||
ppx bin/.technologic.eobjs/z.ml.pp
|
ppx bin/.technologic.eobjs/z.pp.ml
|
||||||
ocamldep bin/.technologic.eobjs/z.ml.pp.d
|
ocamldep bin/.technologic.eobjs/z.pp.ml.d
|
||||||
js_of_ocaml .js/js_of_ocaml/js_of_ocaml.cma.js
|
js_of_ocaml .js/js_of_ocaml/js_of_ocaml.cma.js
|
||||||
js_of_ocaml lib/.x.objs/x__Y.cmo.js
|
js_of_ocaml lib/.x.objs/x__Y.cmo.js
|
||||||
ocamlc lib/.x.objs/x.{cmi,cmo,cmt}
|
ocamlc lib/.x.objs/x.{cmi,cmo,cmt}
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
ocamlopt ppx/.fooppx.objs/fooppx.{cmx,o}
|
ocamlopt ppx/.fooppx.objs/fooppx.{cmx,o}
|
||||||
ocamlopt ppx/fooppx.{a,cmxa}
|
ocamlopt ppx/fooppx.{a,cmxa}
|
||||||
ocamlopt .ppx/jbuild/fooppx/ppx.exe
|
ocamlopt .ppx/jbuild/fooppx/ppx.exe
|
||||||
ppx .w_omp_driver.eobjs/w_omp_driver.ml.pp
|
ppx .w_omp_driver.eobjs/w_omp_driver.pp.ml
|
||||||
ocamldep .w_omp_driver.eobjs/w_omp_driver.ml.pp.d
|
ocamldep .w_omp_driver.eobjs/w_omp_driver.pp.ml.d
|
||||||
ocamlc .w_omp_driver.eobjs/w_omp_driver.{cmi,cmo,cmt}
|
ocamlc .w_omp_driver.eobjs/w_omp_driver.{cmi,cmo,cmt}
|
||||||
ocamlopt .w_omp_driver.eobjs/w_omp_driver.{cmx,o}
|
ocamlopt .w_omp_driver.eobjs/w_omp_driver.{cmx,o}
|
||||||
ocamlopt w_omp_driver.exe
|
ocamlopt w_omp_driver.exe
|
||||||
|
|
|
@ -15,8 +15,8 @@ On the other hand, public libraries may have private preprocessors
|
||||||
ocamlopt .ppx_internal.objs/ppx_internal.{cmx,o}
|
ocamlopt .ppx_internal.objs/ppx_internal.{cmx,o}
|
||||||
ocamlopt ppx_internal.{a,cmxa}
|
ocamlopt ppx_internal.{a,cmxa}
|
||||||
ocamlopt .ppx/jbuild/ppx_internal@mylib/ppx.exe
|
ocamlopt .ppx/jbuild/ppx_internal@mylib/ppx.exe
|
||||||
ppx .mylib.objs/mylib.ml.pp
|
ppx .mylib.objs/mylib.pp.ml
|
||||||
ocamldep .mylib.objs/mylib.ml.pp.d
|
ocamldep .mylib.objs/mylib.pp.ml.d
|
||||||
ocamlc .mylib.objs/mylib.{cmi,cmo,cmt}
|
ocamlc .mylib.objs/mylib.{cmi,cmo,cmt}
|
||||||
ocamlopt .mylib.objs/mylib.{cmx,o}
|
ocamlopt .mylib.objs/mylib.{cmx,o}
|
||||||
ocamlopt mylib.{a,cmxa}
|
ocamlopt mylib.{a,cmxa}
|
||||||
|
@ -33,8 +33,8 @@ Unless they introduce private runtime dependencies:
|
||||||
ocamlopt .private_ppx.objs/private_ppx.{cmx,o}
|
ocamlopt .private_ppx.objs/private_ppx.{cmx,o}
|
||||||
ocamlopt private_ppx.{a,cmxa}
|
ocamlopt private_ppx.{a,cmxa}
|
||||||
ocamlopt .ppx/jbuild/private_ppx@mylib/ppx.exe
|
ocamlopt .ppx/jbuild/private_ppx@mylib/ppx.exe
|
||||||
ppx .mylib.objs/mylib.ml.pp
|
ppx .mylib.objs/mylib.pp.ml
|
||||||
ocamldep .mylib.objs/mylib.ml.pp.d
|
ocamldep .mylib.objs/mylib.pp.ml.d
|
||||||
[1]
|
[1]
|
||||||
|
|
||||||
However, public binaries may accept private dependencies
|
However, public binaries may accept private dependencies
|
||||||
|
|
|
@ -1,54 +1,54 @@
|
||||||
$ dune build @runtest @install-file --display short
|
$ dune build @runtest @install-file --display short
|
||||||
refmt bar.re.ml
|
refmt .rlib.objs/bar.ast.re
|
||||||
ocamldep .rlib.objs/bar.re.ml.d
|
ocamldep .rlib.objs/bar.ast.re.d
|
||||||
ocamldep pp/.reasononlypp.eobjs/reasononlypp.ml.d
|
ocamldep pp/.reasononlypp.eobjs/reasononlypp.ml.d
|
||||||
ocamlc pp/.reasononlypp.eobjs/reasononlypp.{cmi,cmo,cmt}
|
ocamlc pp/.reasononlypp.eobjs/reasononlypp.{cmi,cmo,cmt}
|
||||||
ocamlopt pp/.reasononlypp.eobjs/reasononlypp.{cmx,o}
|
ocamlopt pp/.reasononlypp.eobjs/reasononlypp.{cmx,o}
|
||||||
ocamlopt pp/reasononlypp.exe
|
ocamlopt pp/reasononlypp.exe
|
||||||
reasononlypp cppome.pp.re
|
reasononlypp .rlib.objs/cppome.pp.re
|
||||||
refmt cppome.pp.re.ml
|
refmt .rlib.objs/cppome.pp.ast.re
|
||||||
ocamldep .rlib.objs/cppome.pp.re.ml.d
|
ocamldep .rlib.objs/cppome.pp.ast.re.d
|
||||||
ocamldep ppx/.reasonppx.objs/reasonppx.ml.d
|
ocamldep ppx/.reasonppx.objs/reasonppx.ml.d
|
||||||
ocamlc ppx/.reasonppx.objs/reasonppx.{cmi,cmo,cmt}
|
ocamlc ppx/.reasonppx.objs/reasonppx.{cmi,cmo,cmt}
|
||||||
ocamlopt ppx/.reasonppx.objs/reasonppx.{cmx,o}
|
ocamlopt ppx/.reasonppx.objs/reasonppx.{cmx,o}
|
||||||
ocamlopt ppx/reasonppx.{a,cmxa}
|
ocamlopt ppx/reasonppx.{a,cmxa}
|
||||||
ocamlopt .ppx/jbuild/reasonppx@rlib/ppx.exe
|
ocamlopt .ppx/jbuild/reasonppx@rlib/ppx.exe
|
||||||
ppx foo.pp.ml
|
ppx .rlib.objs/foo.pp.ml
|
||||||
ocamldep .rlib.objs/foo.pp.ml.d
|
ocamldep .rlib.objs/foo.pp.ml.d
|
||||||
refmt hello.re.ml
|
refmt .rlib.objs/hello.ast.re
|
||||||
ppx hello.re.pp.ml
|
ppx .rlib.objs/hello.ast.pp.re
|
||||||
ocamldep .rlib.objs/hello.re.pp.ml.d
|
ocamldep .rlib.objs/hello.ast.pp.re.d
|
||||||
refmt pped.re.ml
|
refmt .rlib.objs/pped.ast.re
|
||||||
ocamldep .rlib.objs/pped.re.ml.d
|
ocamldep .rlib.objs/pped.ast.re.d
|
||||||
ocamlc .rlib.objs/rlib.{cmi,cmo,cmt}
|
ocamlc .rlib.objs/rlib.{cmi,cmo,cmt}
|
||||||
ocamlopt .rlib.objs/rlib.{cmx,o}
|
ocamlopt .rlib.objs/rlib.{cmx,o}
|
||||||
ocamldep .rlib.objs/bar.mli.d
|
ocamldep .rlib.objs/bar.mli.d
|
||||||
ocamlc .rlib.objs/rlib__Bar.{cmi,cmti}
|
ocamlc .rlib.objs/rlib__Bar.{cmi,cmti}
|
||||||
ocamlopt .rlib.objs/rlib__Bar.{cmx,o}
|
ocamlopt .rlib.objs/rlib__Bar.{cmx,o}
|
||||||
refmt foo.re.mli
|
refmt .rlib.objs/foo.ast.rei
|
||||||
ppx foo.re.pp.mli
|
ppx .rlib.objs/foo.ast.pp.rei
|
||||||
ocamldep .rlib.objs/foo.re.pp.mli.d
|
ocamldep .rlib.objs/foo.ast.pp.rei.d
|
||||||
ocamlc .rlib.objs/rlib__Foo.{cmi,cmti}
|
ocamlc .rlib.objs/rlib__Foo.{cmi,cmti}
|
||||||
ocamlopt .rlib.objs/rlib__Foo.{cmx,o}
|
ocamlopt .rlib.objs/rlib__Foo.{cmx,o}
|
||||||
refmt hello.re.mli
|
refmt .rlib.objs/hello.ast.rei
|
||||||
ppx hello.re.pp.mli
|
ppx .rlib.objs/hello.ast.pp.rei
|
||||||
ocamldep .rlib.objs/hello.re.pp.mli.d
|
ocamldep .rlib.objs/hello.ast.pp.rei.d
|
||||||
ocamlc .rlib.objs/rlib__Hello.{cmi,cmti}
|
ocamlc .rlib.objs/rlib__Hello.{cmi,cmti}
|
||||||
ocamlopt .rlib.objs/rlib__Hello.{cmx,o}
|
ocamlopt .rlib.objs/rlib__Hello.{cmx,o}
|
||||||
refmt pped.re.mli
|
refmt .rlib.objs/pped.ast.rei
|
||||||
ocamldep .rlib.objs/pped.re.mli.d
|
ocamldep .rlib.objs/pped.ast.rei.d
|
||||||
ocamlc .rlib.objs/rlib__Pped.{cmi,cmti}
|
ocamlc .rlib.objs/rlib__Pped.{cmi,cmti}
|
||||||
ocamlopt .rlib.objs/rlib__Pped.{cmx,o}
|
ocamlopt .rlib.objs/rlib__Pped.{cmx,o}
|
||||||
reasononlypp cppome.pp.rei
|
reasononlypp .rlib.objs/cppome.pp.rei
|
||||||
refmt cppome.pp.re.mli
|
refmt .rlib.objs/cppome.pp.ast.rei
|
||||||
ocamldep .rlib.objs/cppome.pp.re.mli.d
|
ocamldep .rlib.objs/cppome.pp.ast.rei.d
|
||||||
ocamlc .rlib.objs/rlib__Cppome.{cmi,cmti}
|
ocamlc .rlib.objs/rlib__Cppome.{cmi,cmti}
|
||||||
ocamlopt .rlib.objs/rlib__Cppome.{cmx,o}
|
ocamlopt .rlib.objs/rlib__Cppome.{cmx,o}
|
||||||
ocamlopt rlib.{a,cmxa}
|
ocamlopt rlib.{a,cmxa}
|
||||||
ocamlopt rlib.cmxs
|
ocamlopt rlib.cmxs
|
||||||
reasononlypp rbin.pp.re
|
reasononlypp .rbin.eobjs/rbin.pp.re
|
||||||
refmt rbin.pp.re.ml
|
refmt .rbin.eobjs/rbin.pp.ast.re
|
||||||
ocamldep .rbin.eobjs/rbin.pp.re.ml.d
|
ocamldep .rbin.eobjs/rbin.pp.ast.re.d
|
||||||
ocamlc .rbin.eobjs/rbin.{cmi,cmo,cmt}
|
ocamlc .rbin.eobjs/rbin.{cmi,cmo,cmt}
|
||||||
ocamlopt .rbin.eobjs/rbin.{cmx,o}
|
ocamlopt .rbin.eobjs/rbin.{cmx,o}
|
||||||
ocamlopt rbin.exe
|
ocamlopt rbin.exe
|
||||||
|
|
|
@ -11,8 +11,8 @@
|
||||||
ocamlc a/kernel/a_kernel.cma
|
ocamlc a/kernel/a_kernel.cma
|
||||||
ocamlopt .ppx/jbuild/a.kernel/ppx.exe
|
ocamlopt .ppx/jbuild/a.kernel/ppx.exe
|
||||||
ocamlopt .ppx/jbuild/a/ppx.exe
|
ocamlopt .ppx/jbuild/a/ppx.exe
|
||||||
ppx b/.b.objs/b.ml.pp
|
ppx b/.b.objs/b.pp.ml
|
||||||
ocamldep b/.b.objs/b.ml.pp.d
|
ocamldep b/.b.objs/b.pp.ml.d
|
||||||
ocamlc b/.b.objs/b.{cmi,cmo,cmt}
|
ocamlc b/.b.objs/b.{cmi,cmo,cmt}
|
||||||
ocamlopt b/.b.objs/b.{cmx,o}
|
ocamlopt b/.b.objs/b.{cmx,o}
|
||||||
ocamlopt b/b.{a,cmxa}
|
ocamlopt b/b.{a,cmxa}
|
||||||
|
|
Loading…
Reference in New Issue