Solaris doesn't have sys/endian.h or endian.h, it has sys/byteorder.h,
which doesn't define BYTE_ORDER, it defines either _LITTLE_ENDIAN or
_BIG_ENDIAN.
# include <machine/endian.h>
#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__bsdi__) || defined(__DragonFly__)
# include <sys/endian.h>
+#elif defined(__sun) || defined(sun)
+# include <sys/byteorder.h>
+# if !defined(LITTLE_ENDIAN)
+# define LITTLE_ENDIAN 4321
+# endif
+# if !defined(BIG_ENDIAN)
+# define BIG_ENDIAN 1234
+# endif
+# if !defined(BYTE_ORDER)
+# if defined(_BIG_ENDIAN)
+# define BYTE_ORDER BIG_ENDIAN
+# else
+# define BYTE_ORDER LITTLE_ENDIAN
+# endif
+# endif
#else
# include <endian.h>
#endif