On Tuesday 08 May 2007, Paul Fulghum wrote: > make[3]: *** No rule to make target > `/usr/src/devel/usr/include/linux/.check.synclink.h', needed by > `__headerscheck'. Stop. > > linux/kexec.h includes linux/compat.h without a similar error, > though that is inside of a #ifdef CONFIG_KEXEC > > Moving linux/compat.h from synclink.h to synclink_gt.c > removes the error. > > This is the last error standing in my way and I'm trying > to figure out the rules for when and where you are allowed > to use compat.h, I'm not familiar with the headerscheck > facility so I'm not sure what it is looking for and the > error is not very helpful. There is nothing in Documentation > covering it.
The warning is about the situation that linux/synclink.h gets installed by make headers_install, but linux/compat.h does not get installed, so any user program including linux/synclink.h will fail to build. To solve this, you can to change include/linux/Kbuild to list synclink.h as unifdef-y instead of header-y, and put the parts that you don't want to be in user space inside of #ifdef __KERNEL__. Alternatively, you can put these kernel-internal definitions into a private header file in drivers/char that does not get installed in the first place. That would be particularly useful if you can also move other parts of linux/synclink.h into the private header, when they are not part of the external ABI. Arnd <>< - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/