C11 defines different max_align_t in stddef.h. It may either come from compiler (GCC, Clang) or provided by the system (DragonFly, musl libc). FreeBSD's Clang has neither due to bug 193594. So, keep the old behavior by renaming the type here to avoid building with -ansi (upstream nestegg) or -std=gnu89 (SUSE). In file included from source/webmlib/halloc/halloc.c:19:0: source/webmlib/halloc/align.h:42:25: error: conflicting types for 'max_align_t' typedef union max_align max_align_t; ^ In file included from source/webmlib/halloc/halloc.h:18:0, from source/webmlib/halloc/halloc.c:18: /usr/local/lib/gcc5/**/include/stddef.h:429:3: note: previous declaration of 'max_align_t' was here } max_align_t; ^ --- source/webmlib/halloc/align.h.orig 2015-04-09 22:13:36 UTC +++ source/webmlib/halloc/align.h @@ -39,7 +39,7 @@ union max_align void (*q)(void); }; -typedef union max_align max_align_t; +typedef union max_align halloc_max_align_t; #endif --- source/webmlib/halloc/halloc.c.orig 2015-04-09 22:13:36 UTC +++ source/webmlib/halloc/halloc.c @@ -30,7 +30,7 @@ typedef struct hblock #endif hlist_item_t siblings; /* 2 pointers */ hlist_head_t children; /* 1 pointer */ - max_align_t data[1]; /* not allocated, see below */ + halloc_max_align_t data[1]; /* not allocated, see below */ } hblock_t;