# Notes on cross compilation
## Testing with Wine
To test the Windows target, install wine and add it to the `CARGO_TARGET_X86_64_PC_WINDOWS_GNU_RUNNER` environment variable.
**Example**
`CARGO_TARGET_X86_64_PC_WINDOWS_GNU_RUNNER=wine64 cargo test --target=x86_64-pc-windows-gnu`
The C++ runtime DLLs need to be available. On OS X, you install `brew install mingw-w64` and add to the environment variable `WINEPATH`. On debian, install
`gcc-mingw-w64-x86-64-posix` and `g++-mingw-w64-x86-64-posix`.
Note that WINEPATH separates paths with semicolon (;), not (:) as normal for unix environments.
**Example OS X**
`export WINEPATH="/usr/local/Cellar/mingw-w64/10.0.0_3/toolchain-x86_64/x86_64-w64-mingw32/lib/;/usr/local/Cellar/mingw-w64/10.0.0_3/toolchain-x86_64/x86_64-w64-mingw32/bin/"`
**Example Debian**
`export WINEPATH="/usr/lib/gcc/x86_64-w64-mingw32/10-posix/;/usr/x86_64-w64-mingw32/lib/`
The package that contains most of the runtime DLL's needed is `gcc-mingw-w64-x86-64-posix-runtime`, a dependency off `gcc-mingw-w64-x86-64-posix`.
The `libwinpthread-1.dll` dependency is in `/usr/x86_64-w64-mingw32/lib/`, installed by package `mingw-w64-x86-64-dev`.
## GCC for linux
You need to install the `posix` verison of gcc/g++!
`apt-get install gcc-mingw-w64-x86-64-posix g++-mingw-w64-x86-64-posix`
If the default version (not posix) is install, you will run into stuff like "mutex" header not existing.