Well, xindy is built on top of a (not particularly portable) Lisp
system.  (The files it dumps aren't even portable across machines that
are running Solaris 2 - a dump file made on a Sparc 5 is rejected by
an UltraSparc.)

To make it portable you need to change the code so that it works under
a portable Lisp.  Is there a Lisp system that works (almost)
identically under Unix, DOS, Windows, Mac, etc. etc.?  The answer is
yes; its name is Emacs.