diff --git a/srcpkgs/cross-x86_64-w64-mingw32/template b/srcpkgs/cross-x86_64-w64-mingw32/template
new file mode 100644
index 0000000000..054b9ca270
--- /dev/null
+++ b/srcpkgs/cross-x86_64-w64-mingw32/template
@@ -0,0 +1,248 @@
+_binutils_version=2.29.1
+_gcc_version=7.3.0
+_gmp_version=6.1.2
+_mpfr_version=4.0.0
+_mpc_version=1.1.0
+_isl_version=0.16.1
+_mingw_version=5.0.4
+
+pkgname=cross-x86_64-w64-mingw32
+version=${_mingw_version}
+revision=1
+short_desc="Cross toolchain for Win64"
+maintainer="Aleksey Tulinov <aleksey.tulinov@gmail.com>"
+homepage="https://sourceforge.net/projects/mingw-w64/"
+license="LGPL-3, GPL-3, ZPL"
+
+distfiles="
+ https://ftp.gnu.org/gnu/binutils/binutils-${_binutils_version}.tar.bz2
+ https://ftp.gnu.org/gnu/gcc/gcc-${_gcc_version}/gcc-${_gcc_version}.tar.xz
+ https://gmplib.org/download/gmp/gmp-${_gmp_version}.tar.xz
+ http://www.mpfr.org/mpfr-${_mpfr_version}/mpfr-${_mpfr_version}.tar.xz
+ https://ftp.gnu.org/gnu/mpc/mpc-${_mpc_version}.tar.gz
+ http://isl.gforge.inria.fr/isl-${_isl_version}.tar.bz2
+ https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/mingw-w64-v${_mingw_version}.tar.bz2"
+checksum="
+ 1509dff41369fb70aed23682351b663b56db894034773e6dbf7d5d6071fc55cc
+ 832ca6ae04636adbb430e865a1451adf6979ab44ca1c8374f61fba65645ce15c
+ 87b565e89a9a684fe4ebeeddb8399dce2599f9c9049854ca8c0dfbdea0e21912
+ fbe2cd1418b321f5c899ce4f0f0f4e73f5ecc7d02145b0e1fd096f5c3afb8a1d
+ 6985c538143c1208dcb1ac42cedad6ff52e267b47e5f970183a3e75125b43c2e
+ 412538bb65c799ac98e17e8cfcdacbb257a57362acfaaff254b0fcae970126d2
+ 5527e1f6496841e2bb72f97a184fc79affdcd37972eaa9ebf7a5fd05c31ff803"
+
+create_wrksrc=yes
+hostmakedepends="perl flex"
+makedepends="zlib-devel"
+nostrip=yes
+nopie=yes
+nodebug=yes
+
+# https://sourceforge.net/p/mingw-w64/wiki2/Cross%20Win32%20and%20Win64%20compiler/
+# https://gcc.gnu.org/install/configure.html
+# http://mingw-w64.org/doku.php/configure
+
+_binutils_build() {
+	_target=$1
+	_sysroot="/usr/${_target}"
+	_builddir=${wrksrc}/"build-binutils-${_target}"
+
+	msg_normal "Building binutils: ${_target}\n"
+
+	mkdir -p ${_builddir} && cd ${_builddir}
+
+	../binutils-${_binutils_version}/configure \
+		--prefix="/usr" \
+		--with-sysroot=${_sysroot} \
+		--target=${_target} \
+		--disable-multilib \
+		--disable-shared \
+		--disable-nls \
+		--disable-werror \
+		--enable-lto \
+		--with-system-zlib
+
+	make && make install
+}
+
+_mingw_headers() {
+	_target=$1
+	_sysroot="/usr/${_target}"
+	_builddir=${wrksrc}/"build-mingw-headers-${_target}"
+
+	msg_normal "Building MinGW headers: ${_target}\n"
+
+	mkdir -p ${_builddir} && cd ${_builddir}
+
+	../mingw-w64-v${_mingw_version}/mingw-w64-headers/configure \
+		--prefix=${_sysroot} \
+		--host=${_target} \
+		--enable-secure-api \
+		--enable-sdk=all
+
+	make && make install
+
+	# manually create required symlinks
+	(cd ${_sysroot} && ln -sfT "." "mingw")
+	(cd ${_sysroot} && ln -sf "lib" "lib64")
+}
+
+_gcc_bootstrap() {
+	_target=$1
+	_sysroot="/usr/${_target}"
+	_builddir=${wrksrc}/"build-gcc-${_target}"
+
+	msg_normal "Building GCC bootsrap: ${_target}\n"
+
+	ln -sf ${wrksrc}/"gmp-${_gmp_version}" ${wrksrc}/"gcc-${_gcc_version}/gmp"
+	ln -sf ${wrksrc}/"mpc-${_mpc_version}" ${wrksrc}/"gcc-${_gcc_version}/mpc"
+	ln -sf ${wrksrc}/"mpfr-${_mpfr_version}" ${wrksrc}/"gcc-${_gcc_version}/mpfr"
+	ln -sf ${wrksrc}/"isl-${_isl_version}" ${wrksrc}/"gcc-${_gcc_version}/isl"
+
+	mkdir -p ${_builddir} && cd ${_builddir}
+
+	../gcc-${_gcc_version}/configure \
+		--prefix="/usr" \
+		--with-sysroot=${_sysroot} \
+		--target=${_target} \
+		--disable-nls \
+		--disable-multilib \
+		--disable-gcov \
+		--enable-lto \
+		--enable-shared \
+		--enable-static \
+		--enable-threads=posix \
+		--with-system-zlib \
+		--enable-languages=c,c++,lto
+
+	make all-gcc && make install-gcc
+}
+
+_mingw_crt_build() {
+	_target=$1
+	_sysroot="/usr/${_target}"
+	_builddir=${wrksrc}/"build-mingw-crt-${_target}"
+
+	msg_normal "Building MinGW CRT: ${_target}\n"
+
+	if [ ${_target} == "i686-w64-mingw32" ]; then
+		_crt_configure_args="--disable-lib64 --enable-lib32"
+	elif [ ${_target} == "x86_64-w64-mingw32" ]; then
+		_crt_configure_args="--disable-lib32 --enable-lib64"
+	fi
+
+	mkdir -p ${_builddir} && cd ${_builddir}
+
+	CC="${_target}-gcc" \
+	CPP="${_target}-gcc -E"
+	AR="${_target}-ar" \
+	RANLIB="${_target}-ranlib" \
+	AS="${_target}-as" \
+	STRIP="${_target}-strip" \
+	OBJDUMP="${_target}-objdump" \
+	WINDRES="${_target}-windres" \
+	../mingw-w64-v${_mingw_version}/mingw-w64-crt/configure \
+		--prefix=${_sysroot} \
+		--host=${_target} \
+		${_crt_configure_args}
+
+	make && make install
+}
+
+_mingw_winpthreads_build() {
+	_target=$1
+	_sysroot="/usr/${_target}"
+	_builddir=${wrksrc}/"build-mingw-winpthreads-${_target}"
+
+	msg_normal "Building MinGW winpthreads: ${_target}\n"
+
+	mkdir -p ${_builddir} && cd ${_builddir}
+
+	CC="${_target}-gcc" \
+	CPP="${_target}-gcc -E"
+	AR="${_target}-ar" \
+	RANLIB="${_target}-ranlib" \
+	AS="${_target}-as" \
+	STRIP="${_target}-strip" \
+	OBJDUMP="${_target}-objdump" \
+	WINDRES="${_target}-windres" \
+	../mingw-w64-v${_mingw_version}/mingw-w64-libraries/winpthreads/configure \
+		--prefix=${_sysroot} \
+		--host=${_target} \
+		--enable-static \
+		--enable-shared
+
+	make && make install
+}
+
+_gcc_build() {
+	_target=$1
+	_sysroot="/usr/${_target}"
+	_builddir=${wrksrc}/"build-gcc-${_target}"
+
+	msg_normal "Building GCC: ${_target}\n"
+
+	cd ${_builddir}
+
+	# should be already configured previously
+	# no need for install since this is the last step
+	make
+}
+
+_build_cross() {
+	_target=$1
+
+	_binutils_build ${_target}
+	_mingw_headers ${_target}
+	_gcc_bootstrap ${_target}
+	_mingw_crt_build ${_target}
+	_mingw_winpthreads_build ${_target}
+	_gcc_build ${_target}
+}
+
+do_build() {
+	(_build_cross "x86_64-w64-mingw32")
+	(_build_cross "i686-w64-mingw32")
+}
+
+_install_cross() {
+	_target=$1
+
+	(cd ${wrksrc}/"build-binutils-${_target}" && DESTDIR="$DESTDIR" make install)
+	(cd ${wrksrc}/"build-gcc-${_target}" && DESTDIR="$DESTDIR" make install)
+	(cd ${wrksrc}/"build-mingw-headers-${_target}" && DESTDIR="$DESTDIR" make install)
+	(cd ${wrksrc}/"build-mingw-crt-${_target}" && DESTDIR="$DESTDIR" make install)
+	(cd ${wrksrc}/"build-mingw-winpthreads-${_target}" && DESTDIR="$DESTDIR" make install)
+
+	vlicense ${wrksrc}/"mingw-w64-v${_mingw_version}/COPYING" ZPL
+}
+
+do_install() {
+	_install_cross "x86_64-w64-mingw32"
+	# i686 version will be installed in subpackage (below)
+}
+
+_clean_cross() {
+	_target=$1
+
+	rm -rf /usr/${_target}
+	rm -f  /usr/bin/${_target}*
+	rm -rf /usr/lib/gcc/${_target}
+	rm -rf /usr/libexec/gcc/${_target}
+}
+
+do_clean() {
+	_clean_cross "x86_64-w64-mingw32"
+	_clean_cross "i686-w64-mingw32"
+}
+
+cross-i686-w64-mingw32_package() {
+	short_desc="Cross toolchain for Win32"
+	nostrip=yes
+	nopie=yes
+	nodebug=yes
+
+	pkg_install() {
+		DESTDIR="$PKGDESTDIR" _install_cross "i686-w64-mingw32"
+	}
+}