dicej/android-libcore64 — pull request #1 by bigfatbrowncat (2014-03-06 07:20:36+00:00)
Title: Porting to MinGW-w64

The target of these changes is to support luni (Java core classes from Android) on Windows. The main problem is the POSIX functions which are (partially) unsupported on Windows. Some of them have replacements in WinAPI, some others don't.

We tried to avoid modifying Java code of the framework cause Java don't have ifdefs ;) The only change we couldn't avoid is adding a static constructor (and a native init() function) to libcore.io.Posix class thus we could initialize WinSock there.

We tried to put any significant changes to a special file named mingw-extensions.cpp and change the original libcore_io_Posix.cpp as few as possible, but unfortunately we had to make some changes (most of them are related to a different functions signature; for example, in Windows we have unsigned int64 for socket descriptor while under unix we have signed int).

Not everything is supported so far. The first target (which is mostly achieved) is sockets support. We made some tests (https://github.com/bigfatbrowncat/avian-droid-tests.git) that work well with this implementation. The most complicated is SimpleFramework demo (http://www.simpleframework.org) which work like a charm (it's a very tough test - it includes pipes and poll() - two main problems on Windows)

While this work is incomplete yet, it supports many features and includes many code changes, so we want to pull it to your repo and continue the discussion with Google guys about merging it upstream.

We made some additional modifications to Avian - i'm going to pull them to the Avian repo too