Some notes about issues that may be a hassle for those porting our code to other
environments.

The core parts of the code are mostly platform-neutral, but some of the higher-level
pieces are Unix-centric.  For example, we assume that "/" is used to separate path
names, and in some places we use "/bin/sh".  This will make a Windows port unpleasant.
For this we do not apologize. :)

Everything should work fine on big-endian and little-endian machines.  However, the
pre-cooked indices we are distributing will only work on little-endian machines (eg Intel).
If you are interested in running on a big-endian machine, please contact us.

Also, everything should work fine on 64-bit processors, though we have only tested this
with the gcc compiler.  64-bit processors can happily run indices built by 32-bit
processors, and vice versa.


We define _GNU_SOURCE in the Makefile, which yields some GNU-specific extensions:

-asprintf(), vasprintf() are GNU extensions.

-canonicalize_file_name() is a GNU extension.  We have provided a stupid stub
 implementation in an-common/ioutils.c; you may need to modify the preprocessor
 code to enable it.

-basename(): although _GNU_SOURCE defines some different behaviour, we do not depend
  on this.  (solve-field.c)

-keywords.h: it should be safe to just #define all these things to empty; they're just
 syntactic sugar.


Some other extensions:

-round / nearbyint.  None of our code is particularly fussy about the details of
 rounding, so substituting your favourite rounding code should work fine.

-TWOMASS_NULL (NAN) in 2mass.{c,h}: this should be the IEEE NaN value; it is the value
 written to the FITS file when a 2MASS data file contains a "null" value.





