Возможно, вы нашли что-то, чем вы довольны сейчас, но я скомпилировал бинарный файл unison, который работает на Android - это возможно с помощью инструкций по размахиванию руками, о которых вы говорите - я использовал их для кросс-компиляции исходного кода linux в ubuntu 12.10 используя Android NDK и с некоторыми изменениями в коде, он теперь работает. Следуйте инструкциям на странице https://sites.google.com/site/keigoattic/ocaml-on-android, и тогда вам нужно будет сделать несколько вещей. В унисонном источнике есть файл pty.c - найдите следующий раздел:
// openpty
#if defined(__linux)
#include <pty.h>
/*#define HAS_OPENPTY 1*/
#endif
и закомментируйте define HAS_OPENPTY 1
как показано. Вам также нужно открыть ubase / util.ml и отредактировать:
let homeDir () =
System.fspathFromString "/Your path here"
Комментарий отсюда:
(if (osType = `Unix) || isCygwin then
safeGetenv "HOME"
else if osType = `Win32 then
(*We don't want the behavior of Unison to depends on whether it is run
from a Cygwin shell (where HOME is set) or in any other way (where
HOME is usually not set)
try System.getenv "HOME" (* Windows 9x with Cygwin HOME set *)
with Not_found ->
*)
try System.getenv "USERPROFILE" (* Windows NT/2K standard *)
with Not_found ->
try System.getenv "UNISON" (* Use UNISON dir if it is set *)
with Not_found ->
"c:/" (* Default *)
else
assert false (* osType can't be anything else *))
...Сюда!
Тогда вам также придется редактировать Makefile.Ocaml
CWD=$(shell pwd)
EXEC_EXT=
WINOBJS=
SYSTEM=generic
# openpty is in the libutil library
ifneq ($(OSARCH),solaris)
ifneq ($(OSARCH),osx)
# CLIBS+=-cclib -lutil
endif
endif
buildexecutable::
@echo Building for Unix
endif
endif
И закомментируйте # CLIBS+=-cclib -lutil
как показано.
И насколько я помню, все работало. Другой шаг после компиляции - это смонтировать системный раздел Android как доступный для записи и скопировать unison в папку / system, где находятся все остальные команды оболочки.
Надеюсь, что это кому-нибудь пригодится ... Я потерял много сна, чтобы его скомпилировать.