Port libguestfs commit bf61bf7355d3 ("build: Allow OCaml programs using
libguestfs to be compiled against build dir.", 2020-03-12) to hivex.This allows C+OCaml programs, such as libguestfs itself, to find a just built, but not installed, hivex tree: > libguestfs$ ../hivex/run ./configure CFLAGS=-fPIC > libguestfs$ ../hivex/run make -j $(getconf _NPROCESSORS_ONLN) > libguestfs$ ../hivex/run make -j $(getconf _NPROCESSORS_ONLN) check Signed-off-by: Laszlo Ersek <[email protected]> --- ocaml/Makefile.am | 19 ++++++++++++++++++- .gitignore | 1 + run.in | 2 ++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/ocaml/Makefile.am b/ocaml/Makefile.am index 1ef0c194e212..ace3208ea309 100644 --- a/ocaml/Makefile.am +++ b/ocaml/Makefile.am @@ -112,7 +112,24 @@ install-data-hook: CLEANFILES += $(noinst_DATA) -endif +# This "tricks" ocamlfind into allowing us to compile other OCaml +# programs against a locally compiled copy of the hivex sources. +# ocamlfind needs to see a directory called ‘hivex’ which contains +# ‘META’. The current directory is called ‘ocaml’, but if we make +# this symlink then we can create the required directory structure. +# +# Note if you just want to use this, make sure you use +# ‘../hivex/run make’ in your other program and everything should +# just work. +CLEANFILES += hivex + +all-local: hivex + +hivex: + rm -f $@ + $(LN_S) . $@ + +endif HAVE_OCAML # Tell version 3.79 and up of GNU make to not build goals in this # directory in parallel. (See RHBZ#502309). diff --git a/.gitignore b/.gitignore index 596030afe5cc..b856922c917b 100644 --- a/.gitignore +++ b/.gitignore @@ -72,6 +72,7 @@ Makefile.in /m4/ltversion.m4 /maint.mk /missing +/ocaml/hivex /ocaml/hivex.ml /ocaml/hivex.mli /ocaml/hivex_c.c diff --git a/run.in b/run.in index e2563845f673..e166a9202248 100755 --- a/run.in +++ b/run.in @@ -90,6 +90,8 @@ export MALLOC_PERTURB_=$random_val # Allow dependent packages like libguestfs to be compiled against local hivex. prepend PKG_CONFIG_PATH "$b/lib/local" export PKG_CONFIG_PATH +prepend OCAMLPATH "$b/ocaml" +export OCAMLPATH # Do we have libtool? If we have it then we can use it to make # running valgrind simpler. However don't depend on it. -- 2.19.1.3.g30247aa5d201 _______________________________________________ Libguestfs mailing list [email protected] https://listman.redhat.com/mailman/listinfo/libguestfs
