1 #
2 # CDDL HEADER START
3 #
4 # The contents of this file are subject to the terms of the
5 # Common Development and Distribution License (the "License").
6 # You may not use this file except in compliance with the License.
7 #
8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 # or http://www.opensolaris.org/os/licensing.
10 # See the License for the specific language governing permissions
11 # and limitations under the License.
12 #
13 # When distributing Covered Code, include this CDDL HEADER in each
14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 # If applicable, add the following below this CDDL HEADER, with the
16 # fields enclosed by brackets "[]" replaced with your own identifying
17 # information: Portions Copyright [yyyy] [name of copyright owner]
18 #
19 # CDDL HEADER END
20 #
21
22 #
23 # Copyright (c) 1992, 2010, Oracle and/or its affiliates. All rights reserved.
24 # Copyright 2015 Igor Kozhukhov <ikozhukhov@gmail.com>
25 # Copyright 2019 OmniOS Community Edition (OmniOSce) Association.
26 # Copyright (c) 2017 Joyent, Inc.
27 #
28
29 # This Makefile defines the build rules for the directory uts/i86pc
30 # and its children. These are the source files which are i86pc
31 # "implementation architecture" dependent.
32 #
33 # The following two-level ordering must be maintained in this file.
34 # Lines are sorted first in order of decreasing specificity based on
35 # the first directory component. That is, i86pc rules come before
36 # intel rules come before common rules.
37 #
38 # Lines whose initial directory components are equal are sorted
39 # alphabetically by the remaining components.
40
41 #
42 # Section 1a: C object build rules
43 #
44 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/conf/%.c
45 $(COMPILE.c) -o $@ $<
46 $(CTFCONVERT_O)
47
48 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/cpu/amd_opteron/%.c
49 $(COMPILE.c) -o $@ $<
50 $(CTFCONVERT_O)
51
52 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/cpu/authenticamd/%.c
53 $(COMPILE.c) -o $@ $<
54 $(CTFCONVERT_O)
55
56 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/cpu/generic_cpu/%.c
57 $(COMPILE.c) -o $@ $<
58 $(CTFCONVERT_O)
59
60 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/cpu/genuineintel/%.c
61 $(COMPILE.c) -o $@ $<
62 $(CTFCONVERT_O)
63
64 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/%.c
65 $(COMPILE.c) -o $@ $<
66 $(CTFCONVERT_O)
67
68 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/acpi_drv/%.c
69 $(COMPILE.c) -o $@ $<
70 $(CTFCONVERT_O)
71
72 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/fipe/%.c
73 $(COMPILE.c) -o $@ $<
74 $(CTFCONVERT_O)
75
76 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/acpi/acpidev/%.c
77 $(COMPILE.c) -o $@ $<
78 $(CTFCONVERT_O)
79
80 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/acpi/acpinex/%.c
81 $(COMPILE.c) -o $@ $<
82 $(CTFCONVERT_O)
83
84 SBD_IOCTL = $(UTSBASE)/i86pc/sys/sbd_ioctl.h
85 DRMACH_IO = $(UTSBASE)/i86pc/io/acpi/drmach_acpi
86 DRMACH_GENERR = $(DRMACH_IO)/sbdgenerr
87 DR_IO = $(UTSBASE)/i86pc/io/dr
88 DR_GENERR = $(DR_IO)/sbdgenerr
89
90 $(DRMACH_GENERR): $(DR_IO)/sbdgenerr.pl
91 $(RM) $@
92 $(CAT) $(DR_IO)/sbdgenerr.pl > $@
93 $(CHMOD) +x $@
94
95 $(DRMACH_IO)/drmach_err.c: $(DRMACH_GENERR) $(SBD_IOCTL)
96 $(RM) $@
97 $(DRMACH_GENERR) EX86 < $(SBD_IOCTL) > $(DRMACH_IO)/drmach_err.c
98
99 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/acpi/drmach_acpi/%.c
100 $(COMPILE.c) -o $@ $<
101 $(CTFCONVERT_O)
102
103 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/amd_iommu/%.c
104 $(COMPILE.c) -o $@ $<
105 $(CTFCONVERT_O)
106
107 $(DR_GENERR): $(DR_IO)/sbdgenerr.pl
108 $(RM) $@
109 $(CAT) $(DR_IO)/sbdgenerr.pl > $@
110 $(CHMOD) +x $@
111
112 $(DR_IO)/dr_err.c: $(DR_GENERR) $(SBD_IOCTL)
113 $(RM) $@
114 $(DR_GENERR) ESBD < $(SBD_IOCTL) > $(DR_IO)/dr_err.c
115
116 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/dr/%.c
117 $(COMPILE.c) -o $@ $<
118 $(CTFCONVERT_O)
119
120 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/ioat/%.c
121 $(COMPILE.c) -o $@ $<
122 $(CTFCONVERT_O)
123
124 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/pci/%.c
125 $(COMPILE.c) -o $@ $<
126 $(CTFCONVERT_O)
127
128 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/pciex/%.c
129 $(COMPILE.c) -o $@ $<
130 $(CTFCONVERT_O)
131
132 $(OBJS_DIR)/%.o: $(UTSBASE)/intel/io/pciex/hotplug/%.c
133 $(COMPILE.c) -o $@ $<
134 $(CTFCONVERT_O)
135
136 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/pcplusmp/%.c
137 $(COMPILE.c) -o $@ $<
138 $(CTFCONVERT_O)
139
140 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/pcplusmp/%.s
141 $(COMPILE.s) -o $@ $<
142
143 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/apix/%.c
144 $(COMPILE.c) -o $@ $<
145 $(CTFCONVERT_O)
146
147 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/ppm/%.c
148 $(COMPILE.c) -o $@ $<
149 $(CTFCONVERT_O)
150
151 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/ppm/%.s
152 $(COMPILE.s) -o $@ $<
153
154 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/psm/%.c
155 $(COMPILE.c) -o $@ $<
156 $(CTFCONVERT_O)
157
158 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/psm/%.s
159 $(COMPILE.s) -o $@ $<
160
161 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/tzmon/%.c
162 $(COMPILE.c) -o $@ $<
163 $(CTFCONVERT_O)
164
165 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/ml/%.s
166 $(COMPILE.s) -o $@ $<
167
168 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/os/%.c
169 $(COMPILE.c) -_gcc=-fno-stack-protector -o $@ $<
170 $(CTFCONVERT_O)
171
172 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/os/cpupm/%.c
173 $(COMPILE.c) -o $@ $<
174 $(CTFCONVERT_O)
175
176 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/boot/%.c
177 $(COMPILE.c) -o $@ $<
178 $(CTFCONVERT_O)
179
180 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/vm/%.c
181 $(COMPILE.c) -o $@ $<
182 $(CTFCONVERT_O)
183
184 $(OBJS_DIR)/%.o: $(UTSBASE)/common/io/%.c
185 $(COMPILE.c) -o $@ $<
186 $(CTFCONVERT_O)
187
188 $(OBJS_DIR)/%.o: $(UTSBASE)/common/io/ppm/%.c
189 $(COMPILE.c) -o $@ $<
190 $(CTFCONVERT_O)
191
192 $(OBJS_DIR)/%.o: $(UTSBASE)/common/io/pciex/%.c
193 $(COMPILE.c) -o $@ $<
194 $(CTFCONVERT_O)
195
196 $(OBJS_DIR)/%.o: $(UTSBASE)/common/os/%.c
197 $(COMPILE.c) -o $@ $<
198 $(CTFCONVERT_O)
199
200 $(OBJS_DIR)/%.o: $(SRC)/common/dis/i386/%.c
201 $(COMPILE.c) -o $@ $<
202 $(CTFCONVERT_O)
203
204 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/gfx_private/%.c
205 $(COMPILE.c) -o $@ $<
206 $(CTFCONVERT_O)
207
208 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/xsvc/%.c
209 $(COMPILE.c) -o $@ $<
210 $(CTFCONVERT_O)
211
212 $(OBJS_DIR)/%.o: $(UTSBASE)/common/xen/os/%.c
213 $(COMPILE.c) -o $@ $<
214 $(CTFCONVERT_O)
215
216 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/dboot/%.c
217 $(COMPILE.c) -o $@ $<
218 $(CTFCONVERT_O)
219
220 #
221 # dboot stuff is always 32 bit, linked to run with phys_addr == virt_addr
222 #
223 DBOOT_OBJS_DIR = dboot/$(OBJS_DIR)
224 DBOOT_MACH_32 = -D_BOOT_TARGET_i386
225 DBOOT_MACH_64 = -D_BOOT_TARGET_amd64
226 DBOOT_DEFS = -D_BOOT $(DBOOT_MACH_$(CLASS))
227 DBOOT_DEFS += -D_MACHDEP -U_KERNEL -D_I32LPx
228 DBOOT_FLAGS = $(CCVERBOSE) $(CSTD) $(CERRWARN) $(CCNOAUTOINLINE)
229
230 DBOOT_CC_INCL = -I$(SRC)/common -I$(SRC)/common/util $(INCLUDE_PATH)
231 DBOOT_AS_INCL = $(AS_INC_PATH)
232
233 DBOOT_AS = $(ONBLD_TOOLS)/bin/$(MACH)/aw
234
235 $(DBOOT_OBJS_DIR)/%.o: $(UTSBASE)/i86pc/boot/%.c
236 $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
237
238 $(DBOOT_OBJS_DIR)/%.o: $(UTSBASE)/i86pc/dboot/%.c
239 $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
240
241 $(DBOOT_OBJS_DIR)/%.o: $(UTSBASE)/intel/ia32/%.s
242 $(DBOOT_AS) -P -D_ASM $(DBOOT_DEFS) $(DBOOT_AS_INCL) -o $@ $<
243
244 $(DBOOT_OBJS_DIR)/%.o: $(SRC)/common/font/%.c
245 $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
246
247 $(DBOOT_OBJS_DIR)/$(FONT).c: $(FONT_DIR)/$(FONT_SRC).bdf
248 $(VTFONTCVT) -f source -o $@ $(FONT_DIR)/$(FONT_SRC).bdf
249
250 $(DBOOT_OBJS_DIR)/%.o: $(DBOOT_OBJS_DIR)/%.c
251 $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
252
253 $(DBOOT_OBJS_DIR)/%.o: $(COMMONBASE)/crypto/sha1/%.c
254 $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
255
256 $(DBOOT_OBJS_DIR)/%.o: $(DBOOT_OBJS_DIR)/%.c
257 $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
258
259 $(DBOOT_OBJS_DIR)/%.o: $(COMMONBASE)/util/%.c
260 $(i386_CC) $(DBOOT_FLAGS) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
261
262 $(DBOOT_OBJS_DIR)/%.o: $(COMMONBASE)/util/i386/%.s
263 $(DBOOT_AS) -P -D_ASM $(DBOOT_DEFS) $(DBOOT_AS_INCL) -o $@ $<
264
265 $(DBOOT_OBJS_DIR)/%.o: $(UTSBASE)/i86pc/dboot/%.s
266 $(DBOOT_AS) -P -D_ASM $(DBOOT_DEFS) $(DBOOT_AS_INCL) -o $@ $<
267
268 #
269 # Stuff to build bios_call.o for the kernel.
270 #
271 MAPFILE_BIOS = $(UTSBASE)/i86pc/conf/Mapfile.bios
272 $(OBJS_DIR)/bios_call.o: $(UTSBASE)/i86pc/ml/bios_call_src.s
273 $(COMPILE.s) -o $(OBJS_DIR)/bios_call_src.o \
274 $(UTSBASE)/i86pc/ml/bios_call_src.s
275 $(LD) -dn -M $(MAPFILE_BIOS) \
276 -o $(OBJS_DIR)/bios_call_src $(OBJS_DIR)/bios_call_src.o
277 @echo " .data" > $(OBJS_DIR)/bios_call.s
278 @echo " .globl bios_image" >> $(OBJS_DIR)/bios_call.s
279 @echo "bios_image:" >> $(OBJS_DIR)/bios_call.s
280 $(ELFEXTRACT) $(OBJS_DIR)/bios_call_src >> $(OBJS_DIR)/bios_call.s
281 @echo " .align 4" >> $(OBJS_DIR)/bios_call.s
282 @echo " .globl bios_size" >> $(OBJS_DIR)/bios_call.s
283 @echo "bios_size:" >> $(OBJS_DIR)/bios_call.s
284 @echo " .long . - bios_image" >> $(OBJS_DIR)/bios_call.s
285 $(COMPILE.s) -o $@ $(OBJS_DIR)/bios_call.s
286
287 #
288 # Stuff to build fb_swtch.o for the kernel.
289 #
290 MAPFILE_FBSWTCH = $(UTSBASE)/i86pc/conf/Mapfile.fb_swtch
291 $(OBJS_DIR)/fb_swtch.o: $(UTSBASE)/i86pc/ml/fb_swtch_src.s
292 $(COMPILE.s) -o $(OBJS_DIR)/fb_swtch_src.o \
293 $(UTSBASE)/i86pc/ml/fb_swtch_src.s
294 $(LD) -dn -M $(MAPFILE_FBSWTCH) \
295 -o $(OBJS_DIR)/fb_swtch_src $(OBJS_DIR)/fb_swtch_src.o
296 @echo " .data" > $(OBJS_DIR)/fb_swtch.s
297 @echo " .globl fb_swtch_image" >> $(OBJS_DIR)/fb_swtch.s
298 @echo "fb_swtch_image:" >> $(OBJS_DIR)/fb_swtch.s
299 $(ELFEXTRACT) $(OBJS_DIR)/fb_swtch_src >> $(OBJS_DIR)/fb_swtch.s
300 @echo " .align 4" >> $(OBJS_DIR)/fb_swtch.s
301 @echo " .globl fb_swtch_size" >> $(OBJS_DIR)/fb_swtch.s
302 @echo "fb_swtch_size:" >> $(OBJS_DIR)/fb_swtch.s
303 @echo " .long . - fb_swtch_image" >> $(OBJS_DIR)/fb_swtch.s
304 $(COMPILE.s) -o $@ $(OBJS_DIR)/fb_swtch.s
305
306 # ridiculous contortions ---
307 ATOMIC_SUBDIR_32 = i386
308 ATOMIC_SUBDIR_64 = amd64
309 ATOMIC_SUBDIR = $(ATOMIC_SUBDIR_$(CLASS))
310
311 $(OBJS_DIR)/%.o: $(SRC)/common/atomic/$(ATOMIC_SUBDIR)/%.s
312 $(COMPILE.s) -o $@ $<
313
314 #
315 # dtrace stubs
316 #
317
318 $(OBJS_DIR)/dtracestubs.s: $(UNIX_O) $(LIBS)
319 $(NM) -u $(UNIX_O) $(LIBS) | \
320 $(EGREP) '(__dtrace_probe_|smap_(disable|enable))' | $(SORT) | \
321 $(UNIQ) | $(AWK) '{ \
322 printf("\t.globl %s\n\t.type %s,@function\n%s:\n", \
323 $$1, $$1, $$1); }' > $(OBJS_DIR)/dtracestubs.s
324
325 $(DTRACESTUBS): $(DTRACESTUBS_O)
326 $(BUILD.SO) $(DTRACESTUBS_O)