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