2009-03-12 12:02:56 +01:00
|
|
|
CXXFLAGS = -Wall
|
2008-02-03 11:28:36 +01:00
|
|
|
|
|
|
|
ifeq ($(shell uname -o), Cygwin)
|
2009-03-12 12:02:56 +01:00
|
|
|
# Detection of uninitialized variables is buggy in Cygwin and generates spurious warnings
|
|
|
|
CXXFLAGS += -Wno-uninitialized
|
|
|
|
CXXFLAGS += -mno-cygwin
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(CROSS_WIN32), yes)
|
|
|
|
CXX = i586-mingw32msvc-g++
|
|
|
|
AR = i586-mingw32msvc-ar
|
|
|
|
# Detection of uninitialized variables is buggy in MinGW and generates spurious warnings
|
|
|
|
CXXFLAGS += -Wno-uninitialized
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(DEBUG),yes)
|
|
|
|
CXXFLAGS += -ggdb
|
2008-12-31 20:29:17 +01:00
|
|
|
else
|
2009-03-12 12:02:56 +01:00
|
|
|
CXXFLAGS += -O3
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(VALGRIND), yes)
|
|
|
|
CXXFLAGS = -Wall -O -g -fno-inline
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(shell uname -o), Cygwin)
|
|
|
|
DYNARE_M = dynare_m.exe
|
|
|
|
else
|
|
|
|
DYNARE_M = dynare_m
|
2008-02-03 11:28:36 +01:00
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(CROSS_WIN32), yes)
|
2009-03-12 12:02:56 +01:00
|
|
|
DYNARE_M = dynare_m.exe
|
2008-02-03 11:28:36 +01:00
|
|
|
endif
|
|
|
|
|
2009-03-12 12:02:56 +01:00
|
|
|
MAIN_OBJS = \
|
2008-02-03 11:28:36 +01:00
|
|
|
DynareFlex.o \
|
|
|
|
DynareBison.o \
|
|
|
|
ComputingTasks.o \
|
|
|
|
ModelTree.o \
|
|
|
|
NumericalConstants.o \
|
|
|
|
NumericalInitialization.o \
|
|
|
|
Shocks.o \
|
|
|
|
SigmaeInitialization.o \
|
|
|
|
SymbolTable.o \
|
2008-04-07 15:14:40 +02:00
|
|
|
SymbolList.o \
|
2008-02-03 11:28:36 +01:00
|
|
|
VariableTable.o \
|
|
|
|
ParsingDriver.o \
|
|
|
|
DataTree.o \
|
|
|
|
ModFile.o \
|
|
|
|
Statement.o \
|
|
|
|
ExprNode.o \
|
|
|
|
ModelNormalization.o \
|
|
|
|
ModelBlocks.o \
|
2008-11-17 10:10:38 +01:00
|
|
|
IncidenceMatrix.o \
|
2008-02-03 11:28:36 +01:00
|
|
|
BlockTriangular.o \
|
2009-03-13 14:48:30 +01:00
|
|
|
ModelGraph.o \
|
2008-02-03 11:28:36 +01:00
|
|
|
DynareMain.o \
|
|
|
|
DynareMain2.o
|
|
|
|
|
2009-03-12 12:02:56 +01:00
|
|
|
MACRO_OBJS = \
|
|
|
|
macro/MacroFlex.o \
|
|
|
|
macro/MacroBison.o \
|
|
|
|
macro/MacroDriver.o \
|
|
|
|
macro/MacroValue.o
|
|
|
|
|
2008-02-03 11:28:36 +01:00
|
|
|
|
2009-03-12 12:02:56 +01:00
|
|
|
# Build rules
|
2008-02-03 11:28:36 +01:00
|
|
|
|
2009-03-12 12:02:56 +01:00
|
|
|
.PHONY: all
|
|
|
|
all: $(DYNARE_M)
|
2008-02-03 11:28:36 +01:00
|
|
|
|
2009-03-12 12:02:56 +01:00
|
|
|
$(DYNARE_M): $(MAIN_OBJS) $(MACRO_OBJS)
|
|
|
|
$(CXX) $(CXXFLAGS) -o $(DYNARE_M) $(MAIN_OBJS) $(MACRO_OBJS)
|
2008-02-03 11:28:36 +01:00
|
|
|
cp $(DYNARE_M) ../matlab/
|
|
|
|
|
|
|
|
|
2009-03-12 12:02:56 +01:00
|
|
|
# Build rules for Flex and Bison files
|
2008-02-03 11:28:36 +01:00
|
|
|
|
2009-03-12 12:02:56 +01:00
|
|
|
DynareFlex.cc: DynareFlex.ll
|
2008-02-03 11:28:36 +01:00
|
|
|
flex -oDynareFlex.cc DynareFlex.ll
|
|
|
|
|
2009-03-13 14:39:31 +01:00
|
|
|
DynareBison.cc DynareBison.hh location.hh stack.hh position.hh: DynareBison.yy
|
2008-02-03 11:28:36 +01:00
|
|
|
bison --verbose -o DynareBison.cc DynareBison.yy
|
|
|
|
|
2009-03-12 12:02:56 +01:00
|
|
|
macro/MacroFlex.cc: macro/MacroFlex.ll
|
|
|
|
cd macro && flex -oMacroFlex.cc MacroFlex.ll
|
|
|
|
|
|
|
|
macro/MacroBison.cc macro/MacroBison.hh macro/location.hh macro/stack.hh macro/position.hh: macro/MacroBison.yy
|
|
|
|
cd macro && bison --verbose -o MacroBison.cc MacroBison.yy
|
|
|
|
|
|
|
|
|
|
|
|
# Dependencies
|
|
|
|
|
|
|
|
# General rule for creating per-source dependencies Makefile
|
|
|
|
# We use -MG to avoid failing on generated headers (MacroBison.hh, DynareBison.hh)
|
|
|
|
# As a consequence, these headers are included without path-prefix
|
|
|
|
%.d: %.cc
|
|
|
|
@set -e; rm -f $@; \
|
|
|
|
$(CXX) -MM -MG $(CPPFLAGS) $< > $@.$$$$; \
|
|
|
|
sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
|
|
|
|
rm -f $@.$$$$
|
|
|
|
|
2009-03-13 14:39:31 +01:00
|
|
|
# As DynareBison.hh, this file is included in the .d files without its path (since it is generated), so we force the path
|
2009-03-12 12:02:56 +01:00
|
|
|
vpath MacroBison.hh macro
|
|
|
|
|
|
|
|
-include $(MAIN_OBJS:.o=.d)
|
|
|
|
-include $(MACRO_OBJS:.o=.d)
|
|
|
|
|
2008-02-03 11:28:36 +01:00
|
|
|
|
|
|
|
# Clean
|
|
|
|
|
2009-03-12 12:02:56 +01:00
|
|
|
.PHONY: clean
|
|
|
|
clean:
|
2009-03-13 14:39:31 +01:00
|
|
|
rm -f *.o *.d *~ \
|
2008-02-03 11:28:36 +01:00
|
|
|
DynareFlex.cc \
|
|
|
|
DynareBison.output \
|
|
|
|
DynareBison.cc \
|
2009-03-13 14:39:31 +01:00
|
|
|
position.hh \
|
|
|
|
stack.hh \
|
|
|
|
location.hh \
|
|
|
|
DynareBison.hh \
|
2008-06-16 18:33:28 +02:00
|
|
|
$(DYNARE_M)
|
2009-03-12 12:02:56 +01:00
|
|
|
cd macro && rm -f *.o *.d *~ \
|
|
|
|
MacroFlex.cc \
|
|
|
|
MacroBison.output \
|
|
|
|
MacroBison.cc \
|
|
|
|
MacroBison.hh \
|
|
|
|
location.hh \
|
|
|
|
stack.hh \
|
|
|
|
position.hh
|