xref: /xnu-8796.121.2/osfmk/device/Makefile (revision c54f35ca767986246321eb901baf8f5ff7923f6a)
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
9MIG_DEFS =	\
10	device.defs
11
12MIG_HDRS = \
13
14DATAFILES = \
15	device_types.h device_port.h device_types.defs \
16	${MIG_DEFS}
17
18MODULEMAPFILES = \
19	device.modulemap
20
21PRIVATE_DATAFILES = \
22	device_types.h
23
24# device_types.h has some userspace IOKit types that are used by
25# IOTypes.h clients. The types are guarded by `IOKIT` because they
26# conflict with internal xnu types. However, once device_types.h
27# is part of the Darwin module, it gets processed before IOTypes.h
28# defines IOKIT. Later when IOTypes.h includes the header, it's
29# too late and the types don't get defined. Remove the IOKIT guard
30# in userspace to fix that problem and always define the IOKit types.
31KERNEL_ONLY_GUARDS_UNIFDEF = -DIOKIT
32
33MIGINCLUDES = \
34
35INSTALL_MI_LIST	= ${DATAFILES} ${_MIG_HDRS_} ${MIGINCLUDES}
36
37INSTALL_MODULEMAP_MI_LIST = ${MODULEMAPFILES}
38
39INSTALL_SF_MI_LCL_LIST = ${DATAFILES} ${PRIVATE_DATAFILES} ${_MIG_HDRS_} ${MIGINCLUDES}
40
41INSTALL_MI_DIR = device
42
43EXPORT_MI_LIST	= ${DATAFILES} ${_MIG_HDRS_} ${MIGINCLUDES}
44
45EXPORT_MI_DIR = device
46
47#
48# Build path
49#
50INCFLAGS_MAKEFILE= -I..
51
52MIGKSFLAGS	= -DMACH_KERNEL_PRIVATE -DKERNEL_SERVER=1
53MIGKUFLAGS	= -DMACH_KERNEL_PRIVATE -DKERNEL_USER=1
54
55DEVICE_FILES    = device_server.h device_server.c
56
57COMP_FILES	= ${DEVICE_FILES}
58
59do_build_all:: $(COMP_FILES)
60
61${DEVICE_FILES}: device.defs
62	@$(LOG_MIG) "$@"
63	$(_v)${MIG} ${MIGFLAGS} ${MIGKSFLAGS}	\
64	-header /dev/null			\
65	-user /dev/null				\
66	-sheader device_server.h		\
67	-server device_server.c			\
68	$<
69
70include $(MakeInc_rule)
71include $(MakeInc_dir)
72