diff --git a/configure.ac b/configure.ac index 4e643b5cef23aba75d9df39884109043dbfb0371..637e3ae8817959ac275b6a7943c362fd95c84a3a 100644 --- a/configure.ac +++ b/configure.ac @@ -87,10 +87,8 @@ AC_CHECK_LIB([dl], [dlopen], [LIBADD_DLOPEN="-ldl"], []) AC_SUBST([LIBADD_DLOPEN]) # Check for libmatio, needed by Dynare++ -AC_CHECK_HEADER([matio.h]) -AC_CHECK_LIB([matio], [Mat_Open], [LIBADD_MATIO="-lmatio"]) -AC_SUBST([LIBADD_MATIO]) -AM_CONDITIONAL([HAVE_MATIO], [test "x$ac_cv_header_matio_h" = "xyes" -a "x$ac_cv_lib_matio_Mat_Open" = "xyes"]) +AX_MATIO +AM_CONDITIONAL([HAVE_MATIO], [test "x$has_matio" = "xyes"]) AC_CHECK_PROG([MAKEINFO], [makeinfo], [makeinfo]) @@ -238,7 +236,7 @@ AM_CONDITIONAL([ENABLE_ORG_EXPORT], [test "x$enable_org_export" != "x"]) BUILD_PREPROCESSOR="yes" -if test "x$ax_blas_ok" = "xyes" -a "x$ax_lapack_ok" = "xyes" -a "x$ac_cv_header_matio_h" = "xyes" -a "x$ac_cv_lib_matio_Mat_Open" = "xyes"; then +if test "x$ax_blas_ok" = "xyes" -a "x$ax_lapack_ok" = "xyes" -a "x$has_matio" = "xyes"; then if test x"$ax_pthread_ok" = "xyes"; then BUILD_DYNAREPLUSPLUS="yes" else diff --git a/dynare++/src/Makefile.am b/dynare++/src/Makefile.am index f5429ff845ba4d0de987f7712cd052d48a9e83ce..8bf57d62079bc98c083ef5b4f86d6ee48ab7e43e 100644 --- a/dynare++/src/Makefile.am +++ b/dynare++/src/Makefile.am @@ -21,9 +21,9 @@ dynare___SOURCES = \ nlsolve.h \ $(GENERATED_FILES) -dynare___CPPFLAGS = -I../sylv/cc -I../tl/cc -I../kord -I../integ/cc -I.. -I$(top_srcdir)/mex/sources -DDYNVERSION=\"$(PACKAGE_VERSION)\" $(BOOST_CPPFLAGS) -dynare___LDFLAGS = $(BOOST_LDFLAGS) -dynare___LDADD = ../kord/libkord.a ../integ/cc/libinteg.a ../tl/cc/libtl.a ../parser/cc/libparser.a ../utils/cc/libutils.a ../sylv/cc/libsylv.a $(noinst_LIBRARIES) $(LAPACK_LIBS) $(BLAS_LIBS) $(LIBS) $(FLIBS) $(PTHREAD_LIBS) $(LIBADD_MATIO) +dynare___CPPFLAGS = -I../sylv/cc -I../tl/cc -I../kord -I../integ/cc -I.. -I$(top_srcdir)/mex/sources -DDYNVERSION=\"$(PACKAGE_VERSION)\" $(BOOST_CPPFLAGS) $(MATIO_CFLAGS) +dynare___LDFLAGS = $(LDFLAGS_MATIO) $(BOOST_LDFLAGS) +dynare___LDADD = ../kord/libkord.a ../integ/cc/libinteg.a ../tl/cc/libtl.a ../parser/cc/libparser.a ../utils/cc/libutils.a ../sylv/cc/libsylv.a $(LIBADD_MATIO) $(noinst_LIBRARIES) $(LAPACK_LIBS) $(BLAS_LIBS) $(LIBS) $(FLIBS) $(PTHREAD_LIBS) dynare___CXXFLAGS = $(PTHREAD_CFLAGS) BUILT_SOURCES = $(GENERATED_FILES) diff --git a/m4/ax_matio.m4 b/m4/ax_matio.m4 new file mode 100644 index 0000000000000000000000000000000000000000..905a1d3096f2ae1cedf34c18f410aae1343931e6 --- /dev/null +++ b/m4/ax_matio.m4 @@ -0,0 +1,54 @@ +dnl Detect the MATIO Library. +dnl We don't use the official M4 macro since it relies on the script gsl-config, +dnl which does not work when cross-compiling. +dnl +dnl Copyright (C) 2012 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/>. + +AC_DEFUN([AX_MATIO], +[ +AC_ARG_WITH(matio, AC_HELP_STRING([--with-matio=DIR], [prefix to MATIO installation]), + matio_prefix="$withval", matio_prefix="") + + has_matio=yes + + if test "x$matio_prefix" != "x"; then + CFLAGS_MATIO="-I$withval/include" + LDFLAGS_MATIO="-L$withval/lib" + else + CFLAGS_MATIO="" + LDFLAGS_MATIO="" + fi + + ac_save_CFLAGS="$CFLAGS" + ac_save_LDFLAGS="$LDFLAGS" + + LIBADD_MATIO="" + CFLAGS="$CFLAGS_MATIO $CFLAGS" + LDFLAGS="$LDFLAGS_MATIO $LDFLAGS" + + AC_CHECK_HEADER([matio.h], [], [has_matio=no]) + AC_CHECK_LIB([matio], [Mat_Open], [LIBADD_MATIO="-lmatio"], [has_matio=no]) + + CFLAGS="$ac_save_CFLAGS" + LDFLAGS="$ac_save_LDFLAGS" + LIBS="$ac_save_LIBS" + + AC_SUBST(CFLAGS_MATIO) + AC_SUBST(LIBADD_MATIO) + AC_SUBST(LDFLAGS_MATIO) +]) diff --git a/mex/build/dynare_simul_.am b/mex/build/dynare_simul_.am index f9c504c0b800d4bbc70d03ac064cae5bd10a5e12..bd9ce7c2e527b380464257657d72ce1ca0a8d836 100644 --- a/mex/build/dynare_simul_.am +++ b/mex/build/dynare_simul_.am @@ -1,10 +1,11 @@ noinst_PROGRAMS = dynare_simul_ -dynare_simul__CPPFLAGS = -I$(top_srcdir)/../../../dynare++/sylv/cc -I$(top_srcdir)/../../../dynare++/tl/cc -I$(top_srcdir)/../../../dynare++/kord -I$(top_srcdir)/../../sources +dynare_simul__CPPFLAGS = -I$(top_srcdir)/../../../dynare++/sylv/cc -I$(top_srcdir)/../../../dynare++/tl/cc -I$(top_srcdir)/../../../dynare++/kord -I$(top_srcdir)/../../sources $(CFLAGS_MATIO) dynare_simul__CXXFLAGS = $(PTHREAD_CFLAGS) # libdynare++ must come before pthread +dynare_simul__LDFLAGS = $(LDFLAGS_MATIO) dynare_simul__LDADD = ../libdynare++/libdynare++.a $(PTHREAD_LIBS) $(LIBADD_MATIO) nodist_dynare_simul__SOURCES = $(top_srcdir)/../../../dynare++/extern/matlab/dynare_simul.cpp diff --git a/mex/build/estimation.am b/mex/build/estimation.am index b2a92a32680fb9d82cb744b82f9f0eb4624ffba2..7482568e696063afbf6d58e1439eb7058efddd3f 100644 --- a/mex/build/estimation.am +++ b/mex/build/estimation.am @@ -1,9 +1,9 @@ noinst_PROGRAMS = logposterior logMHMCMCposterior # We use shared flags so that automake does not compile things two times -CPPFLAGS += -I$(top_srcdir)/../../sources/estimation/libmat -I$(top_srcdir)/../../sources/estimation/utils $(BOOST_CPPFLAGS) -LDFLAGS += $(BOOST_LDFLAGS) -LDADD = $(LIBADD_DLOPEN) +CPPFLAGS += -I$(top_srcdir)/../../sources/estimation/libmat -I$(top_srcdir)/../../sources/estimation/utils $(CFLAGS_MATIO) $(BOOST_CPPFLAGS) +LDFLAGS += $(LDFLAGS_MATIO) $(BOOST_LDFLAGS) +LDADD = $(LIBADD_DLOPEN) $(LIBADD_MATIO) TOPDIR = $(top_srcdir)/../../sources/estimation diff --git a/mex/build/k_order_perturbation.am b/mex/build/k_order_perturbation.am index 8175e4dac02a46710356e3d2a478827951d48912..c5c323929fd9bdc3711445bf09ca3429cece5cd4 100644 --- a/mex/build/k_order_perturbation.am +++ b/mex/build/k_order_perturbation.am @@ -2,9 +2,10 @@ noinst_PROGRAMS = k_order_perturbation k_order_perturbation_CPPFLAGS = -I$(top_srcdir)/../../../dynare++/src -I$(top_srcdir)/../../../dynare++/kord -I$(top_srcdir)/../../../dynare++/tl/cc -I$(top_srcdir)/../../../dynare++/utils/cc -I$(top_srcdir)/../../../dynare++/sylv/cc -I$(top_srcdir)/../../../dynare++/integ/cc -I$(top_srcdir)/../../sources -k_order_perturbation_CXXFLAGS = $(PTHREAD_CFLAGS) +k_order_perturbation_CXXFLAGS = $(CFLAGS_MATIO) $(PTHREAD_CFLAGS) # libdynare++ must come before pthread +k_order_perturbation_LDFLAGS = $(LDFLAGS_MATIO) k_order_perturbation_LDADD = ../libdynare++/libdynare++.a $(PTHREAD_LIBS) $(LIBADD_DLOPEN) $(LIBADD_MATIO) TOPDIR = $(top_srcdir)/../../sources/k_order_perturbation diff --git a/mex/build/matlab/configure.ac b/mex/build/matlab/configure.ac index 4cbdbd1bade684a5051a9567efa989c6fe8438c9..838f951223917b83aec75acb6216a26faee54555 100644 --- a/mex/build/matlab/configure.ac +++ b/mex/build/matlab/configure.ac @@ -77,10 +77,8 @@ AX_GSL AM_CONDITIONAL([HAVE_GSL], [test "x$has_gsl" = "xyes"]) # Check for libmatio, needed by MEX files using Dynare++ code -AC_CHECK_HEADER([matio.h]) -AC_CHECK_LIB([matio], [Mat_Open], [LIBADD_MATIO="-lmatio"]) -AC_SUBST([LIBADD_MATIO]) -AM_CONDITIONAL([HAVE_MATIO], [test "x$ac_cv_header_matio_h" = "xyes" -a "x$ac_cv_lib_matio_Mat_Open" = "xyes"]) +AX_MATIO +AM_CONDITIONAL([HAVE_MATIO], [test "x$has_matio" = "xyes"]) # Check for libslicot, needed by kalman_steady_state AX_SLICOT([matlab]) @@ -98,7 +96,7 @@ else BUILD_MEX_MATLAB="no (missing MATLAB, or unknown version, or unknown architecture)" fi -if test "x$ax_enable_matlab" = "xyes" -a "x$ac_cv_header_matio_h" = "xyes" -a "x$ac_cv_lib_matio_Mat_Open" = "xyes"; then +if test "x$ax_enable_matlab" = "xyes" -a "x$has_matio" = "xyes"; then BUILD_KORDER_DYNSIMUL_MEX_MATLAB="yes" else BUILD_KORDER_DYNSIMUL_MEX_MATLAB="no (missing MatIO library)" diff --git a/mex/build/octave/configure.ac b/mex/build/octave/configure.ac index 6fb570f8020f74ad09977148d7034d7586246000..88a9089d7ee684f26e9d4c5b9206ca0c4e56bd84 100644 --- a/mex/build/octave/configure.ac +++ b/mex/build/octave/configure.ac @@ -60,10 +60,8 @@ AX_GSL AM_CONDITIONAL([HAVE_GSL], [test "x$has_gsl" = "xyes"]) # Check for libmatio, needed by estimation DLL (only under Octave, as an alternative to MATLAB's libmat) -AC_CHECK_HEADER([matio.h]) -AC_CHECK_LIB([matio], [Mat_Open], [LIBADD_MATIO="-lmatio"]) -AC_SUBST([LIBADD_MATIO]) -AM_CONDITIONAL([HAVE_MATIO], [test "x$ac_cv_header_matio_h" = "xyes" -a "x$ac_cv_lib_matio_Mat_Open" = "xyes"]) +AX_MATIO +AM_CONDITIONAL([HAVE_MATIO], [test "x$has_matio" = "xyes"]) # Check for libslicot, needed by kalman_steady_state AX_SLICOT([octave]) @@ -81,7 +79,7 @@ else BUILD_MEX_OCTAVE="no (missing mkoctfile)" fi -if test "x$MKOCTFILE" != "x" -a "x$ac_cv_header_matio_h" = "xyes" -a "x$ac_cv_lib_matio_Mat_Open" = "xyes"; then +if test "x$MKOCTFILE" != "x" -a "x$has_matio" = "xyes"; then BUILD_ESTIMATION_KORDER_DYNSIMUL_MEX_OCTAVE="yes" else BUILD_ESTIMATION_KORDER_DYNSIMUL_MEX_OCTAVE="no (missing MatIO library)" @@ -93,7 +91,7 @@ else BUILD_KALMAN_STEADY_STATE_OCTAVE="no (missing SLICOT)" fi -if test "x$MKOCTFILE" != "x" -a "x$has_gsl" = "xyes" -a "x$ac_cv_header_matio_h" = "xyes" -a "x$ac_cv_lib_matio_Mat_Open" = "xyes"; then +if test "x$MKOCTFILE" != "x" -a "x$has_gsl" = "xyes" -a "x$has_matio" = "xyes"; then BUILD_MS_SBVAR_MEX_OCTAVE="yes" else BUILD_MS_SBVAR_MEX_OCTAVE="no (missing GSL or MatIO library)" diff --git a/mex/build/octave/ms_sbvar/Makefile.am b/mex/build/octave/ms_sbvar/Makefile.am index 6a75caf5a74a334f9f64a5559f13b9a4c43949b8..30e2a99b095476029942654aba750165e90ebeb5 100644 --- a/mex/build/octave/ms_sbvar/Makefile.am +++ b/mex/build/octave/ms_sbvar/Makefile.am @@ -2,5 +2,11 @@ EXEEXT = .mex include ../mex.am include ../../ms_sbvar.am +ms_sbvar_command_line_CPPLAGS = $(MATIO_CFLAGS) +ms_sbvar_create_init_file_CPPLAGS = $(MATIO_CFLAGS) + +ms_sbvar_command_line_LDFLAGS = $(LDFLAGS_MATIO) +ms_sbvar_create_init_file_LDFLAGS = $(LDFLAGS_MATIO) + ms_sbvar_command_line_LDADD = $(LIBADD_MATIO) -ms_sbvar_create_init_file_LDADD = $(LIBADD_MATIO) \ No newline at end of file +ms_sbvar_create_init_file_LDADD = $(LIBADD_MATIO)