* Rewrite preprocessor build system with automake

* Use new autoconf macros for flex/bison
* Remove autoconf macro for dynare++


git-svn-id: https://www.dynare.org/svn/dynare/trunk@2911 ac1d8469-bf42-47a9-8791-bf33cf982152
time-shift
sebastien 2009-09-09 16:47:43 +00:00
parent 3bf1c45ddf
commit 9c3c314746
7 changed files with 217 additions and 77 deletions

3
Makefile.am Normal file
View File

@ -0,0 +1,3 @@
SUBDIRS = preprocessor doc
ACLOCAL_AMFLAGS = -I m4

View File

@ -20,7 +20,9 @@ dnl along with Dynare. If not, see <http://www.gnu.org/licenses/>.
AC_PREREQ([2.63])
AC_INIT([dynare], [4.1-unstable])
AC_CONFIG_SRCDIR([preprocessor/DynareMain.cc])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
AC_PROG_CXX
# Use C++ for testing headers
@ -41,17 +43,15 @@ case $host_os in
;;
esac
AC_CHECK_PROGS([FLEX], [flex])
if test -z "$FLEX"; then
AC_MSG_ERROR([No suitable flex found.])
fi
AC_PROG_RANLIB
AM_PROG_LEX
AX_PROG_FLEX([], AC_MSG_ERROR([No suitable flex found.]))
AC_CHECK_HEADERS([FlexLexer.h], [], [AC_MSG_ERROR([Can't find FlexLexer.h])])
AC_CHECK_PROGS([BISON], [bison])
if test -z "$BISON"; then
AC_MSG_ERROR([No suitable bison found.])
fi
AC_PROG_YACC
AX_PROG_BISON([], AC_MSG_ERROR([No suitable bison found.]))
AC_CHECK_HEADERS([boost/graph/adjacency_list.hpp], [], [AC_MSG_ERROR([Can't find Boost Graph Library])])
AC_CHECK_HEADERS([boost/graph/max_cardinality_matching.hpp], [], [AC_MSG_ERROR([Your Boost version is too old. Please install a newer one.])])
@ -89,9 +89,8 @@ then
AX_MATLAB_ARCH
fi
AX_DYNAREPP
AC_CONFIG_FILES([Makefile
preprocessor/macro/Makefile
preprocessor/Makefile
doc/Makefile
doc/preprocessor/Makefile
@ -99,6 +98,7 @@ AC_CONFIG_FILES([Makefile
doc/userguide/Makefile
tests/Makefile
matlab/dynare_version.m
windows/dynare-version.nsi])
windows/dynare-version.nsi
])
AC_OUTPUT

62
m4/ax_prog_bison.m4 Normal file
View File

@ -0,0 +1,62 @@
# ===========================================================================
# http://www.nongnu.org/autoconf-archive/ax_prog_bison.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_PROG_BISON(ACTION-IF-TRUE,ACTION-IF-FALSE)
#
# DESCRIPTION
#
# Check whether bison is the parser generator. Run ACTION-IF-TRUE if
# successful, ACTION-IF-FALSE otherwise
#
# LICENSE
#
# Copyright (c) 2009 Francesco Salvestrini <salvestrini@users.sourceforge.net>
#
# This program 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 2 of the License, or (at your
# option) any later version.
#
# This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
AC_DEFUN([AX_PROG_BISON], [
AC_REQUIRE([AC_PROG_YACC])
AC_REQUIRE([AC_PROG_SED])
AC_CACHE_CHECK([if bison is the parser generator],[ax_cv_prog_bison],[
AS_IF([test "`echo \"$YACC\" | $SED 's,^.*\(bison\).*$,\1,'`" = "bison" ],[
ax_cv_prog_bison=yes
],[
ax_cv_prog_bison=no
])
])
AS_IF([test "$ax_cv_prog_bison" = yes],[
:
$1
],[
:
$2
])
])

62
m4/ax_prog_flex.m4 Normal file
View File

@ -0,0 +1,62 @@
# ===========================================================================
# http://www.nongnu.org/autoconf-archive/ax_prog_flex.html
# ===========================================================================
#
# SYNOPSIS
#
# AX_PROG_FLEX(ACTION-IF-TRUE,ACTION-IF-FALSE)
#
# DESCRIPTION
#
# Check whether flex is the scanner generator. Run ACTION-IF-TRUE if
# successful, ACTION-IF-FALSE otherwise
#
# LICENSE
#
# Copyright (c) 2009 Francesco Salvestrini <salvestrini@users.sourceforge.net>
#
# This program 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 2 of the License, or (at your
# option) any later version.
#
# This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
#
# As a special exception, the respective Autoconf Macro's copyright owner
# gives unlimited permission to copy, distribute and modify the configure
# scripts that are the output of Autoconf when processing the Macro. You
# need not follow the terms of the GNU General Public License when using
# or distributing such scripts, even though portions of the text of the
# Macro appear in them. The GNU General Public License (GPL) does govern
# all other use of the material that constitutes the Autoconf Macro.
#
# This special exception to the GPL applies to versions of the Autoconf
# Macro released by the Autoconf Archive. When you make and distribute a
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
AC_DEFUN([AX_PROG_FLEX], [
AC_REQUIRE([AM_PROG_LEX])
AC_REQUIRE([AC_PROG_SED])
AC_CACHE_CHECK([if flex is the lexer generator],[ax_cv_prog_flex],[
AS_IF([test "`echo \"$LEX\" | $SED 's,^.*\(flex\).*$,\1,'`" = "flex"],[
ax_cv_prog_flex=yes
],[
ax_cv_prog_flex=no
])
])
AS_IF([test "$ax_cv_prog_flex" = yes],[
:
$1
],[
:
$2
])
])

View File

@ -1,66 +0,0 @@
dnl dynarepp.m4 --- check for Dynare++
dnl
dnl Copyright (C) 2009 Dynare Team
dnl
dnl This file is part of Dynare.
dnl
dnl Dynare is free software: you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation, either version 3 of the License, or
dnl (at your option) any later version.
dnl
dnl Dynare is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with Dynare. If not, see <http://www.gnu.org/licenses/>.
dnl
dnl Code:
# AX_DYNAREPP
# ---------
# Check for Dynare++.
AC_DEFUN([AX_DYNAREPP],
[dnl
AC_PREREQ([2.63])
ax_enable_dynarepp=
AC_ARG_WITH([dynarepp], AC_HELP_STRING([--with-dynarepp=ARG], [path to Dynare++]),
[case $withval in
no)
# Explicitly enable or disable Dynare++ but determine
# Matlab prefix automatically.
ax_enable_dynarepp=no
;;
*)
# Enable Dynare++ and use ARG as the Dynare++ prefix.
# ARG must be an existing directory.
ax_enable_dynarepp=yes
DYNAREPP=`cd "${withval-/}" > /dev/null 2>&1 && pwd`
if test -z "$DYNAREPP" ; then
AC_MSG_ERROR([invalid value '$withval' for --with-dynarepp])
fi
;;
esac])
AC_MSG_CHECKING([for Dynare++])
if test x$ax_enable_dynarepp != xno ; then
if test "${DYNAREPP+set}" = set && test -d "$DYNAREPP/kord" ; then
ax_enable_dynarepp=yes
elif test x$ax_enable_dynarepp = x ; then
ax_enable_dynarepp=no
else
# Fail if Matlab was explicitly enabled.
AC_MSG_RESULT([failure])
AC_MSG_ERROR([check your Dynare++ setup])
fi
fi
AC_MSG_RESULT([$ax_enable_dynarepp])
AC_SUBST([DYNAREPP])
])
dnl dynarepp.m4 ends here
dnl Local variables:
dnl tab-width: 8
dnl End:

62
preprocessor/Makefile.am Normal file
View File

@ -0,0 +1,62 @@
SUBDIRS = macro
BUILT_SOURCES = DynareBison.hh stack.hh position.hh location.hh DynareBison.cc DynareFlex.cc
matlabdir = $(libdir)/matlab
matlab_PROGRAMS = dynare_m
dynare_m_SOURCES = \
DynareFlex.ll \
DynareBison.yy \
ComputingTasks.cc \
ComputingTasks.hh \
ModelTree.cc \
ModelTree.hh \
StaticModel.cc \
StaticModel.hh \
StaticDllModel.cc \
StaticDllModel.hh \
DynamicModel.cc \
DynamicModel.hh \
NumericalConstants.cc \
NumericalConstants.hh \
NumericalInitialization.cc \
NumericalInitialization.hh \
Shocks.cc \
Shocks.hh \
SigmaeInitialization.cc \
SigmaeInitialization.hh \
SymbolTable.cc \
SymbolTable.hh \
SymbolList.cc \
SymbolList.hh \
ParsingDriver.cc \
ParsingDriver.hh \
DataTree.cc \
DataTree.hh \
ModFile.cc \
ModFile.hh \
Statement.cc \
Statement.hh \
ExprNode.cc \
ExprNode.hh \
MinimumFeedbackSet.cc \
MinimumFeedbackSet.hh \
IncidenceMatrix.cc \
IncidenceMatrix.hh \
BlockTriangular.cc \
BlockTriangular.hh \
DynareMain.cc \
DynareMain.hh \
DynareMain2.cc \
DynareMain2.hh \
CodeInterpreter.hh
dynare_m_LDADD = macro/libmacro.a
DynareFlex.cc: DynareFlex.ll
$(LEX) -oDynareFlex.cc DynareFlex.ll
DynareBison.cc DynareBison.hh location.hh stack.hh position.hh: DynareBison.yy
$(YACC) -o DynareBison.cc DynareBison.yy

View File

@ -0,0 +1,17 @@
noinst_LIBRARIES = libmacro.a
BUILT_SOURCES = MacroBison.hh stack.hh position.hh location.hh MacroBison.cc MacroFlex.cc
libmacro_a_SOURCES = \
MacroFlex.ll \
MacroBison.yy \
MacroDriver.cc \
MacroDriver.hh \
MacroValue.cc \
MacroValue.hh
MacroFlex.cc: MacroFlex.ll
$(LEX) -oMacroFlex.cc MacroFlex.ll
MacroBison.cc MacroBison.hh location.hh stack.hh position.hh: MacroBison.yy
$(YACC) -o MacroBison.cc MacroBison.yy