- 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
93 lines
3.2 KiB
Makefile
93 lines
3.2 KiB
Makefile
#----------------------------*- makefile-gmake -*------------------------------
|
|
# ========= |
|
|
# \\ / 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.
|
|
#
|
|
# OpenFOAM 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 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
# File
|
|
# Makefile
|
|
#
|
|
# Description
|
|
# Makefile used to compile wmake utilities.
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
|
|
#------------------------------------------------------------------------------
|
|
# The Makefile use a POSIX shell
|
|
#------------------------------------------------------------------------------
|
|
|
|
SHELL = /bin/sh
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Unset suffices list (suffix rules are not used)
|
|
#------------------------------------------------------------------------------
|
|
|
|
.SUFFIXES:
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Set compilation and dependency building rules
|
|
#------------------------------------------------------------------------------
|
|
|
|
# Locally set optimized compilation
|
|
WM_COMPILE_OPTION = Opt
|
|
|
|
GENERAL_RULES = $(WM_DIR)/rules/General
|
|
include $(GENERAL_RULES)/general
|
|
|
|
|
|
#------------------------------------------------------------------------------
|
|
# Targets
|
|
#------------------------------------------------------------------------------
|
|
|
|
.PHONY: all clean
|
|
|
|
all: $(WMAKE_BIN)/dirToString $(WMAKE_BIN)/wmkdep $(WMAKE_BIN)/wmkdepend
|
|
@echo built wmake-bin for $(WM_ARCH)$(WM_COMPILER)
|
|
|
|
clean:
|
|
@echo clean wmake-bin for $(WM_ARCH)$(WM_COMPILER)
|
|
@rm -rf $(WMAKE_BIN) 2>/dev/null
|
|
@rmdir $(shell dirname $(WMAKE_BIN)) 2>/dev/null || true
|
|
|
|
$(WMAKE_BIN)/dirToString: dirToString.c
|
|
@mkdir -p $(WMAKE_BIN)
|
|
$(call QUIET_MESSAGE,compile,$(<F))
|
|
$E $(cc) $(cFLAGS) $(<F) -o $@
|
|
|
|
$(WMAKE_BIN)/wmkdep: wmkdep.l
|
|
@mkdir -p $(WMAKE_BIN)
|
|
$(call QUIET_MESSAGE,flex,$(<F))
|
|
$E flex -o $@.c $(<F) && $(cc) $(cFLAGS) $@.c -o $@
|
|
@rm -f $@.c 2>/dev/null
|
|
|
|
$(WMAKE_BIN)/wmkdepend: wmkdepend.cpp
|
|
@mkdir -p $(WMAKE_BIN)
|
|
$(call QUIET_MESSAGE,wmkdepend,$(<F))
|
|
$E $(CC) $(c++FLAGS) $(c++LESSWARN) $(<F) -o $@
|
|
|
|
# $(WMAKE_BIN)/wmkdepend: wmkdepend.rl
|
|
# @mkdir -p $(WMAKE_BIN)
|
|
# $(call QUIET_MESSAGE,ragel,$(<F))
|
|
# $E ragel -G2 -o $@.cpp $(<F) && $(CC) $(c++FLAGS) $(c++LESSWARN) $@.cpp -o $@
|
|
# @rm -f $@.cpp 2>/dev/null
|
|
|
|
#------------------------------------------------------------------------------
|