It might be that libobjc2 no longer supports gcc, but in case it does, this is the result of building with Ubuntu 16.04's gcc 5.4.0:
[ 1%] Building C object CMakeFiles/objc.dir/category_loader.c.o
/usr/bin/cc -DGC_DEBUG -DGNUSTEP -DNO_LEGACY -DTYPE_DEPENDENT_DISPATCH -D__OBJC_RUNTIME_INTERNAL__=1 -Dobjc_EXPORTS -std=gnu99 -fexceptions -fPIC -o CMakeFiles/objc.dir/category_loader.c.o -c /home/ivucica/projects/libobjc2/category_loader.c
In file included from /home/ivucica/projects/libobjc2/dtable.h:3:0,
from /home/ivucica/projects/libobjc2/category_loader.c:5:
/home/ivucica/projects/libobjc2/sarray2.h:26:35: error: initializer element is not constant
static const uint32_t data_mask = data_size - 1;
^
/home/ivucica/projects/libobjc2/sarray2.h:55:8: error: variably modified 'data' at file scope
void *data[data_size];
^
CMakeFiles/objc.dir/build.make:158: recipe for target 'CMakeFiles/objc.dir/category_loader.c.o' failed
make[2]: *** [CMakeFiles/objc.dir/category_loader.c.o] Error 1
make[2]: Leaving directory '/home/ivucica/projects/libobjc2/build'