It contains things like:
#ifndef _LINUX_TYPES_H
#define _LINUX_TYPES_H
#include <stdint.h>
typedef uint32_t __u32;
typedef __u32 __le32;
...
which result in:
/usr/include/asm-generic/int-ll64.h:30:42: error: conflicting types for ‘__u64’
/usr/include/sys/capability.h:39:18: note: previous declaration of ‘__u64’ was here
make[1]: *** [src/libsystemd_core_la-unit.lo] Error 1
make[1]: Leaving directory `/home/kay/work/src/systemd'
make: *** [all] Error 2
So, include linux/types.h to get around that.
typedef struct ExecCommand ExecCommand;
typedef struct ExecContext ExecContext;
+#include <linux/types.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/capability.h>