From 4d22c4c0c0f7b52afcbae6d30d0f29373957decc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Fri, 17 Jul 2020 11:44:20 +0200
Subject: [PATCH] Drop 32-bit binaries from Windows package

Closes: #1713
---
 .gitlab-ci.yml                 |   6 +-
 matlab/add_path_to_mex_files.m |  17 +-
 matlab/dynare.m                |   6 -
 windows/README.txt             |   9 +-
 windows/build.sh               |  77 +----
 windows/deps/Makefile          |  97 +-----
 windows/deps/mkoctfile32       | 541 ---------------------------------
 windows/deps/versions.mk       |  41 +--
 windows/dynare.nsi             |  47 +--
 windows/install-packages.sh    |   3 -
 10 files changed, 35 insertions(+), 809 deletions(-)
 delete mode 100755 windows/deps/mkoctfile32

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ad74cf65f6..ebf214c3c1 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -85,12 +85,10 @@ pkg_windows:
   cache:
     key: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG"
     paths:
-      - windows/deps/sources32/
       - windows/deps/sources64/
-      - windows/deps/lib32/
       - windows/deps/lib64/
-      # We do not cache lib{32,64}-msys2, mingw{32,64}, octave{32,64} and
-      # matlab{32,64}, because those are simply extracted from a tarball. It
+      # We do not cache lib64-msys2, mingw64, octave64 and
+      # matlab64, because those are simply extracted from a tarball. It
       # would be a waste of space and of (re-compression) time.
   artifacts:
     paths:
diff --git a/matlab/add_path_to_mex_files.m b/matlab/add_path_to_mex_files.m
index 0f0c4abd87..f91a7b5b9d 100644
--- a/matlab/add_path_to_mex_files.m
+++ b/matlab/add_path_to_mex_files.m
@@ -25,13 +25,7 @@ if isoctave
     % Add specific paths for Dynare Windows package
     if ispc
         if strcmpi(computer(), 'i686-w64-mingw32')
-            tmp = [dynareroot '../mex/octave/win32/'];
-            if exist(tmp, 'dir')
-                mexpath = tmp;
-                if modifypath
-                    addpath(mexpath);
-                end
-            end
+            warning('MEX files not available for 32-bit Octave')
         else
             tmp = [dynareroot '../mex/octave/win64/'];
             if exist(tmp, 'dir')
@@ -52,15 +46,8 @@ if isoctave
         addpath([dynareroot '../mex/octave/']);
     end
 else
-    % Add win32 specific paths for Dynare Windows package
     if strcmp(computer, 'PCWIN')
-        tmp = [dynareroot '../mex/matlab/win32-8.3-8.6/'];
-        if exist(tmp, 'dir')
-            mexpath = tmp;
-            if modifypath
-                addpath(mexpath);
-            end
-        end
+        warning('MEX files not available for 32-bit MATLAB')
     end
     % Add win64 specific paths for Dynare Windows package
     if strcmp(computer, 'PCWIN64')
diff --git a/matlab/dynare.m b/matlab/dynare.m
index 7df45952ae..f246099015 100644
--- a/matlab/dynare.m
+++ b/matlab/dynare.m
@@ -192,14 +192,8 @@ end
 
 if isempty(strfind(arch, '64'))
     arch_ext = '32';
-    if preprocessoroutput
-        disp('Using 32-bit preprocessor');
-    end
 else
     arch_ext = '64';
-    if preprocessoroutput
-        disp('Using 64-bit preprocessor');
-    end
 end
 
 if preprocessoroutput
diff --git a/windows/README.txt b/windows/README.txt
index af24e921ba..e403fb6f81 100644
--- a/windows/README.txt
+++ b/windows/README.txt
@@ -22,7 +22,8 @@ Using Dynare with MATLAB®
 ─────────────────────────
 
 Dynare requires MATLAB® version 8.3 (R2014a) or above. With older versions of
-MATLAB®, it may fail or give unexpected results.
+MATLAB®, it may fail or give unexpected results. Only 64-bit versions are
+supported.
 
 To use Dynare, you just have to add the ‘matlab’ subdirectory of your Dynare
 installation to MATLAB® path. You have two options for doing that:
@@ -52,14 +53,10 @@ Using Dynare with Octave
 Dynare also works on top of GNU Octave, a free clone of MATLAB® (see
 <https://www.octave.org>).
 
-This version of Dynare is compiled for Octave 5.2.0 (MinGW, 32-bit and 64-bit),
+This version of Dynare is compiled for Octave 5.2.0 (MinGW, 64-bit),
 and may not work with other versions of Octave. The recommended version of
 Octave can be downloaded at:
-
-— For 64-bit systems:
   https://ftpmirror.gnu.org/gnu/octave/windows/octave-5.2.0_1-w64-installer.exe
-— For 32-bit systems:
-  https://ftpmirror.gnu.org/gnu/octave/windows/octave-5.2.0_1-w32-installer.exe
 
 Every time you run Octave, you should type the following command (assuming that
 you have installed Dynare at the standard location, and replacing ‘4.x.y’ by
diff --git a/windows/build.sh b/windows/build.sh
index a4f39ce002..cc507b1727 100755
--- a/windows/build.sh
+++ b/windows/build.sh
@@ -2,7 +2,7 @@
 
 # Produces Windows packages of Dynare (executable installer, 7z and zip archives).
 #
-# The binaries are cross compiled for Windows (32/64bits), Octave and MATLAB
+# The binaries are cross compiled for Windows (64-bit), Octave and MATLAB
 # (all supported versions).
 
 # Copyright © 2017-2020 Dynare Team
@@ -51,9 +51,7 @@ fi
 BASENAME=dynare-$VERSION
 
 # Set directories for dependencies
-LIB32="$ROOT_DIRECTORY"/deps/lib32
 LIB64="$ROOT_DIRECTORY"/deps/lib64
-LIB32_MSYS2="$ROOT_DIRECTORY"/deps/lib32-msys2
 LIB64_MSYS2="$ROOT_DIRECTORY"/deps/lib64-msys2
 
 # Go to source root directory
@@ -80,55 +78,12 @@ fi
 make -j"$NTHREADS"
 x86_64-w64-mingw32-strip matlab/preprocessor64/dynare_m.exe
 x86_64-w64-mingw32-strip dynare++/src/dynare++.exe
-mkdir -p dynare++/64-bit/
-cp dynare++/src/dynare++.exe dynare++/64-bit/
-
-## Compile 32-bit preprocessor and Dynare++
-# We do not want to clean the doc
-for d in preprocessor/src dynare++/integ dynare++/kord dynare++/parser/cc dynare++/src dynare++/sylv dynare++/tl dynare++/utils/cc; do
-    make -C "$d" clean
-done
-./configure --host=i686-w64-mingw32 \
-	    --with-boost="$LIB32_MSYS2" \
-	    --with-blas="$LIB32_MSYS2"/lib/libopenblas.a \
-	    --with-lapack="$LIB32_MSYS2"/lib/libopenblas.a \
-	    --with-matio="$LIB32_MSYS2" \
-	    --disable-octave \
-	    --disable-matlab \
-	    PACKAGE_VERSION="$VERSION" \
-	    PACKAGE_STRING="dynare $VERSION"
-make -j"$NTHREADS"
-i686-w64-mingw32-strip matlab/preprocessor32/dynare_m.exe
-i686-w64-mingw32-strip dynare++/src/dynare++.exe
-mkdir -p dynare++/32-bit/
-cp dynare++/src/dynare++.exe dynare++/32-bit/
 
 ## Define functions for building MEX files
 
 ## Note that we do out-of-tree compilation, since we want to do these in
 ## parallel
 
-# Create Windows 32-bit DLL binaries for MATLAB ≥ R2014a
-build_windows_matlab_mex_32 ()
-{
-    mkdir -p "$TMP_DIRECTORY"/matlab-win32/
-    cd "$TMP_DIRECTORY"/matlab-win32/
-    "$ROOT_DIRECTORY"/../mex/build/matlab/configure \
-                     --host=i686-w64-mingw32 \
-		     --with-gsl="$LIB32_MSYS2" \
-		     --with-matio="$LIB32_MSYS2" \
-		     --with-slicot="$LIB32"/Slicot/without-underscore \
-		     --with-matlab="$ROOT_DIRECTORY"/deps/matlab32/R2014a \
-		     MATLAB_VERSION=R2014a \
-		     MEXEXT=mexw32 \
-		     PACKAGE_VERSION="$VERSION" \
-		     PACKAGE_STRING="dynare $VERSION"
-    make -j"$NTHREADS" all
-    i686-w64-mingw32-strip -- **/*.mexw32
-    mkdir -p "$ROOT_DIRECTORY"/../mex/matlab/win32-8.3-8.6
-    mv -- **/*.mexw32 "$ROOT_DIRECTORY"/../mex/matlab/win32-8.3-8.6
-}
-
 # Create Windows 64-bit DLL binaries for MATLAB ≥ R2014a and ≤ R2017b
 build_windows_matlab_mex_64_a ()
 {
@@ -171,25 +126,6 @@ build_windows_matlab_mex_64_b ()
     mv -- **/*.mexw64 "$ROOT_DIRECTORY"/../mex/matlab/win64-9.4-9.8
 }
 
-# Create Windows DLL binaries for Octave/MinGW (32bit)
-build_windows_octave_mex_32 ()
-{
-    mkdir -p "$TMP_DIRECTORY"/octave-32/
-    cd "$TMP_DIRECTORY"/octave-32/
-    "$ROOT_DIRECTORY"/../mex/build/octave/configure \
-                     --host=i686-w64-mingw32 \
-                     --with-gsl="$LIB32_MSYS2" \
-                     --with-matio="$LIB32_MSYS2" \
-                     --with-slicot="$LIB32"/Slicot/with-underscore \
-                     MKOCTFILE="$ROOT_DIRECTORY"/deps/mkoctfile32 \
-                     PACKAGE_VERSION="$VERSION" \
-                     PACKAGE_STRING="dynare $VERSION"
-    make -j"$NTHREADS" all
-    i686-w64-mingw32-strip -- **/*.mex
-    mkdir -p "$ROOT_DIRECTORY"/../mex/octave/win32
-    mv -- **/*.mex "$ROOT_DIRECTORY"/../mex/octave/win32
-}
-
 # Create Windows DLL binaries for Octave/MinGW (64bit)
 build_windows_octave_mex_64 ()
 {
@@ -211,15 +147,15 @@ build_windows_octave_mex_64 ()
 
 ## Actually build the MEX files
 
-TASKS=(build_windows_matlab_mex_32 build_windows_matlab_mex_64_a build_windows_matlab_mex_64_b build_windows_octave_mex_32 build_windows_octave_mex_64)
-# Reset the number of threads. The mex files for MATLAB/Octave (32-bit and 64-bit) will be built
+TASKS=(build_windows_matlab_mex_64_a build_windows_matlab_mex_64_b build_windows_octave_mex_64)
+# Reset the number of threads. The mex files for MATLAB/Octave will be built
 # in parallel, so we need to account for the number of tasks and lower the value of NTHREADS.
 NTHREADS=$((NTHREADS/${#TASKS[@]}))
 [[ $NTHREADS -ge 1 ]] || NTHREADS=1 # Ensure that there is at least 1 thread
 # Build all the mex files (parallel).
 # Some variables and functions need to be available in subshells.
 cd "$ROOT_DIRECTORY"
-export TMP_DIRECTORY ROOT_DIRECTORY LIB32 LIB32_MSYS2 LIB64 LIB64_MSYS2 VERSION NTHREADS
+export TMP_DIRECTORY ROOT_DIRECTORY LIB64 LIB64_MSYS2 VERSION NTHREADS
 export -f "${TASKS[@]}"
 parallel "set -ex;shopt -s globstar;" ::: "${TASKS[@]}"
 
@@ -252,7 +188,6 @@ cp -p NEWS.md "$ZIPDIR"
 cp -p VERSION "$ZIPDIR"
 cp -p license.txt "$ZIPDIR"
 cp -p windows/README.txt "$ZIPDIR"
-cp -pr windows/deps/mingw32 "$ZIPDIR"
 cp -pr windows/deps/mingw64 "$ZIPDIR"
 mkdir -p "$ZIPDIR"/contrib/ms-sbvar/TZcode
 cp -pr contrib/ms-sbvar/TZcode/MatlabFiles "$ZIPDIR"/contrib/ms-sbvar/TZcode
@@ -262,15 +197,13 @@ mkdir "$ZIPDIR"/mex
 cp -pr mex/octave/ "$ZIPDIR"/mex
 cp -pr mex/matlab/ "$ZIPDIR"/mex
 cp -pr matlab "$ZIPDIR"
-mkdir -p "$ZIPDIR"/matlab/modules/dseries/externals/x13/windows/32
-cp -p windows/deps/lib32/x13as/x13as.exe "$ZIPDIR"/matlab/modules/dseries/externals/x13/windows/32
 mkdir -p "$ZIPDIR"/matlab/modules/dseries/externals/x13/windows/64
 cp -p windows/deps/lib64/x13as/x13as.exe "$ZIPDIR"/matlab/modules/dseries/externals/x13/windows/64
 cp -pr examples "$ZIPDIR"
 mkdir -p "$ZIPDIR"/scripts
 cp -p scripts/dynare.el "$ZIPDIR"/scripts
 mkdir "$ZIPDIR"/dynare++
-cp -pr dynare++/32-bit/ dynare++/64-bit/ dynare++/dynare_simul/dynare_simul.m "$ZIPDIR"/dynare++
+cp -pr dynare++/src/dynare++.exe dynare++/dynare_simul/dynare_simul.m "$ZIPDIR"/dynare++
 mkdir -p "$ZIPDIR"/doc/dynare++
 mkdir -p "$ZIPDIR"/doc/dynare-manual.html
 cp -pr doc/manual/build/html/* "$ZIPDIR"/doc/dynare-manual.html
diff --git a/windows/deps/Makefile b/windows/deps/Makefile
index b7b7f1e284..b3c2dd7bf3 100644
--- a/windows/deps/Makefile
+++ b/windows/deps/Makefile
@@ -48,18 +48,6 @@ tarballs/slicot-$(SLICOT_VERSION).tar.gz:
 	mkdir -p tarballs
 	wget $(WGET_OPTIONS) -O $@ https://deb.debian.org/debian/pool/main/s/slicot/slicot_$(SLICOT_VERSION).orig.tar.gz
 
-sources32/slicot-$(SLICOT_VERSION)-without-underscore: tarballs/slicot-$(SLICOT_VERSION).tar.gz
-	rm -rf sources32/slicot-*-without-underscore
-	mkdir -p $@
-	tar xf $< --directory $@ --strip-components=1
-	touch $@
-
-sources32/slicot-$(SLICOT_VERSION)-with-underscore: tarballs/slicot-$(SLICOT_VERSION).tar.gz
-	rm -rf sources32/slicot-*-with-underscore
-	mkdir -p $@
-	tar xf $< --directory $@ --strip-components=1
-	touch $@
-
 sources64/slicot-$(SLICOT_VERSION)-with-32bit-integer: tarballs/slicot-$(SLICOT_VERSION).tar.gz
 	rm -rf sources64/slicot-*-with-32bit-integer
 	mkdir -p $@
@@ -84,18 +72,6 @@ sources64/slicot-$(SLICOT_VERSION)-with-64bit-integer-and-underscore: tarballs/s
 	tar xf $< --directory $@ --strip-components=1
 	touch $@
 
-lib32/Slicot/without-underscore/lib/libslicot_pic.a: sources32/slicot-$(SLICOT_VERSION)-without-underscore
-	make -C $< lib SLICOTLIB=../libslicot_pic.a OPTS="-O2 -g -fno-underscoring" FORTRAN=i686-w64-mingw32-gfortran LOADER=i686-w64-mingw32-gfortran ARCH=i686-w64-mingw32-ar
-	i686-w64-mingw32-strip --strip-debug $</libslicot_pic.a
-	mkdir -p $(dir $@)
-	cp $</libslicot_pic.a $@
-
-lib32/Slicot/with-underscore/lib/libslicot_pic.a: sources32/slicot-$(SLICOT_VERSION)-with-underscore
-	make -C $< lib SLICOTLIB=../libslicot_pic.a OPTS="-O2 -g" FORTRAN=i686-w64-mingw32-gfortran LOADER=i686-w64-mingw32-gfortran ARCH=i686-w64-mingw32-ar
-	i686-w64-mingw32-strip --strip-debug $</libslicot_pic.a
-	mkdir -p $(dir $@)
-	cp $</libslicot_pic.a $@
-
 lib64/Slicot/without-underscore/lib/libslicot_pic.a: sources64/slicot-$(SLICOT_VERSION)-with-32bit-integer
 	make -C $< lib SLICOTLIB=../libslicot_pic.a OPTS="-O2 -g -fno-underscoring" FORTRAN=x86_64-w64-mingw32-gfortran LOADER=x86_64-w64-mingw32-gfortran ARCH=x86_64-w64-mingw32-ar
 	x86_64-w64-mingw32-strip --strip-debug $</libslicot_pic.a
@@ -120,9 +96,7 @@ lib64/Slicot/with-underscore/lib/libslicot64_pic.a: sources64/slicot-$(SLICOT_VE
 	mkdir -p $(dir $@)
 	cp $</libslicot64_pic.a $@
 
-build-slicot: lib32/Slicot/without-underscore/lib/libslicot_pic.a \
-	lib32/Slicot/with-underscore/lib/libslicot_pic.a \
-	lib64/Slicot/without-underscore/lib/libslicot_pic.a \
+build-slicot: lib64/Slicot/without-underscore/lib/libslicot_pic.a \
 	lib64/Slicot/without-underscore/lib/libslicot64_pic.a \
 	lib64/Slicot/with-underscore/lib/libslicot_pic.a \
 	lib64/Slicot/with-underscore/lib/libslicot64_pic.a
@@ -131,8 +105,6 @@ clean-slicot-tar:
 	rm -f tarballs/slicot-$(SLICOT_VERSION).tar.gz
 
 clean-slicot-src:
-	rm -rf sources32/slicot-$(SLICOT_VERSION)-with-underscore
-	rm -rf sources32/slicot-$(SLICOT_VERSION)-without-underscore
 	rm -rf sources64/slicot-$(SLICOT_VERSION)-with-32bit-integer
 	rm -rf sources64/slicot-$(SLICOT_VERSION)-with-64bit-integer
 	rm -rf sources64/slicot-$(SLICOT_VERSION)-with-32bit-integer-and-underscore
@@ -140,7 +112,6 @@ clean-slicot-src:
 
 clean-libslicot:
 	rm -rf lib64/Slicot
-	rm -rf lib32/Slicot
 
 clean-slicot-all: clean-slicot-src clean-slicot-tar clean-libslicot
 
@@ -148,23 +119,10 @@ clean-slicot-all: clean-slicot-src clean-slicot-tar clean-libslicot
 # Octave
 #
 
-tarballs/octave-${OCTAVE_VERSION}${OCTAVE_W32_BUILD}-w32.7z:
-	mkdir -p tarballs
-	wget $(WGET_OPTIONS) -O $@ https://ftp.gnu.org/gnu/octave/windows/$(notdir $@)
-
 tarballs/octave-${OCTAVE_VERSION}${OCTAVE_W64_BUILD}-w64.7z:
 	mkdir -p tarballs
 	wget $(WGET_OPTIONS) -O $@ https://ftp.gnu.org/gnu/octave/windows/$(notdir $@)
 
-octave32: tarballs/octave-${OCTAVE_VERSION}${OCTAVE_W32_BUILD}-w32.7z
-	rm -rf $@
-	7zr x $< > /dev/null
-	mv octave-${OCTAVE_VERSION}-w32 $@
-	# Clean up MinGW stuff that interferes with our cross-compiler
-	cd $@/mingw32/lib && rm -f libadvapi32.a libkernel32.a libmingw32.a libmingwex.a libmoldname.a libmsvcrt.a libpthread.dll.a libshell32.a libuser32.a
-	cd $@/mingw32/include && rm -f $$(grep -l "This file is part of the mingw-w64 runtime package" *.h)
-	touch $@
-
 octave64: tarballs/octave-${OCTAVE_VERSION}${OCTAVE_W64_BUILD}-w64.7z
 	rm -rf $@
 	7zr x $< > /dev/null
@@ -174,13 +132,11 @@ octave64: tarballs/octave-${OCTAVE_VERSION}${OCTAVE_W64_BUILD}-w64.7z
 	cd $@/mingw64/include && rm -f $$(grep -l "This file is part of the mingw-w64 runtime package" *.h)
 	touch $@
 
-octave: octave32 octave64
+octave: octave64
 
 clean-octave:
-	rm -rf octave32
 	rm -rf octave64
 	rm -f tarballs/octave-${OCTAVE_VERSION}${OCTAVE_W64_BUILD}-w64.7z
-	rm -f tarballs/octave-${OCTAVE_VERSION}${OCTAVE_W32_BUILD}-w32.7z
 
 #
 # MATLAB
@@ -192,24 +148,16 @@ tarballs/matlab%.tar.xz:
 	gpg --output $@ --decrypt $@.gpg
 	rm $@.gpg
 
-matlab32: tarballs/matlab32-$(MATLAB32_VERSION).tar.xz
-	rm -rf $@
-	mkdir -p $@
-	tar xf $< --directory $@
-	touch $@
-
 matlab64: tarballs/matlab64-$(MATLAB64_VERSION).tar.xz
 	rm -rf $@
 	mkdir -p $@
 	tar xf $< --directory $@
 	touch $@
 
-matlab: matlab32 matlab64
+matlab: matlab64
 
 clean-matlab:
-	rm -f tarballs/matlab32.tar.xz
 	rm -f tarballs/matlab64.tar.xz
-	rm -rf matlab32
 	rm -rf matlab64
 
 #
@@ -218,52 +166,31 @@ clean-matlab:
 # - the embedded MinGW compiler (for use_dll)
 #
 
-msys2: lib32-msys2 lib64-msys2 mingw32 mingw64
+msys2: lib64-msys2 mingw64
 
 MSYS2_EXCLUDES := --exclude .MTREE --exclude .BUILDINFO --exclude .PKGINFO
 
-lib32-msys2: tarballs/mingw-w64-i686-boost-$(MINGW32_BOOST_VERSION)-any.pkg.tar.zst tarballs/mingw-w64-i686-gsl-$(MINGW32_GSL_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-openblas-$(MINGW32_OPENBLAS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-matio-$(MINGW32_MATIO_VERSION)-any.pkg.tar.zst tarballs/mingw-w64-i686-zlib-$(MINGW32_ZLIB_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-hdf5-$(MINGW32_HDF5_VERSION)-any.pkg.tar.zst tarballs/mingw-w64-i686-szip-$(MINGW32_SZIP_VERSION)-any.pkg.tar.xz
-	rm -rf $@
-	mkdir $@
-	for f in $^; do tar xf $$f --directory $@ --strip-components 1 $(MSYS2_EXCLUDES); done
-	touch $@
-
 lib64-msys2: tarballs/mingw-w64-x86_64-boost-$(MINGW64_BOOST_VERSION)-any.pkg.tar.zst tarballs/mingw-w64-x86_64-gsl-$(MINGW64_GSL_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-openblas-$(MINGW64_OPENBLAS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-matio-$(MINGW64_MATIO_VERSION)-any.pkg.tar.zst tarballs/mingw-w64-x86_64-zlib-$(MINGW64_ZLIB_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-hdf5-$(MINGW64_HDF5_VERSION)-any.pkg.tar.zst tarballs/mingw-w64-x86_64-szip-$(MINGW64_SZIP_VERSION)-any.pkg.tar.xz
 	rm -rf $@
 	mkdir $@
 	for f in $^; do tar xf $$f --directory $@ --strip-components 1 $(MSYS2_EXCLUDES); done
 	touch $@
 
-mingw32: tarballs/mingw-w64-i686-gcc-$(MINGW32_GCC_VERSION)-any.pkg.tar.zst tarballs/mingw-w64-i686-gcc-libs-$(MINGW32_GCC_VERSION)-any.pkg.tar.zst tarballs/mingw-w64-i686-gmp-$(MINGW32_GMP_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-binutils-$(MINGW32_BINUTILS_VERSION)-any.pkg.tar.zst tarballs/mingw-w64-i686-headers-git-$(MINGW32_HEADERS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-crt-git-$(MINGW32_CRT_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-winpthreads-git-$(MINGW32_WINPTHREADS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-libwinpthread-git-$(MINGW32_WINPTHREADS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-i686-zlib-$(MINGW32_ZLIB_VERSION)-any.pkg.tar.xz
-	rm -rf $@
-	for f in $^; do tar xf $$f $(MSYS2_EXCLUDES); done
-	touch $@
-
 mingw64: tarballs/mingw-w64-x86_64-gcc-$(MINGW64_GCC_VERSION)-any.pkg.tar.zst tarballs/mingw-w64-x86_64-gcc-libs-$(MINGW64_GCC_VERSION)-any.pkg.tar.zst tarballs/mingw-w64-x86_64-gmp-$(MINGW64_GMP_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-binutils-$(MINGW64_BINUTILS_VERSION)-any.pkg.tar.zst tarballs/mingw-w64-x86_64-headers-git-$(MINGW64_HEADERS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-crt-git-$(MINGW64_CRT_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-winpthreads-git-$(MINGW64_WINPTHREADS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-libwinpthread-git-$(MINGW64_WINPTHREADS_VERSION)-any.pkg.tar.xz tarballs/mingw-w64-x86_64-zlib-$(MINGW64_ZLIB_VERSION)-any.pkg.tar.xz
 	rm -rf $@
 	for f in $^; do tar xf $$f $(MSYS2_EXCLUDES); done
 	touch $@
 
-tarballs/mingw-w64-i686-%-any.pkg.tar.xz:
-	wget $(WGET_OPTIONS) -O $@ http://repo.msys2.org/mingw/i686/$(notdir $@)
-
 tarballs/mingw-w64-x86_64-%-any.pkg.tar.xz:
 	wget $(WGET_OPTIONS) -O $@ http://repo.msys2.org/mingw/x86_64/$(notdir $@)
 
-tarballs/mingw-w64-i686-%-any.pkg.tar.zst:
-	wget $(WGET_OPTIONS) -O $@ http://repo.msys2.org/mingw/i686/$(notdir $@)
-
 tarballs/mingw-w64-x86_64-%-any.pkg.tar.zst:
 	wget $(WGET_OPTIONS) -O $@ http://repo.msys2.org/mingw/x86_64/$(notdir $@)
 
 clean-msys2:
-	rm -rf lib32-msys2
 	rm -rf lib64-msys2
-	rm -rf mingw32
 	rm -rf mingw64
-	rm -f tarballs/mingw-w64-i686-*.tar.xz
 	rm -f tarballs/mingw-w64-x86_64-*.tar.xz
-	rm -f tarballs/mingw-w64-i686-*.tar.zst
 	rm -f tarballs/mingw-w64-x86_64-*.tar.zst
 
 #
@@ -274,38 +201,26 @@ tarballs/x13assrc_V$(X13AS_VERSION).tar.gz:
 	mkdir -p tarballs
 	wget $(WGET_OPTIONS) -O $@ https://www.census.gov/ts/x13as/unix/x13assrc_V$(X13AS_VERSION).tar.gz
 
-sources32/x13as-$(X13AS_VERSION): tarballs/x13assrc_V$(X13AS_VERSION).tar.gz
-	rm -rf sources32/x13as-*
-	mkdir -p $@
-	tar xf $< --directory $@
-
 sources64/x13as-$(X13AS_VERSION): tarballs/x13assrc_V$(X13AS_VERSION).tar.gz
 	rm -rf sources64/x13as-*
 	mkdir -p $@
 	tar xf $< --directory $@
 
-lib32/x13as/x13as.exe: sources32/x13as-$(X13AS_VERSION)
-	make -C $< -f makefile.gf FC=i686-w64-mingw32-gfortran LINKER=i686-w64-mingw32-gfortran FFLAGS="-O2" PROGRAM=x13as.exe
-	i686-w64-mingw32-strip $</x13as.exe
-	mkdir -p $(dir $@)
-	cp $</x13as.exe $@
-
 lib64/x13as/x13as.exe: sources64/x13as-$(X13AS_VERSION)
 	make -C $< -f makefile.gf FC=x86_64-w64-mingw32-gfortran LINKER=x86_64-w64-mingw32-gfortran FFLAGS="-O2" PROGRAM=x13as.exe
 	x86_64-w64-mingw32-strip $</x13as.exe
 	mkdir -p $(dir $@)
 	cp $</x13as.exe $@
 
-build-x13as: lib32/x13as/x13as.exe lib64/x13as/x13as.exe
+build-x13as: lib64/x13as/x13as.exe
 
 clean-x13as-tar:
 	rm -f tarballs/x13assrc_V$(X13AS_VERSION).tar.gz
 
 clean-x13as-src:
-	rm -rf sources32/x13as-$(X13AS_VERSION)
 	rm -rf sources64/x13as-$(X13AS_VERSION)
 
 clean-x13as-bin:
-	rm -rf lib32/x13as lib64/x13as
+	rm -rf lib64/x13as
 
 clean-x13as-all: clean-x13as-tar clean-x13as-src clean-x13as-bin
diff --git a/windows/deps/mkoctfile32 b/windows/deps/mkoctfile32
deleted file mode 100755
index 5174c4664b..0000000000
--- a/windows/deps/mkoctfile32
+++ /dev/null
@@ -1,541 +0,0 @@
-#! /bin/sh
-
-## Attention à garder -static-libgcc et -static-libstdc++ dans LDFLAGS et
-## DL_LDFLAGS lors des mises à jour de ce fichier
-## Garder aussi BINDIR dans DEFAULT_LFLAGS (pour UMFPACK)
-
-# Exit immediately on any error.
-set -e
-
-: ${SED="/bin/sed"}
-
-# Get path to the mkoctfile shell script
-MKOCTFILE_PATH=$(dirname $(readlink -f "$0"))
-OCTAVE_PREFIX="$MKOCTFILE_PATH/octave32/mingw32"
-
-# Get Octave version
-current_octave_version=$(grep "^OCTAVE_VERSION" "$MKOCTFILE_PATH/versions.mk")
-eval $(echo "$current_octave_version" | tr -d '[:space:]')
-
-DEFAULT_BINDIR="$OCTAVE_PREFIX/bin"
-DEFAULT_INCLUDEDIR="$OCTAVE_PREFIX/include"
-DEFAULT_LIBDIR="$OCTAVE_PREFIX/lib"
-DEFAULT_OCTINCLUDEDIR="$OCTAVE_PREFIX/include/octave-${OCTAVE_VERSION}/octave"
-DEFAULT_OCTLIBDIR="$OCTAVE_PREFIX/lib/octave/${OCTAVE_VERSION}"
-
-if [ -n "$OCTAVE_HOME" ]; then
-  DEFAULT_BINDIR="`echo $DEFAULT_BINDIR | $SED "s,^$OCTAVE_PREFIX,$OCTAVE_HOME,"`"
-  DEFAULT_INCLUDEDIR="`echo $DEFAULT_INCLUDEDIR | $SED "s,^$OCTAVE_PREFIX,$OCTAVE_HOME,"`"
-  DEFAULT_LIBDIR="`echo $DEFAULT_LIBDIR | $SED "s,^$OCTAVE_PREFIX,$OCTAVE_HOME,"`"
-  DEFAULT_OCTINCLUDEDIR="`echo $DEFAULT_OCTINCLUDEDIR | $SED "s,^$OCTAVE_PREFIX,$OCTAVE_HOME,"`"
-  DEFAULT_OCTLIBDIR="`echo $DEFAULT_OCTLIBDIR | $SED "s,^$OCTAVE_PREFIX,$OCTAVE_HOME,"`"
-fi
-
-: ${BINDIR=$DEFAULT_BINDIR}
-: ${INCLUDEDIR=$DEFAULT_INCLUDEDIR}
-: ${LIBDIR=$DEFAULT_LIBDIR}
-: ${OCTINCLUDEDIR=$DEFAULT_OCTINCLUDEDIR}
-: ${OCTLIBDIR=$DEFAULT_OCTLIBDIR}
-
-DEFAULT_INCFLAGS="-I$OCTINCLUDEDIR/.. -I$OCTINCLUDEDIR"
-if [ "$INCLUDEDIR" != /usr/include ]; then
-  DEFAULT_INCFLAGS="$DEFAULT_INCFLAGS -I$INCLUDEDIR"
-fi
-
-DEFAULT_LFLAGS="-L$OCTLIBDIR -L$BINDIR"
-if [ "$LIBDIR" != /usr/lib ]; then
-  DEFAULT_LFLAGS="$DEFAULT_LFLAGS -L$LIBDIR"
-fi
-
-# Default values for these variables are filled in when Octave is
-# compiled.
-
-: ${EXEEXT=""}
-
-: ${CPPFLAGS=""}
-: ${INCFLAGS=$DEFAULT_INCFLAGS}
-: ${F77="i686-w64-mingw32-gfortran"}
-: ${FFLAGS="-O"}
-: ${FPICFLAG=""}
-: ${CC="i686-w64-mingw32-gcc"}
-: ${CFLAGS="-g -O2"}
-: ${CPICFLAG=""}
-: ${CXX="i686-w64-mingw32-g++"}
-: ${CXXFLAGS="-g -O2"}
-: ${CXXPICFLAG=""}
-: ${XTRA_CFLAGS=""}
-: ${XTRA_CXXFLAGS=""}
-
-: ${DEPEND_FLAGS="-M"}
-: ${DEPEND_EXTRA_SED_PATTERN=""}
-
-: ${DL_LD="i686-w64-mingw32-g++"}
-: ${DL_LDFLAGS="-shared -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc -static-libgcc -static-libstdc++"}
-
-: ${RLD_FLAG="-Wl,-rpath -Wl,$OCTAVE_PREFIX/lib/octave/${OCTAVE_VERSION}"}
-: ${RDYNAMIC_FLAG="-rdynamic"}
-: ${LIBOCTAVE=-loctave}
-: ${LIBOCTINTERP=-loctinterp}
-: ${READLINE_LIBS=-lreadline}
-: ${LAPACK_LIBS="-llapack"}
-: ${BLAS_LIBS="-lblas -lxerbla"}
-: ${FFTW3_LDFLAGS=""}
-: ${FFTW3_LIBS="-lfftw3"}
-: ${FFTW3F_LDFLAGS=""}
-: ${FFTW3F_LIBS="-lfftw3f"}
-: ${LIBS="-lm -lgfortran -llapack -lgdi32 -lws2_32 -luser32 -lkernel32"}
-: ${FLIBS="-lm -lgfortran -llapack -lmingw32 -lmoldname -lmingwex -lmsvcrt -luser32 -lkernel32 -ladvapi32 -lshell32"}
-: ${LD_CXX="i686-w64-mingw32-g++"}
-: ${LDFLAGS="-Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc-v2 -Wl,--allow-multiple-definition -static-libgcc -static-libstdc++"}
-: ${LD_STATIC_FLAG=""}
-: ${LFLAGS=$DEFAULT_LFLAGS}
-: ${F77_INTEGER_8_FLAG=""}
-
-: ${ALL_FFLAGS="$FFLAGS $F77_INTEGER_8_FLAG"}
-
-: ${ALL_CFLAGS="$INCFLAGS $XTRA_CFLAGS $CFLAGS"}
-
-: ${ALL_CXXFLAGS="$INCFLAGS $XTRA_CXXFLAGS $CXXFLAGS"}
-
-: ${ALL_LDFLAGS="$LD_STATIC_FLAG $CPICFLAG $LDFLAGS"}
-
-: ${OCTAVE_LIBS="$LIBOCTINTERP $LIBOCTAVE $SPECIAL_MATH_LIB"}
-
-# Local variables.
-
-FFTW_LIBS="$FFTW3_LDFLAGS $FFTW3_LIBS $FFTW3F_LDFLAGS $FFTW3F_LIBS"
-
-usage_msg="usage: mkoctfile [options] file ..."
-
-version_msg="mkoctfile, version $OCTAVE_VERSION"
-
-cfiles=
-ccfiles=
-f77files=
-objfiles=
-libfiles=
-octfiles=
-octfile=
-outputfile=
-incflags=
-defs=
-ldflags=
-dbg=:
-pass_on_options=
-strip=false
-no_oct_file_strip_on_this_platform=false
-link=true
-link_stand_alone=false
-output_ext=".oct"
-depend=false
-compile=true
-
-if [ $# -eq 0 ]; then
-  echo $usage_msg 1>&2
-  exit 1
-fi
-
-if [ $# -eq 1 ]; then
-  case "$1" in
-    -v | -version | --version)
-      echo $version_msg 1>&2
-      exit 0
-    ;;
-  esac
-fi
-
-while [ $# -gt 0 ]; do
-  file=
-  case "$1" in
-    *.c)
-      file=$1
-      cfiles="$cfiles $file"
-    ;;
-    *.cc | *.C | *.cpp)
-      file=$1
-      ccfiles="$ccfiles $file"
-    ;;
-    *.f | *.F | *.f90 | *.F90)
-      file=$1
-      f77files="$f77files $file"
-    ;;
-    *.o)
-      file=$1
-      objfiles="$objfiles $file"
-    ;;
-    *.a)
-      file=$1
-      libfiles="$libfiles $file"
-    ;;
-    -d | -debug | --debug | -v | -verbose | --verbose)
-      dbg=echo
-    ;;
-    -h | -\? | -help | --help)
-      echo $usage_msg 1>&2
-      cat << EOF
-
-Options:
-
-  -h, -?, --help          Print this message.
-
-  -IDIR                   Add -IDIR to compile commands.
-
-  -idirafter DIR          Add -idirafter DIR to compile commands.
-
-  -DDEF                   Add -DDEF to compile commands.
-
-  -lLIB                   Add -lLIB to link command.
-
-  -LDIR                   Add -LDIR to link command.
-
-  -RDIR                   Add -RDIR to link command.
-
-  -g                      Enable debugging option for all compilers.
-
-  -pthread                Add -pthread to link command.
-
-  -W...                   Pass flags to the compiler such as -Wa,OPTION.
-
-  -Wl,...                 Pass flags to the linker such as -Wl,-rpath=...
-
-  -M, --depend            Generate dependency files (.d) for C and C++
-                          source files.
-
-  -c, --compile           Compile, but do not link.
-
-  --link-stand-alone      Link a stand-alone executable file.
-
-  -s, --strip             Strip output file.
-
-  --mex                   Create a MEX file.  
-                          Set the default output extension to ".mex".
-
-  -o FILE, --output FILE  Output file name.  Default extension is .oct
-                          (or .mex if --mex is specified) unless linking
-                          a stand-alone executable.
-
-  -p VAR, --print VAR     Print configuration variable VAR.  Recognized
-                          variables are:
-
-                            ALL_CFLAGS                FFTW3F_LDFLAGS
-                            ALL_CXXFLAGS              FFTW3F_LIBS
-                            ALL_FFLAGS                FLIBS
-                            ALL_LDFLAGS               FPICFLAG
-                            BLAS_LIBS                 INCFLAGS
-                            CC                        LAPACK_LIBS
-                            CFLAGS                    LDFLAGS
-                            CPICFLAG                  LD_CXX
-                            CPPFLAGS                  LD_STATIC_FLAG
-                            CXX                       LFLAGS
-                            CXXFLAGS                  LIBCRUFT
-                            CXXPICFLAG                LIBOCTAVE
-                            DEPEND_EXTRA_SED_PATTERN  LIBOCTINTERP
-                            DEPEND_FLAGS              LIBS
-                            DL_LD                     OCTAVE_LIBS
-                            DL_LDFLAGS                RDYNAMIC_FLAG
-                            EXEEXT                    READLINE_LIBS
-                            F77                       RLD_FLAG
-                            F77_INTEGER_8_FLAG        SED
-                            FFLAGS                    XTRA_CFLAGS
-                            FFTW3_LDFLAGS             XTRA_CXXFLAGS
-                            FFTW3_LIBS
-
-  -v, --verbose           Echo commands as they are executed.
-
-  FILE                    Compile or link FILE.  Recognized file types are:
-
-                            .c    C source
-                            .cc   C++ source
-                            .C    C++ source
-                            .cpp  C++ source
-                            .f    Fortran source (fixed form)
-                            .F    Fortran source (fixed form)
-                            .f90  Fortran source (free form)
-                            .F90  Fortran source (free form)
-                            .o    object file
-                            .a    library file
-
-EOF
-      exit 0
-    ;;
-    -I*)
-      incflags="$incflags $1"
-    ;;
-    -idirafter)
-      shift
-      if [ $# -gt 0 ]; then
-        incflags="$incflags -idirafter $1"
-      else
-        echo "mkoctfile: include directory name missing" 1>&2
-      fi
-    ;;
-    -D*)
-      defs="$defs $1"
-    ;;
-    -[lLR]* | -Wl,*)
-      ldflags="$ldflags $1"
-    ;;
-    -pthread)
-      ldflags="$ldflags $1"
-    ;;
-    -M | -depend | --depend)
-      depend=true
-      compile=false
-    ;;
-    -o | -ouput | --output)
-      shift
-      if [ $# -gt 0 ]; then
-        outputfile="$1"
-      else
-        echo "mkoctfile: output file name missing" 1>&2
-      fi
-    ;;
-    -p | -print | --print)
-      shift
-      if [ $# -gt 0 ]; then
-        eval echo \${$1}
-        exit 0
-      else
-        echo "mkoctfile: --print requires argument" 1>&2
-        exit 1
-      fi
-    ;;
-    -s | -strip | --strip)
-      if $no_oct_file_strip_on_this_platform; then
-        echo "mkoctfile: stripping disabled on this platform" 1>&2
-      else
-        strip=true
-      fi
-    ;;
-    -c | -compile | --compile)
-      link=false
-    ;;
-    -g)
-      ALL_CFLAGS="$ALL_CFLAGS -g"
-      ALL_CXXFLAGS="$ALL_CXXFLAGS -g"
-      ALL_FFLAGS="$ALL_FFLAGS -g"
-    ;;
-    -link-stand-alone | --link-stand-alone)
-      link_stand_alone=true
-    ;;
-    -mex | --mex)
-      incflags="$incflags -I."
-      output_ext=".mex"
-    ;;
-    -W*)
-      pass_on_options="$pass_on_options $1"
-    ;;
-    *)
-      echo "mkoctfile: unrecognized argument $1" 1>&2
-      exit 1
-    ;;
-  esac
-  if [ -n "$file" ]; then
-    if [ -z "$octfile" ]; then
-      octfile="$file"
-    fi
-  fi
-  shift
-done
-
-if $link_stand_alone; then
-  if [ -n "$outputfile" ]; then
-    output_option="-o $outputfile"
-  fi
-else
-  if [ -n "$outputfile" ]; then
-    octfile="$outputfile"
-    case "$octfile" in
-      *$output_ext)
-      ;;
-      *)
-        octfile="$octfile$output_ext"
-      ;;
-    esac
-  else
-    octfile=`basename $octfile`
-    octfile=`echo $octfile | $SED 's,\.[^.]*$,,'`$output_ext
-  fi
-fi
-
-# Generate dependency files for C and C++ files.
-
-if $depend; then
-  if [ -n "$cfiles" ]; then
-    for f in $cfiles; do
-      b=`echo $f | $SED 's,\.c$,,'`
-      d=$b.d
-      cmd="rm -f $d"
-      $dbg $cmd
-      eval $cmd
-      cmd="$CC $DEPEND_FLAGS $CPPFLAGS $ALL_CFLAGS $incflags $def $f | $SED $DEPEND_EXTRA_SED_PATTERN -e 's,^[^:]*/\(.*\.o\):,\1:,' -e 's,$b\.o,pic/& & $d,g' > $d-t && mv $d-t $d"
-      $dbg $cmd
-      eval $cmd
-    done
-  fi
-
-  if [ -n "$ccfiles" ]; then
-    for f in $ccfiles; do
-      case $f in
-        *.cc)
-          b=`echo $f | $SED 's,\.cc$,,'`
-        ;;
-        *.C)
-          b=`echo $f | $SED 's,\.C$,,'`
-        ;;
-        *.cpp)
-          b=`echo $f | $SED 's,\.cpp$,,'`
-        ;;
-      esac
-      d=$b.d
-      cmd="rm -f $d"
-      $dbg $cmd
-      eval $cmd
-      cmd="$CXX $DEPEND_FLAGS $CPPFLAGS $ALL_CXXFLAGS $incflags $defs $f | $SED $DEPEND_EXTRA_SED_PATTERN -e 's,^[^:]*/\(.*\.o\):,\1:,' -e 's,$b\.o,pic/& & $d,g' > $d-t && mv $d-t $d"
-      $dbg $cmd
-      eval $cmd
-    done
-  fi
-  # If generating dependencies, that's all we do.
-  exit 0
-fi
-
-# Compile Fortran, C, and C++ files.  Add the name of each object file
-# that is produced to the overall list of object files.
-
-if [ -n "$f77files" ]; then
-  for f in $f77files; do
-    case $f in
-      *.f)
-        b=`echo $f | $SED 's,.*/,,; s,\.f$,,'`
-      ;;
-      *.F)
-        b=`echo $f | $SED 's,.*/,,; s,\.F$,,'`
-      ;;
-      *.f90)
-        b=`echo $f | $SED 's,.*/,,; s,\.f90$,,'`
-      ;;
-      *.F90)
-        b=`echo $f | $SED 's,.*/,,; s,\.F90$,,'`
-      ;;
-    esac
-    if [ -n "$F77" ]; then
-      if [ -n "$outputfile" ]; then
-        if $link; then
-          o=$b.o
-        else
-          o=$outputfile
-        fi
-      else
-        o=$b.o
-      fi
-      objfiles="$objfiles $o"
-      cmd="$F77 -c $FPICFLAG $ALL_FFLAGS $incflags $defs $pass_on_options $f -o $o"
-      $dbg $cmd
-      eval $cmd
-    else
-      echo "mkoctfile: no way to compile Fortran file $f" 1>&2
-    fi
-  done
-fi
-
-if [ -n "$cfiles" ]; then
-  for f in $cfiles; do
-    if [ -n  "$CC" ]; then
-      b=`echo $f | $SED 's,.*/,,; s,\.c$,,'`
-      if [ -n "$outputfile" ]; then
-        if $link; then
-          o=$b.o
-        else
-          o=$outputfile
-        fi
-      else
-        o=$b.o
-      fi
-      objfiles="$objfiles $o"
-      cmd="$CC -c $CPPFLAGS $CPICFLAG $ALL_CFLAGS $pass_on_options $incflags $defs $f -o $o"
-      $dbg $cmd
-      eval $cmd
-    else
-      echo "mkoctfile: no way to compile C++ file $f" 1>&2
-    fi
-  done
-fi
-
-if [ -n "$ccfiles" ]; then
-  for f in $ccfiles; do
-    if [ -n "$CXX" ]; then
-      case $f in
-        *.cc)
-          b=`echo $f | $SED 's,.*/,,; s,\.cc$,,'`
-        ;;
-        *.C)
-          b=`echo $f | $SED 's,.*/,,; s,\.C$,,'`
-        ;;
-        *.cpp)
-          b=`echo $f | $SED 's,.*/,,; s,\.cpp$,,'`
-        ;;
-      esac
-      if [ -n "$outputfile" ]; then
-        if $link; then
-          o=$b.o
-        else
-          o=$outputfile
-        fi
-      else
-        o=$b.o
-      fi
-      objfiles="$objfiles $o"
-      cmd="$CXX -c $CPPFLAGS $CXXPICFLAG $ALL_CXXFLAGS $pass_on_options $incflags $defs $f -o $o"
-      $dbg $cmd
-      eval $cmd
-    else
-      echo "mkoctfile: no way to compile C++ file $f" 1>&2
-    fi
-  done
-fi
-
-## Uncomment the following group of lines if you get `Text file busy'
-## errors from ld.  This may happen if the .oct file is currently
-## running while you are trying to recompile it.  We try moving first,
-## since on some systems (HP-UX, maybe others) it is possible to
-## rename running programs but not remove them.
-
-## if [ -f "$octfile" ]; then
-##   cmd="mv $octfile $octfile.bak"
-##   $dbg $cmd
-##   eval $cmd
-##   cmd="rm -f $octfile.bak"
-##   $dbg $cmd
-##   eval $cmd
-## fi
-
-# Link all the object files.
-
-if $link && [ -n "$objfiles" ]; then
-  if $link_stand_alone; then
-    if [ -n "$LD_CXX" ]; then
-      cmd="$LD_CXX $CPPFLAGS $ALL_CXXFLAGS $RDYNAMIC_FLAG $ALL_LDFLAGS $pass_on_options $output_option $objfiles $libfiles $ldflags $LFLAGS $RLD_FLAG $OCTAVE_LIBS $LAPACK_LIBS $BLAS_LIBS $FFTW_LIBS $READLINE_LIBS $LIBS $FLIBS"
-      $dbg $cmd
-      eval $cmd
-    else
-      echo "mkoctfile: no way to link stand-alone executable file" 1>&2
-      exit 1
-    fi
-  else
-    LINK_DEPS="$LFLAGS $OCTAVE_LIBS $LDFLAGS $LAPACK_LIBS $BLAS_LIBS $FFTW_LIBS $LIBS $FLIBS"
-    cmd="$DL_LD $DL_LDFLAGS $pass_on_options -o $octfile $objfiles $libfiles $ldflags $LINK_DEPS"
-    $dbg $cmd
-    eval $cmd
-  fi
-
-# Maybe strip it.
-
-  if $strip; then
-    cmd="strip $octfile"
-    $dbg $cmd
-    eval $cmd
-  fi
-fi
-
-exit 0
diff --git a/windows/deps/versions.mk b/windows/deps/versions.mk
index 8c6b237644..305e920c99 100644
--- a/windows/deps/versions.mk
+++ b/windows/deps/versions.mk
@@ -2,10 +2,8 @@ SLICOT_VERSION = 5.0+20101122
 X13AS_VERSION = 1.1_B39
 
 OCTAVE_VERSION = 5.2.0
-OCTAVE_W32_BUILD = _1
 OCTAVE_W64_BUILD = _1
 
-MATLAB32_VERSION = 20200407
 MATLAB64_VERSION = 20200407
 
 
@@ -19,59 +17,46 @@ MATLAB64_VERSION = 20200407
 
 ## Build dependencies
 
-# pacman -Ss .*-boost$
-MINGW32_BOOST_VERSION = 1.73.0-3
+# pacman -Ss mingw-w64-x86_64-boost
 MINGW64_BOOST_VERSION = 1.73.0-3
 
-# pacman -Ss .*-gsl$
-MINGW32_GSL_VERSION = 2.6-1
+# pacman -Ss mingw-w64-x86_64-gsl
 MINGW64_GSL_VERSION = 2.6-1
 
-# pacman -Ss .*-openblas$
-MINGW32_OPENBLAS_VERSION = 0.3.9-1
+# pacman -Ss mingw-w64-x86_64-openblas
 MINGW64_OPENBLAS_VERSION = 0.3.9-1
 
-# pacman -Ss .*-matio$
-MINGW32_MATIO_VERSION = 1.5.17-2
+# pacman -Ss mingw-w64-x86_64-matio
 MINGW64_MATIO_VERSION = 1.5.17-2
 
 # Dependency of matio (and of the MinGW compiler)
-# pacman -Ss .*-zlib$
-MINGW32_ZLIB_VERSION = 1.2.11-7
+# pacman -Ss mingw-w64-x86_64-zlib
 MINGW64_ZLIB_VERSION = 1.2.11-7
 
 # Dependency of matio
-# pacman -Ss .*-hdf5$
-MINGW32_HDF5_VERSION = 1.12.0-2
+# pacman -Ss mingw-w64-x86_64-hdf5
 MINGW64_HDF5_VERSION = 1.12.0-2
 
 # Dependency of HDF5
-# pacman -Ss .*-szip$
-MINGW32_SZIP_VERSION = 2.1.1-2
+# pacman -Ss mingw-w64-x86_64-szip
 MINGW64_SZIP_VERSION = 2.1.1-2
 
 ## MinGW packages for the embedded compiler
 
-# pacman -Ss mingw-w64-.*-gcc$
-MINGW32_GCC_VERSION = 10.1.0-2
+# pacman -Ss mingw-w64-x86_64-gcc$
 MINGW64_GCC_VERSION = 10.1.0-2
 
-# pacman -Ss mingw-w64-.*-gmp$
-MINGW32_GMP_VERSION = 6.2.0-1
+# pacman -Ss mingw-w64-x86_64-gmp
 MINGW64_GMP_VERSION = 6.2.0-1
 
-# pacman -Ss mingw-w64-.*-binutils
-MINGW32_BINUTILS_VERSION = 2.34-2
+# pacman -Ss mingw-w64-x86_64-binutils
 MINGW64_BINUTILS_VERSION = 2.34-2
 
-# pacman -Ss mingw-w64-.*-headers-git
-MINGW32_HEADERS_VERSION = 8.0.0.5815.9517d302-1
+# pacman -Ss mingw-w64-x86_64-headers-git
 MINGW64_HEADERS_VERSION = 8.0.0.5815.9517d302-1
 
-# pacman -Ss mingw-w64-.*-crt-git
-MINGW32_CRT_VERSION = 8.0.0.5815.9517d302-1
+# pacman -Ss mingw-w64-x86_64-crt-git
 MINGW64_CRT_VERSION = 8.0.0.5815.9517d302-1
 
-# pacman -Ss mingw-w64-.*-winpthreads-git
-MINGW32_WINPTHREADS_VERSION = 8.0.0.5814.9dbf4cc1-1
+# pacman -Ss mingw-w64-x86_64-winpthreads-git
 MINGW64_WINPTHREADS_VERSION = 8.0.0.5814.9dbf4cc1-1
diff --git a/windows/dynare.nsi b/windows/dynare.nsi
index 8e8bea563b..86d1f50942 100644
--- a/windows/dynare.nsi
+++ b/windows/dynare.nsi
@@ -16,7 +16,6 @@ InstallDir "c:\dynare\${VERSION}"
 !define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation of Dynare ${VERSION}.$\n$\nDynare is distributed under the GNU General Public License (GPL) version 3.$\n$\nIf you accept the license, click Next button to continue the installation."
 !insertmacro MUI_PAGE_WELCOME
 !define MUI_COMPONENTSPAGE_NODESC
-!define MUI_COMPONENTSPAGE_TEXT_TOP "Choose the components you want to install.$\nIf you know whether your version of MATLAB or Octave is 64-bit or 32-bit, you can uncheck the component that you don’t need in order to save disk space."
 !insertmacro MUI_PAGE_COMPONENTS
 !insertmacro MUI_PAGE_DIRECTORY
 !insertmacro MUI_PAGE_INSTFILES
@@ -55,15 +54,9 @@ Section "Dynare core (preprocessor and M-files)"
  SetOutPath $INSTDIR\matlab
  File /r ..\matlab\*.m
 
- SetOutPath $INSTDIR\matlab\preprocessor32
- File ..\matlab\preprocessor32\dynare_m.exe
-
  SetOutPath $INSTDIR\matlab\preprocessor64
  File ..\matlab\preprocessor64\dynare_m.exe
 
- SetOutPath $INSTDIR\matlab\modules\dseries\externals\x13\windows\32
- File deps\lib32\x13as\x13as.exe
-
  SetOutPath $INSTDIR\matlab\modules\dseries\externals\x13\windows\64
  File deps\lib64\x13as\x13as.exe
 
@@ -89,8 +82,6 @@ Section "Dynare core (preprocessor and M-files)"
 SectionEnd
 
 
-SectionGroup "Dynare support for 64-bit MATLAB and Octave"
-
 Section "MEX files for MATLAB 64-bit, version 8.3 to 9.3 (R2014a to R2017b)"
  SetOutPath $INSTDIR\mex\matlab\win64-8.3-9.3
  File ..\mex\matlab\win64-8.3-9.3\*.mexw64
@@ -101,39 +92,16 @@ Section "MEX files for MATLAB 64-bit, version 9.4 to 9.8 (R2018a to R2020a)"
  File ..\mex\matlab\win64-9.4-9.8\*.mexw64
 SectionEnd
 
-Section "MEX files for Octave 5.2.0 (64-bit)"
- SetOutPath $INSTDIR\mex\octave\win64
- File ..\mex\octave\win64\*
-SectionEnd
-
 Section "MinGW compiler for MATLAB 64-bit"
  SetOutPath $INSTDIR\mingw64
  File /r deps\mingw64\*
 SectionEnd
 
-SectionGroupEnd
-
-
-SectionGroup "Dynare support for 32-bit MATLAB and Octave"
-
-Section "MEX files for MATLAB 32-bit, version 8.3 to 8.6 (R2014a to R2015b)"
- SetOutPath $INSTDIR\mex\matlab\win32-8.3-8.6
- File ..\mex\matlab\win32-8.3-8.6\*.mexw32
-SectionEnd
-
-Section "MEX files for Octave 5.2.0 (32-bit)"
- SetOutPath $INSTDIR\mex\octave\win32
- File ..\mex\octave\win32\*
-SectionEnd
-
-Section "MinGW compiler for MATLAB 32-bit"
- SetOutPath $INSTDIR\mingw32
- File /r deps\mingw32\*
+Section "MEX files for Octave 5.2.0 (64-bit)"
+ SetOutPath $INSTDIR\mex\octave\win64
+ File ..\mex\octave\win64\*
 SectionEnd
 
-SectionGroupEnd
-
-
 Section "Documentation and examples"
  SetOutPath $INSTDIR\doc
  File ..\doc\manual\build\latex\dynare-manual.pdf ..\doc\guide.pdf ..\doc\bvar-a-la-sims.pdf ..\doc\dr.pdf ..\preprocessor\doc\macroprocessor\macroprocessor.pdf ..\preprocessor\doc\preprocessor\preprocessor.pdf ..\doc\parallel\parallel.pdf ..\doc\gsa\gsa.pdf ..\doc\dseries-and-reporting\dseriesReporting.pdf
@@ -152,14 +120,8 @@ SectionEnd
 
 Section /o "Dynare++ (standalone executable)"
 
- SetOutPath $INSTDIR\dynare++\32-bit
- File ..\dynare++\32-bit\dynare++.exe
-
- SetOutPath $INSTDIR\dynare++\64-bit
- File ..\dynare++\64-bit\dynare++.exe
-
  SetOutPath $INSTDIR\dynare++
- File ..\dynare++\dynare_simul\dynare_simul.m
+ File ..\dynare++\src\dynare++.exe ..\dynare++\dynare_simul\dynare_simul.m
 
  SetOutPath $INSTDIR\doc\dynare++
  File ..\dynare++\doc\*.pdf
@@ -185,7 +147,6 @@ Section "Uninstall"
  Rmdir /r $INSTDIR\doc
  Rmdir /r $INSTDIR\examples
  Rmdir /r $INSTDIR\scripts
- Rmdir /r $INSTDIR\mingw32
  Rmdir /r $INSTDIR\mingw64
  # We don't force deletion of installation directory (with /r), to avoid deleting important files
  Rmdir $INSTDIR
diff --git a/windows/install-packages.sh b/windows/install-packages.sh
index 2252645617..db70175fca 100755
--- a/windows/install-packages.sh
+++ b/windows/install-packages.sh
@@ -34,6 +34,3 @@ apt install "${PACKAGES[@]}"
 update-alternatives --set x86_64-w64-mingw32-gfortran /usr/bin/x86_64-w64-mingw32-gfortran-posix
 update-alternatives --set x86_64-w64-mingw32-gcc /usr/bin/x86_64-w64-mingw32-gcc-posix
 update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix
-update-alternatives --set i686-w64-mingw32-gfortran /usr/bin/i686-w64-mingw32-gfortran-posix
-update-alternatives --set i686-w64-mingw32-gcc /usr/bin/i686-w64-mingw32-gcc-posix
-update-alternatives --set i686-w64-mingw32-g++ /usr/bin/i686-w64-mingw32-g++-posix
-- 
GitLab