Although mainly focussed on MinGW, I've begun adding Darwin cross support. I've also built Darwin cross compilers. The latest Linux version can be found at:
http://mingw-and-ndk.googlecode.com/files/multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120531.tar.xz
Here's a run-down of what's in the patch:
configure.ac:
Set MACHDEP=darwin when using darwin-cross compilers.
Set DELIM to ; for MACHDEP=win.
Switch from PC/getpathp.c to Modules/getpath.c for MinGW build.
This gives us a posix like layout as needed by autotools projects
such as GDB.
Add MSYSVPATH as an env. var to configure (used in getpath.c):
MSYS make uses a 'virtual' VPATH, but getpath.c uses
GetModuleFileNameW (replacing \ with /). This allows the user to
define the 'actual 'real' value. Note, it should contain / not \,
(i.e. use ecactly what is printed by "pwd -W")
Fixes to build with MinGW64 for REPARSE_DATA_BUFFER (needs defining)
Include/fileutils.h:
Define Py_wstat for MinGW/MinGW64.
Include/osdefs.h:
Define SEP to / and ALTSEP to \ for MinGW.
cygwinccompiler.py:
Fix RE_VERSION in for handling MinGW64 compiler versioning.
Ask gcc where ld is instead of requiring it to be passed in os.environ
plat-generic/regen:
Allow passing in the CC so sysroots can be determined from -print-search-dirs
If this CC passing is detected, use $CCINSTALL/include/stddef.h as netinet/in.h doesn't come with MinGW.
Moules/faulthandler.c:
Avoid _set_abort_behavior on MinGW64 as it's broken.
Modules/getpath.c:
Add support for MinGW.
Modules/socketmodule.c:
Change case (to lower) of #include <MSTcpIP.h> for MinGW/MinGW64 cross.
Parser/metagrammar.c:
Rename _PyParser_Grammar to _PyParser_MetaGrammar to avoid multiply defined symbols.
Python/pythonrun.c:
Translate ALTSEP (\) to SEP (/) in Py_SetProgramName
setup.py:
Add 'msi','cabinet','rpcrt4' as libs to link against for _msi module.
Fix an error with self.get_platform() no longer being defined (changed to host_platform)
Best regards,
Ray Donnelly.