xref: /xnu-11417.101.15/osfmk/device/Makefile (revision e3723e1f17661b24996789d8afc084c0c3303b26)
1*e3723e1fSApple OSS Distributionsexport MakeInc_cmd=${SRCROOT}/makedefs/MakeInc.cmd
2*e3723e1fSApple OSS Distributionsexport MakeInc_def=${SRCROOT}/makedefs/MakeInc.def
3*e3723e1fSApple OSS Distributionsexport MakeInc_rule=${SRCROOT}/makedefs/MakeInc.rule
4*e3723e1fSApple OSS Distributionsexport MakeInc_dir=${SRCROOT}/makedefs/MakeInc.dir
5*e3723e1fSApple OSS Distributions
6*e3723e1fSApple OSS Distributionsinclude $(MakeInc_cmd)
7*e3723e1fSApple OSS Distributionsinclude $(MakeInc_def)
8*e3723e1fSApple OSS Distributions
9*e3723e1fSApple OSS DistributionsMIG_DEFS =	\
10*e3723e1fSApple OSS Distributions	device.defs
11*e3723e1fSApple OSS Distributions
12*e3723e1fSApple OSS DistributionsMIG_HDRS = \
13*e3723e1fSApple OSS Distributions
14*e3723e1fSApple OSS Distributions# Files that are public on macOS, but private on embedded
15*e3723e1fSApple OSS DistributionsEMBEDDED_PRIVATE_DATAFILES = \
16*e3723e1fSApple OSS Distributions	device_types.defs \
17*e3723e1fSApple OSS Distributions	${MIG_DEFS}
18*e3723e1fSApple OSS Distributions
19*e3723e1fSApple OSS Distributionsifeq ($(filter $(SUPPORTED_EMBEDDED_PLATFORMS) $(SUPPORTED_SIMULATOR_PLATFORMS),$(PLATFORM)),)
20*e3723e1fSApple OSS DistributionsEXTRA_DATAFILES = $(EMBEDDED_PRIVATE_DATAFILES)
21*e3723e1fSApple OSS Distributionselse
22*e3723e1fSApple OSS Distributions# Temporarily install some private defs in both usr/include and usr/local/include.
23*e3723e1fSApple OSS Distributions# They belong in usr/local/include, but installing them in both locations will allow
24*e3723e1fSApple OSS Distributions# clients that compile them by full path to switch without lock-step submissions.
25*e3723e1fSApple OSS DistributionsEXTRA_DATAFILES = device.defs device_types.defs
26*e3723e1fSApple OSS DistributionsEXTRA_PRIVATE_DATAFILES = $(EMBEDDED_PRIVATE_DATAFILES)
27*e3723e1fSApple OSS Distributionsendif
28*e3723e1fSApple OSS Distributions
29*e3723e1fSApple OSS DistributionsDATAFILES = $(sort \
30*e3723e1fSApple OSS Distributions	device_types.h device_port.h \
31*e3723e1fSApple OSS Distributions	${EXTRA_DATAFILES})
32*e3723e1fSApple OSS Distributions
33*e3723e1fSApple OSS DistributionsMODULEMAPFILES = \
34*e3723e1fSApple OSS Distributions	device.modulemap
35*e3723e1fSApple OSS Distributions
36*e3723e1fSApple OSS DistributionsPRIVATE_DATAFILES = $(sort \
37*e3723e1fSApple OSS Distributions	device_types.h \
38*e3723e1fSApple OSS Distributions	${EXTRA_PRIVATE_DATAFILES})
39*e3723e1fSApple OSS Distributions
40*e3723e1fSApple OSS Distributions# device_types.h has some userspace IOKit types that are used by
41*e3723e1fSApple OSS Distributions# IOTypes.h clients. The types are guarded by `IOKIT` because they
42*e3723e1fSApple OSS Distributions# conflict with internal xnu types. However, once device_types.h
43*e3723e1fSApple OSS Distributions# is part of the Darwin module, it gets processed before IOTypes.h
44*e3723e1fSApple OSS Distributions# defines IOKIT. Later when IOTypes.h includes the header, it's
45*e3723e1fSApple OSS Distributions# too late and the types don't get defined. Remove the IOKIT guard
46*e3723e1fSApple OSS Distributions# in userspace to fix that problem and always define the IOKit types.
47*e3723e1fSApple OSS DistributionsKERNEL_ONLY_GUARDS_UNIFDEF = -DIOKIT
48*e3723e1fSApple OSS Distributions
49*e3723e1fSApple OSS DistributionsMIGINCLUDES = \
50*e3723e1fSApple OSS Distributions
51*e3723e1fSApple OSS DistributionsINSTALL_MI_LIST	= ${DATAFILES} ${_MIG_HDRS_} ${MIGINCLUDES}
52*e3723e1fSApple OSS Distributions
53*e3723e1fSApple OSS DistributionsINSTALL_MODULEMAP_MI_LIST = ${MODULEMAPFILES}
54*e3723e1fSApple OSS Distributions
55*e3723e1fSApple OSS DistributionsINSTALL_MI_LCL_LIST = ${EXTRA_PRIVATE_DATAFILES}
56*e3723e1fSApple OSS Distributions
57*e3723e1fSApple OSS DistributionsINSTALL_SF_MI_LCL_LIST = ${DATAFILES} ${PRIVATE_DATAFILES} ${_MIG_HDRS_} ${MIGINCLUDES}
58*e3723e1fSApple OSS Distributions
59*e3723e1fSApple OSS DistributionsINSTALL_MI_DIR = device
60*e3723e1fSApple OSS Distributions
61*e3723e1fSApple OSS DistributionsEXPORT_MI_LIST	= ${DATAFILES} ${_MIG_HDRS_} ${MIGINCLUDES}
62*e3723e1fSApple OSS Distributions
63*e3723e1fSApple OSS DistributionsEXPORT_MI_DIR = device
64*e3723e1fSApple OSS Distributions
65*e3723e1fSApple OSS Distributions#
66*e3723e1fSApple OSS Distributions# Build path
67*e3723e1fSApple OSS Distributions#
68*e3723e1fSApple OSS DistributionsINCFLAGS_MAKEFILE= -I..
69*e3723e1fSApple OSS Distributions
70*e3723e1fSApple OSS DistributionsDEVICE_FILES    = device_server.h device_server.c
71*e3723e1fSApple OSS Distributions
72*e3723e1fSApple OSS DistributionsCOMP_FILES	= ${DEVICE_FILES}
73*e3723e1fSApple OSS Distributions
74*e3723e1fSApple OSS Distributionsdo_build_all:: $(COMP_FILES)
75*e3723e1fSApple OSS Distributions
76*e3723e1fSApple OSS Distributions${DEVICE_FILES}: device.defs
77*e3723e1fSApple OSS Distributions	@$(LOG_MIG) "$@"
78*e3723e1fSApple OSS Distributions	$(_v)${MIG} ${MIGFLAGS} ${MIGKSFLAGS}	\
79*e3723e1fSApple OSS Distributions	-header /dev/null			\
80*e3723e1fSApple OSS Distributions	-user /dev/null				\
81*e3723e1fSApple OSS Distributions	-sheader device_server.h		\
82*e3723e1fSApple OSS Distributions	-server device_server.c			\
83*e3723e1fSApple OSS Distributions	$<
84*e3723e1fSApple OSS Distributions
85*e3723e1fSApple OSS Distributionsinclude $(MakeInc_rule)
86*e3723e1fSApple OSS Distributionsinclude $(MakeInc_dir)
87