diff --git a/mex/build/octave/configure.ac b/mex/build/octave/configure.ac
index 54afee1e06562dbc92c62f18746000f310da6943..14ed2fa1f783070da47af0c033687c7995935d00 100644
--- a/mex/build/octave/configure.ac
+++ b/mex/build/octave/configure.ac
@@ -98,16 +98,24 @@ case ${host_os} in
     ;;
 esac
 
-# Define an automake conditional for the Windows platform
+# Determine whether to link MEX files against the Octave libraries.
+# mkoctfile no longer does this by default but in practice it is needed
+# for Windows and macOS.
 case ${host_os} in
   *mingw32*)
-        windows_api=yes
+        # This is hardcoded in src/mkoctfile.cc.in.
+        link_octave_libs=yes
+        ;;
+  *darwin*)
+        # Under macOS, the Homebrew formula passes --enable-link-all-dependencies
+        # to the configure script.
+        link_octave_libs=yes
         ;;
   *)
-        windows_api=no
+        link_octave_libs=no
         ;;
 esac
-AM_CONDITIONAL([WINDOWS_API], [test ${windows_api} = yes])
+AM_CONDITIONAL([LINK_OCTAVE_LIBS], [test ${link_octave_libs} = yes])
 
 # Construct final output message
 if test "$enable_mex_dynareplusplus" = yes; then
diff --git a/mex/build/octave/mex.am b/mex/build/octave/mex.am
index ac0fb4721fd89b7ef91b1fcbea87dbc56d1b7709..fd98f21191e51351b082eebc94da71073d1fcd11 100644
--- a/mex/build/octave/mex.am
+++ b/mex/build/octave/mex.am
@@ -10,9 +10,8 @@ AM_FCFLAGS = $(shell $(MKOCTFILE) -p FPICFLAG) -Wall -Wimplicit-interface
 AM_CXXFLAGS = $(shell $(MKOCTFILE) -p CXXPICFLAG) -Wall -Wno-parentheses -Wold-style-cast
 AM_LDFLAGS = $(shell $(MKOCTFILE) -p DL_LDFLAGS)
 
-# Mimick the behaviour of mkoctfile: link against Octave libraries on Windows only
-# (it is required there, otherwise we get a link failure)
-if WINDOWS_API
+# See the comments in configure.ac
+if LINK_OCTAVE_LIBS
 AM_LDFLAGS += -L"$(shell $(MKOCTFILE) -p OCTLIBDIR)"
 LIBS += $(shell $(MKOCTFILE) -p OCTAVE_LIBS)
 endif