- 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
69 lines
1.8 KiB
Bash
Executable File
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
|
|
|
|
#------------------------------------------------------------------------------
|