1# Create forwarding headers for ${SYSDIR}/cpu/${MACHINE_ARCH}/*.h in 2# ${_MACHINE_FWD}/include/machine and share the directory among module build 3# directories. 4# Define _MACHINE_FWD before inclusion of this file. 5.if !defined(_MACHINE_FWD) 6.error you must define _MACHINE_FWD in which to generate forwarding headers. 7.endif 8 9# _FWDHDRS fills in missing <machine/BLAH.h> headers from <cpu/BLAH.h>, 10# allowing us to omit forwarding-only header files in each platform 11# architecture's machine/ directory. 12# 13_cpu_hdrs!= echo ${SYSDIR}/cpu/${MACHINE_ARCH}/include/*.h 14_FWDHDRS= 15.for _h in ${_cpu_hdrs} 16_fwd:= ${_MACHINE_FWD}/include/machine/${_h:T} 17_FWDHDRS:= ${_FWDHDRS} ${_fwd} 18${_fwd}: ${_h} 19.endfor 20 21# _LHDRS mimics _LHDRS from /usr/src/include/Makefile, directly linking 22# sys/BLAH.h as <BLAH.h> for certain header files. These are used to 23# mimic a standard user include topology. Only the virtual kernel 24# build uses these. e.g. in order for #include <fcntl.h> to work. 25# 26_lhdrs= aio.h errno.h fcntl.h linker_set.h poll.h syslog.h \ 27 termios.h ucontext.h 28_LHDRS= 29.for _h in ${_lhdrs} 30_fwd:= ${_MACHINE_FWD}/include/${_h} 31_LHDRS:= ${_LHDRS} ${_fwd} 32${_fwd}: ${SYSDIR}/sys/${_h} 33.endfor 34 35.ORDER: ${_MACHINE_FWD}/include/machine ${_FWDHDRS} ${_LHDRS} 36 37${_MACHINE_FWD} ${_MACHINE_FWD}/include/machine: 38 @mkdir -p ${.TARGET} 39 40FORWARD_HEADERS_COOKIE= ${_MACHINE_FWD}/.done 41${FORWARD_HEADERS_COOKIE}: ${_MACHINE_FWD}/include/machine ${_FWDHDRS} ${_LHDRS} 42 @touch ${.TARGET} 43 44${_FWDHDRS}: 45 @(echo "creating machine/ forwarding header ${.TARGET}" 1>&2; \ 46 echo "/*" ; \ 47 echo " * CONFIG-GENERATED FILE, DO NOT EDIT" ; \ 48 echo " */" ; \ 49 echo ; \ 50 echo "#ifndef _MACHINE_${.TARGET:T:S/./_/g:tu}_" ; \ 51 echo "#define _MACHINE_${.TARGET:T:S/./_/g:tu}_" ; \ 52 echo "#include <cpu/${.TARGET:T}>" ; \ 53 echo "#endif" ; \ 54 echo) > ${.TARGET}.${.MAKE.PID} 55 @mv -f ${.TARGET}.${.MAKE.PID} ${.TARGET} 56 57${_LHDRS}: 58 @(echo "creating sys/ forwarding header ${.TARGET}" 1>&2; \ 59 echo "/*" ; \ 60 echo " * CONFIG-GENERATED FILE, DO NOT EDIT" ; \ 61 echo " */" ; \ 62 echo ; \ 63 echo "#ifndef _${.TARGET:T:S/./_/g:tu}_" ; \ 64 echo "#define _${.TARGET:T:S/./_/g:tu}_" ; \ 65 echo "#include <sys/${.TARGET:T}>" ; \ 66 echo "#endif" ; \ 67 echo) > ${.TARGET}.${.MAKE.PID} 68 @mv -f ${.TARGET}.${.MAKE.PID} ${.TARGET} 69