xref: /dragonfly/sys/conf/kern.fwd.mk (revision 092c2dd1)
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 ucontext.h
27_LHDRS=
28.for _h in ${_lhdrs}
29_fwd:=	${_MACHINE_FWD}/include/${_h}
30_LHDRS:=	${_LHDRS} ${_fwd}
31${_fwd}: ${SYSDIR}/sys/${_h}
32.endfor
33
34.ORDER: ${_MACHINE_FWD}/include/machine ${_FWDHDRS} ${_LHDRS}
35
36${_MACHINE_FWD} ${_MACHINE_FWD}/include/machine:
37	@mkdir -p ${.TARGET}
38
39FORWARD_HEADERS_COOKIE=	${_MACHINE_FWD}/.done
40${FORWARD_HEADERS_COOKIE}: ${_MACHINE_FWD}/include/machine ${_FWDHDRS} ${_LHDRS}
41	@touch ${.TARGET}
42
43${_FWDHDRS}:
44	@(echo "creating machine/ forwarding header ${.TARGET}" 1>&2; \
45	echo "/*" ; \
46	echo " * CONFIG-GENERATED FILE, DO NOT EDIT" ; \
47	echo " */" ; \
48	echo ; \
49	echo "#ifndef _MACHINE_${.TARGET:T:S/./_/g:tu}_" ; \
50	echo "#define _MACHINE_${.TARGET:T:S/./_/g:tu}_" ; \
51	echo "#include <cpu/${.TARGET:T}>" ; \
52	echo "#endif" ; \
53	echo) > ${.TARGET}.${.MAKE.PID}
54	@mv -f ${.TARGET}.${.MAKE.PID} ${.TARGET}
55
56${_LHDRS}:
57	@(echo "creating sys/ forwarding header ${.TARGET}" 1>&2; \
58	echo "/*" ; \
59	echo " * CONFIG-GENERATED FILE, DO NOT EDIT" ; \
60	echo " */" ; \
61	echo ; \
62	echo "#ifndef _${.TARGET:T:S/./_/g:tu}_" ; \
63	echo "#define _${.TARGET:T:S/./_/g:tu}_" ; \
64	echo "#include <sys/${.TARGET:T}>" ; \
65	echo "#endif" ; \
66	echo) > ${.TARGET}.${.MAKE.PID}
67	@mv -f ${.TARGET}.${.MAKE.PID} ${.TARGET}
68