diff --git a/ghc/utils/mkdependHS/Makefile b/ghc/utils/mkdependHS/Makefile index 3ff3e5226ba2e118acb22d5785aab1a38b43af1f..78c03f2b19917b30fd4fbfdec1267a1de1c7da5d 100644 --- a/ghc/utils/mkdependHS/Makefile +++ b/ghc/utils/mkdependHS/Makefile @@ -9,7 +9,8 @@ SCRIPT_PROG=mkdependHS SCRIPT_OBJS=mkdependHS.prl SCRIPT_SUBST_VARS= \ TOP_PWD \ - INSTALLING + INSTALLING \ + HscIfaceFileVersion INTERP=perl diff --git a/ghc/utils/mkdependHS/mkdependHS.prl b/ghc/utils/mkdependHS/mkdependHS.prl index b68cb08322d0530680e9f82471462913551a8eaf..54d96270a7bcd05e64333d89a04c82d2e5e661fe 100644 --- a/ghc/utils/mkdependHS/mkdependHS.prl +++ b/ghc/utils/mkdependHS/mkdependHS.prl @@ -1,7 +1,7 @@ # # perl script expect the following variables to be prepended: # -# RAWCPP TMPDIR TOP_PWD +# RAWCPP TMPDIR TOP_PWD HscIfaceFileVersion # libdir libexecdir datadir INSTALLING # SED # @@ -58,7 +58,7 @@ mkdependHS-specific options (not between --'s): Regard <file> as not "stable"; i.e., generate dependencies on it (if any). This option is normally used in conjunction with the --exclude-directory option. - + EOUSAGE $Status = 0; # just used for exit() status @@ -84,6 +84,9 @@ $InstDataDirGhc = "${datadir}"; $Unlit = ($INSTALLING) ? "${InstLibExecDirGhc}/unlit" : "${TopPwd}/ghc/utils/unlit/unlit"; +$HiBootVersion = $HscIfaceFileVersion; +$hi_boot_with_version = 0; + $Begin_magic_str = "# DO NOT DELETE: Beginning of Haskell dependencies\n"; $End_magic_str = "# DO NOT DELETE: End of Haskell dependencies\n"; @Obj_suffix = ("o"); @@ -466,7 +469,12 @@ sub process_dependency { local($source_dep); if ( $source ) { - $source_dep = "$int_file.hi-boot"; + # if a version specific .hi-boot file exist, use it. + if ( -f "$int_file.hi-boot-${HiBootVersion}" ) { + $source_dep = "$int_file.hi-boot-${HiBootVersion}"; + } else { + $source_dep = "$int_file.hi-boot"; + } } else { local($str)=""; foreach $obj (@Obj_suffix) { @@ -535,6 +543,10 @@ sub find_in_Import_dirs { } if ( $source ) { + $name_to_check = "$import_dir/$modname.hi-boot-${HiBootVersion}"; + print STDERR "trying... $name_to_check\n" if $Verbose >= 2; # very verbose + return($name_to_check) if -f $name_to_check; + $name_to_check = "$import_dir/$modname.hi-boot"; print STDERR "trying... $name_to_check\n" if $Verbose >= 2; # very verbose return($name_to_check) if -f $name_to_check;