#!/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=" " # 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 @OCAMLDEP_ALL@ @OCAMLDEP_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