Right. What they are trying to do is compile the source in /root with files in the kernel. There will be files in the C or C++ invoked this way
# include foo.h
These may be in the kernel source. They can also link in .o files, compiled kernel source, and make it pretend your new module is part of the kernel tree. the command ld stitches together all the small C files into your module. That's what's not happening.
You had this error.
kernel/rcutree.c: In function `__rcu_init':
kernel/rcutree.h:301: sorry, unimplemented: inlining failed in call to 'rcu_bootup_announce': function body not available
kernel/rcutree.c:1740: sorry, unimplemented: called from here
grep -r rcu_bootup_announce *
in the kernel source, and in the driver source. Then we might know what's going on.