Solaris での "fatal error: endian.h: No such file or directory"

Solaris で何かを make したときに以下のようなエラーが出ることがある

xxx.c: fatal error: endian.h: No such file or directory

Solaris に endian.h は存在しない。SPARC出身だからだろうか (*1) 。

気合いで修正する場合は、ヘッダファイルに以下のような include と define を書けばコンパイルは通る。

#include <sys/byteorder.h>
#define htobe16(x) BE_16(x)
#define htole16(x) LE_16(x)
#define be16toh(x) BE_IN16(x)
#define le16toh(x) LE_IN16(x)
#define htobe32(x) BE_32(x)
#define htole32(x) LE_32(x)
#define be32toh(x) BE_IN32(x)
#define le32toh(x) LE_IN32(x)
#define htobe64(x) BE_64(x)
#define htole64(x) LE_64(x)
#define be64toh(x) BE_IN64(x)
#define le64toh(x) LE_IN64(x)

(*1) ん?どしたん?話聞こか?