diff --git a/configure.ac b/configure.ac index c919d5c7d..87375750c 100644 --- a/configure.ac +++ b/configure.ac @@ -30,9 +30,9 @@ AC_PROG_CXX AC_CANONICAL_HOST case ${host_os} in *mingw32*) - # On mingw32, we don't want dynamic libgcc - # Note that static-libstdc++ is only supported since GCC 4.5 (but generates no error on older versions) - LDFLAGS="$LDFLAGS -static-libgcc -static-libstdc++ -static-libgfortran" + # On Windows, we want Dynare++ to be statically linked + AM_LDFLAGS="-static" + AC_SUBST([AM_LDFLAGS]) have_windows="yes" ;; *cygwin*) @@ -51,7 +51,8 @@ esac # Use C++ for testing headers AC_LANG([C++]) -CXXFLAGS="$CXXFLAGS -Wall -Wno-parentheses" +AM_CXXFLAGS="-Wall -Wno-parentheses" +AC_SUBST([AM_CXXFLAGS]) # If default 'ar' is not available, try to find one with a host prefix (see ticket #145) AC_CHECK_PROGS([AR], [ar ${host_alias}-ar]) @@ -125,11 +126,6 @@ AM_CONDITIONAL([HAVE_CWEAVE], [test "x$CWEAVE" != "x"]) AC_PROG_F77 AC_F77_LIBRARY_LDFLAGS case ${host_os} in - *mingw32*) - # Hack to get static linking of libgfortran on MinGW - # (-static-libgfortran doesn't act on gcc/g++) - FLIBS=`echo $FLIBS | sed 's/-lgfortran/-Wl,-Bstatic -lgfortran -Wl,-Bdynamic/'` - ;; *darwin*) # * OS X doesn't need to link against the Fortran libraries because # everything is contained within the vecLib framework. @@ -144,12 +140,6 @@ fi AM_CONDITIONAL([HAVE_BLAS], [test x"$ax_blas_ok" = "xyes"]) AM_CONDITIONAL([HAVE_LAPACK], [test x"$ax_lapack_ok" = "xyes"]) -case ${host_os} in - *mingw32*) - # Ensure that -lpthread is statically linked under MinGW - PTHREAD_LIBS="-Wl,-Bstatic -lpthread -Wl,-Bdynamic" - ;; -esac AX_PTHREAD AC_CONFIG_FILES([Makefile diff --git a/dynare++/integ/cc/Makefile.am b/dynare++/integ/cc/Makefile.am index 408e858aa..ef0102ef7 100644 --- a/dynare++/integ/cc/Makefile.am +++ b/dynare++/integ/cc/Makefile.am @@ -26,7 +26,7 @@ noinst_LIBRARIES = libinteg.a libinteg_a_SOURCES = $(CWEBSRC) $(GENERATED_FILES) precalc_quadrature.dat libinteg_a_CPPFLAGS = -I../../sylv/cc -I../../tl/cc -I$(top_srcdir)/mex/sources -libinteg_a_CXXFLAGS = $(PTHREAD_CFLAGS) +libinteg_a_CXXFLAGS = $(AM_CXXFLAGS) $(PTHREAD_CFLAGS) BUILT_SOURCES = $(GENERATED_FILES) diff --git a/dynare++/integ/src/Makefile.am b/dynare++/integ/src/Makefile.am index 39b9dee39..d964d2eff 100644 --- a/dynare++/integ/src/Makefile.am +++ b/dynare++/integ/src/Makefile.am @@ -2,5 +2,5 @@ noinst_PROGRAMS = quadrature-points quadrature_points_SOURCES = quadrature-points.cpp quadrature_points_CPPFLAGS = -I../.. -I../../sylv/cc -I../../integ/cc -I../../tl/cc -quadrature_points_CXXFLAGS = $(PTHREAD_CFLAGS) +quadrature_points_CXXFLAGS = $(AM_CXXFLAGS) $(PTHREAD_CFLAGS) quadrature_points_LDADD = ../cc/libinteg.a ../../tl/cc/libtl.a ../../parser/cc/libparser.a ../../sylv/cc/libsylv.a ../../utils/cc/libutils.a $(LAPACK_LIBS) $(BLAS_LIBS) $(LIBS) $(FLIBS) $(PTHREAD_LIBS) diff --git a/dynare++/integ/testing/Makefile.am b/dynare++/integ/testing/Makefile.am index 0814d69a6..c30ef377a 100644 --- a/dynare++/integ/testing/Makefile.am +++ b/dynare++/integ/testing/Makefile.am @@ -2,8 +2,8 @@ check_PROGRAMS = tests tests_SOURCES = tests.cpp tests_CPPFLAGS = -I../cc -I../../tl/cc -I../../sylv/cc -I$(top_srcdir)/mex/sources -tests_CXXFLAGS = $(PTHREAD_CFLAGS) -tests_LDFLAGS = $(LDFLAGS_MATIO) +tests_CXXFLAGS = $(AM_CXXFLAGS) $(PTHREAD_CFLAGS) +tests_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_MATIO) tests_LDADD = ../../tl/cc/libtl.a ../../sylv/cc/libsylv.a ../cc/libinteg.a $(LAPACK_LIBS) $(BLAS_LIBS) $(LIBS) $(FLIBS) $(PTHREAD_LIBS) $(LIBADD_MATIO) check-local: diff --git a/dynare++/kord/Makefile.am b/dynare++/kord/Makefile.am index 05119d7a4..4ac8d15c6 100644 --- a/dynare++/kord/Makefile.am +++ b/dynare++/kord/Makefile.am @@ -54,7 +54,7 @@ noinst_LIBRARIES = libkord.a libkord_a_SOURCES = $(CWEBSRC) $(GENERATED_FILES) libkord_a_CPPFLAGS = -I../sylv/cc -I../tl/cc -I../integ/cc -I$(top_srcdir)/mex/sources $(CPPFLAGS_MATIO) -libkord_a_CXXFLAGS = $(PTHREAD_CFLAGS) +libkord_a_CXXFLAGS = $(AM_CXXFLAGS) $(PTHREAD_CFLAGS) BUILT_SOURCES = $(GENERATED_FILES) @@ -64,8 +64,8 @@ check_PROGRAMS = tests tests_SOURCES = tests.cpp tests_CPPFLAGS = -I../sylv/cc -I../tl/cc -I../integ/cc -I$(top_srcdir)/mex/sources -tests_CXXFLAGS = $(PTHREAD_CFLAGS) -tests_LDFLAGS = $(LDFLAGS_MATIO) +tests_CXXFLAGS = $(AM_CXXFLAGS) $(PTHREAD_CFLAGS) +tests_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_MATIO) tests_LDADD = libkord.a ../tl/cc/libtl.a ../sylv/cc/libsylv.a $(LAPACK_LIBS) $(BLAS_LIBS) $(LIBS) $(FLIBS) $(PTHREAD_LIBS) $(LIBADD_MATIO) check-local: diff --git a/dynare++/src/Makefile.am b/dynare++/src/Makefile.am index a95ecee71..126264c34 100644 --- a/dynare++/src/Makefile.am +++ b/dynare++/src/Makefile.am @@ -22,9 +22,9 @@ dynare___SOURCES = \ $(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) $(CPPFLAGS_MATIO) -dynare___LDFLAGS = $(LDFLAGS_MATIO) $(BOOST_LDFLAGS) +dynare___LDFLAGS = $(AM_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) +dynare___CXXFLAGS = $(AM_CXXFLAGS) $(PTHREAD_CFLAGS) BUILT_SOURCES = $(GENERATED_FILES) EXTRA_DIST = dynglob.lex dynglob.y diff --git a/dynare++/tl/cc/Makefile.am b/dynare++/tl/cc/Makefile.am index dde28e45d..1ad9f87f2 100644 --- a/dynare++/tl/cc/Makefile.am +++ b/dynare++/tl/cc/Makefile.am @@ -92,7 +92,7 @@ noinst_LIBRARIES = libtl.a libtl_a_SOURCES = $(CWEBSRC) $(GENERATED_FILES) libtl_a_CPPFLAGS = -I../../sylv/cc $(CPPFLAGS_MATIO) -libtl_a_CXXFLAGS = $(PTHREAD_CFLAGS) +libtl_a_CXXFLAGS = $(AM_CXXFLAGS) $(PTHREAD_CFLAGS) BUILT_SOURCES = $(GENERATED_FILES) diff --git a/dynare++/tl/testing/Makefile.am b/dynare++/tl/testing/Makefile.am index 70b2ff333..9c8b78753 100644 --- a/dynare++/tl/testing/Makefile.am +++ b/dynare++/tl/testing/Makefile.am @@ -2,8 +2,8 @@ check_PROGRAMS = tests tests_SOURCES = factory.cpp factory.h monoms.cpp monoms.h tests.cpp tests_CPPFLAGS = -I../cc -I../../sylv/cc -tests_CXXFLAGS = $(PTHREAD_CFLAGS) -tests_LDFLAGS = $(LDFLAGS_MATIO) +tests_CXXFLAGS = $(AM_CXXFLAGS) $(PTHREAD_CFLAGS) +tests_LDFLAGS = $(AM_LDFLAGS) $(LDFLAGS_MATIO) tests_LDADD = ../cc/libtl.a ../../sylv/cc/libsylv.a $(LAPACK_LIBS) $(BLAS_LIBS) $(LIBS) $(FLIBS) $(PTHREAD_LIBS) $(LIBADD_MATIO) check-local: diff --git a/m4/ax_matio.m4 b/m4/ax_matio.m4 index 9a2235a80..fa940ecc1 100644 --- a/m4/ax_matio.m4 +++ b/m4/ax_matio.m4 @@ -44,6 +44,8 @@ AC_ARG_WITH(matio, AC_HELP_STRING([--with-matio=DIR], [prefix to MATIO installat dnl If detected, libz and libhdf5 are added to LIBS, used for matio test LIBS="" AC_CHECK_LIB([z], [compress]) + dnl szip is needed under MSYS2 + AC_CHECK_LIB([szip], [SZ_Compress]) AC_CHECK_LIB([hdf5], [H5Fcreate]) AC_CHECK_HEADER([matio.h], [], [has_matio=no]) diff --git a/mex/build/matlab/configure.ac b/mex/build/matlab/configure.ac index ef87b0fdb..2a3c9b5fd 100644 --- a/mex/build/matlab/configure.ac +++ b/mex/build/matlab/configure.ac @@ -66,8 +66,6 @@ AM_PROG_AR case ${host_os} in *mingw32*) - # Ensure that -lpthread is statically linked under MinGW - PTHREAD_LIBS="-Wl,-Bstatic -lpthread -Wl,-Bdynamic" # Kludge for bug in MinGW, that defines __STDC_UTF_16__ but not char16_t # This breaks the matrix.h of older MATLABs (e.g. R2009a) # Also see @@ -94,6 +92,16 @@ AM_CONDITIONAL([HAVE_MATIO], [test "x$has_matio" = "xyes"]) AX_SLICOT([matlab]) AM_CONDITIONAL([HAVE_SLICOT], [test "x$has_slicot" = "xyes"]) +# On Windows, we want static linking of the external libraries +case ${host_os} in + *mingw32*) + PTHREAD_LIBS="-Wl,-Bstatic $PTHREAD_LIBS -Wl,-Bdynamic" + GSL_LIBS="-Wl,-Bstatic $GSL_LIBS -Wl,-Bdynamic" + LIBADD_MATIO="-Wl,-Bstatic $LIBADD_MATIO -Wl,-Bdynamic" + LIBADD_SLICOT="-Wl,-Bstatic $LIBADD_SLICOT -Wl,-Bdynamic" + ;; +esac + AM_CONDITIONAL([DO_SOMETHING], [test "x$ax_enable_matlab" = "xyes" -a "x$ax_matlab_version_ok" = "xyes" -a "x$ax_mexopts_ok" = "xyes"]) if test "x$ax_enable_matlab" = "xyes" -a "x$ax_matlab_version_ok" = "xyes" -a "x$ax_mexopts_ok" = "xyes"; then diff --git a/preprocessor b/preprocessor index f223af91a..beb99d98c 160000 --- a/preprocessor +++ b/preprocessor @@ -1 +1 @@ -Subproject commit f223af91afaaec5fdaa9224c2386d25d5428eee3 +Subproject commit beb99d98cdda587cc8341e0891e3be6ef6c98d4f diff --git a/windows/dynare.nsi b/windows/dynare.nsi index 1ccf77929..7ad7126b7 100644 --- a/windows/dynare.nsi +++ b/windows/dynare.nsi @@ -140,7 +140,7 @@ SectionGroupEnd Section "Dynare++ (standalone executable)" SetOutPath $INSTDIR\dynare++ - File ..\dynare++\src\dynare++.exe ..\dynare++\extern\matlab\dynare_simul.m ..\dynare++\*.dll + File ..\dynare++\src\dynare++.exe ..\dynare++\extern\matlab\dynare_simul.m SectionEnd Section "Documentation and examples (Dynare and Dynare++)"