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