1export MakeInc_cmd=${SRCROOT}/makedefs/MakeInc.cmd
2export MakeInc_def=${SRCROOT}/makedefs/MakeInc.def
3export MakeInc_rule=${SRCROOT}/makedefs/MakeInc.rule
4export MakeInc_dir=${SRCROOT}/makedefs/MakeInc.dir
5
6include $(MakeInc_cmd)
7include $(MakeInc_def)
8
9INSTINC_SUBDIRS = machine
10INSTINC_SUBDIRS_ARM = arm
11INSTINC_SUBDIRS_X86_64 = i386
12
13EXPINC_SUBDIRS = machine
14EXPINC_SUBDIRS_X86_64 = i386
15EXPINC_SUBDIRS_ARM = arm
16
17MIG_TYPES = \
18	clock_types.defs \
19	mach_types.defs \
20	std_types.defs
21
22MIG_DEFS =	\
23	audit_triggers.defs \
24	clock.defs \
25	clock_priv.defs \
26	clock_reply.defs \
27	exc.defs \
28	host_notify_reply.defs \
29	host_priv.defs \
30	host_security.defs \
31	lock_set.defs \
32	mach_exc.defs \
33	mach_host.defs \
34	mach_port.defs \
35	mach_vm.defs \
36	notify.defs \
37	processor.defs \
38	processor_set.defs \
39	security.defs \
40	task.defs \
41	task_access.defs \
42	telemetry_notification.defs \
43	thread_act.defs \
44	vm_map.defs
45
46
47MACH_PRIVATE_DEFS = \
48	mach_notify.defs \
49	memory_object.defs \
50	memory_object_control.defs \
51	memory_object_default.defs \
52	memory_object_name.defs \
53	upl.defs \
54	vm32_map.defs
55
56#
57# MIG-generated headers that are traditionally used by user
58# level code.
59#
60MIG_USHDRS = \
61	audit_triggers_server.h \
62	clock_reply_server.h \
63	exc_server.h \
64	mach_exc_server.h \
65	memory_object_server.h \
66	memory_object_default_server.h \
67	notify_server.h \
68	task_access_server.h \
69	telemetry_notification_server.h
70
71MIG_UUHDRS = \
72	clock.h \
73	clock_priv.h \
74	host_priv.h \
75	host_security.h \
76	lock_set.h \
77	mach_host.h \
78	mach_port.h \
79	mach_vm.h \
80	memory_object_control.h \
81	memory_object_name.h \
82	processor.h \
83	processor_set.h \
84	security.h \
85	task.h \
86	task_access.h \
87	thread_act.h \
88	upl.h \
89	vm_map.h
90
91MIGINCLUDES = ${MIG_UUHDRS} ${MIG_USHDRS}
92
93DATAFILES = \
94        boolean.h \
95        clock_types.h \
96        error.h \
97	exception.h \
98	exception_types.h \
99	host_notify.h \
100        host_info.h \
101	host_reboot.h \
102	host_special_ports.h \
103	kern_return.h \
104        kmod.h \
105        mach_param.h \
106	mach_time.h \
107	mach_traps.h \
108        mach_types.h \
109	machine.h \
110        mach_syscalls.h \
111        memory_object_types.h \
112        message.h \
113	mig.h \
114	mig_errors.h \
115	ndr.h \
116        notify.h \
117	policy.h \
118	port.h \
119        processor_info.h \
120	rpc.h \
121	sdt.h \
122        semaphore.h \
123	shared_memory_server.h \
124	shared_region.h \
125	std_types.h \
126	sync_policy.h \
127        syscall_sw.h \
128	task_info.h \
129	task_policy.h \
130	task_special_ports.h \
131        thread_info.h \
132	thread_policy.h \
133	thread_special_ports.h \
134        thread_status.h \
135	thread_switch.h \
136	time_value.h \
137        vm_attributes.h \
138        vm_behavior.h \
139	vm_inherit.h \
140	vm_param.h \
141        vm_prot.h \
142	vm_purgable.h \
143        vm_region.h \
144	vm_statistics.h \
145	vm_sync.h \
146	vm_types.h \
147	${MIG_TYPES} \
148	${MIG_DEFS}
149
150INSTALL_MI_LIST	= \
151	bootstrap.h \
152	${DATAFILES}
153
154INSTALL_KF_MI_LIST = \
155	mach_interface.h \
156	$(filter-out mach_traps.h mach_syscalls.h thread_switch.h, ${DATAFILES})
157
158INSTALL_KF_MI_LCL_LIST = \
159	mach_interface.h \
160	$(filter-out mach_traps.h mach_syscalls.h thread_switch.h, ${DATAFILES})
161
162INSTALL_MI_GEN_LIST =
163
164INSTALL_MI_DIR = mach
165
166EXPORT_MI_LIST	= \
167	branch_predicates.h \
168	mach_interface.h \
169	${DATAFILES}
170
171EXPORT_MI_GEN_LIST = \
172	${MIGINCLUDES}
173
174EXPORT_MI_DIR = mach
175
176${MIGINCLUDES} : ${MIG_TYPES}
177
178${MIG_UUHDRS} : \
179	%.h : %.defs
180	@echo MIG $@
181	$(_v)$(MIG) $(MIGFLAGS)		\
182		-server /dev/null	\
183		-user /dev/null		\
184		-header $@ 		\
185		$<
186
187${MIG_USHDRS} : \
188	%_server.h : %.defs
189	@echo MIG $@
190	$(_v)$(MIG) $(MIGFLAGS)		\
191		-server /dev/null	\
192		-user /dev/null		\
193		-header /dev/null	\
194		-sheader $@ 		\
195		$<
196
197#
198# Build path
199#
200
201INCFLAGS_MAKEFILE= -I..
202
203MIGKSFLAGS      = -DMACH_KERNEL_PRIVATE -DKERNEL_SERVER=1
204MIGKUFLAGS      = -DMACH_KERNEL_PRIVATE -DKERNEL_USER=1 -maxonstack 1024
205#
206# MIG-generated headers that are traditionally used by kernel
207# level code.
208#
209MIG_KUHDRS = \
210	audit_triggers.h \
211	clock_reply.h \
212	exc.h \
213	host_notify_reply.h \
214	mach_exc.h \
215	mach_notify.h \
216	memory_object.h \
217	memory_object_control.h \
218	memory_object_default.h \
219	task_access.h \
220	upl.h \
221	vm_map.h
222
223MIG_KUSRC = \
224	audit_triggers_user.c \
225	clock_reply_user.c \
226	exc_user.c \
227	host_notify_reply_user.c \
228	mach_exc_user.c \
229	mach_notify_user.c \
230	memory_object_user.c \
231	memory_object_control_user.c \
232	memory_object_default_user.c \
233	task_access_user.c \
234	telemetry_notification_user.c \
235	upl_user.c \
236	vm_map_user.c
237
238MIG_KSHDRS = \
239	clock_server.h \
240	clock_priv_server.h \
241	exc_server.h \
242	host_priv_server.h \
243	host_security_server.h \
244	lock_set_server.h \
245	mach_exc_server.h \
246	mach_host_server.h \
247	mach_notify_server.h \
248	mach_port_server.h \
249	mach_vm_server.h \
250	memory_object_server.h \
251	memory_object_control_server.h \
252	memory_object_default_server.h \
253	memory_object_name_server.h \
254	processor_server.h \
255	processor_set_server.h \
256	security_server.h \
257	task_server.h \
258	thread_act_server.h \
259	upl_server.h \
260	vm_map_server.h \
261	vm32_map_server.h
262
263MIG_KSSRC = \
264	clock_server.c \
265	clock_priv_server.c \
266	exc_server.c \
267	host_priv_server.c \
268	host_security_server.c \
269	lock_set_server.c \
270	mach_exc_server.c \
271	mach_host_server.c \
272	mach_notify_server.c \
273	mach_port_server.c \
274	mach_vm_server.c \
275	memory_object_server.c \
276	memory_object_control_server.c \
277	memory_object_default_server.c \
278	memory_object_name_server.c \
279	processor_server.c \
280	processor_set_server.c \
281	security_server.c \
282	task_server.c \
283	thread_act_server.c \
284	upl_server.c \
285	vm_map_server.c \
286	vm32_map_server.c
287
288#
289# JMM -
290# Since there are two generated header files with the same name, one for
291# install and export, the other for internal use (and they are different)
292# we can't explicitly list two rules for the same target.  So rules for
293# generating internal headers will be handled implicitly by creating rules
294# to generate the internal C sources, and the headers get created as a
295# side-effect.
296#
297#
298# This is all temporary scaffolding, as we are moving to a model where
299# the MIG-generated code is identical in all environments.  At first, it
300# will contain some environment-specific ifdefs, but over time should not
301# even require that as we move towards making all the environments look
302# the same.
303#
304COMP_FILES = ${MIG_KUSRC} ${MIG_KSSRC}
305
306do_build_all:: $(COMP_FILES)
307
308${COMP_FILES} : ${MIG_TYPES}
309
310${MIG_KUSRC} : \
311	%_user.c : %.defs
312	@echo MIG $@
313	$(_v)${MIG} ${MIGFLAGS} ${MIGKUFLAGS}        \
314		-user    $*_user.c              \
315		-header  $*.h              \
316		-server  /dev/null		\
317		-sheader /dev/null		\
318		$<
319
320${MIG_KSSRC}: \
321	%_server.c : %.defs
322	@echo MIG $@
323	$(_v)${MIG} ${MIGFLAGS} ${MIGKSFLAGS}        \
324		-user    /dev/null              \
325		-header  /dev/null              \
326		-server  $*_server.c		\
327		-sheader $*_server.h		\
328		$<
329
330include $(MakeInc_rule)
331include $(MakeInc_dir)
332