[cygport - the Cygwin packaging tool] branch topic/mingw, updated. 0.34.0-30-gc052276

Yaakov Selkowitz via Cygwin-apps-cvs <[email protected]>
Newsgroups gmane.os.cygwin.cvs.apps
Message-ID <[email protected]>


https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/cygport.git;h=c052276338066515134d7316974ab7ddd962ad50

commit c052276338066515134d7316974ab7ddd962ad50
Author: Yaakov Selkowitz <[email protected]>
Date:   Mon May 11 11:48:35 2020 -0400

    mingw: split up into separate cygclasses per arch


Diff:
---
 cygclass/meson.build                     |  15 +-
 cygclass/mingw-internal.cygclass         | 126 +++++
 cygclass/mingw.cygclass                  | 771 +------------------------------
 cygclass/mingw32.cygclass                | 205 ++++++++
 cygclass/mingw64.cygclass                | 205 ++++++++
 cygclass/mingwarm32.cygclass             | 205 ++++++++
 cygclass/mingwarm64.cygclass             | 205 ++++++++
 testsuite/mingw/make/mingw-crypt.cygport |   7 +-
 8 files changed, 978 insertions(+), 761 deletions(-)

diff --git a/cygclass/meson.build b/cygclass/meson.build
index 27f57e5..b22ca30 100644
--- a/cygclass/meson.build
+++ b/cygclass/meson.build
@@ -142,7 +142,15 @@
 #  * cross.cygclass -
 #    For packaging libraries to be used with generic cross-compiler toolchains.
 #  * mingw.cygclass -
-#    For packaging libraries to be used with MinGW cross-compiler toolchains.
+#    For packaging libraries to be used with all MinGW cross-compiler toolchains.
+#  * mingw32.cygclass -
+#    For packaging libraries to be used with the i686 MinGW cross-compiler toolchain.
+#  * mingw64.cygclass -
+#    For packaging libraries to be used with the x86_64 MinGW cross-compiler toolchain.
+#  * mingwarm32.cygclass -
+#    For packaging libraries to be used with the armv7 MinGW cross-compiler toolchain.
+#  * mingwarm64.cygclass -
+#    For packaging libraries to be used with the aarch64 MinGW cross-compiler toolchain.
 #  * multilib.cygclass -
 #    For packaging libraries for cross-compiler toolchains which support
 #    multiple ABIs.
@@ -200,6 +208,11 @@ cygclasses = files(
     'mate.cygclass',
     'meson.cygclass',
     'mingw.cygclass',
+    'mingw-internal.cygclass',
+    'mingw32.cygclass',
+    'mingw64.cygclass',
+    'mingwarm32.cygclass',
+    'mingwarm64.cygclass',
     'mtn.cygclass',
     'multilib.cygclass',
     'ninja.cygclass',
diff --git a/cygclass/mingw-internal.cygclass b/cygclass/mingw-internal.cygclass
new file mode 100644
index 0000000..3ccd5c7
--- /dev/null
+++ b/cygclass/mingw-internal.cygclass
@@ -0,0 +1,126 @@
+################################################################################
+#
+# mingw-internal.cygclass - internal functions for mingw*.cygclass
+#
+# Part of cygport - Cygwin packaging application
+# Copyright (C) 2006-2020 Cygport authors
+# Provided by the Cygwin project <https://cygwin.com/>
+#
+# cygport is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cygport is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cygport.  If not, see <http://www.gnu.org/licenses/>.
+#
+################################################################################
+
+__mingw_init() {
+	local a=${1} t=${2}
+	local c h n p r s v
+
+	declare -g MINGW${t}_HOST="${a}-w64-mingw32"
+	declare -g MINGW${t}_TARGET="${a}-w64-mingw32"
+
+	h=MINGW${t}_HOST
+	for c in CC=gcc CXX=g++ F77=gfortran FC=gfortran OBJC=gcc OBJCXX=g++ \
+		AR=ar DLLTOOL=dlltool NM=nm OBJDUMP=objdump RANLIB=ranlib \
+		RC=windres STRIP=strip PKG_CONFIG=pkg-config QT5_QMAKE=qmake-qt5
+	do
+		declare -g MINGW${t}_${c%=*}="${!h}-${c#*=}"
+	done
+	if inherited clang
+	then
+		declare -g MINGW${t}_CC="${!h}-clang"
+		declare -g MINGW${t}_CXX="${!h}-clang++"
+	fi
+
+	declare -g MINGW${t}_SYSROOT="/usr/${!h}/sys-root"
+	r=MINGW${t}_SYSROOT
+	declare -g MINGW${t}_PREFIX="${!r}/mingw"
+	p=MINGW${t}_PREFIX
+	declare -g MINGW${t}_BINDIR="${!p}/bin"
+	declare -g MINGW${t}_INCLUDEDIR="${!p}/include"
+	declare -g MINGW${t}_LIBDIR="${!p}/lib"
+	declare -g MINGW${t}_DATADIR="${!p}/share"
+
+	if inherited mingw && [[ ${MINGW_ARCHS} =~ "${a}" ]] && [[ "${NAME}" =~ "mingw-" ]]
+	then
+		_CYGPORT_INTERNAL_multi_doc_=1
+		n=${NAME#mingw-}
+		PKG_NAMES+=" mingw64-${a}-${n}"
+		declare -g mingw64_${a}_${n//[-\.]/_}_CONTENTS="${!p#/} usr/share/doc/mingw64-${a}-${n}/"
+	fi
+}
+
+__mingw_wrapper() {
+	local ovar var
+	local toolvars=(CC=gcc CXX=g++ F77=gfortran FC=gfortran OBJC=gcc OBJCXX=g++ \
+			AR=ar DLLTOOL=dlltool NM=nm OBJDUMP=objdump RANLIB=ranlib \
+			RC=windres STRIP=strip PKG_CONFIG=pkg-config QT5_QMAKE=qmake-qt5)
+	local miscvars=(CHOST CTARGET CC_SYSROOT)
+	local expvars=(CFLAGS CXXFLAGS)
+
+	__check_triplet ${1}
+
+	for var in ${miscvars[*]} ${toolvars[*]%=*} ${expvars[*]}
+	do
+		ovar="orig_${var}"
+		local ${ovar}="${!var}"
+	done
+	declare -g CHOST=${1}
+	shift
+	declare -g CTARGET=${CHOST}
+	declare -g CC_SYSROOT=/usr/${CHOST}/sys-root
+	# mingw-w64 actually supports these now, but with libssp it is fragile
+	declare -gx CFLAGS="${CFLAGS/-Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong}"
+	declare -gx CXXFLAGS="${CXXFLAGS/-Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong}"
+
+	for var in ${toolvars[*]}
+	do
+		declare -g ${var%=*}=${CHOST}-${var#*=}
+	done
+	if inherited clang
+	then
+		declare -g CC="${CHOST}-clang"
+		declare -g CXX="${CHOST}-clang++"
+	fi
+
+	if ! check_prog ${CC} || ! check_prog ${STRIP}
+	then
+		error "This package requires ${CHOST} binutils and gcc"
+	fi
+
+	if ! defined __MINGW_WRAPPER_NO_CWD
+	then
+		mkdir -p ${CHOST}/${MINGW_BUILDDIR_SUFFIX}
+		pushd ${CHOST}/${MINGW_BUILDDIR_SUFFIX}
+	fi
+
+	inform "cross-compiling for ${CHOST}"
+	"${@}" || error "${1} for ${CHOST} failed"
+
+	if ! defined __MINGW_WRAPPER_NO_CWD
+	then
+		popd
+	fi
+
+	for var in ${miscvars[*]} ${toolvars[*]%=*}
+	do
+		ovar="orig_${var}"
+		declare -g ${var}="${!ovar}"
+	done
+	for var in ${expvars[*]}
+	do
+		ovar="orig_${var}"
+		declare -gx ${var}="${!ovar}"
+	done
+}
+
+readonly -f __mingw_init __mingw_wrapper
diff --git a/cygclass/mingw.cygclass b/cygclass/mingw.cygclass
index 0ebf344..272c168 100644
--- a/cygclass/mingw.cygclass
+++ b/cygclass/mingw.cygclass
@@ -1,6 +1,6 @@
 ################################################################################
 #
-# mingw.cygclass - for building cross-compiled packages
+# mingw.cygclass - for building cross-compiled MinGW packages
 #
 # Part of cygport - Cygwin packaging application
 # Copyright (C) 2006-2020 Cygport authors
@@ -40,8 +40,16 @@
 #  Supported build systems for cross-compiling are autotools, cmake, meson,
 #  Qt5 qmake, and custom Makefiles.  The respective cygclasses still need
 #  to be inherit()ed, with mingw.cygclass being inherit()ed last.
+#  INHERITS
+#  mingw32.cygclass, mingw64.cygclass, mingwarm32.cygclass, mingwarm64.cygclass
 #****
 
+case ${MINGW_ARCHS:=i686;x86_64} in
+all) MINGW_ARCHS="i686;x86_64;armv7;aarch64" ;;
+esac
+
+inherit mingw32 mingw64 mingwarm32 mingwarm64
+
 ARCH=noarch
 unset ARCH_i686 ARCH_x86_64
 
@@ -55,387 +63,6 @@ unset ARCH_i686 ARCH_x86_64
 #  This variable must be defined before inherit()ing mingw.cygclass.
 #  If undefined, defaults to "i686;x86_64".
 #****
-case ${MINGW_ARCHS:=i686;x86_64} in
-all) MINGW_ARCHS="i686;x86_64;armv7;aarch64" ;;
-esac
-
-#****d* mingw.cygclass/MINGW32_HOST
-#  DESCRIPTION
-#  The host triplet for the i686 toolchain.
-#****
-#****d* mingw.cygclass/MINGW32_TARGET
-#  DESCRIPTION
-#  The target triplet for the i686 toolchain.
-#****
-#****d* mingw.cygclass/MINGW32_CC
-#  DESCRIPTION
-#  The C compiler for the i686 toolchain.
-#****
-#****d* mingw.cygclass/MINGW32_CXX
-#  DESCRIPTION
-#  The C++ compiler for the i686 toolchain.
-#****
-#****d* mingw.cygclass/MINGW32_F77
-#  DESCRIPTION
-#  The Fortran 77 compiler for the i686 toolchain.
-#****
-#****d* mingw.cygclass/MINGW32_FC
-#  DESCRIPTION
-#  The Fortran 95 compiler for the i686 toolchain.
-#****
-#****d* mingw.cygclass/MINGW32_AR
-#  DESCRIPTION
-#  The static library archiver for the i686 toolchain.
-#****
-#****d* mingw.cygclass/MINGW32_DLLTOOL
-#  DESCRIPTION
-#  The DLL import creation tool for the i686 toolchain.
-#****
-#****d* mingw.cygclass/MINGW32_NM
-#  DESCRIPTION
-#  The symbol listing tool for the i686 toolchain.
-#****
-#****d* mingw.cygclass/MINGW32_RANLIB
-#  DESCRIPTION
-#  The static library indexer for the i686 toolchain.
-#****
-#****d* mingw.cygclass/MINGW32_RC
-#  DESCRIPTION
-#  The Windows resource compiler for the i686 toolchain.
-#****
-#****d* mingw.cygclass/MINGW32_STRIP
-#  DESCRIPTION
-#  The symbol remover tool for the i686 toolchain.
-#****
-#****d* mingw.cygclass/MINGW32_PKG_CONFIG
-#  DESCRIPTION
-#  The pkg-config tool for the i686 toolchain.
-#****
-#****d* mingw.cygclass/MINGW32_QT5_QMAKE
-#  DESCRIPTION
-#  The Qt5 qmake tool for the i686 toolchain.
-#****
-#****d* mingw.cygclass/MINGW32_SYSROOT
-#  DESCRIPTION
-#  The virtual root for files used by the i686 toolchain.
-#****
-#****d* mingw.cygclass/MINGW32_PREFIX
-#  DESCRIPTION
-#  The prefix directory under the i686 sysroot.
-#****
-#****d* mingw.cygclass/MINGW32_BINDIR
-#  DESCRIPTION
-#  The bin directory under the i686 sysroot
-#****
-#****d* mingw.cygclass/MINGW32_INCLUDEDIR
-#  DESCRIPTION
-#  The include directory under the i686 sysroot.
-#****
-#****d* mingw.cygclass/MINGW32_LIBDIR
-#  DESCRIPTION
-#  The lib directory under the i686 sysroot.
-#****
-#****d* mingw.cygclass/MINGW32_DATADIR
-#  DESCRIPTION
-#  The data directory under the i686 sysroot.
-#****
-
-#****d* mingw.cygclass/MINGW64_HOST
-#  DESCRIPTION
-#  The host triplet for the x86_64 toolchain.
-#****
-#****d* mingw.cygclass/MINGW64_TARGET
-#  DESCRIPTION
-#  The target triplet for the x86_64 toolchain.
-#****
-#****d* mingw.cygclass/MINGW64_CC
-#  DESCRIPTION
-#  The C compiler for the x86_64 toolchain.
-#****
-#****d* mingw.cygclass/MINGW64_CXX
-#  DESCRIPTION
-#  The C++ compiler for the x86_64 toolchain.
-#****
-#****d* mingw.cygclass/MINGW64_F77
-#  DESCRIPTION
-#  The Fortran 77 compiler for the x86_64 toolchain.
-#****
-#****d* mingw.cygclass/MINGW64_FC
-#  DESCRIPTION
-#  The Fortran 95 compiler for the x86_64 toolchain.
-#****
-#****d* mingw.cygclass/MINGW64_AR
-#  DESCRIPTION
-#  The static library archiver for the x86_64 toolchain.
-#****
-#****d* mingw.cygclass/MINGW64_DLLTOOL
-#  DESCRIPTION
-#  The DLL import creation tool for the x86_64 toolchain.
-#****
-#****d* mingw.cygclass/MINGW64_NM
-#  DESCRIPTION
-#  The symbol listing tool for the x86_64 toolchain.
-#****
-#****d* mingw.cygclass/MINGW64_RANLIB
-#  DESCRIPTION
-#  The static library indexer for the x86_64 toolchain.
-#****
-#****d* mingw.cygclass/MINGW64_RC
-#  DESCRIPTION
-#  The Windows resource compiler for the x86_64 toolchain.
-#****
-#****d* mingw.cygclass/MINGW64_STRIP
-#  DESCRIPTION
-#  The symbol remover tool for the x86_64 toolchain.
-#****
-#****d* mingw.cygclass/MINGW64_PKG_CONFIG
-#  DESCRIPTION
-#  The pkg-config tool for the x86_64 toolchain.
-#****
-#****d* mingw.cygclass/MINGW64_QT5_QMAKE
-#  DESCRIPTION
-#  The Qt5 qmake tool for the x86_64 toolchain.
-#****
-#****d* mingw.cygclass/MINGW64_SYSROOT
-#  DESCRIPTION
-#  The virtual root for files used by the x86_64 toolchain.
-#****
-#****d* mingw.cygclass/MINGW64_PREFIX
-#  DESCRIPTION
-#  The prefix directory under the x86_64 sysroot.
-#****
-#****d* mingw.cygclass/MINGW64_BINDIR
-#  DESCRIPTION
-#  The bin directory under the x86_64 sysroot
-#****
-#****d* mingw.cygclass/MINGW64_INCLUDEDIR
-#  DESCRIPTION
-#  The include directory under the x86_64 sysroot.
-#****
-#****d* mingw.cygclass/MINGW64_LIBDIR
-#  DESCRIPTION
-#  The lib directory under the x86_64 sysroot.
-#****
-#****d* mingw.cygclass/MINGW64_DATADIR
-#  DESCRIPTION
-#  The data directory under the x86_64 sysroot.
-#****
-
-#****d* mingw.cygclass/MINGWARM32_HOST
-#  DESCRIPTION
-#  The host triplet for the armv7 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM32_TARGET
-#  DESCRIPTION
-#  The target triplet for the armv7 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM32_CC
-#  DESCRIPTION
-#  The C compiler for the armv7 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM32_CXX
-#  DESCRIPTION
-#  The C++ compiler for the armv7 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM32_F77
-#  DESCRIPTION
-#  The Fortran 77 compiler for the armv7 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM32_FC
-#  DESCRIPTION
-#  The Fortran 95 compiler for the armv7 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM32_AR
-#  DESCRIPTION
-#  The static library archiver for the armv7 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM32_DLLTOOL
-#  DESCRIPTION
-#  The DLL import creation tool for the armv7 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM32_NM
-#  DESCRIPTION
-#  The symbol listing tool for the armv7 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM32_RANLIB
-#  DESCRIPTION
-#  The static library indexer for the armv7 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM32_RC
-#  DESCRIPTION
-#  The Windows resource compiler for the armv7 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM32_STRIP
-#  DESCRIPTION
-#  The symbol remover tool for the armv7 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM32_PKG_CONFIG
-#  DESCRIPTION
-#  The pkg-config tool for the armv7 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM32_QT5_QMAKE
-#  DESCRIPTION
-#  The Qt5 qmake tool for the armv7 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM32_SYSROOT
-#  DESCRIPTION
-#  The virtual root for files used by the armv7 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM32_PREFIX
-#  DESCRIPTION
-#  The prefix directory under the armv7 sysroot.
-#****
-#****d* mingw.cygclass/MINGWARM32_BINDIR
-#  DESCRIPTION
-#  The bin directory under the armv7 sysroot
-#****
-#****d* mingw.cygclass/MINGWARM32_INCLUDEDIR
-#  DESCRIPTION
-#  The include directory under the armv7 sysroot.
-#****
-#****d* mingw.cygclass/MINGWARM32_LIBDIR
-#  DESCRIPTION
-#  The lib directory under the armv7 sysroot.
-#****
-#****d* mingw.cygclass/MINGWARM32_DATADIR
-#  DESCRIPTION
-#  The data directory under the armv7 sysroot.
-#****
-
-#****d* mingw.cygclass/MINGWARM64_HOST
-#  DESCRIPTION
-#  The host triplet for the aarch64 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM64_TARGET
-#  DESCRIPTION
-#  The target triplet for the aarch64 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM64_CC
-#  DESCRIPTION
-#  The C compiler for the aarch64 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM64_CXX
-#  DESCRIPTION
-#  The C++ compiler for the aarch64 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM64_F77
-#  DESCRIPTION
-#  The Fortran 77 compiler for the aarch64 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM64_FC
-#  DESCRIPTION
-#  The Fortran 95 compiler for the aarch64 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM64_AR
-#  DESCRIPTION
-#  The static library archiver for the aarch64 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM64_DLLTOOL
-#  DESCRIPTION
-#  The DLL import creation tool for the aarch64 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM64_NM
-#  DESCRIPTION
-#  The symbol listing tool for the aarch64 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM64_RANLIB
-#  DESCRIPTION
-#  The static library indexer for the aarch64 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM64_RC
-#  DESCRIPTION
-#  The Windows resource compiler for the aarch64 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM64_STRIP
-#  DESCRIPTION
-#  The symbol remover tool for the aarch64 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM64_PKG_CONFIG
-#  DESCRIPTION
-#  The pkg-config tool for the aarch64 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM64_QT5_QMAKE
-#  DESCRIPTION
-#  The Qt5 qmake tool for the aarch64 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM64_SYSROOT
-#  DESCRIPTION
-#  The virtual root for files used by the aarch64 toolchain.
-#****
-#****d* mingw.cygclass/MINGWARM64_PREFIX
-#  DESCRIPTION
-#  The prefix directory under the aarch64 sysroot.
-#****
-#****d* mingw.cygclass/MINGWARM64_BINDIR
-#  DESCRIPTION
-#  The bin directory under the aarch64 sysroot
-#****
-#****d* mingw.cygclass/MINGWARM64_INCLUDEDIR
-#  DESCRIPTION
-#  The include directory under the aarch64 sysroot.
-#****
-#****d* mingw.cygclass/MINGWARM64_LIBDIR
-#  DESCRIPTION
-#  The lib directory under the aarch64 sysroot.
-#****
-#****d* mingw.cygclass/MINGWARM64_DATADIR
-#  DESCRIPTION
-#  The data directory under the aarch64 sysroot.
-#****
-
-__mingw_init() {
-	local c h n p r s t v
-
-	for t in 32:i686 64:x86_64 ARM32:armv7 ARM64:aarch64
-	do
-		declare -g MINGW${t%:*}_HOST="${t#*:}-w64-mingw32"
-		declare -g MINGW${t%:*}_TARGET="${t#*:}-w64-mingw32"
-
-		h=MINGW${t%:*}_HOST
-		for c in CC=gcc CXX=g++ F77=gfortran FC=gfortran OBJC=gcc OBJCXX=g++ \
-			AR=ar DLLTOOL=dlltool NM=nm OBJDUMP=objdump RANLIB=ranlib \
-			RC=windres STRIP=strip PKG_CONFIG=pkg-config QT5_QMAKE=qmake-qt5
-		do
-			declare -g MINGW${t%:*}_${c%=*}="${!h}-${c#*=}"
-		done
-		if inherited clang
-		then
-			declare -g MINGW${t%:*}_CC="${!h}-clang"
-			declare -g MINGW${t%:*}_CXX="${!h}-clang++"
-		fi
-
-		declare -g MINGW${t%:*}_SYSROOT="/usr/${!h}/sys-root"
-		r=MINGW${t%:*}_SYSROOT
-		declare -g MINGW${t%:*}_PREFIX="${!r}/mingw"
-		p=MINGW${t%:*}_PREFIX
-		declare -g MINGW${t%:*}_BINDIR="${!p}/bin"
-		declare -g MINGW${t%:*}_INCLUDEDIR="${!p}/include"
-		declare -g MINGW${t%:*}_LIBDIR="${!p}/lib"
-		declare -g MINGW${t%:*}_DATADIR="${!p}/share"
-
-		if ! [[ ${MINGW_ARCHS} =~ "${t#*:}" ]]
-		then
-			continue
-		fi
-
-		v=MINGW${t%:*}_CC
-		s=MINGW${t%:*}_STRIP
-		if ! (check_prog ${!v} && check_prog ${!s})
-		then
-			error "This package requires ${t#*:}-w64-mingw32 binutils and gcc"
-		fi
-
-		if [[ "${NAME}" =~ "mingw-" ]]
-		then
-			_CYGPORT_INTERNAL_multi_doc_=1
-			n=${NAME#mingw-}
-			PKG_NAMES+=" mingw64-${t#*:}-${n}"
-			declare -g mingw64_${t#*:}_${n//[-\.]/_}_CONTENTS="${!p#/} usr/share/doc/mingw64-${t#*:}-${n}/"
-		fi
-	done
-}
-
-__mingw_init
 
 #****v* mingw.cygclass/MINGW_BUILDDIR_SUFFIX
 #  DESCRIPTION
@@ -448,108 +75,21 @@ __mingw_init
 #  avoids having to manage separate build directories manually.
 #****
 
-__mingw_wrapper() {
-	local ovar var
-	local toolvars=(CC=gcc CXX=g++ F77=gfortran FC=gfortran OBJC=gcc OBJCXX=g++ \
-			AR=ar DLLTOOL=dlltool NM=nm OBJDUMP=objdump RANLIB=ranlib \
-			RC=windres STRIP=strip PKG_CONFIG=pkg-config QT5_QMAKE=qmake-qt5)
-	local miscvars=(CHOST CTARGET CC_SYSROOT)
-	local expvars=(CFLAGS CXXFLAGS)
-
-	__check_triplet ${1}
-
-	for var in ${miscvars[*]} ${toolvars[*]%=*} ${expvars[*]}
-	do
-		ovar="orig_${var}"
-		local ${ovar}="${!var}"
-	done
-	declare -g CHOST=${1}
-	shift
-	declare -g CTARGET=${CHOST}
-	declare -g CC_SYSROOT=/usr/${CHOST}/sys-root
-	# mingw-w64 actually supports these now, but with libssp it is fragile
-	declare -gx CFLAGS="${CFLAGS/-Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong}"
-	declare -gx CXXFLAGS="${CXXFLAGS/-Wp,-D_FORTIFY_SOURCE=2 -fstack-protector-strong}"
-
-	for var in ${toolvars[*]}
-	do
-		declare -g ${var%=*}=${CHOST}-${var#*=}
-	done
-	if inherited clang
-	then
-		declare -g CC="${CHOST}-clang"
-		declare -g CXX="${CHOST}-clang++"
-	fi
-
-	if ! defined __MINGW_WRAPPER_NO_CWD
-	then
-		mkdir -p ${CHOST}/${MINGW_BUILDDIR_SUFFIX}
-		pushd ${CHOST}/${MINGW_BUILDDIR_SUFFIX}
-	fi
-
-	inform "cross-compiling for ${CHOST}"
-	"${@}" || error "${1} for ${CHOST} failed"
-
-	if ! defined __MINGW_WRAPPER_NO_CWD
-	then
-		popd
-	fi
-
-	for var in ${miscvars[*]} ${toolvars[*]%=*}
-	do
-		ovar="orig_${var}"
-		declare -g ${var}="${!ovar}"
-	done
-	for var in ${expvars[*]}
-	do
-		ovar="orig_${var}"
-		declare -gx ${var}="${!ovar}"
-	done
-}
-
+#****C* mingw.cygclass/mingw_lndirs
+#  DESCRIPTION
+#  Runs lndirs separately for each enabled architecture's build directory.
+#****
 mingw_lndirs() {
 	local t
 	for t in 32:i686 64:x86_64 arm32:armv7 arm64:aarch64
 	do
 		if [[ ${MINGW_ARCHS} =~ "${t#*:}" ]]
 		then
-			__mingw_wrapper ${t#*:}-w64-mingw32 lndirs ${S}
+			mingw${t%:*}_lndirs "${@}"
 		fi
 	done
 }
 
-#****C* mingw.cygclass/mingw32_configure
-#  DESCRIPTION
-#  Runs cygconf using the i686 toolchain.  Any arguments are passed along.
-#****
-mingw32_configure() {
-	__mingw_wrapper ${MINGW32_HOST} cygconf ${MINGW32_CONFIGURE_ARGS} "${@}"
-}
-
-#****C* mingw.cygclass/mingw64_configure
-#  DESCRIPTION
-#  Runs cygconf using the x86_64 toolchain.  Any arguments are passed along.
-#****
-mingw64_configure() {
-	__mingw_wrapper ${MINGW64_HOST} cygconf ${MINGW64_CONFIGURE_ARGS} "${@}"
-}
-
-#****C* mingw.cygclass/mingwarm32_configure
-#  DESCRIPTION
-#  Runs cygconf using the armv7 toolchain.  Any arguments are passed along.
-#****
-mingwarm32_configure() {
-	__mingw_wrapper ${MINGWARM32_HOST} cygconf ${MINGWARM32_CONFIGURE_ARGS} "${@}"
-}
-
-#****C* mingw.cygclass/mingwarm64_configure
-#  DESCRIPTION
-#  Runs cygconf using the aarch64 toolchain.  Any arguments are passed along.
-#****
-mingwarm64_configure() {
-	__mingw_wrapper ${MINGWARM64_HOST} cygconf ${MINGWARM64_CONFIGURE_ARGS} "${@}"
-}
-
 #****C* mingw.cygclass/mingw_configure
 #  DESCRIPTION
 #  Runs cygconf separately for each enabled architecture.  Any arguments are passed along.
@@ -581,38 +121,6 @@ mingw_configure() {
 	done
 }
 
-#****C* mingw.cygclass/mingw32_make
-#  DESCRIPTION
-#  Runs cygmake using the i686 toolchain.  Any arguments are passed along.
-#****
-mingw32_make() {
-	__mingw_wrapper ${MINGW32_HOST} cygmake "${@}"
-}
-
-#****C* mingw.cygclass/mingw64_make
-#  DESCRIPTION
-#  Runs cygmake using the x86_64 toolchain.  Any arguments are passed along.
-#****
-mingw64_make() {
-	__mingw_wrapper ${MINGW64_HOST} cygmake "${@}"
-}
-
-#****C* mingw.cygclass/mingwarm32_make
-#  DESCRIPTION
-#  Runs cygmake using the armv7 toolchain.  Any arguments are passed along.
-#****
-mingwarm32_make() {
-	__mingw_wrapper ${MINGWARM32_HOST} cygmake "${@}"
-}
-
-#****C* mingw.cygclass/mingwarm64_make
-#  DESCRIPTION
-#  Runs cygmake using the aarch64 toolchain.  Any arguments are passed along.
-#****
-mingwarm64_make() {
-	__mingw_wrapper ${MINGWARM64_HOST} cygmake "${@}"
-}
-
 #****C* mingw.cygclass/mingw_make
 #  DESCRIPTION
 #  Runs cygmake separately for each enabled architecture.  Any arguments are passed along.
@@ -628,39 +136,6 @@ mingw_make() {
 	done
 }
 
-
-#****C* mingw.cygclass/mingw32_cmake
-#  DESCRIPTION
-#  Runs cygcmake using the i686 toolchain.  Any arguments are passed along.
-#****
-mingw32_cmake() {
-	__mingw_wrapper ${MINGW32_HOST} cygcmake ${MINGW32_CMAKE_ARGS} "${@}"
-}
-
-#****C* mingw.cygclass/mingw64_cmake
-#  DESCRIPTION
-#  Runs cygcmake using the i686 toolchain.  Any arguments are passed along.
-#****
-mingw64_cmake() {
-	__mingw_wrapper ${MINGW64_HOST} cygcmake ${MINGW64_CMAKE_ARGS} "${@}"
-}
-
-#****C* mingw.cygclass/mingwarn32_cmake
-#  DESCRIPTION
-#  Runs cygcmake using the i686 toolchain.  Any arguments are passed along.
-#****
-mingwarm32_cmake() {
-	__mingw_wrapper ${MINGWARM32_HOST} cygcmake ${MINGWARM32_CMAKE_ARGS} "${@}"
-}
-
-#****C* mingw.cygclass/mingwarm64_cmake
-#  DESCRIPTION
-#  Runs cygcmake using the i686 toolchain.  Any arguments are passed along.
-#****
-mingwarm64_cmake() {
-	__mingw_wrapper ${MINGWARM64_HOST} cygcmake ${MINGWARM64_CMAKE_ARGS} "${@}"
-}
-
 #****C* mingw.cygclass/mingw_cmake
 #  DESCRIPTION
 #  Runs cygcmake separately for each enabled architecture.  Any arguments are passed along.
@@ -692,43 +167,6 @@ mingw_cmake() {
 	done
 }
 
-
-#****C* mingw.cygclass/mingw32_meson
-#  DESCRIPTION
-#  Runs cygmeson using the i686 toolchain.  Any arguments are passed along.
-#****
-mingw32_meson() {
-	__MINGW_WRAPPER_NO_CWD=1 \
-	__mingw_wrapper ${MINGW32_HOST} cygmeson ${MINGW32_MESON_ARGS} "${@}"
-}
-
-#****C* mingw.cygclass/mingw64_meson
-#  DESCRIPTION
-#  Runs cygmeson using the x86_64 toolchain.  Any arguments are passed along.
-#****
-mingw64_meson() {
-	__MINGW_WRAPPER_NO_CWD=1 \
-	__mingw_wrapper ${MINGW64_HOST} cygmeson ${MINGW64_MESON_ARGS}"${@}"
-}
-
-#****C* mingw.cygclass/mingwarm32_meson
-#  DESCRIPTION
-#  Runs cygmeson using the armv7 toolchain.  Any arguments are passed along.
-#****
-mingwarm32_meson() {
-	__MINGW_WRAPPER_NO_CWD=1 \
-	__mingw_wrapper ${MINGWARM32_HOST} cygmeson ${MINGWARM32_MESON_ARGS} "${@}"
-}
-
-#****C* mingw.cygclass/mingwarm64_meson
-#  DESCRIPTION
-#  Runs cygmeson using the aarch64 toolchain.  Any arguments are passed along.
-#****
-mingwarm64_meson() {
-	__MINGW_WRAPPER_NO_CWD=1 \
-	__mingw_wrapper ${MINGWARM64_HOST} cygmeson ${MINGWARM64_MESON_ARGS} "${@}"
-}
-
 #****C* mingw.cygclass/mingw_meson
 #  DESCRIPTION
 #  Runs cygmeson separately for each enabled architecture.  Any arguments are passed along.
@@ -760,38 +198,6 @@ mingw_meson() {
 	done
 }
 
-#****C* mingw.cygclass/mingw32_ninja
-#  DESCRIPTION
-#  Runs cygninja using the i686 toolchain.  Any arguments are passed along.
-#****
-mingw32_ninja() {
-	__mingw_wrapper ${MINGW32_HOST} cygninja "${@}"
-}
-
-#****C* mingw.cygclass/mingw64_ninja
-#  DESCRIPTION
-#  Runs cygninja using the x86_64 toolchain.  Any arguments are passed along.
-#****
-mingw64_ninja() {
-	__mingw_wrapper ${MINGW64_HOST} cygninja "${@}"
-}
-
-#****C* mingw.cygclass/mingwarm32_ninja
-#  DESCRIPTION
-#  Runs cygninja using the armv7 toolchain.  Any arguments are passed along.
-#****
-mingwarm32_ninja() {
-	__mingw_wrapper ${MINGWARM32_HOST} cygninja "${@}"
-}
-
-#****C* mingw.cygclass/mingwarm64_ninja
-#  DESCRIPTION
-#  Runs cygninja using the aarch64 toolchain.  Any arguments are passed along.
-#****
-mingwarm64_ninja() {
-	__mingw_wrapper ${MINGWARM64_HOST} cygninja "${@}"
-}
-
 #****C* mingw.cygclass/mingw_ninja
 #  DESCRIPTION
 #  Runs cygninja separately for each enabled architecture.  Any arguments are passed along.
@@ -807,38 +213,6 @@ mingw_ninja() {
 	done
 }
 
-#****C* mingw.cygclass/mingw32_qt5_qmake
-#  DESCRIPTION
-#  Runs cygqmake5 using the i686 toolchain.  Any arguments are passed along.
-#****
-mingw32_qt5_qmake() {
-	__mingw_wrapper ${MINGW32_HOST} cygqmake5 "${@}"
-}
-
-#****C* mingw.cygclass/mingw64_qt5_qmake
-#  DESCRIPTION
-#  Runs cygqmake5 using the x86_64 toolchain.  Any arguments are passed along.
-#****
-mingw64_qt5_qmake() {
-	__mingw_wrapper ${MINGW64_HOST} cygqmake5 "${@}"
-}
-
-#****C* mingw.cygclass/mingwarm32_qt5_qmake
-#  DESCRIPTION
-#  Runs cygqmake5 using the armv7 toolchain.  Any arguments are passed along.
-#****
-mingwarm32_qt5_qmake() {
-	__mingw_wrapper ${MINGWARM32_HOST} cygqmake5 "${@}"
-}
-
-#****C* mingw.cygclass/mingwarm64_qt5_qmake
-#  DESCRIPTION
-#  Runs cygqmake5 using the aarch64 toolchain.  Any arguments are passed along.
-#****
-mingwarm64_qt5_qmake() {
-	__mingw_wrapper ${MINGWARM64_HOST} cygqmake5 "${@}"
-}
-
 #****C* mingw.cygclass/mingw_qt5_qmake
 #  DESCRIPTION
 #  Runs cygqmake5 separately for each enabled architecture.  Any arguments are passed along.
@@ -854,38 +228,6 @@ mingw_qt5_qmake() {
 	done
 }
 
-#****I* mingw.cygclass/mingw32_make_install
-#  DESCRIPTION
-#  Runs cyginstall using the i686 toolchain.  Any arguments are passed along.
-#****
-mingw32_make_install() {
-	__mingw_wrapper ${MINGW32_HOST} cyginstall "${@}"
-}
-
-#****I* mingw.cygclass/mingw64_make_install
-#  DESCRIPTION
-#  Runs cyginstall using the x86_64 toolchain.  Any arguments are passed along.
-#****
-mingw64_make_install() {
-	__mingw_wrapper ${MINGW64_HOST} cyginstall "${@}"
-}
-
-#****I* mingw.cygclass/mingwarm32_make_install
-#  DESCRIPTION
-#  Runs cyginstall using the armv7 toolchain.  Any arguments are passed along.
-#****
-mingwarm32_make_install() {
-	__mingw_wrapper ${MINGWARM32_HOST} cyginstall "${@}"
-}
-
-#****I* mingw.cygclass/mingwarm64_make_install
-#  DESCRIPTION
-#  Runs cyginstall using the aarch64 toolchain.  Any arguments are passed along.
-#****
-mingwarm64_make_install() {
-	__mingw_wrapper ${MINGWARM64_HOST} cyginstall "${@}"
-}
-
 #****I* mingw.cygclass/mingw_make_install
 #  DESCRIPTION
 #  Runs cyginstall separately for each enabled architecture.  Any arguments are passed along.
@@ -901,42 +243,6 @@ mingw_make_install() {
 	done
 }
 
-#****I* mingw.cygclass/mingw32_ninja_install
-#  DESCRIPTION
-#  Runs ninja_install using the i686 toolchain.  Any arguments are passed along.
-#****
-mingw32_ninja_install() {
-	DESTDIR=${D} \
-	__mingw_wrapper ${MINGW32_HOST} cygninja install "${@}"
-}
-
-#****I* mingw.cygclass/mingw64_ninja_install
-#  DESCRIPTION
-#  Runs ninja_install using the x86_64 toolchain.  Any arguments are passed along.
-#****
-mingw64_ninja_install() {
-	DESTDIR=${D} \
-	__mingw_wrapper ${MINGW64_HOST} cygninja install "${@}"
-}
-
-#****I* mingw.cygclass/mingwarm32_ninja_install
-#  DESCRIPTION
-#  Runs ninja_install using the armv7 toolchain.  Any arguments are passed along.
-#****
-mingwarm32_ninja_install() {
-	DESTDIR=${D} \
-	__mingw_wrapper ${MINGWARM32_HOST} cygninja install "${@}"
-}
-
-#****I* mingw.cygclass/mingwarm64_ninja_install
-#  DESCRIPTION
-#  Runs ninja_install using the aarch64 toolchain.  Any arguments are passed along.
-#****
-mingwarm64_ninja_install() {
-	DESTDIR=${D} \
-	__mingw_wrapper ${MINGWARM64_HOST} cygninja install "${@}"
-}
-
 #****I* mingw.cygclass/mingw_ninja_install
 #  DESCRIPTION
 #  Runs ninja_install separately for each enabled architecture.  Any arguments are passed along.
@@ -952,42 +258,6 @@ mingw_ninja_install() {
 	done
 }
 
-#****I* mingw.cygclass/mingw32_qt5_qmake_install
-#  DESCRIPTION
-#  Runs qt5_qmake_install using the i686 toolchain.  Any arguments are passed along.
-#****
-mingw32_qt5_qmake_install() {
-	DESTDIR=${D} \
-	__mingw_wrapper ${MINGW32_HOST} qt5_qmake_install "${@}"
-}
-
-#****I* mingw.cygclass/mingw64_qt5_qmake_install
-#  DESCRIPTION
-#  Runs qt5_qmake_install using the x86_64 toolchain.  Any arguments are passed along.
-#****
-mingw64_qt5_qmake_install() {
-	DESTDIR=${D} \
-	__mingw_wrapper ${MINGW64_HOST} qt5_qmake_install "${@}"
-}
-
-#****I* mingw.cygclass/mingwarm32_qt5_qmake_install
-#  DESCRIPTION
-#  Runs qt5_qmake_install using the armv7 toolchain.  Any arguments are passed along.
-#****
-mingwarm32_qt5_qmake_install() {
-	DESTDIR=${D} \
-	__mingw_wrapper ${MINGWARM32_HOST} qt5_qmake_install "${@}"
-}
-
-#****I* mingw.cygclass/mingwarm64_qt5_qmake_install
-#  DESCRIPTION
-#  Runs qt5_qmake_install using the aarch64 toolchain.  Any arguments are passed along.
-#****
-mingwarm64_qt5_qmake_install() {
-	DESTDIR=${D} \
-	__mingw_wrapper ${MINGWARM64_HOST} qt5_qmake_install "${@}"
-}
-
 #****I* mingw.cygclass/mingw_qt5_qmake_install
 #  DESCRIPTION
 #  Runs qt5_qmake_install separately for each enabled architecture.  Any arguments are passed along.
@@ -1053,14 +323,7 @@ src_install() {
 	fi
 }
 
-readonly -f __mingw_init __mingw_wrapper mingw_lndirs \
-	mingw32_configure mingw64_configure mingwarm32_configure mingwarm64_configure mingw_configure \
-	mingw32_make mingw64_make mingwarm32_make mingwarm64_make mingw_make \
-	mingw32_cmake mingw64_cmake mingwarm32_cmake mingwarm64_cmake mingw_cmake \
-	mingw32_meson mingw64_meson mingwarm32_meson mingwarm64_meson mingw_meson \
-	mingw32_ninja mingw64_ninja mingwarm32_ninja mingwarm64_ninja mingw_ninja \
-	mingw32_qt5_qmake mingw64_qt5_qmake mingwarm32_qt5_qmake mingwarm64_qt5_qmake mingw_qt5_qmake \
-	mingw32_make_install mingw64_make_install mingwarm32_make_install mingwarm64_make_install mingw_make_install \
-	mingw32_ninja_install mingw64_ninja_install mingwarm32_ninja_install mingwarm64_ninja_install mingw_ninja_install \
-	mingw32_qt5_qmake_install mingw64_qt5_qmake_install mingwarm32_qt5_qmake_install mingwarm64_qt5_qmake_install mingw_qt5_qmake_install
+readonly -f mingw_lndirs mingw_configure mingw_make mingw_cmake \
+	mingw_meson mingw_ninja mingw_qt5_qmake mingw_make_install \
+	mingw_ninja_install mingw_qt5_qmake_install
 	
\ No newline at end of file
diff --git a/cygclass/mingw32.cygclass b/cygclass/mingw32.cygclass
new file mode 100644
index 0000000..7af2183
--- /dev/null
+++ b/cygclass/mingw32.cygclass
@@ -0,0 +1,205 @@
+################################################################################
+#
+# mingw32.cygclass - for building cross-compiled MinGW i686 packages
+#
+# Part of cygport - Cygwin packaging application
+# Copyright (C) 2006-2020 Cygport authors
+# Provided by the Cygwin project <https://cygwin.com/>
+#
+# cygport is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cygport is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cygport.  If not, see <http://www.gnu.org/licenses/>.
+#
+################################################################################
+
+#****h* Cygclasses/mingw32.cygclass
+#  DESCRIPTION
+#  This cygclass provides the mingw32_* functions and MINGW32_ definitions
+#  for cross-compiling packages for Windows/x86 using the MinGW-w64 toolchain.
+#  Generally, this cygclass is not inherit'ed directly, but its functions
+#  and definitions are used by inherit'ing mingw.cygclass.
+#  INHERITED BY
+#  mingw.cygclass
+#  REQUIRES
+#  mingw64-i686-gcc-core
+#****
+inherit mingw-internal
+
+#****d* mingw32.cygclass/MINGW32_HOST
+#  DESCRIPTION
+#  The host triplet for the i686 toolchain.
+#****
+#****d* mingw32.cygclass/MINGW32_TARGET
+#  DESCRIPTION
+#  The target triplet for the i686 toolchain.
+#****
+#****d* mingw32.cygclass/MINGW32_CC
+#  DESCRIPTION
+#  The C compiler for the i686 toolchain.
+#****
+#****d* mingw32.cygclass/MINGW32_CXX
+#  DESCRIPTION
+#  The C++ compiler for the i686 toolchain.
+#****
+#****d* mingw32.cygclass/MINGW32_F77
+#  DESCRIPTION
+#  The Fortran 77 compiler for the i686 toolchain.
+#****
+#****d* mingw32.cygclass/MINGW32_FC
+#  DESCRIPTION
+#  The Fortran 95 compiler for the i686 toolchain.
+#****
+#****d* mingw32.cygclass/MINGW32_AR
+#  DESCRIPTION
+#  The static library archiver for the i686 toolchain.
+#****
+#****d* mingw32.cygclass/MINGW32_DLLTOOL
+#  DESCRIPTION
+#  The DLL import creation tool for the i686 toolchain.
+#****
+#****d* mingw32.cygclass/MINGW32_NM
+#  DESCRIPTION
+#  The symbol listing tool for the i686 toolchain.
+#****
+#****d* mingw32.cygclass/MINGW32_RANLIB
+#  DESCRIPTION
+#  The static library indexer for the i686 toolchain.
+#****
+#****d* mingw32.cygclass/MINGW32_RC
+#  DESCRIPTION
+#  The Windows resource compiler for the i686 toolchain.
+#****
+#****d* mingw32.cygclass/MINGW32_STRIP
+#  DESCRIPTION
+#  The symbol remover tool for the i686 toolchain.
+#****
+#****d* mingw32.cygclass/MINGW32_PKG_CONFIG
+#  DESCRIPTION
+#  The pkg-config tool for the i686 toolchain.
+#****
+#****d* mingw32.cygclass/MINGW32_QT5_QMAKE
+#  DESCRIPTION
+#  The Qt5 qmake tool for the i686 toolchain.
+#****
+#****d* mingw32.cygclass/MINGW32_SYSROOT
+#  DESCRIPTION
+#  The virtual root for files used by the i686 toolchain.
+#****
+#****d* mingw32.cygclass/MINGW32_PREFIX
+#  DESCRIPTION
+#  The prefix directory under the i686 sysroot.
+#****
+#****d* mingw32.cygclass/MINGW32_BINDIR
+#  DESCRIPTION
+#  The bin directory under the i686 sysroot
+#****
+#****d* mingw32.cygclass/MINGW32_INCLUDEDIR
+#  DESCRIPTION
+#  The include directory under the i686 sysroot.
+#****
+#****d* mingw32.cygclass/MINGW32_LIBDIR
+#  DESCRIPTION
+#  The lib directory under the i686 sysroot.
+#****
+#****d* mingw32.cygclass/MINGW32_DATADIR
+#  DESCRIPTION
+#  The data directory under the i686 sysroot.
+#****
+
+__mingw_init i686 32
+
+#****C* mingw32.cygclass/mingw32_lndirs
+#  DESCRIPTION
+#  Runs lndirs into the build directory used by other mingw32_* functions.
+#****
+mingw32_lndirs() {
+	__mingw_wrapper ${MINGW32_HOST} lndirs ${S}
+}
+
+#****C* mingw32.cygclass/mingw32_configure
+#  DESCRIPTION
+#  Runs cygconf using the i686 toolchain.  Any arguments are passed along.
+#****
+mingw32_configure() {
+	__mingw_wrapper ${MINGW32_HOST} cygconf ${MINGW32_CONFIGURE_ARGS} "${@}"
+}
+
+#****C* mingw32.cygclass/mingw32_make
+#  DESCRIPTION
+#  Runs cygmake using the i686 toolchain.  Any arguments are passed along.
+#****
+mingw32_make() {
+	__mingw_wrapper ${MINGW32_HOST} cygmake "${@}"
+}
+
+#****C* mingw32.cygclass/mingw32_cmake
+#  DESCRIPTION
+#  Runs cygcmake using the i686 toolchain.  Any arguments are passed along.
+#****
+mingw32_cmake() {
+	__mingw_wrapper ${MINGW32_HOST} cygcmake ${MINGW32_CMAKE_ARGS} "${@}"
+}
+
+#****C* mingw32.cygclass/mingw32_meson
+#  DESCRIPTION
+#  Runs cygmeson using the i686 toolchain.  Any arguments are passed along.
+#****
+mingw32_meson() {
+	__MINGW_WRAPPER_NO_CWD=1 \
+	__mingw_wrapper ${MINGW32_HOST} cygmeson ${MINGW32_MESON_ARGS} "${@}"
+}
+
+#****C* mingw32.cygclass/mingw32_ninja
+#  DESCRIPTION
+#  Runs cygninja using the i686 toolchain.  Any arguments are passed along.
+#****
+mingw32_ninja() {
+	__mingw_wrapper ${MINGW32_HOST} cygninja "${@}"
+}
+
+#****C* mingw32.cygclass/mingw32_qt5_qmake
+#  DESCRIPTION
+#  Runs cygqmake5 using the i686 toolchain.  Any arguments are passed along.
+#****
+mingw32_qt5_qmake() {
+	__mingw_wrapper ${MINGW32_HOST} cygqmake5 "${@}"
+}
+
+#****I* mingw32.cygclass/mingw32_make_install
+#  DESCRIPTION
+#  Runs cyginstall using the i686 toolchain.  Any arguments are passed along.
+#****
+mingw32_make_install() {
+	__mingw_wrapper ${MINGW32_HOST} cyginstall "${@}"
+}
+
+#****I* mingw32.cygclass/mingw32_ninja_install
+#  DESCRIPTION
+#  Runs ninja_install using the i686 toolchain.  Any arguments are passed along.
+#****
+mingw32_ninja_install() {
+	DESTDIR=${D} \
+	__mingw_wrapper ${MINGW32_HOST} cygninja install "${@}"
+}
+
+#****I* mingw32.cygclass/mingw32_qt5_qmake_install
+#  DESCRIPTION
+#  Runs qt5_qmake_install using the i686 toolchain.  Any arguments are passed along.
+#****
+mingw32_qt5_qmake_install() {
+	DESTDIR=${D} \
+	__mingw_wrapper ${MINGW32_HOST} qt5_qmake_install "${@}"
+}
+
+readonly -f mingw32_lndirs mingw32_configure mingw32_make mingw32_cmake \
+	mingw32_meson mingw32_ninja mingw32_qt5_qmake mingw32_make_install \
+	mingw32_ninja_install mingw32_qt5_qmake_install
diff --git a/cygclass/mingw64.cygclass b/cygclass/mingw64.cygclass
new file mode 100644
index 0000000..9f08af1
--- /dev/null
+++ b/cygclass/mingw64.cygclass
@@ -0,0 +1,205 @@
+################################################################################
+#
+# mingw64.cygclass - for building cross-compiled MinGW x86_64 packages
+#
+# Part of cygport - Cygwin packaging application
+# Copyright (C) 2006-2020 Cygport authors
+# Provided by the Cygwin project <https://cygwin.com/>
+#
+# cygport is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cygport is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cygport.  If not, see <http://www.gnu.org/licenses/>.
+#
+################################################################################
+
+#****h* Cygclasses/mingw64.cygclass
+#  DESCRIPTION
+#  This cygclass provides the mingw64_* functions and MINGW64_ definitions
+#  for cross-compiling packages for Windows/x86 using the MinGW-w64 toolchain.
+#  Generally, this cygclass is not inherit'ed directly, but its functions
+#  and definitions are used by inherit'ing mingw.cygclass.
+#  INHERITED BY
+#  mingw.cygclass
+#  REQUIRES
+#  mingw64-x86_64-gcc-core
+#****
+inherit mingw-internal
+
+#****d* mingw64.cygclass/MINGW64_HOST
+#  DESCRIPTION
+#  The host triplet for the x86_64 toolchain.
+#****
+#****d* mingw64.cygclass/MINGW64_TARGET
+#  DESCRIPTION
+#  The target triplet for the x86_64 toolchain.
+#****
+#****d* mingw64.cygclass/MINGW64_CC
+#  DESCRIPTION
+#  The C compiler for the x86_64 toolchain.
+#****
+#****d* mingw64.cygclass/MINGW64_CXX
+#  DESCRIPTION
+#  The C++ compiler for the x86_64 toolchain.
+#****
+#****d* mingw64.cygclass/MINGW64_F77
+#  DESCRIPTION
+#  The Fortran 77 compiler for the x86_64 toolchain.
+#****
+#****d* mingw64.cygclass/MINGW64_FC
+#  DESCRIPTION
+#  The Fortran 95 compiler for the x86_64 toolchain.
+#****
+#****d* mingw64.cygclass/MINGW64_AR
+#  DESCRIPTION
+#  The static library archiver for the x86_64 toolchain.
+#****
+#****d* mingw64.cygclass/MINGW64_DLLTOOL
+#  DESCRIPTION
+#  The DLL import creation tool for the x86_64 toolchain.
+#****
+#****d* mingw64.cygclass/MINGW64_NM
+#  DESCRIPTION
+#  The symbol listing tool for the x86_64 toolchain.
+#****
+#****d* mingw64.cygclass/MINGW64_RANLIB
+#  DESCRIPTION
+#  The static library indexer for the x86_64 toolchain.
+#****
+#****d* mingw64.cygclass/MINGW64_RC
+#  DESCRIPTION
+#  The Windows resource compiler for the x86_64 toolchain.
+#****
+#****d* mingw64.cygclass/MINGW64_STRIP
+#  DESCRIPTION
+#  The symbol remover tool for the x86_64 toolchain.
+#****
+#****d* mingw64.cygclass/MINGW64_PKG_CONFIG
+#  DESCRIPTION
+#  The pkg-config tool for the x86_64 toolchain.
+#****
+#****d* mingw64.cygclass/MINGW64_QT5_QMAKE
+#  DESCRIPTION
+#  The Qt5 qmake tool for the x86_64 toolchain.
+#****
+#****d* mingw64.cygclass/MINGW64_SYSROOT
+#  DESCRIPTION
+#  The virtual root for files used by the x86_64 toolchain.
+#****
+#****d* mingw64.cygclass/MINGW64_PREFIX
+#  DESCRIPTION
+#  The prefix directory under the x86_64 sysroot.
+#****
+#****d* mingw64.cygclass/MINGW64_BINDIR
+#  DESCRIPTION
+#  The bin directory under the x86_64 sysroot
+#****
+#****d* mingw64.cygclass/MINGW64_INCLUDEDIR
+#  DESCRIPTION
+#  The include directory under the x86_64 sysroot.
+#****
+#****d* mingw64.cygclass/MINGW64_LIBDIR
+#  DESCRIPTION
+#  The lib directory under the x86_64 sysroot.
+#****
+#****d* mingw64.cygclass/MINGW64_DATADIR
+#  DESCRIPTION
+#  The data directory under the x86_64 sysroot.
+#****
+
+__mingw_init x86_64 64
+
+#****C* mingw64.cygclass/mingw64_lndirs
+#  DESCRIPTION
+#  Runs lndirs into the build directory used by other mingw64_* functions.
+#****
+mingw64_lndirs() {
+	__mingw_wrapper ${MINGW64_HOST} lndirs ${S}
+}
+
+#****C* mingw64.cygclass/mingw64_configure
+#  DESCRIPTION
+#  Runs cygconf using the x86_64 toolchain.  Any arguments are passed along.
+#****
+mingw64_configure() {
+	__mingw_wrapper ${MINGW64_HOST} cygconf ${MINGW64_CONFIGURE_ARGS} "${@}"
+}
+
+#****C* mingw64.cygclass/mingw64_make
+#  DESCRIPTION
+#  Runs cygmake using the x86_64 toolchain.  Any arguments are passed along.
+#****
+mingw64_make() {
+	__mingw_wrapper ${MINGW64_HOST} cygmake "${@}"
+}
+
+#****C* mingw64.cygclass/mingw64_cmake
+#  DESCRIPTION
+#  Runs cygcmake using the x86_64 toolchain.  Any arguments are passed along.
+#****
+mingw64_cmake() {
+	__mingw_wrapper ${MINGW64_HOST} cygcmake ${MINGW64_CMAKE_ARGS} "${@}"
+}
+
+#****C* mingw64.cygclass/mingw64_meson
+#  DESCRIPTION
+#  Runs cygmeson using the x86_64 toolchain.  Any arguments are passed along.
+#****
+mingw64_meson() {
+	__MINGW_WRAPPER_NO_CWD=1 \
+	__mingw_wrapper ${MINGW64_HOST} cygmeson ${MINGW64_MESON_ARGS} "${@}"
+}
+
+#****C* mingw64.cygclass/mingw64_ninja
+#  DESCRIPTION
+#  Runs cygninja using the x86_64 toolchain.  Any arguments are passed along.
+#****
+mingw64_ninja() {
+	__mingw_wrapper ${MINGW64_HOST} cygninja "${@}"
+}
+
+#****C* mingw64.cygclass/mingw64_qt5_qmake
+#  DESCRIPTION
+#  Runs cygqmake5 using the x86_64 toolchain.  Any arguments are passed along.
+#****
+mingw64_qt5_qmake() {
+	__mingw_wrapper ${MINGW64_HOST} cygqmake5 "${@}"
+}
+
+#****I* mingw64.cygclass/mingw64_make_install
+#  DESCRIPTION
+#  Runs cyginstall using the x86_64 toolchain.  Any arguments are passed along.
+#****
+mingw64_make_install() {
+	__mingw_wrapper ${MINGW64_HOST} cyginstall "${@}"
+}
+
+#****I* mingw64.cygclass/mingw64_ninja_install
+#  DESCRIPTION
+#  Runs ninja_install using the x86_64 toolchain.  Any arguments are passed along.
+#****
+mingw64_ninja_install() {
+	DESTDIR=${D} \
+	__mingw_wrapper ${MINGW64_HOST} cygninja install "${@}"
+}
+
+#****I* mingw64.cygclass/mingw64_qt5_qmake_install
+#  DESCRIPTION
+#  Runs qt5_qmake_install using the x86_64 toolchain.  Any arguments are passed along.
+#****
+mingw64_qt5_qmake_install() {
+	DESTDIR=${D} \
+	__mingw_wrapper ${MINGW64_HOST} qt5_qmake_install "${@}"
+}
+
+readonly -f mingw64_lndirs mingw64_configure mingw64_make mingw64_cmake \
+	mingw64_meson mingw64_ninja mingw64_qt5_qmake mingw64_make_install \
+	mingw64_ninja_install mingw64_qt5_qmake_install
diff --git a/cygclass/mingwarm32.cygclass b/cygclass/mingwarm32.cygclass
new file mode 100644
index 0000000..5cc9877
--- /dev/null
+++ b/cygclass/mingwarm32.cygclass
@@ -0,0 +1,205 @@
+################################################################################
+#
+# mingwarm32.cygclass - for building cross-compiled MinGW armv7 packages
+#
+# Part of cygport - Cygwin packaging application
+# Copyright (C) 2006-2020 Cygport authors
+# Provided by the Cygwin project <https://cygwin.com/>
+#
+# cygport is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cygport is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cygport.  If not, see <http://www.gnu.org/licenses/>.
+#
+################################################################################
+
+#****h* Cygclasses/mingwarm32.cygclass
+#  DESCRIPTION
+#  This cygclass provides the mingwarm32_* functions and MINGWARM32_ definitions
+#  for cross-compiling packages for Windows/x86 using the MinGW-w64 toolchain.
+#  Generally, this cygclass is not inherit'ed directly, but its functions
+#  and definitions are used by inherit'ing mingw.cygclass.
+#  INHERITED BY
+#  mingw.cygclass
+#  REQUIRES
+#  mingw64-armv7-gcc-core
+#****
+inherit mingw-internal
+
+#****d* mingwarm32.cygclass/MINGWARM32_HOST
+#  DESCRIPTION
+#  The host triplet for the armv7 toolchain.
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_TARGET
+#  DESCRIPTION
+#  The target triplet for the armv7 toolchain.
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_CC
+#  DESCRIPTION
+#  The C compiler for the armv7 toolchain.
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_CXX
+#  DESCRIPTION
+#  The C++ compiler for the armv7 toolchain.
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_F77
+#  DESCRIPTION
+#  The Fortran 77 compiler for the armv7 toolchain.
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_FC
+#  DESCRIPTION
+#  The Fortran 95 compiler for the armv7 toolchain.
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_AR
+#  DESCRIPTION
+#  The static library archiver for the armv7 toolchain.
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_DLLTOOL
+#  DESCRIPTION
+#  The DLL import creation tool for the armv7 toolchain.
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_NM
+#  DESCRIPTION
+#  The symbol listing tool for the armv7 toolchain.
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_RANLIB
+#  DESCRIPTION
+#  The static library indexer for the armv7 toolchain.
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_RC
+#  DESCRIPTION
+#  The Windows resource compiler for the armv7 toolchain.
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_STRIP
+#  DESCRIPTION
+#  The symbol remover tool for the armv7 toolchain.
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_PKG_CONFIG
+#  DESCRIPTION
+#  The pkg-config tool for the armv7 toolchain.
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_QT5_QMAKE
+#  DESCRIPTION
+#  The Qt5 qmake tool for the armv7 toolchain.
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_SYSROOT
+#  DESCRIPTION
+#  The virtual root for files used by the armv7 toolchain.
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_PREFIX
+#  DESCRIPTION
+#  The prefix directory under the armv7 sysroot.
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_BINDIR
+#  DESCRIPTION
+#  The bin directory under the armv7 sysroot
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_INCLUDEDIR
+#  DESCRIPTION
+#  The include directory under the armv7 sysroot.
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_LIBDIR
+#  DESCRIPTION
+#  The lib directory under the armv7 sysroot.
+#****
+#****d* mingwarm32.cygclass/MINGWARM32_DATADIR
+#  DESCRIPTION
+#  The data directory under the armv7 sysroot.
+#****
+
+__mingw_init armv7 ARM32
+
+#****C* mingwarm32.cygclass/mingwarm32_lndirs
+#  DESCRIPTION
+#  Runs lndirs into the build directory used by other mingwarm32_* functions.
+#****
+mingwarm32_lndirs() {
+	__mingw_wrapper ${MINGWARM32_HOST} lndirs ${S}
+}
+
+#****C* mingwarm32.cygclass/mingwarm32_configure
+#  DESCRIPTION
+#  Runs cygconf using the armv7 toolchain.  Any arguments are passed along.
+#****
+mingwarm32_configure() {
+	__mingw_wrapper ${MINGWARM32_HOST} cygconf ${MINGWARM32_CONFIGURE_ARGS} "${@}"
+}
+
+#****C* mingwarm32.cygclass/mingwarm32_make
+#  DESCRIPTION
+#  Runs cygmake using the armv7 toolchain.  Any arguments are passed along.
+#****
+mingwarm32_make() {
+	__mingw_wrapper ${MINGWARM32_HOST} cygmake "${@}"
+}
+
+#****C* mingwarm32.cygclass/mingwarm32_cmake
+#  DESCRIPTION
+#  Runs cygcmake using the armv7 toolchain.  Any arguments are passed along.
+#****
+mingwarm32_cmake() {
+	__mingw_wrapper ${MINGWARM32_HOST} cygcmake ${MINGWARM32_CMAKE_ARGS} "${@}"
+}
+
+#****C* mingwarm32.cygclass/mingwarm32_meson
+#  DESCRIPTION
+#  Runs cygmeson using the armv7 toolchain.  Any arguments are passed along.
+#****
+mingwarm32_meson() {
+	__MINGW_WRAPPER_NO_CWD=1 \
+	__mingw_wrapper ${MINGWARM32_HOST} cygmeson ${MINGWARM32_MESON_ARGS} "${@}"
+}
+
+#****C* mingwarm32.cygclass/mingwarm32_ninja
+#  DESCRIPTION
+#  Runs cygninja using the armv7 toolchain.  Any arguments are passed along.
+#****
+mingwarm32_ninja() {
+	__mingw_wrapper ${MINGWARM32_HOST} cygninja "${@}"
+}
+
+#****C* mingwarm32.cygclass/mingwarm32_qt5_qmake
+#  DESCRIPTION
+#  Runs cygqmake5 using the armv7 toolchain.  Any arguments are passed along.
+#****
+mingwarm32_qt5_qmake() {
+	__mingw_wrapper ${MINGWARM32_HOST} cygqmake5 "${@}"
+}
+
+#****I* mingwarm32.cygclass/mingwarm32_make_install
+#  DESCRIPTION
+#  Runs cyginstall using the armv7 toolchain.  Any arguments are passed along.
+#****
+mingwarm32_make_install() {
+	__mingw_wrapper ${MINGWARM32_HOST} cyginstall "${@}"
+}
+
+#****I* mingwarm32.cygclass/mingwarm32_ninja_install
+#  DESCRIPTION
+#  Runs ninja_install using the armv7 toolchain.  Any arguments are passed along.
+#****
+mingwarm32_ninja_install() {
+	DESTDIR=${D} \
+	__mingw_wrapper ${MINGWARM32_HOST} cygninja install "${@}"
+}
+
+#****I* mingwarm32.cygclass/mingwarm32_qt5_qmake_install
+#  DESCRIPTION
+#  Runs qt5_qmake_install using the armv7 toolchain.  Any arguments are passed along.
+#****
+mingwarm32_qt5_qmake_install() {
+	DESTDIR=${D} \
+	__mingw_wrapper ${MINGWARM32_HOST} qt5_qmake_install "${@}"
+}
+
+readonly -f mingwarm32_lndirs mingwarm32_configure mingwarm32_make mingwarm32_cmake \
+	mingwarm32_meson mingwarm32_ninja mingwarm32_qt5_qmake mingwarm32_make_install \
+	mingwarm32_ninja_install mingwarm32_qt5_qmake_install
diff --git a/cygclass/mingwarm64.cygclass b/cygclass/mingwarm64.cygclass
new file mode 100644
index 0000000..5e980d3
--- /dev/null
+++ b/cygclass/mingwarm64.cygclass
@@ -0,0 +1,205 @@
+################################################################################
+#
+# mingwarm64.cygclass - for building cross-compiled MinGW aarch64 packages
+#
+# Part of cygport - Cygwin packaging application
+# Copyright (C) 2006-2020 Cygport authors
+# Provided by the Cygwin project <https://cygwin.com/>
+#
+# cygport is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cygport is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cygport.  If not, see <http://www.gnu.org/licenses/>.
+#
+################################################################################
+
+#****h* Cygclasses/mingwarm64.cygclass
+#  DESCRIPTION
+#  This cygclass provides the mingwarm64_* functions and MINGWARM64_ definitions
+#  for cross-compiling packages for Windows/x86 using the MinGW-w64 toolchain.
+#  Generally, this cygclass is not inherit'ed directly, but its functions
+#  and definitions are used by inherit'ing mingw.cygclass.
+#  INHERITED BY
+#  mingw.cygclass
+#  REQUIRES
+#  mingw64-aarch64-gcc-core
+#****
+inherit mingw-internal
+
+#****d* mingwarm64.cygclass/MINGWARM64_HOST
+#  DESCRIPTION
+#  The host triplet for the aarch64 toolchain.
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_TARGET
+#  DESCRIPTION
+#  The target triplet for the aarch64 toolchain.
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_CC
+#  DESCRIPTION
+#  The C compiler for the aarch64 toolchain.
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_CXX
+#  DESCRIPTION
+#  The C++ compiler for the aarch64 toolchain.
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_F77
+#  DESCRIPTION
+#  The Fortran 77 compiler for the aarch64 toolchain.
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_FC
+#  DESCRIPTION
+#  The Fortran 95 compiler for the aarch64 toolchain.
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_AR
+#  DESCRIPTION
+#  The static library archiver for the aarch64 toolchain.
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_DLLTOOL
+#  DESCRIPTION
+#  The DLL import creation tool for the aarch64 toolchain.
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_NM
+#  DESCRIPTION
+#  The symbol listing tool for the aarch64 toolchain.
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_RANLIB
+#  DESCRIPTION
+#  The static library indexer for the aarch64 toolchain.
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_RC
+#  DESCRIPTION
+#  The Windows resource compiler for the aarch64 toolchain.
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_STRIP
+#  DESCRIPTION
+#  The symbol remover tool for the aarch64 toolchain.
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_PKG_CONFIG
+#  DESCRIPTION
+#  The pkg-config tool for the aarch64 toolchain.
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_QT5_QMAKE
+#  DESCRIPTION
+#  The Qt5 qmake tool for the aarch64 toolchain.
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_SYSROOT
+#  DESCRIPTION
+#  The virtual root for files used by the aarch64 toolchain.
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_PREFIX
+#  DESCRIPTION
+#  The prefix directory under the aarch64 sysroot.
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_BINDIR
+#  DESCRIPTION
+#  The bin directory under the aarch64 sysroot
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_INCLUDEDIR
+#  DESCRIPTION
+#  The include directory under the aarch64 sysroot.
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_LIBDIR
+#  DESCRIPTION
+#  The lib directory under the aarch64 sysroot.
+#****
+#****d* mingwarm64.cygclass/MINGWARM64_DATADIR
+#  DESCRIPTION
+#  The data directory under the aarch64 sysroot.
+#****
+
+__mingw_init aarch64 ARM64
+
+#****C* mingwarm64.cygclass/mingwarm64_lndirs
+#  DESCRIPTION
+#  Runs lndirs into the build directory used by other mingwarm64_* functions.
+#****
+mingwarm64_lndirs() {
+	__mingw_wrapper ${MINGWARM64_HOST} lndirs ${S}
+}
+
+#****C* mingwarm64.cygclass/mingwarm64_configure
+#  DESCRIPTION
+#  Runs cygconf using the aarch64 toolchain.  Any arguments are passed along.
+#****
+mingwarm64_configure() {
+	__mingw_wrapper ${MINGWARM64_HOST} cygconf ${MINGWARM64_CONFIGURE_ARGS} "${@}"
+}
+
+#****C* mingwarm64.cygclass/mingwarm64_make
+#  DESCRIPTION
+#  Runs cygmake using the aarch64 toolchain.  Any arguments are passed along.
+#****
+mingwarm64_make() {
+	__mingw_wrapper ${MINGWARM64_HOST} cygmake "${@}"
+}
+
+#****C* mingwarm64.cygclass/mingwarm64_cmake
+#  DESCRIPTION
+#  Runs cygcmake using the aarch64 toolchain.  Any arguments are passed along.
+#****
+mingwarm64_cmake() {
+	__mingw_wrapper ${MINGWARM64_HOST} cygcmake ${MINGWARM64_CMAKE_ARGS} "${@}"
+}
+
+#****C* mingwarm64.cygclass/mingwarm64_meson
+#  DESCRIPTION
+#  Runs cygmeson using the aarch64 toolchain.  Any arguments are passed along.
+#****
+mingwarm64_meson() {
+	__MINGW_WRAPPER_NO_CWD=1 \
+	__mingw_wrapper ${MINGWARM64_HOST} cygmeson ${MINGWARM64_MESON_ARGS} "${@}"
+}
+
+#****C* mingwarm64.cygclass/mingwarm64_ninja
+#  DESCRIPTION
+#  Runs cygninja using the aarch64 toolchain.  Any arguments are passed along.
+#****
+mingwarm64_ninja() {
+	__mingw_wrapper ${MINGWARM64_HOST} cygninja "${@}"
+}
+
+#****C* mingwarm64.cygclass/mingwarm64_qt5_qmake
+#  DESCRIPTION
+#  Runs cygqmake5 using the aarch64 toolchain.  Any arguments are passed along.
+#****
+mingwarm64_qt5_qmake() {
+	__mingw_wrapper ${MINGWARM64_HOST} cygqmake5 "${@}"
+}
+
+#****I* mingwarm64.cygclass/mingwarm64_make_install
+#  DESCRIPTION
+#  Runs cyginstall using the aarch64 toolchain.  Any arguments are passed along.
+#****
+mingwarm64_make_install() {
+	__mingw_wrapper ${MINGWARM64_HOST} cyginstall "${@}"
+}
+
+#****I* mingwarm64.cygclass/mingwarm64_ninja_install
+#  DESCRIPTION
+#  Runs ninja_install using the aarch64 toolchain.  Any arguments are passed along.
+#****
+mingwarm64_ninja_install() {
+	DESTDIR=${D} \
+	__mingw_wrapper ${MINGWARM64_HOST} cygninja install "${@}"
+}
+
+#****I* mingwarm64.cygclass/mingwarm64_qt5_qmake_install
+#  DESCRIPTION
+#  Runs qt5_qmake_install using the aarch64 toolchain.  Any arguments are passed along.
+#****
+mingwarm64_qt5_qmake_install() {
+	DESTDIR=${D} \
+	__mingw_wrapper ${MINGWARM64_HOST} qt5_qmake_install "${@}"
+}
+
+readonly -f mingwarm64_lndirs mingwarm64_configure mingwarm64_make mingwarm64_cmake \
+	mingwarm64_meson mingwarm64_ninja mingwarm64_qt5_qmake mingwarm64_make_install \
+	mingwarm64_ninja_install mingwarm64_qt5_qmake_install
diff --git a/testsuite/mingw/make/mingw-crypt.cygport b/testsuite/mingw/make/mingw-crypt.cygport
index fb694bb..e0c6621 100644
--- a/testsuite/mingw/make/mingw-crypt.cygport
+++ b/testsuite/mingw/make/mingw-crypt.cygport
@@ -16,13 +16,8 @@ PATCH_URI="1.1-mingw.patch"
 
 src_compile() {
 	cd ${B}
-
-	mkdir -p ${B}/${MINGW32_TARGET}
-	lndirs ${S} ${B}/${MINGW32_TARGET}
+	mingw_lndirs
 	mingw32_make CC=${MINGW32_CC} AR=${MINGW32_AR}
-
-	mkdir -p ${B}/${MINGW64_TARGET}
-	lndirs ${S} ${B}/${MINGW64_TARGET}
 	mingw64_make CC=${MINGW64_CC} AR=${MINGW64_AR}
 }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.