Does libunistring's "make check" pass on this platform? should have tried that. testlocale.c fails on line 38 with: test-locale.c:38: error: expected ')' before numeric constant expanding that with cpp gets me the rather stunning: extern int (* verify_function__ (void)) [(!!sizeof (struct { unsigned int verify_error_if_negative_size__: (sizeof (void *)0 == sizeof (void *)) ? 1 : -1; }))]; which I'll rewrap to: extern int (* verify_function__ (void)) [(!!sizeof (struct { unsigned int verify_error_if_negative_size__ : (sizeof (void *)0 == sizeof (void *)) ? 1 : -1; } ))]; which seems odd but not necessarily wrong. The original line was verify (sizeof NULL == sizeof (void *)); So it seems that NULL is expanding to (void *) 0, and "sizeof (void *) 0" is not legit. AFAIK sizeof is specified to work on variables and types, and NULL is neither a variable nor a type. Is NULL something else on Linux? Fixing that so sizeof(NULL) gets this to pass with only one failure: test-striconveh.c:389: assertion failed Abort (core dumped) FAIL: test-striconveh