diff --git a/.gitignore b/.gitignore
index 51427526ee9225e6f2b9b1b3e612db6466e45d57..0d6f57fe5fedcc5dc94cd2172f8ef09c01631e26 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,9 +23,8 @@ aclocal.m4
 autom4te.cache
 TAGS
 
-# Preprocessor
-/src/dynare_m
-/src/dynare_m.exe
+/src/dynare-preprocessor
+/src/dynare-preprocessor.exe
 /src/DynareBison.cc
 /src/DynareBison.hh
 /src/FlexLexer.h
@@ -41,6 +40,10 @@ TAGS
 /src/macro/stack.hh
 /src/doc/
 
+# Symlinks created by Dynare/MATLAB’s main Makefile.am
+/dynare-preprocessor
+/dynare-preprocessor.exe
+
 # macOS stuff
 .DS_Store
 
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 81fa2137b6c43974f1426ded0d512001a774b6ff..ce526b9d26a14a2f6fb96a02c8a4bc876c69858f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -17,9 +17,9 @@ build_linux_32:
     - autoreconf -si
     - './configure LDFLAGS="-m32 -static -static-libgcc -static-libstdc++" CXXFLAGS=-m32'
     - make -j$(nproc)
-    - strip src/dynare_m
+    - strip src/dynare-preprocessor
     - mkdir -p bin
-    - mv src/dynare_m bin
+    - mv src/dynare-preprocessor bin
     - mkdir -p $CI_COMMIT_SHORT_SHA/linux/32
     - tar cfz $CI_COMMIT_SHORT_SHA/linux/32/preprocessor.tar.gz bin
     - cd $CI_COMMIT_SHORT_SHA/linux/32 && sha256sum preprocessor.tar.gz > sha256sum
@@ -34,9 +34,9 @@ build_linux_64:
     - autoreconf -si
     - './configure LDFLAGS="-static -static-libgcc -static-libstdc++"'
     - make -j$(nproc)
-    - strip src/dynare_m
+    - strip src/dynare-preprocessor
     - mkdir -p bin
-    - mv src/dynare_m bin
+    - mv src/dynare-preprocessor bin
     - mkdir -p $CI_COMMIT_SHORT_SHA/linux/64
     - tar cfz $CI_COMMIT_SHORT_SHA/linux/64/preprocessor.tar.gz bin
     - cd $CI_COMMIT_SHORT_SHA/linux/64 && sha256sum preprocessor.tar.gz > sha256sum
@@ -55,9 +55,9 @@ build_windows_32:
     - autoreconf -si
     - './configure --host=i686-w64-mingw32 --with-boost=$(pwd)/deps/mingw32/include LDFLAGS="-static -static-libgcc -static-libstdc++"'
     - make -j$(nproc)
-    - i686-w64-mingw32-strip src/dynare_m.exe
+    - i686-w64-mingw32-strip src/dynare-preprocessor.exe
     - mkdir -p bin
-    - mv src/dynare_m.exe bin
+    - mv src/dynare-preprocessor.exe bin
     - mkdir -p $CI_COMMIT_SHORT_SHA/windows/32
     - tar cfz $CI_COMMIT_SHORT_SHA/windows/32/preprocessor.tar.gz bin
     - cd $CI_COMMIT_SHORT_SHA/windows/32 && sha256sum preprocessor.tar.gz > sha256sum
@@ -76,9 +76,9 @@ build_windows_64:
     - autoreconf -si
     - './configure --host=x86_64-w64-mingw32 --with-boost=$(pwd)/deps/mingw64/include LDFLAGS="-static -static-libgcc -static-libstdc++"'
     - make -j$(nproc)
-    - x86_64-w64-mingw32-strip src/dynare_m.exe
+    - x86_64-w64-mingw32-strip src/dynare-preprocessor.exe
     - mkdir -p bin
-    - mv src/dynare_m.exe bin
+    - mv src/dynare-preprocessor.exe bin
     - mkdir -p $CI_COMMIT_SHORT_SHA/windows/64
     - tar cfz $CI_COMMIT_SHORT_SHA/windows/64/preprocessor.tar.gz bin
     - cd $CI_COMMIT_SHORT_SHA/windows/64 && sha256sum preprocessor.tar.gz > sha256sum
@@ -95,9 +95,9 @@ build_macOS:
     - autoreconf -si
     - './configure CXX=g++-10 CXXFLAGS=-static-libgcc'
     - make -j$(nproc)
-    - strip src/dynare_m
+    - strip src/dynare-preprocessor
     - mkdir -p bin
-    - mv src/dynare_m bin
+    - mv src/dynare-preprocessor bin
     - mkdir -p $CI_COMMIT_SHORT_SHA/macOS/64
     - tar cfz $CI_COMMIT_SHORT_SHA/macOS/64/preprocessor.tar.gz bin
     - cd $CI_COMMIT_SHORT_SHA/macOS/64 && sha256sum preprocessor.tar.gz > sha256sum
diff --git a/src/Makefile.am b/src/Makefile.am
index 5583a2ae69a10e6a5eddc581f03ff7dc89c1fec8..bf8c8272bc14f0074fac9e5a19730543315aa2d2 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -2,10 +2,10 @@ SUBDIRS = macro
 
 BUILT_SOURCES = DynareBison.hh location.hh DynareBison.cc DynareFlex.cc FlexLexer.h
 
-bin_PROGRAMS = dynare_m
+bin_PROGRAMS = dynare-preprocessor
 
-# We don't put BUILT_SOURCES in dynare_m_SOURCES, otherwise DynareBison.o and DynareFlex.o will be linked two times (Automake translates DynareFlex.ll and DynareBison.yy into their respective .o); so BUILT_SOURCES is in EXTRA_DIST
-dynare_m_SOURCES = \
+# We don't put BUILT_SOURCES in dynare_preprocessor_SOURCES, otherwise DynareBison.o and DynareFlex.o will be linked two times (Automake translates DynareFlex.ll and DynareBison.yy into their respective .o); so BUILT_SOURCES is in EXTRA_DIST
+dynare_preprocessor_SOURCES = \
 	DynareFlex.ll \
 	DynareBison.yy \
 	ComputingTasks.cc \
@@ -65,9 +65,9 @@ EXTRA_DIST = \
 	$(BUILT_SOURCES)
 
 # The -I. is for <FlexLexer.h>
-dynare_m_CPPFLAGS = $(BOOST_CPPFLAGS) -I.
-dynare_m_LDFLAGS = $(AM_LDFLAGS) $(BOOST_LDFLAGS)
-dynare_m_LDADD = macro/libmacro.a -lstdc++fs
+dynare_preprocessor_CPPFLAGS = $(BOOST_CPPFLAGS) -I.
+dynare_preprocessor_LDFLAGS = $(AM_LDFLAGS) $(BOOST_LDFLAGS)
+dynare_preprocessor_LDADD = macro/libmacro.a -lstdc++fs
 
 # -Ca flag comes from hitting a hard-coded size limit.
 # Partial explanation: https://www.owlfolio.org/possibly-useful/flex-input-scanner-rules-are-too-complicated
@@ -78,7 +78,7 @@ DynareFlex.cc: DynareFlex.ll
 FlexLexer.h:
 	cp $(LEXINC)/FlexLexer.h . || test -f ./FlexLexer.h
 
-dynare_m-DynareFlex.$(OBJEXT): CXXFLAGS += -Wno-old-style-cast
+dynare_preprocessor-DynareFlex.$(OBJEXT): CXXFLAGS += -Wno-old-style-cast
 
 # We do not use a multiple target rule for Bison, because otherwise it will be
 # run several times in parallel builds