virt-v2v/ocaml-dep.sh.in
Richard W.M. Jones ec542c5cc0 ocaml-dep.sh: Add common/mlcustomize to list of directories to search
Avoids this error when you change a file under common/mlcustomize and
then rebuild virt-v2v:

Error: Files ../convert/mlconvert.cmxa
       and ../common/mlcustomize/mlcustomize.cmxa
       make inconsistent assumptions over implementation Inject_virtio_win

Fixes: commit 4b9c8e1560d67ac17e287450f61f4903d237fc47
See-also: commit c30df7ffb8fc04142b99cbb7ec1bebbb32ffb654
2023-12-09 12:24:02 +00:00

89 lines
2.8 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash -
# (C) Copyright 2009-2020 Red Hat Inc.
# @configure_input@
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# This is a smarter wrapper around ocamldep(1) which is used to create
# the .depend files which are present in each subdirectory that builds
# OCaml code.
#
# Usage:
# .depend: *.mli *.ml
# $(top_builddir)/ocaml-dep.sh $^
# -include .depend
set -e
# List of directories that contain common OCaml libraries. If it
# contains OCaml code that can be included from another directory,
# then it should go here. Note that OCaml modules in these
# directories must have unique names (eg. not Utils) else
# dependencies don't get built right.
include_dirs="
common/mlcustomize
common/mldrivers
common/mlgettext
common/mlpcre
common/mlprogress
common/mlstdutils
common/mltools
common/mlutils
common/mlv2v
common/mlvisit
common/mlxml
lib
convert
input
output
"
# Output file is always created in the current directory.
output=.depend
subdir=$(realpath --relative-to=@abs_top_builddir@ .)
srcdir=$(realpath --relative-to=. @abs_top_srcdir@/${subdir})
srcdir_re=$(realpath --relative-to=. @abs_top_srcdir@/${subdir} | sed 's/\./[.]/g')
top_builddir=$(realpath --relative-to=. @abs_top_builddir@)
includes="-I @abs_top_srcdir@/$subdir -I @abs_top_builddir@/$subdir"
for i in $include_dirs; do
includes="$includes -I @abs_top_srcdir@/$i -I @abs_top_builddir@/$i"
done
rm -f $output $output-t
echo "# OCaml dependencies generated by $0" > $output-t
echo >> $output-t
# Rewrite paths
# 1. Normalize absolute srcdir to relative path
# 2. Object files (*.cm*, *.o), in srcdir: Rewrite to builddir
# 3. Generated _config.ml in srcdir: Rewrite to builddir
# 4. Other object files below abs_top_srcdir: rewrite to corresponding builddir
# 5. Eliminate "./" prefix
@OCAMLFIND@ ocamldep -all -one-line $includes "$@" \
| sed \
-e "s,@abs_top_srcdir@/${subdir},.,g" \
-e "s,\B${srcdir_re}/\\([^ ]*[.]\\)\\(cm[^ ]*\\|o\\),\\1\\2,g" \
-e "s,\B${srcdir_re}/\\([^ /]*_config[.]ml\\),\\1,g" \
-e "s,@abs_top_srcdir@/\\([^ ]*[.]\\)\\(cm[^ ]*\\|o\\),${top_builddir}/\\1\\2,g" \
-e 's,\(^\| \)./,\1,g' \
>> $output-t
chmod -w $output-t
mv $output-t $output