9d32eaaec89ed906ee36de328b1632c57e5e71b5
[dragonfly.git] / sys / conf / kern.fwd.mk
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
40 FORWARD_HEADERS_COOKIE= ${_MACHINE_FWD}/.done
41 ${FORWARD_HEADERS_COOKIE}: ${_MACHINE_FWD}/include/machine ${_FWDHDRS} ${_LHDRS}
42         @touch ${.TARGET}
43
44 ${_FWDHDRS}:
45 .if defined(.PARSEDIR)
46         @(echo "creating machine/ forwarding header ${.TARGET}" 1>&2; \
47         echo "/*" ; \
48         echo " * CONFIG-GENERATED FILE, DO NOT EDIT" ; \
49         echo " */" ; \
50         echo ; \
51         echo "#ifndef _MACHINE_${.TARGET:T:S/./_/g:tu}_" ; \
52         echo "#define _MACHINE_${.TARGET:T:S/./_/g:tu}_" ; \
53         echo "#include <cpu/${.TARGET:T}>" ; \
54         echo "#endif" ; \
55         echo) > ${.TARGET}
56 .else
57         # LEGACY MAKE - REMOVE FOR DFLY 3.6
58         @(echo "creating machine/ forwarding header ${.TARGET}" 1>&2; \
59         echo "/*" ; \
60         echo " * CONFIG-GENERATED FILE, DO NOT EDIT" ; \
61         echo " */" ; \
62         echo ; \
63         echo "#ifndef _MACHINE_${.TARGET:T:S/./_/g:U}_" ; \
64         echo "#define _MACHINE_${.TARGET:T:S/./_/g:U}_" ; \
65         echo "#include <cpu/${.TARGET:T}>" ; \
66         echo "#endif" ; \
67         echo) > ${.TARGET}
68 .endif
69
70 ${_LHDRS}:
71 .if defined(.PARSEDIR)
72         @(echo "creating sys/ forwarding header ${.TARGET}" 1>&2; \
73         echo "/*" ; \
74         echo " * CONFIG-GENERATED FILE, DO NOT EDIT" ; \
75         echo " */" ; \
76         echo ; \
77         echo "#ifndef _${.TARGET:T:S/./_/g:tu}_" ; \
78         echo "#define _${.TARGET:T:S/./_/g:tu}_" ; \
79         echo "#include <sys/${.TARGET:T}>" ; \
80         echo "#endif" ; \
81         echo) > ${.TARGET}
82 .else
83         # LEGACY MAKE - REMOVE FOR DFLY 3.6
84         @(echo "creating sys/ forwarding header ${.TARGET}" 1>&2; \
85         echo "/*" ; \
86         echo " * CONFIG-GENERATED FILE, DO NOT EDIT" ; \
87         echo " */" ; \
88         echo ; \
89         echo "#ifndef _${.TARGET:T:S/./_/g:U}_" ; \
90         echo "#define _${.TARGET:T:S/./_/g:U}_" ; \
91         echo "#include <sys/${.TARGET:T}>" ; \
92         echo "#endif" ; \
93         echo) > ${.TARGET}
94 .endif
95