Você pode ter encontrado algo com o que está feliz agora, mas compilei um binário de uníssono que funciona no android - é possível usar as instruções de ondulação manual de que você está falando - usei-as para compilar de forma cruzada a fonte linux no ubuntu 12.10 usando o NDK do Android e com algumas alterações no código, ele está funcionando agora. Siga as instruções em https://sites.google.com/site/keigoattic/ocaml-on-android e, em seguida, você precisará fazer algumas coisas. Há um arquivo chamado pty.c na fonte unison - encontre a seguinte seção:
// openpty
#if defined(__linux)
#include <pty.h>
/*#define HAS_OPENPTY 1*/
#endif
e comente define HAS_OPENPTY 1
como mostrado. Você também precisa abrir o ubase / util.ml e editar:
let homeDir () =
System.fspathFromString "/Your path here"
Comente aqui:
(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 *))
...Para aqui!
Então você também terá que editar o 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
E comente # CLIBS+=-cclib -lutil
como mostrado.
E, tanto quanto me lembro, tudo funcionou. A outra etapa, uma vez compilada, é montar sua partição do sistema Android como gravável e copiar uníssono na pasta / system, onde estão todos os demais comandos do shell.
Espero que seja útil para alguém ... Perdi muito sono ao compilá-lo.