xref: /illumos-gate/usr/src/uts/intel/Makefile.intel (revision 43d18f1c320355e93c47399bea0b2e022fe06364)
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, Version 1.0 only
6# (the "License").  You may not use this file except in compliance
7# with the License.
8#
9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10# or http://www.opensolaris.org/os/licensing.
11# See the License for the specific language governing permissions
12# and limitations under the License.
13#
14# When distributing Covered Code, include this CDDL HEADER in each
15# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16# If applicable, add the following below this CDDL HEADER, with the
17# fields enclosed by brackets "[]" replaced with your own identifying
18# information: Portions Copyright [yyyy] [name of copyright owner]
19#
20# CDDL HEADER END
21#
22#
23# Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
24# Use is subject to license terms.
25#
26# ident	"%Z%%M%	%I%	%E% SMI"
27#
28#
29#	This makefile contains the common definitions for all intel
30#	implementation architecture independent modules.
31
32#
33#	Machine type (implementation architecture):
34#
35PLATFORM	 = i86pc
36
37#
38#	Everybody needs to know how to build modstubs.o and to locate unix.o.
39#	Note that unix.o must currently be selected from among the possible
40#	"implementation architectures". Note further, that unix.o is only
41#	used as an optional error check for undefines so (theoretically)
42#	any "implementation architectures" could be used. We choose i86pc
43#	because it is the reference port.
44#
45UNIX_DIR	 = $(UTSBASE)/i86pc/unix
46GENLIB_DIR	 = $(UTSBASE)/intel/genunix
47IPDRV_DIR	 = $(UTSBASE)/intel/ip
48MODSTUBS_DIR	 = $(UNIX_DIR)
49DSF_DIR		 = $(UTSBASE)/$(PLATFORM)/genassym
50LINTS_DIR	 = $(OBJS_DIR)
51LINT_LIB_DIR	 = $(UTSBASE)/intel/lint-libs/$(OBJS_DIR)
52
53UNIX_O		 = $(UNIX_DIR)/$(OBJS_DIR)/unix.o
54GENLIB		 = $(GENLIB_DIR)/$(OBJS_DIR)/libgenunix.so
55MODSTUBS_O	 = $(MODSTUBS_DIR)/$(OBJS_DIR)/modstubs.o
56LINT_LIB	 = $(UTSBASE)/i86pc/lint-libs/$(OBJS_DIR)/llib-lunix.ln
57GEN_LINT_LIB	 = $(UTSBASE)/intel/lint-libs/$(OBJS_DIR)/llib-lgenunix.ln
58
59#
60#	Include the makefiles which define build rule templates, the
61#	collection of files per module, and a few specific flags. Note
62#	that order is significant, just as with an include path. The
63#	first build rule template which matches the files name will be
64#	used. By including these in order from most machine dependent
65#	to most machine independent, we allow a machine dependent file
66#	to be used in preference over a machine independent version
67#	(Such as a machine specific optimization, which preserves the
68#	interfaces.)
69#
70include $(UTSBASE)/intel/Makefile.files
71include $(UTSBASE)/common/Makefile.files
72
73#
74#	Include machine independent rules. Note that this does not imply
75#	that the resulting module from rules in Makefile.uts is	machine
76#	independent. Only that the build rules are machine independent.
77#
78include $(UTSBASE)/Makefile.uts
79
80#
81#	The following must be defined for all implementations:
82#
83MODSTUBS		= $(UTSBASE)/intel/ia32/ml/modstubs.s
84
85#
86#	Define supported builds
87#
88DEF_BUILDS		= $(DEF_BUILDS64) $(DEF_BUILDS32)
89ALL_BUILDS		= $(ALL_BUILDS64) $(ALL_BUILDS32)
90
91#
92#	x86 or amd64 inline templates
93#
94INLINES_32		= $(UTSBASE)/intel/ia32/ml/ia32.il
95INLINES_64		= $(UTSBASE)/intel/amd64/ml/amd64.il
96INLINES			+= $(INLINES_$(CLASS))
97
98#
99#	kernel-specific optimizations; override default in Makefile.master
100#
101
102CFLAGS_XARCH_32		= $(i386_CFLAGS)
103CFLAGS_XARCH_64		= $(amd64_CFLAGS)
104CFLAGS_XARCH		= $(CFLAGS_XARCH_$(CLASS))
105
106COPTFLAG_32		= $(COPTFLAG)
107COPTFLAG_64		= $(COPTFLAG64)
108COPTIMIZE		= $(COPTFLAG_$(CLASS))
109
110CFLAGS			= $(CFLAGS_XARCH)
111CFLAGS			+= $(COPTIMIZE)
112CFLAGS			+= $(INLINES) -D_ASM_INLINES
113CFLAGS			+= $(CCMODE)
114CFLAGS			+= $(SPACEFLAG)
115CFLAGS			+= $(CCUNBOUND)
116CFLAGS			+= $(CFLAGS_uts)
117
118ASFLAGS_XARCH_32	= $(i386_ASFLAGS)
119ASFLAGS_XARCH_64	= $(amd64_ASFLAGS)
120ASFLAGS_XARCH		= $(ASFLAGS_XARCH_$(CLASS))
121
122ASFLAGS			+= $(ASFLAGS_XARCH)
123
124#
125#	Define the base directory for installation.
126#
127BASE_INS_DIR	= $(ROOT)
128
129#
130#
131# Simulator flag
132#
133i386_SIMULATOR		= -D_SIMULATOR_SUPPORT
134amd64_SIMULATOR		= -D_SIMULATOR_SUPPORT
135
136SIMULATOR		= $($(MACH)_SIMULATOR)
137
138
139#
140#	Debugging level
141#
142#	Special knowledge of which special debugging options affect which
143#	file is used to optimize the build if these flags are changed.
144#
145DEBUG_DEFS_OBJ32	=
146DEBUG_DEFS_DBG32	= -DDEBUG
147DEBUG_DEFS_DBG32	+= $(SIMULATOR)
148DEBUG_DEFS_OBJ64	=
149DEBUG_DEFS_DBG64	= -DDEBUG
150DEBUG_DEFS_DBG64	+= $(SIMULATOR)
151DEBUG_DEFS		= $(DEBUG_DEFS_$(BUILD_TYPE))
152
153DEBUG_COND_OBJ32	:sh = echo \\043
154DEBUG_COND_DBG32	=
155DEBUG_COND_OBJ64	:sh = echo \\043
156DEBUG_COND_DBG64	=
157IF_DEBUG_OBJ		= $(DEBUG_COND_$(BUILD_TYPE))$(OBJS_DIR)/
158
159$(IF_DEBUG_OBJ)syscall.o	:=	DEBUG_DEFS	+= -DSYSCALLTRACE
160$(IF_DEBUG_OBJ)clock.o		:=	DEBUG_DEFS	+= -DKSLICE=1
161
162#
163# This rather strange collection of definitions ensures that lint sees
164# 'struct cpu' containing a fully declared embedded 'struct machcpu'
165#
166# There's something deeply dissatisfying about this.
167#
168LINTMACHFLAGS = -D_MACHDEP -I../../i86pc
169$(LINTS_DIR)/kcpc.ln	:=	LINTFLAGS += $(LINTMACHFLAGS)
170$(LINTS_DIR)/kdi.ln	:=	LINTFLAGS += $(LINTMACHFLAGS)
171$(LINTS_DIR)/msacct.ln	:=	LINTFLAGS += $(LINTMACHFLAGS)
172$(LINTS_DIR)/thread.ln	:=	LINTFLAGS += $(LINTMACHFLAGS)
173
174#
175#	Build `options'. These are entirely historical and the need for these
176#	is completely removed by the module technology.
177#
178OPTION_DEFS	 = -DC2_AUDIT
179
180#
181#	Collect the preprocessor definitions to be associated with *all*
182#	files.
183#
184ALL_DEFS	 = $(DEBUG_DEFS) $(OPTION_DEFS)
185
186#
187# ----- TRANSITIONAL SECTION --------------------------------------------------
188#
189
190#
191#	Not everything which *should* be a module is a module yet. The
192#	following is a list of such objects which are currently part of
193#	the base kernel but should soon become kmods.
194#
195NOT_YET_KMODS	 = $(OLDPTY_OBJS) $(PTY_OBJS) $(MOD_OBJS)
196
197#
198# ----- END OF TRANSITIONAL SECTION -------------------------------------------
199
200#
201#	The kernels modules which are "implementation architecture"
202#	specific for this machine are enumerated below. Note that most
203#	of these modules must exist (in one form or another) for each
204#	architecture.
205#
206#	Common Drivers (usually pseudo drivers) (/kernel/drv)
207#	DRV_KMODS are built both 32-bit and 64-bit
208#	DRV_KMODS_32 are built only 32-bit
209#	DRV_KMODS_64 are built only 64-bit
210#
211DRV_KMODS	+= aac
212DRV_KMODS	+= aggr
213DRV_KMODS	+= amr
214DRV_KMODS	+= arp
215DRV_KMODS	+= asy
216DRV_KMODS	+= bl
217DRV_KMODS	+= bge
218DRV_KMODS	+= bofi
219DRV_KMODS	+= clone
220DRV_KMODS	+= cmdk
221DRV_KMODS	+= cn
222DRV_KMODS	+= conskbd
223DRV_KMODS	+= consms
224DRV_KMODS	+= cpuid
225DRV_KMODS	+= crypto
226DRV_KMODS	+= cryptoadm
227DRV_KMODS	+= dca
228DRV_KMODS	+= devinfo
229DRV_KMODS	+= dld
230DRV_KMODS	+= dump
231DRV_KMODS	+= ecpp
232DRV_KMODS	+= fssnap
233DRV_KMODS	+= glm
234DRV_KMODS	+= i8042
235DRV_KMODS	+= icmp
236DRV_KMODS	+= icmp6
237DRV_KMODS	+= ip
238DRV_KMODS	+= ip6
239DRV_KMODS	+= ipf
240DRV_KMODS	+= ippctl
241DRV_KMODS	+= ipsecah
242DRV_KMODS	+= ipsecesp
243DRV_KMODS	+= iwscn
244DRV_KMODS	+= keysock
245DRV_KMODS	+= kstat
246DRV_KMODS	+= ksyms
247DRV_KMODS	+= kmdb
248DRV_KMODS	+= llc1
249DRV_KMODS	+= llc2
250DRV_KMODS	+= lofi
251DRV_KMODS	+= log
252DRV_KMODS	+= logindmux
253DRV_KMODS	+= kssl
254DRV_KMODS	+= mm
255DRV_KMODS	+= mouse8042
256DRV_KMODS	+= mpt
257DRV_KMODS	+= nca
258DRV_KMODS	+= openeepr
259DRV_KMODS	+= pfil
260DRV_KMODS	+= pm
261DRV_KMODS	+= poll
262DRV_KMODS	+= pool
263DRV_KMODS	+= pseudo
264DRV_KMODS	+= ptc
265DRV_KMODS	+= ptm
266DRV_KMODS	+= pts
267DRV_KMODS	+= ptsl
268DRV_KMODS	+= ramdisk
269DRV_KMODS	+= random
270DRV_KMODS	+= rpcib
271DRV_KMODS	+= rsm
272DRV_KMODS	+= rts
273DRV_KMODS	+= sad
274DRV_KMODS	+= sctp
275DRV_KMODS	+= sctp6
276DRV_KMODS	+= sd
277DRV_KMODS	+= sgen
278DRV_KMODS	+= smbios
279DRV_KMODS	+= spdsock
280DRV_KMODS	+= sppp
281DRV_KMODS	+= sppptun
282DRV_KMODS	+= st
283DRV_KMODS	+= sy
284DRV_KMODS	+= sysevent
285DRV_KMODS	+= sysmsg
286DRV_KMODS	+= tcp
287DRV_KMODS	+= tcp6
288DRV_KMODS	+= tl
289DRV_KMODS	+= tnf
290DRV_KMODS	+= udp
291DRV_KMODS	+= udp6
292DRV_KMODS	+= vgatext
293DRV_KMODS	+= vni
294DRV_KMODS	+= vol
295DRV_KMODS	+= wc
296DRV_KMODS	+= winlock
297DRV_KMODS	+= xge
298DRV_KMODS	+= chxge
299DRV_KMODS	+= zcons
300DRV_KMODS	+= ath
301
302#
303# Common code drivers
304#
305DRV_KMODS	+= ixgb
306DRV_KMODS	+= rge
307
308#
309#	DTrace and DTrace Providers
310#
311DRV_KMODS	+= dtrace
312DRV_KMODS	+= fbt
313DRV_KMODS	+= lockstat
314DRV_KMODS	+= profile
315DRV_KMODS	+= sdt
316DRV_KMODS	+= systrace
317DRV_KMODS	+= fasttrap
318
319#
320#	I/O framework test drivers
321#
322DRV_KMODS	+= pshot
323DRV_KMODS	+= gen_drv
324DRV_KMODS	+= tvhci tphci tclient
325DRV_KMODS	+= emul64
326
327#
328#	Machine Specific Driver Modules (/kernel/drv):
329#
330DRV_KMODS	+= pci_pci
331DRV_KMODS	+= options
332DRV_KMODS	+= scsi_vhci
333
334#
335#	PCMCIA specific module(s)
336#
337DRV_KMODS	+= pem pcs
338DRV_KMODS	+= pcata pcelx pcmem pcram pcser
339
340#
341#	I2O specific module(s)
342#
343DRV_KMODS_32	+= pci_to_i2o i2o_bs i2o_scsi
344
345#
346#	SCSI Enclosure Services driver
347#
348DRV_KMODS	+= ses
349
350#
351#	USB specific modules
352#
353DRV_KMODS	+= hid
354DRV_KMODS	+= hubd
355DRV_KMODS	+= uhci
356DRV_KMODS	+= ehci
357DRV_KMODS	+= ohci
358DRV_KMODS	+= usb_mid
359DRV_KMODS	+= scsa2usb
360DRV_KMODS	+= usbprn
361DRV_KMODS	+= ugen
362DRV_KMODS	+= usbser
363DRV_KMODS	+= usbser_edge
364DRV_KMODS	+= usbsksp
365DRV_KMODS	+= usbsprl
366DRV_KMODS	+= usb_ac
367DRV_KMODS	+= usb_as
368DRV_KMODS	+= usbskel
369
370#
371#	1394 modules
372#
373MISC_KMODS	+= s1394 sbp2
374DRV_KMODS	+= hci1394 scsa1394
375DRV_KMODS	+= av1394
376DRV_KMODS	+= dcam1394
377
378#
379#	InfiniBand pseudo drivers
380#
381DRV_KMODS	+= ib ibd
382
383#
384#	LVM modules
385#
386DRV_KMODS	+= md
387MISC_KMODS	+= md_stripe md_hotspares md_mirror md_raid md_trans md_notify
388MISC_KMODS	+= md_sp
389
390#
391#	Exec Class Modules (/kernel/exec):
392#
393EXEC_KMODS	+= elfexec intpexec javaexec
394
395#
396#	Scheduling Class Modules (/kernel/sched):
397#
398SCHED_KMODS	+= IA RT TS RT_DPTBL TS_DPTBL FSS FX FX_DPTBL
399
400#
401#	File System Modules (/kernel/fs):
402#
403FS_KMODS	+= autofs cachefs ctfs devfs fdfs fifofs hsfs lofs
404FS_KMODS	+= mntfs namefs nfs objfs zfs
405FS_KMODS	+= pcfs procfs sockfs specfs tmpfs udfs ufs xmemfs
406
407#
408#	Streams Modules (/kernel/strmod):
409#
410STRMOD_KMODS	+= 6to4tun atun bufmod connld dedump ldterm pckt pfmod pipemod
411STRMOD_KMODS	+= ptem redirmod rpcmod rlmod telmod timod
412STRMOD_KMODS	+= spppasyn spppcomp
413STRMOD_KMODS	+= tirdwr ttcompat tun
414STRMOD_KMODS	+= usbkbm
415STRMOD_KMODS	+= usbms
416STRMOD_KMODS	+= usb_ah
417STRMOD_KMODS	+= drcompat
418STRMOD_KMODS	+= nattymod
419STRMOD_KMODS	+= cryptmod
420
421#
422#	'System' Modules (/kernel/sys):
423#
424SYS_KMODS	+= c2audit
425SYS_KMODS	+= doorfs
426SYS_KMODS	+= exacctsys
427SYS_KMODS	+= inst_sync
428SYS_KMODS	+= kaio
429SYS_KMODS	+= msgsys
430SYS_KMODS	+= pipe
431SYS_KMODS	+= portfs
432SYS_KMODS	+= pset
433SYS_KMODS	+= semsys
434SYS_KMODS	+= shmsys
435SYS_KMODS	+= sysacct
436SYS_KMODS	+= acctctl
437
438#
439#	'Misc' Modules (/kernel/misc)
440#	MISC_KMODS are built both 32-bit and 64-bit
441#	MISC_KMODS_32 are built only 32-bit
442#	MISC_KMODS_64 are built only 64-bit
443#
444MISC_KMODS	+= amsrc1 amsrc2
445MISC_KMODS	+= audiosup
446MISC_KMODS	+= busra
447MISC_KMODS	+= cmlb
448MISC_KMODS	+= consconfig
449MISC_KMODS	+= ctf
450MISC_KMODS	+= dadk
451MISC_KMODS	+= diaudio
452MISC_KMODS	+= dls
453MISC_KMODS	+= fssnap_if
454MISC_KMODS	+= gda
455MISC_KMODS	+= gld
456MISC_KMODS	+= hidparser
457MISC_KMODS	+= hpcsvc
458MISC_KMODS_32	+= i2o_msg
459MISC_KMODS	+= ibcm
460MISC_KMODS	+= ibdm
461MISC_KMODS	+= ibmf
462MISC_KMODS	+= ibtl
463MISC_KMODS	+= ipc
464MISC_KMODS	+= kbtrans
465MISC_KMODS	+= kcf
466MISC_KMODS	+= kgssapi
467MISC_KMODS	+= klmmod klmops
468MISC_KMODS	+= kmech_dummy
469MISC_KMODS	+= kmech_krb5
470MISC_KMODS	+= krtld
471MISC_KMODS	+= mac
472MISC_KMODS	+= mixer
473MISC_KMODS	+= nfs_dlboot
474MISC_KMODS	+= nfssrv
475MISC_KMODS	+= pcicfg
476MISC_KMODS	+= pcihp
477MISC_KMODS	+= pcmcia
478MISC_KMODS	+= phx
479MISC_KMODS	+= rpcsec
480MISC_KMODS	+= rpcsec_gss
481MISC_KMODS	+= rsmops
482MISC_KMODS	+= scsi
483MISC_KMODS	+= strategy
484MISC_KMODS	+= strplumb
485MISC_KMODS	+= sysinit
486MISC_KMODS	+= terminal-emulator
487MISC_KMODS	+= tlimod
488MISC_KMODS	+= usba usba10
489MISC_KMODS	+= zmod
490
491#
492#	Software Cryptographic Providers (/kernel/crypto):
493#
494CRYPTO_KMODS	+= aes
495CRYPTO_KMODS	+= arcfour
496CRYPTO_KMODS	+= blowfish
497CRYPTO_KMODS	+= des
498CRYPTO_KMODS	+= md5
499CRYPTO_KMODS	+= rsa
500CRYPTO_KMODS	+= sha1
501CRYPTO_KMODS	+= sha2
502CRYPTO_KMODS	+= swrand
503
504#
505#	IP Policy Modules (/kernel/ipp)
506#
507IPP_KMODS	+= dlcosmk
508IPP_KMODS	+= flowacct
509IPP_KMODS	+= ipgpc
510IPP_KMODS	+= dscpmk
511IPP_KMODS	+= tokenmt
512IPP_KMODS	+= tswtclmt
513
514#
515#	'Dacf' modules (/kernel/dacf)
516#
517DACF_KMODS	+= consconfig_dacf
518
519#
520#	generic-unix module (/kernel/genunix):
521#
522GENUNIX_KMODS	+= genunix
523
524#
525#	SVVS Testing Modules (/kernel/strmod):
526#
527#	These are streams and driver modules which are not to be
528#	delivered with a released system. However, during development
529#	it is convenient to build and install the SVVS kernel modules.
530#
531SVVS_KMODS	+= lmodb lmode lmodr lmodt lo tidg tivc tmux
532
533SVVS		+= svvs
534
535#
536#	Modules eXcluded from the product:
537#
538XMODS		+= e1000g adpu320 nge lsimega
539XMODS		+= tavor daplt
540
541
542#
543#	'Dacf' Modules (/kernel/dacf):
544#
545DACF_KMODS	+= usb_ac_dacf
546
547#
548#	Performance Counter BackEnd modules (/usr/kernel/pcbe)
549#
550PCBE_KMODS	+= p123_pcbe p4_pcbe opteron_pcbe
551