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 2009 Sun Microsystems, Inc. All rights reserved.
24 # Use is subject to license terms.
25 #
26
27 # This Makefile defines the build rules for the directory uts/i86pc
28 # and its children. These are the source files which are i86pc
29 # "implementation architecture" dependent.
30 #
31 # The following two-level ordering must be maintained in this file.
32 # Lines are sorted first in order of decreasing specificity based on
33 # the first directory component. That is, i86pc rules come before
34 # intel rules come before common rules.
35 #
36 # Lines whose initial directory components are equal are sorted
37 # alphabetically by the remaining components.
38
39 #
40 # Section 1a: C object build rules
41 #
42 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/conf/%.c
43 $(COMPILE.c) -o $@ $<
44 $(CTFCONVERT_O)
45
46 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/cpu/amd_opteron/%.c
47 $(COMPILE.c) -o $@ $<
48 $(CTFCONVERT_O)
49
50 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/cpu/authenticamd/%.c
51 $(COMPILE.c) -o $@ $<
52 $(CTFCONVERT_O)
53
54 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/cpu/generic_cpu/%.c
55 $(COMPILE.c) -o $@ $<
56 $(CTFCONVERT_O)
57
58 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/cpu/genuineintel/%.c
59 $(COMPILE.c) -o $@ $<
60 $(CTFCONVERT_O)
61
62 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/%.c
63 $(COMPILE.c) -o $@ $<
64 $(CTFCONVERT_O)
65
66 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/acpi_drv/%.c
67 $(COMPILE.c) -o $@ $<
68 $(CTFCONVERT_O)
69
70 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/fipe/%.c
71 $(COMPILE.c) -o $@ $<
72 $(CTFCONVERT_O)
73
74 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/acpi/acpidev/%.c
75 $(COMPILE.c) -o $@ $<
76 $(CTFCONVERT_O)
77
78 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/acpi/acpinex/%.c
79 $(COMPILE.c) -o $@ $<
80 $(CTFCONVERT_O)
81
82 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/ioat/%.c
83 $(COMPILE.c) -o $@ $<
84 $(CTFCONVERT_O)
85
86 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/pci/%.c
87 $(COMPILE.c) -o $@ $<
88 $(CTFCONVERT_O)
89
90 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/pciex/%.c
91 $(COMPILE.c) -o $@ $<
92 $(CTFCONVERT_O)
93
94 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/pcplusmp/%.c
95 $(COMPILE.c) -o $@ $<
96 $(CTFCONVERT_O)
97
98 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/pcplusmp/%.s
99 $(COMPILE.s) -o $@ $<
100
101 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/ppm/%.c
102 $(COMPILE.c) -o $@ $<
103 $(CTFCONVERT_O)
104
105 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/ppm/%.s
106 $(COMPILE.s) -o $@ $<
107
108 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/psm/%.c
109 $(COMPILE.c) -o $@ $<
110 $(CTFCONVERT_O)
111
112 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/psm/%.s
113 $(COMPILE.s) -o $@ $<
114
115 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/tzmon/%.c
116 $(COMPILE.c) -o $@ $<
117 $(CTFCONVERT_O)
118
119 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/ml/%.s
120 $(COMPILE.s) -o $@ $<
121
122 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/os/%.c
123 $(COMPILE.c) -o $@ $<
124 $(CTFCONVERT_O)
125
126 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/os/cpupm/%.c
127 $(COMPILE.c) -o $@ $<
128 $(CTFCONVERT_O)
129
130 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/boot/%.c
131 $(COMPILE.c) -o $@ $<
132 $(CTFCONVERT_O)
133
134 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/vm/%.c
135 $(COMPILE.c) -o $@ $<
136 $(CTFCONVERT_O)
137
138 $(OBJS_DIR)/%.o: $(UTSBASE)/common/io/%.c
139 $(COMPILE.c) -o $@ $<
140 $(CTFCONVERT_O)
141
142 $(OBJS_DIR)/%.o: $(UTSBASE)/common/io/ppm/%.c
143 $(COMPILE.c) -o $@ $<
144 $(CTFCONVERT_O)
145
146 $(OBJS_DIR)/%.o: $(UTSBASE)/common/os/%.c
147 $(COMPILE.c) -o $@ $<
148 $(CTFCONVERT_O)
149
150 $(OBJS_DIR)/%.o: $(SRC)/common/dis/i386/%.c
151 $(COMPILE.c) -o $@ $<
152 $(CTFCONVERT_O)
153
154 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/gfx_private/%.c
155 $(COMPILE.c) -o $@ $<
156 $(CTFCONVERT_O)
157
158 $(OBJS_DIR)/%.o: $(UTSBASE)/i86pc/io/xsvc/%.c
159 $(COMPILE.c) -o $@ $<
160 $(CTFCONVERT_O)
161
162 #
163 # dboot stuff is always 32 bit, linked to run with phys_addr == virt_addr
164 #
165 DBOOT_OBJS_DIR = dboot/$(OBJS_DIR)
166 DBOOT_MACH_32 = -D_BOOT_TARGET_i386
167 DBOOT_MACH_64 = -D_BOOT_TARGET_amd64
168 DBOOT_DEFS = -D_BOOT $(DBOOT_MACH_$(CLASS))
169 DBOOT_DEFS += -D_MACHDEP -D_KMEMUSER -U_KERNEL -D_I32LPx
170
171 DBOOT_CC_INCL = -I$(SRC)/common $(INCLUDE_PATH)
172 DBOOT_AS_INCL = $(AS_INC_PATH)
173
174 DBOOT_AS = $(ONBLD_TOOLS)/bin/$(MACH)/aw
175
176 DBOOT_LINTS_DIR = $(DBOOT_OBJS_DIR)
177 DBOOT_LINTFLAGS_i86pc = $(LINTFLAGS_i386_32) $(LINTTAGS_i386_32)
178
179 DBOOT_LINTFLAGS = $(DBOOT_LINTFLAGS_$(PLATFORM)) $(LINTTAGS) $(C99LMODE) \
180 $(CPPFLAGS) $(DBOOT_DEFS)
181 DBOOT_LOCAL_LINTFLAGS = -c -dirout=$(DBOOT_LINTS_DIR) -I$(SRC)/common \
182 $(DBOOT_LINTFLAGS) $(DBOOT_LINTTAGS)
183
184 $(DBOOT_OBJS_DIR)/%.o: $(UTSBASE)/i86pc/boot/%.c
185 $(i386_CC) $(CERRWARN) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
186
187 $(DBOOT_OBJS_DIR)/%.o: $(UTSBASE)/i86pc/dboot/%.c
188 $(i386_CC) $(CERRWARN) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
189
190 $(DBOOT_OBJS_DIR)/%.o: $(UTSBASE)/intel/ia32/%.s
191 $(DBOOT_AS) -P -D_ASM $(DBOOT_DEFS) $(DBOOT_AS_INCL) -o $@ $<
192
193 $(DBOOT_OBJS_DIR)/%.o: $(COMMONBASE)/util/%.c
194 $(i386_CC) $(CERRWARN) -O $(DBOOT_DEFS) $(DBOOT_CC_INCL) -c -o $@ $<
195
196 $(DBOOT_OBJS_DIR)/%.o: $(COMMONBASE)/util/i386/%.s
197 $(DBOOT_AS) -P -D_ASM $(DBOOT_DEFS) $(DBOOT_AS_INCL) -o $@ $<
198
199 $(DBOOT_OBJS_DIR)/%.o: $(UTSBASE)/i86pc/dboot/%.s
200 $(DBOOT_AS) -P -D_ASM $(DBOOT_DEFS) $(DBOOT_AS_INCL) -o $@ $<
201
202 #
203 # Stuff to build bios_call.o for the kernel.
204 #
205 MAPFILE_BIOS = $(UTSBASE)/i86pc/conf/Mapfile.bios
206 $(OBJS_DIR)/bios_call.o: $(UTSBASE)/i86pc/ml/bios_call_src.s
207 $(COMPILE.s) -o $(OBJS_DIR)/bios_call_src.o \
208 $(UTSBASE)/i86pc/ml/bios_call_src.s
209 $(LD) -dn -M $(MAPFILE_BIOS) \
210 -o $(OBJS_DIR)/bios_call_src $(OBJS_DIR)/bios_call_src.o
211 @echo " .data" > $(OBJS_DIR)/bios_call.s
212 @echo " .globl bios_image" >> $(OBJS_DIR)/bios_call.s
213 @echo "bios_image:" >> $(OBJS_DIR)/bios_call.s
214 $(ELFEXTRACT) $(OBJS_DIR)/bios_call_src >> $(OBJS_DIR)/bios_call.s
215 @echo " .align 4" >> $(OBJS_DIR)/bios_call.s
216 @echo " .globl bios_size" >> $(OBJS_DIR)/bios_call.s
217 @echo "bios_size:" >> $(OBJS_DIR)/bios_call.s
218 @echo " .long . - bios_image" >> $(OBJS_DIR)/bios_call.s
219 $(COMPILE.s) -o $@ $(OBJS_DIR)/bios_call.s
220
221 #
222 # Stuff to build fb_swtch.o for the kernel.
223 #
224 MAPFILE_FBSWTCH = $(UTSBASE)/i86pc/conf/Mapfile.fb_swtch
225 $(OBJS_DIR)/fb_swtch.o: $(UTSBASE)/i86pc/ml/fb_swtch_src.s
226 $(COMPILE.s) -o $(OBJS_DIR)/fb_swtch_src.o \
227 $(UTSBASE)/i86pc/ml/fb_swtch_src.s
228 $(LD) -dn -M $(MAPFILE_FBSWTCH) \
229 -o $(OBJS_DIR)/fb_swtch_src $(OBJS_DIR)/fb_swtch_src.o
230 @echo " .data" > $(OBJS_DIR)/fb_swtch.s
231 @echo " .globl fb_swtch_image" >> $(OBJS_DIR)/fb_swtch.s
232 @echo "fb_swtch_image:" >> $(OBJS_DIR)/fb_swtch.s
233 $(ELFEXTRACT) $(OBJS_DIR)/fb_swtch_src >> $(OBJS_DIR)/fb_swtch.s
234 @echo " .align 4" >> $(OBJS_DIR)/fb_swtch.s
235 @echo " .globl fb_swtch_size" >> $(OBJS_DIR)/fb_swtch.s
236 @echo "fb_swtch_size:" >> $(OBJS_DIR)/fb_swtch.s
237 @echo " .long . - fb_swtch_image" >> $(OBJS_DIR)/fb_swtch.s
238 $(COMPILE.s) -o $@ $(OBJS_DIR)/fb_swtch.s
239
240 # ridiculous contortions ---
241 ATOMIC_SUBDIR_32 = i386
242 ATOMIC_SUBDIR_64 = amd64
243 ATOMIC_SUBDIR = $(ATOMIC_SUBDIR_$(CLASS))
244
245 $(OBJS_DIR)/%.o: $(SRC)/common/atomic/$(ATOMIC_SUBDIR)/%.s
246 $(COMPILE.s) -o $@ $<
247
248 #
249 # dtrace stubs
250 #
251
252 $(OBJS_DIR)/dtracestubs.s: $(UNIX_O) $(LIBS)
253 $(NM) -u $(UNIX_O) $(LIBS) | $(GREP) __dtrace_probe_ | $(SORT) | \
254 $(UNIQ) | $(NAWK) '{ \
255 printf("\t.globl %s\n\t.type %s,@function\n%s:\n", \
256 $$1, $$1, $$1); }' > $(OBJS_DIR)/dtracestubs.s
257
258 $(DTRACESTUBS): $(DTRACESTUBS_O)
259 $(BUILD.SO) $(DTRACESTUBS_O)
260
261 #
262 # Section 1b: Lint `object' build rules
263 #
264 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/conf/%.c
265 @($(LHEAD) $(LINT.c) $< $(LTAIL))
266
267 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/cpu/amd_opteron/%.c
268 @($(LHEAD) $(LINT.c) $< $(LTAIL))
269
270 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/cpu/authenticamd/%.c
271 @($(LHEAD) $(LINT.c) $< $(LTAIL))
272
273 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/cpu/generic_cpu/%.c
274 @($(LHEAD) $(LINT.c) $< $(LTAIL))
275
276 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/cpu/genuineintel/%.c
277 @($(LHEAD) $(LINT.c) $< $(LTAIL))
278
279 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/io/%.c
280 @($(LHEAD) $(LINT.c) $< $(LTAIL))
281
282 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/io/acpi_drv/%.c
283 @($(LHEAD) $(LINT.c) $< $(LTAIL))
284
285 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/io/fipe/%.c
286 @($(LHEAD) $(LINT.c) $< $(LTAIL))
287
288 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/io/acpi/acpidev/%.c
289 @($(LHEAD) $(LINT.c) $< $(LTAIL))
290
291 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/io/acpi/acpinex/%.c
292 @($(LHEAD) $(LINT.c) $< $(LTAIL))
293
294 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/io/ioat/%.c
295 @($(LHEAD) $(LINT.c) $< $(LTAIL))
296
297 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/io/pci/%.c
298 @($(LHEAD) $(LINT.c) $< $(LTAIL))
299
300 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/io/pciex/%.c
301 @($(LHEAD) $(LINT.c) $< $(LTAIL))
302
303 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/io/pcplusmp/%.c
304 @($(LHEAD) $(LINT.c) $< $(LTAIL))
305
306 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/io/pcplusmp/%.s
307 @($(LHEAD) $(LINT.s) $< $(LTAIL))
308
309 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/io/ppm/%.c
310 @($(LHEAD) $(LINT.c) $< $(LTAIL))
311
312 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/io/ppm/%.s
313 @($(LHEAD) $(LINT.s) $< $(LTAIL))
314
315 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/io/psm/%.c
316 @($(LHEAD) $(LINT.c) $< $(LTAIL))
317
318 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/io/psm/%.s
319 @($(LHEAD) $(LINT.s) $< $(LTAIL))
320
321 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/io/tzmon/%.c
322 @($(LHEAD) $(LINT.c) $< $(LTAIL))
323
324 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/ml/%.s
325 @($(LHEAD) $(LINT.s) $< $(LTAIL))
326
327 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/os/%.c
328 @($(LHEAD) $(LINT.c) $< $(LTAIL))
329
330 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/os/cpupm/%.c
331 @($(LHEAD) $(LINT.c) $< $(LTAIL))
332
333 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/boot/%.c
334 @($(LHEAD) $(LINT.c) $< $(LTAIL))
335
336 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/vm/%.c
337 @($(LHEAD) $(LINT.c) $< $(LTAIL))
338
339 $(LINTS_DIR)/%.ln: $(UTSBASE)/common/io/%.c
340 @($(LHEAD) $(LINT.c) $< $(LTAIL))
341
342 $(LINTS_DIR)/%.ln: $(UTSBASE)/common/io/ppm/%.c
343 @($(LHEAD) $(LINT.c) $< $(LTAIL))
344
345 $(LINTS_DIR)/%.ln: $(UTSBASE)/common/os/%.c
346 @($(LHEAD) $(LINT.c) $< $(LTAIL))
347
348 $(LINTS_DIR)/%.ln: $(SRC)/common/dis/i386/%.c
349 @($(LHEAD) $(LINT.c) $< $(LTAIL))
350
351 $(LINTS_DIR)/%.ln: $(SRC)/common/atomic/%.c
352 @($(LHEAD) $(LINT.c) $< $(LTAIL))
353
354 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/io/gfx_private/%.c
355 @($(LHEAD) $(LINT.c) $< $(LTAIL))
356
357 $(LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/io/xsvc/%.c
358 @($(LHEAD) $(LINT.c) $< $(LTAIL))
359
360 #
361 # bios call has a funky name change while building
362 #
363 $(LINTS_DIR)/bios_call.ln: $(UTSBASE)/i86pc/ml/bios_call_src.s
364 @($(LHEAD) $(LINT.s) $(UTSBASE)/i86pc/ml/bios_call_src.s $(LTAIL))
365 @mv $(LINTS_DIR)/bios_call_src.ln $(LINTS_DIR)/bios_call.ln
366
367 #
368 # So does fb_swtch
369 #
370 $(LINTS_DIR)/fb_swtch.ln: $(UTSBASE)/i86pc/ml/fb_swtch_src.s
371 @($(LHEAD) $(LINT.s) $(UTSBASE)/i86pc/ml/fb_swtch_src.s $(LTAIL))
372 @mv $(LINTS_DIR)/fb_swtch_src.ln $(LINTS_DIR)/fb_swtch.ln
373
374 #
375 # dboot always compiles in 32-bit mode, so force lint to be 32-bit mode too.
376 #
377 $(DBOOT_LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/dboot/%.c
378 @($(LHEAD) $(DBOOT_LINT) $(DBOOT_LOCAL_LINTFLAGS) $< $(LTAIL))
379
380 $(DBOOT_LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/dboot/%.s
381 @($(LHEAD) $(DBOOT_LINT) $(DBOOT_LOCAL_LINTFLAGS) $< $(LTAIL))
382
383 $(DBOOT_LINTS_DIR)/%.ln: $(UTSBASE)/i86pc/boot/%.c
384 @($(LHEAD) $(DBOOT_LINT) $(DBOOT_LOCAL_LINTFLAGS) $< $(LTAIL))
385
386 $(DBOOT_LINTS_DIR)/%.ln: $(COMMONBASE)/util/%.c
387 @($(LHEAD) $(DBOOT_LINT) $(DBOOT_LOCAL_LINTFLAGS) $< $(LTAIL))
388
389 $(DBOOT_LINTS_DIR)/%.ln: $(COMMONBASE)/util/i386/%.s
390 @($(LHEAD) $(DBOOT_LINT) $(DBOOT_LOCAL_LINTFLAGS) $< $(LTAIL))