diff --git a/mex/build/octave/Makefile.am b/mex/build/octave/Makefile.am
index 6f3f3db7b951ba55cf4917e6ef1f6707f0b3dbc6..001705e66161a41c754369231f6b1a9f4b9d1d4d 100644
--- a/mex/build/octave/Makefile.am
+++ b/mex/build/octave/Makefile.am
@@ -2,8 +2,11 @@ ACLOCAL_AMFLAGS = -I ../../../m4
 
 # libdynare++ must come before gensylv, k_order_perturbation, dynare_simul_
 if DO_SOMETHING
-SUBDIRS = mjdgges kronecker bytecode libdynare++ gensylv k_order_perturbation dynare_simul_ logposterior logMHMCMCposterior qzcomplex ordschur libslicot kalman_steady_state
+SUBDIRS = mjdgges kronecker bytecode libdynare++ gensylv k_order_perturbation dynare_simul_ qzcomplex ordschur libslicot kalman_steady_state
 if HAVE_GSL
 SUBDIRS += swz
 endif
+if HAVE_MATIO
+SUBDIRS += logposterior logMHMCMCposterior
+endif
 endif
diff --git a/mex/build/octave/configure.ac b/mex/build/octave/configure.ac
index 8654ef7447d0a81ecad4b17d41696fd20ae7bf1b..5ccdc90994f228928b1a63b01d8a12b3431664db 100644
--- a/mex/build/octave/configure.ac
+++ b/mex/build/octave/configure.ac
@@ -59,6 +59,12 @@ AC_SUBST([LIBADD_DLOPEN])
 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"])
+
 AM_CONDITIONAL([DO_SOMETHING], [test "x$MKOCTFILE" != "x"])
 
 if test "x$MKOCTFILE" != "x"; then
@@ -77,6 +83,12 @@ else
    BUILD_SWZ_MEX_OCTAVE="no (missing GSL)"
 fi
 
+if test "x$MKOCTFILE" != "x" -a "x$ac_cv_header_matio_h" = "xyes" -a "x$ac_cv_lib_matio_Mat_Open" = "xyes"; then
+  BUILD_ESTIMATION_MEX_OCTAVE="yes"
+else
+  BUILD_ESTIMATION_MEX_OCTAVE="no (missing MatIO library)"
+fi
+
 AC_ARG_ENABLE([openmp], AS_HELP_STRING([--enable-openmp], [use OpenMP for parallelization of some MEX files]), [
   if test "x$enable_openmp" = "xyes"; then
     CPPFLAGS="$CPPFLAGS -DUSE_OMP"
@@ -92,6 +104,7 @@ Dynare is now configured for building the following components...
 Binaries (with "make"):
  MEX files for Octave (except SWZ):     $BUILD_MEX_OCTAVE
  SWZ MEX files for Octave:              $BUILD_SWZ_MEX_OCTAVE
+ Estimation MEX for Octave:             $BUILD_ESTIMATION_MEX_OCTAVE
 
 ])
 
diff --git a/mex/build/octave/logMHMCMCposterior/Makefile.am b/mex/build/octave/logMHMCMCposterior/Makefile.am
index d5d3d68d261deb76b7ed58aa22b7320c7e5300b0..071f3d8af8f8e6f721af547460f5aa51dec9df09 100644
--- a/mex/build/octave/logMHMCMCposterior/Makefile.am
+++ b/mex/build/octave/logMHMCMCposterior/Makefile.am
@@ -1,3 +1,5 @@
 EXEEXT = .mex
 include ../mex.am
 include ../../logMHMCMCposterior.am
+
+logMHMCMCposterior_LDADD += $(LIBADD_MATIO)