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