]>
Commit | Line | Data |
---|---|---|
d7e50217 A |
1 | export MakeInc_cmd=${SRCROOT}/makedefs/MakeInc.cmd |
2 | export MakeInc_def=${SRCROOT}/makedefs/MakeInc.def | |
3 | export MakeInc_rule=${SRCROOT}/makedefs/MakeInc.rule | |
4 | export MakeInc_dir=${SRCROOT}/makedefs/MakeInc.dir | |
5 | ||
d7e50217 A |
6 | include $(MakeInc_cmd) |
7 | include $(MakeInc_def) | |
8 | ||
39236c6e A |
9 | MD_SUPPORTED_KPI_FILENAME = SupportedKPIs-${CURRENT_ARCH_CONFIG_LC}.txt |
10 | MI_SUPPORTED_KPI_FILENAME = SupportedKPIs-all-archs.txt | |
d7e50217 | 11 | |
39236c6e | 12 | INSTALL_KEXT_DIR = $(DSTROOT)$(INSTALL_EXTENSIONS_DIR) |
d7e50217 | 13 | |
39236c6e | 14 | KEXT_PLIST_LIST = \ |
55e303ae | 15 | System.kext/Info.plist \ |
55e303ae A |
16 | System.kext/PlugIns/AppleNMI.kext/Info.plist \ |
17 | System.kext/PlugIns/ApplePlatformFamily.kext/Info.plist \ | |
18 | System.kext/PlugIns/IONVRAMFamily.kext/Info.plist \ | |
39236c6e | 19 | System.kext/PlugIns/IOSystemManagement.kext/Info.plist |
6d2010ae | 20 | |
55e303ae | 21 | SYMBOL_COMPONENT_LIST = \ |
55e303ae A |
22 | BSDKernel \ |
23 | IOKit \ | |
6d2010ae A |
24 | Libkern \ |
25 | Mach \ | |
26 | MACFramework \ | |
27 | Unsupported \ | |
28 | Private | |
2d21ac55 | 29 | |
fe8ab488 A |
30 | # In general you want it to be possible to have a CPU sub-type's symbol exports |
31 | # alias to the parent type's exports. This is a special-case way to handle it | |
32 | # for now: | |
33 | ifeq ($(CURRENT_ARCH_CONFIG_LC),x86_64h) | |
34 | EXPORT_SOURCE_ARCH_CONFIG_LC = x86_64 | |
35 | else | |
36 | EXPORT_SOURCE_ARCH_CONFIG_LC = $(CURRENT_ARCH_CONFIG_LC) | |
37 | endif | |
38 | ||
39236c6e A |
39 | KEXT_MACHO_LIST = $(foreach symbolset,$(filter-out Dummy,$(SYMBOL_COMPONENT_LIST)),System.kext/PlugIns/$(symbolset).kext/$(symbolset)) |
40 | KEXT_PLIST_LIST += $(foreach symbolset,$(filter-out Dummy,$(SYMBOL_COMPONENT_LIST)),System.kext/PlugIns/$(symbolset).kext/Info.plist) | |
41 | ||
42 | SYMROOT_INSTALL_KEXT_MACHO_FILES = $(addprefix $(SYMROOT)/,$(KEXT_MACHO_LIST)) | |
43 | DSTROOT_INSTALL_KEXT_MACHO_FILES = $(addprefix $(INSTALL_KEXT_DIR)/,$(KEXT_MACHO_LIST)) | |
44 | ||
45 | SYMROOT_INSTALL_KEXT_PLISTS = $(addprefix $(SYMROOT)/,$(KEXT_PLIST_LIST)) | |
46 | DSTROOT_INSTALL_KEXT_PLISTS = $(addprefix $(INSTALL_KEXT_DIR)/,$(KEXT_PLIST_LIST)) | |
55e303ae | 47 | |
fe8ab488 | 48 | EXPORTS_FILES = $(foreach symbolset,$(SYMBOL_COMPONENT_LIST),$(symbolset).exports $(symbolset).$(EXPORT_SOURCE_ARCH_CONFIG_LC).exports) Unused.exports |
6d2010ae | 49 | |
39236c6e | 50 | SYMBOL_SET_BUILD = $(foreach symbolset, $(SYMBOL_COMPONENT_LIST), $(OBJPATH)/$(symbolset).symbolset) |
55e303ae | 51 | |
fe8ab488 | 52 | $(OBJPATH)/allsymbols: $(OBJPATH)/$(KERNEL_FILE_NAME) |
b0d623f7 | 53 | $(_v)$(NM) -gj $< > $@ |
55e303ae | 54 | |
fe8ab488 | 55 | $(SYMBOL_SET_BUILD): $(OBJPATH)/%.symbolset : %.exports %.$(EXPORT_SOURCE_ARCH_CONFIG_LC).exports $(OBJPATH)/allsymbols $(KEXT_CREATE_SYMBOL_SET) |
39037602 | 56 | @echo "$(ColorH)SYMBOLSET$(Color0) $(ColorF)$*$(Color0) \"($(ColorLF)$(CURRENT_ARCH_CONFIG_LC)$(Color0))\"" |
39236c6e A |
57 | $(_v)$(KEXT_CREATE_SYMBOL_SET) \ |
58 | $(ARCH_FLAGS_$(CURRENT_ARCH_CONFIG)) \ | |
59 | -import $(OBJPATH)/allsymbols \ | |
60 | -export $(SOURCE)/$*.exports \ | |
fe8ab488 | 61 | -export $(SOURCE)/$*.$(EXPORT_SOURCE_ARCH_CONFIG_LC).exports \ |
39236c6e A |
62 | -output $@ $(_vstdout) |
63 | ||
64 | .PHONY: check_all_exports | |
65 | ||
fe8ab488 | 66 | check_all_exports: $(OBJPATH)/allsymbols $(KEXT_CREATE_SYMBOL_SET) |
39236c6e A |
67 | $(_v)$(KEXT_CREATE_SYMBOL_SET) \ |
68 | $(ARCH_FLAGS_$(CURRENT_ARCH_CONFIG)) \ | |
69 | -import $(OBJPATH)/allsymbols \ | |
70 | $(foreach symbolset,$(filter-out Private,$(SYMBOL_COMPONENT_LIST)), \ | |
71 | -export $(SOURCE)/$(symbolset).exports \ | |
fe8ab488 | 72 | -export $(SOURCE)/$(symbolset).$(EXPORT_SOURCE_ARCH_CONFIG_LC).exports) \ |
39236c6e A |
73 | -output /dev/null $(_vstdout) |
74 | $(_v)$(KEXT_CREATE_SYMBOL_SET) \ | |
75 | $(ARCH_FLAGS_$(CURRENT_ARCH_CONFIG)) \ | |
76 | -import $(OBJPATH)/allsymbols \ | |
77 | $(foreach symbolset,$(filter-out Unsupported,$(SYMBOL_COMPONENT_LIST)), \ | |
78 | -export $(SOURCE)/$(symbolset).exports \ | |
fe8ab488 | 79 | -export $(SOURCE)/$(symbolset).$(EXPORT_SOURCE_ARCH_CONFIG_LC).exports) \ |
39236c6e A |
80 | -output /dev/null $(_vstdout) |
81 | ||
82 | $(OBJPATH)/$(MD_SUPPORTED_KPI_FILENAME): $(EXPORTS_FILES) | |
39037602 | 83 | @echo "$(ColorH)SUPPORTED_KPI$(Color0) \"($(ColorLF)$(CURRENT_ARCH_CONFIG_LC)$(Color0))\"" |
fe8ab488 | 84 | $(_v)$(SRCROOT)/config/list_supported.sh $(SOURCE) $(EXPORT_SOURCE_ARCH_CONFIG_LC) $@ |
39236c6e A |
85 | |
86 | $(OBJPATH)/$(MI_SUPPORTED_KPI_FILENAME): $(EXPORTS_FILES) | |
39037602 | 87 | @echo "$(ColorH)SUPPORTED_KPI$(Color0) \"($(ColorLF)all$(Color0))\"" |
39236c6e A |
88 | $(_v)$(SRCROOT)/config/list_supported.sh $(SOURCE) all $@ |
89 | ||
90 | build_symbol_sets: check_all_exports $(SYMBOL_SET_BUILD) $(OBJPATH)/allsymbols \ | |
91 | $(OBJPATH)/$(MD_SUPPORTED_KPI_FILENAME) \ | |
92 | $(OBJPATH)/$(MI_SUPPORTED_KPI_FILENAME) | |
93 | ||
94 | do_config_all:: build_symbol_sets | |
95 | ||
96 | # There's no simple static pattern rule for these paths, so hardcode dependencies in the command list | |
97 | $(SYMROOT_INSTALL_KEXT_MACHO_FILES): ALWAYS | |
98 | $(_v)$(MKDIR) $(dir $@) | |
99 | $(_v)if [ $(OBJROOT)/.symbolset.timestamp -nt $@ ]; then \ | |
100 | echo INSTALLSYM symbolset $(notdir $@) "($(CURRENT_ARCH_CONFIG_LC))"; \ | |
101 | $(INSTALL) $(EXEC_INSTALL_FLAGS) $(OBJPATH)/$(@F).symbolset $@; \ | |
102 | cmdstatus=$$?; \ | |
103 | else \ | |
104 | echo INSTALLSYM symbolset $(notdir $@) "($(CURRENT_ARCH_CONFIG_LC))"; \ | |
105 | $(LIPO) -create $@ $(OBJPATH)/$(@F).symbolset -output $@ 2>/dev/null || true; \ | |
106 | cmdstatus=$$?; \ | |
107 | fi; \ | |
108 | exit $$cmdstatus | |
109 | ||
39236c6e A |
110 | $(SYMROOT_INSTALL_KEXT_PLISTS): $(SYMROOT)/% : $(SOURCE)/% |
111 | $(_v)$(MKDIR) $(dir $@) | |
39037602 | 112 | @echo "$(ColorH)INSTALLSYM$(ColorH) $(ColorLF)kextplist$(Color0) $(ColorF)$*$(Color0)" |
39236c6e A |
113 | $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS) $< $@ |
114 | $(_v)$(NEWVERS) $@ $(_vstdout) | |
115 | ||
39236c6e A |
116 | $(DSTROOT_INSTALL_KEXT_PLISTS): $(INSTALL_KEXT_DIR)/% : $(SYMROOT)/% |
117 | $(_v)$(MKDIR) $(dir $@) | |
39037602 | 118 | @echo "$(ColorH)INSTALL$(ColorH) $(ColorLF)kextplist$(Color0) $(ColorF)$*$(Color0)" |
39236c6e A |
119 | $(_v)$(INSTALL) $(DATA_INSTALL_FLAGS) $< $@ |
120 | ||
fe8ab488 | 121 | $(DSTROOT_INSTALL_KEXT_MACHO_FILES): $(INSTALL_KEXT_DIR)/% : $(SYMROOT)/% ALWAYS |
39236c6e | 122 | $(_v)$(MKDIR) $(dir $@) |
39037602 | 123 | @echo "$(ColorF)INSTALL$(Color0) $(ColorF)$(notdir $@)$(Color0) \"($(ColorLF)$(CURRENT_ARCH_CONFIG_LC)$(Color0))\"" |
39236c6e A |
124 | $(_v)$(INSTALL) $(EXEC_INSTALL_FLAGS) $< $@ |
125 | ||
126 | $(DSTROOT)/$(KRESDIR)/$(MD_SUPPORTED_KPI_FILENAME) $(DSTROOT)/$(KRESDIR)/$(MI_SUPPORTED_KPI_FILENAME): $(DSTROOT)/$(KRESDIR)/% : $(OBJPATH)/% | |
127 | $(_v)$(MKDIR) $(dir $@) | |
39037602 | 128 | @echo "$(ColorH)INSTALL$(Color0) $(ColorF)$*$(Color0)" |
39236c6e A |
129 | $(_v)$(INSTALL) $(INSTALL_FLAGS) $< $@ |
130 | ||
fe8ab488 A |
131 | do_config_install:: $(SYMROOT_INSTALL_KEXT_MACHO_FILES) \ |
132 | $(SYMROOT_INSTALL_KEXT_PLISTS) \ | |
133 | $(DSTROOT_INSTALL_KEXT_MACHO_FILES) \ | |
134 | $(DSTROOT_INSTALL_KEXT_PLISTS) \ | |
135 | $(DSTROOT)/$(KRESDIR)/$(MD_SUPPORTED_KPI_FILENAME) \ | |
136 | $(DSTROOT)/$(KRESDIR)/$(MI_SUPPORTED_KPI_FILENAME) | |
39236c6e | 137 | |
fe8ab488 | 138 | $(OBJPATH)/all-kpi.exp: $(EXPORTS_FILES) |
39236c6e A |
139 | $(_v)$(SOURCE)/generate_linker_exports.sh $@ $+ |
140 | ||
fe8ab488 | 141 | do_build_all:: $(OBJPATH)/all-kpi.exp |
b7266188 | 142 | |
d7e50217 A |
143 | include $(MakeInc_rule) |
144 | include $(MakeInc_dir) |