added include files to dependencies [Gerardo]

git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@1722 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
ballabio 2005-03-18 11:11:04 +00:00
parent 34dcd9cb6c
commit a6b5b22294
6 changed files with 138 additions and 14 deletions

48
includedep.sh Executable file
View File

@ -0,0 +1,48 @@
#!/bin/sh
# includedep.sh -- script that computes dependencies on preprocessor includes
# files whose dependencies must be computed
sources=`echo *.c *.f90 |
sed 's/\*\.c//g
s/\*\.f90//g'` # remove the "*.c" and "*.f90" that remain
# # when there are no such files
if test "$sources" = " " ; then exit ; fi
# files that may be included
# extra directories may be specified on the command line
includes=`echo *.h`
for dir in $*
do
includes="$includes `echo $dir/*.h`"
done
includes=`echo $includes |
sed 's/[^ ]*\*\.h//g'` # remove the "dir/*.h" that remain
# # when there are no such files
# create list of include dependencies
# each line is of the form:
# file_name.o : @include_file.h@
egrep '^ *# *include *"' $sources | # look for #include "..." statements
# # ignore #include <...> ones
sed 's/f90:/o /
s/c:/o /
s/# *include *//
s/\"/ /g' | # replace extension, insert space
# # remove '# include' statements
# # remove quotes
awk '{print $1 " : @" $2 "@"}' | # create dependency entry
sort | uniq > includedep.tmp1 # remove duplicates
# create list of available include files
# for each file, create a line of the form:
# s/@file_name@/pathname/g
echo $includes | tr " " "\n" |
sed 's/\//\\\//g
s/.*\/\([^/]*\)/\1 &/' | # escape slashes
awk '{print "s/@" $1 "@/" $2 "/" }' > includedep.tmp2
# replace file names with pathnames
# by applying the file of substitution patterns just created
sed -f includedep.tmp2 includedep.tmp1
rm -f includedep.tmp1 includedep.tmp2 # remove temporary files

48
install/includedep.sh Executable file
View File

@ -0,0 +1,48 @@
#!/bin/sh
# includedep.sh -- script that computes dependencies on preprocessor includes
# files whose dependencies must be computed
sources=`echo *.c *.f90 |
sed 's/\*\.c//g
s/\*\.f90//g'` # remove the "*.c" and "*.f90" that remain
# # when there are no such files
if test "$sources" = " " ; then exit ; fi
# files that may be included
# extra directories may be specified on the command line
includes=`echo *.h`
for dir in $*
do
includes="$includes `echo $dir/*.h`"
done
includes=`echo $includes |
sed 's/[^ ]*\*\.h//g'` # remove the "dir/*.h" that remain
# # when there are no such files
# create list of include dependencies
# each line is of the form:
# file_name.o : @include_file.h@
egrep '^ *# *include *"' $sources | # look for #include "..." statements
# # ignore #include <...> ones
sed 's/f90:/o /
s/c:/o /
s/# *include *//
s/\"/ /g' | # replace extension, insert space
# # remove '# include' statements
# # remove quotes
awk '{print $1 " : @" $2 "@"}' | # create dependency entry
sort | uniq > includedep.tmp1 # remove duplicates
# create list of available include files
# for each file, create a line of the form:
# s/@file_name@/pathname/g
echo $includes | tr " " "\n" |
sed 's/\//\\\//g
s/.*\/\([^/]*\)/\1 &/' | # escape slashes
awk '{print "s/@" $1 "@/" $2 "/" }' > includedep.tmp2
# replace file names with pathnames
# by applying the file of substitution patterns just created
sed -f includedep.tmp2 includedep.tmp1
rm -f includedep.tmp1 includedep.tmp2 # remove temporary files

View File

@ -10,11 +10,12 @@ for DIR in Modules PW CPV flib pwtools upftools PP PWCOND \
do
# set inter-directory dependencies
case $DIR in
Modules ) DEPENDS="" ;;
Modules ) DEPENDS="../include" ;;
PW | CPV | flib | pwtools | upftools | atomic )
DEPENDS="../Modules" ;;
PP | PWCOND | Gamma | PH ) DEPENDS="../Modules ../PW" ;;
D3 | Raman | Nmr) DEPENDS="../Modules ../PW ../PH" ;;
DEPENDS="../include ../Modules" ;;
PP | PWCOND | Gamma | PH )
DEPENDS="../include ../Modules ../PW" ;;
D3 | Raman | Nmr) DEPENDS="../include ../Modules ../PW ../PH" ;;
esac
# generate dependencies file
@ -22,11 +23,18 @@ do
then
cd $TOPDIR/$DIR
$TOPDIR/moduledep.sh $DEPENDS > make.depend
$TOPDIR/includedep.sh $DEPENDS >> make.depend
fi
# handle special case
mv make.depend make.depend.tmp
sed '/@\/cineca\/prod\/hpm\/include\/f_hpm.h@/d' \
make.depend.tmp > make.depend
rm -f make.depend.tmp
# check for missing dependencies
if grep @ make.depend
then
echo WARNING: modules not found in directory $DIR
echo WARNING: dependencies not found in directory $DIR
fi
done

View File

@ -2,15 +2,21 @@
# moduledep.sh -- script that computes dependencies on Fortran 90 modules
# files whose dependencies must be computed
sources=`ls *.f90`
sources=`echo *.f90 |
sed 's/\*\.f90//g'` # remove the "*.f90" that remains
# # when there are no such files
if test "$sources" = "" ; then exit ; fi
# files that may contain modules
# extra directories can be specified on the command line
sources_all="$sources"
for dir in $*
do
sources_all="$sources_all `ls $dir/*.f90`"
sources_all="$sources_all `echo $dir/*.f90`"
done
sources_all=`echo $sources_all |
sed 's/[^ ]*\*\.f90//g'` # remove the "dir/*.f90" that remain
# # when there are no such files
rm -f moduledep.tmp1 moduledep.tmp2 # destroy previous contents

View File

@ -10,11 +10,12 @@ for DIR in Modules PW CPV flib pwtools upftools PP PWCOND \
do
# set inter-directory dependencies
case $DIR in
Modules ) DEPENDS="" ;;
Modules ) DEPENDS="../include" ;;
PW | CPV | flib | pwtools | upftools | atomic )
DEPENDS="../Modules" ;;
PP | PWCOND | Gamma | PH ) DEPENDS="../Modules ../PW" ;;
D3 | Raman | Nmr) DEPENDS="../Modules ../PW ../PH" ;;
DEPENDS="../include ../Modules" ;;
PP | PWCOND | Gamma | PH )
DEPENDS="../include ../Modules ../PW" ;;
D3 | Raman | Nmr) DEPENDS="../include ../Modules ../PW ../PH" ;;
esac
# generate dependencies file
@ -22,11 +23,18 @@ do
then
cd $TOPDIR/$DIR
$TOPDIR/moduledep.sh $DEPENDS > make.depend
$TOPDIR/includedep.sh $DEPENDS >> make.depend
fi
# handle special case
mv make.depend make.depend.tmp
sed '/@\/cineca\/prod\/hpm\/include\/f_hpm.h@/d' \
make.depend.tmp > make.depend
rm -f make.depend.tmp
# check for missing dependencies
if grep @ make.depend
then
echo WARNING: modules not found in directory $DIR
echo WARNING: dependencies not found in directory $DIR
fi
done

View File

@ -2,15 +2,21 @@
# moduledep.sh -- script that computes dependencies on Fortran 90 modules
# files whose dependencies must be computed
sources=`ls *.f90`
sources=`echo *.f90 |
sed 's/\*\.f90//g'` # remove the "*.f90" that remains
# # when there are no such files
if test "$sources" = "" ; then exit ; fi
# files that may contain modules
# extra directories can be specified on the command line
sources_all="$sources"
for dir in $*
do
sources_all="$sources_all `ls $dir/*.f90`"
sources_all="$sources_all `echo $dir/*.f90`"
done
sources_all=`echo $sources_all |
sed 's/[^ ]*\*\.f90//g'` # remove the "dir/*.f90" that remain
# # when there are no such files
rm -f moduledep.tmp1 moduledep.tmp2 # destroy previous contents