openfoam/wmake/scripts/makeFiles
Mark Olesen de72a04aeb ENH: make it easier to switch between the various make dependencies programs.
- However, the new ragel-based parser is much faster
  than the others, and does not cause 'too many open files' error
  that the flex-based parser does (issue #784).

  The timings (using src/sampling as being somewhat representative)

    $ wclean; wmakeLnInclude -u .; time wmake -s dep

        3.4s  wmkdepend (ragel) [now default]
        5.7s  wmkdep (flex)
        6.1s  cpp -M

- The makeDepend script is for testing purposes only, but could used as
  a hook for other dependency generation systems (eg, ninja).
  It simply wraps 'cpp -M' in a form that is calling compatible with
  wmkdepend.

BUG: wmkdepend parser was missing optional leading space on #include match

STYLE: use -G2 (goto-based) option for wmkdepend state machine

- the machine is compact with few states and lends itself to this
2018-04-12 10:14:03 +02:00

69 lines
1.8 KiB
Bash
Executable File

#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# makeFiles
#
# Description
# Scan the current directory for source files and construct Make/files
#
# Usage : makeFiles
#
#------------------------------------------------------------------------------
dirToString=$WM_DIR/platforms/$WM_ARCH$WM_COMPILER/dirToString
if [ -r Make/files ]
then
echo "Error: Make/files already exists - exiting" 1>&2
exit 1
fi
[ -x "$dirToString" ] || {
echo "Error: no command $dirToString" 1>&2
exit 1
}
[ -d Make ] || mkdir Make
rm -f Make/files
#------------------------------------------------------------------------------
echo "Creating Make/files"
for dir in $(find . -mindepth 1 -type d -print)
do
case "$dir" in
. | ./Make | ./lnInclude )
# Skip special directories
;;
*)
echo "$(echo $dir | $dirToString -strip) = ${dir#./}"
;;
esac
done > Make/files
[ -s Make/files ] && echo >> Make/files
for file in $(find . -name "*.[cCylLfF]" -type f -print)
do
pathName=$(echo ${file%/*} | $dirToString -strip)
if [ -n "$pathName" ]
then
echo '$('$pathName')/'"${file##*/}"
else
echo "${file##*/}"
fi
done >> Make/files
echo >> Make/files
echo 'EXE = $(FOAM_APPBIN)/'"${PWD##*/}" >> Make/files
#------------------------------------------------------------------------------