porting third-party build system to bsd.kmod.mk

Warner Losh imp at bsdimp.com
Sun May 22 22:39:35 UTC 2011


The usual reason that vnode_if.h doesn't build for me when I'm doing in-tree hacking is because make depend hasn't run to generate it yet.  Or more precisely, the arc in the dependency graph from osi_crypto.c to vnode_if.h.  I didn't see that as part of the log, so you might try this first (and make setup dependent on depend somehow, as long as it is idempotent.

But many of the things that are being setup with the setup target shouldn't be necessary.  depend does that based on the setting of SYSDIR.  and the @ symlink should be enough to make the ufs and other symlinks unnecessary.

Warner


On May 21, 2011, at 12:14 AM, Benjamin Kaduk wrote:

> After getting a few pointers from jhb at BSDCan on what a bsd.kmod.mk-using Makefile should look like, I have been trying my hand at porting the OpenAFS kernel module build system to use it.  (The main thing this gets us is not having to manually track version- and architecture-dependent CFLAGS and the like.)  However, the path is not exactly smooth.
> 
> A lot of the difficulty is in getting an autogenerated vnode_if.h while using a list of files to include in the module(from the common OpenAFS code) that's given as a list of object files.  If there's already a vnode_if.h sitting around, I can just use OBJS and things progress quite nicely; however, if I have to get back to SRCS for the use of sys/conf/kmod.mk's vnode_if.h logic, I get this sort of build failure (full log attached) with the attached Makefile:
> gcc -I. -I.. -I../nfs [more includes and defines] -I/usr/devel/openafs/git/openafs/include/afs -I@/sys -Imachine -I. -I@ -I@/contrib/altq -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000 -fno-common -fno-omit-frame-pointer -mcmodel=kernel -mno-red-zone -mfpmath=387 -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -msoft-float -fno-asynchronous-unwind-tables -ffreestanding -fstack-protector -std=iso9899:1999 -fstack-protector -Wno-redundant-decls -Wsystem-headers -Werror -Wno-pointer-sign -o osi_crypto.o -c /usr/devel/openafs/git/openafs/src/afs/FBSD/osi_crypto.c /usr/devel/openafs/git/openafs/src/libafs/MODLOAD/../../afs/FBSD/osi_crypto.c vnode_if.h
> gcc: cannot specify -o with -c or -S with multiple files
> 
> That last bit, "-o osi_crypto.o -c /path/to/osi_crypto.c /path/to/osi_crypto.c vnode_if.h" is quite troublesome.  Any thoughts on what is causing those extra files to be listed would be greatly appreciated.  (Comments on other issues in the Makefile are welcome, too -- it's still in pretty rough shape.)
> 
> I should note that though Makefile.common does define a osi_crypto.o target, "make -d A" reports:
>        using existing source /usr/devel/openafs/git/openafs/src/afs/FBSD/osi_crypto.c
>        applying .c -> .o to "osi_crypto.o"
> 
> 
> Thanks,
> 
> Ben Kaduk<Makefile.txt><build.log>_______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"



More information about the freebsd-hackers mailing list