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 2007 Sun Microsystems, Inc. All rights reserved. 24# Use is subject to license terms. 25# 26# ident "%Z%%M% %I% %E% SMI" 27# 28 29# 30# This makefile contains the common definitions for all intel 31# implementation architecture independent modules. 32# 33 34# 35# Machine type (implementation architecture): 36# 37PLATFORM = i86pc 38 39# 40# Everybody needs to know how to build modstubs.o and to locate unix.o. 41# Note that unix.o must currently be selected from among the possible 42# "implementation architectures". Note further, that unix.o is only 43# used as an optional error check for undefines so (theoretically) 44# any "implementation architectures" could be used. We choose i86pc 45# because it is the reference port. 46# 47UNIX_DIR = $(UTSBASE)/i86pc/unix 48GENLIB_DIR = $(UTSBASE)/intel/genunix 49GENASSYM_DIR = $(UTSBASE)/intel/genassym 50IPDRV_DIR = $(UTSBASE)/intel/ip 51MODSTUBS_DIR = $(UNIX_DIR) 52DSF_DIR = $(UTSBASE)/$(PLATFORM)/genassym 53LINTS_DIR = $(OBJS_DIR) 54LINT_LIB_DIR = $(UTSBASE)/intel/lint-libs/$(OBJS_DIR) 55 56UNIX_O = $(UNIX_DIR)/$(OBJS_DIR)/unix.o 57GENLIB = $(GENLIB_DIR)/$(OBJS_DIR)/libgenunix.so 58MODSTUBS_O = $(MODSTUBS_DIR)/$(OBJS_DIR)/modstubs.o 59LINT_LIB = $(UTSBASE)/i86pc/lint-libs/$(OBJS_DIR)/llib-lunix.ln 60GEN_LINT_LIB = $(UTSBASE)/intel/lint-libs/$(OBJS_DIR)/llib-lgenunix.ln 61 62# 63# Include the makefiles which define build rule templates, the 64# collection of files per module, and a few specific flags. Note 65# that order is significant, just as with an include path. The 66# first build rule template which matches the files name will be 67# used. By including these in order from most machine dependent 68# to most machine independent, we allow a machine dependent file 69# to be used in preference over a machine independent version 70# (Such as a machine specific optimization, which preserves the 71# interfaces.) 72# 73include $(UTSTREE)/intel/Makefile.files 74include $(UTSTREE)/common/Makefile.files 75 76# 77# ----- TRANSITIONAL SECTION -------------------------------------------------- 78# 79 80# 81# Not everything which *should* be a module is a module yet. The 82# following is a list of such objects which are currently part of 83# genunix but which might someday become kmods. This must be 84# defined before we include Makefile.uts, or else genunix's build 85# won't be as parallel as we might like. 86# 87NOT_YET_KMODS = $(OLDPTY_OBJS) $(PTY_OBJS) $(MOD_OBJS) 88 89# 90# ----- END OF TRANSITIONAL SECTION ------------------------------------------- 91# 92# Include machine independent rules. Note that this does not imply 93# that the resulting module from rules in Makefile.uts is machine 94# independent. Only that the build rules are machine independent. 95# 96include $(UTSBASE)/Makefile.uts 97 98# 99# The following must be defined for all implementations: 100# 101MODSTUBS = $(UTSBASE)/intel/ia32/ml/modstubs.s 102 103# 104# Define supported builds 105# 106DEF_BUILDS = $(DEF_BUILDS64) $(DEF_BUILDS32) 107ALL_BUILDS = $(ALL_BUILDS64) $(ALL_BUILDS32) 108 109# 110# x86 or amd64 inline templates 111# 112INLINES_32 = $(UTSBASE)/intel/ia32/ml/ia32.il 113INLINES_64 = $(UTSBASE)/intel/amd64/ml/amd64.il 114INLINES += $(INLINES_$(CLASS)) 115 116# 117# kernel-specific optimizations; override default in Makefile.master 118# 119 120CFLAGS_XARCH_32 = $(i386_CFLAGS) 121CFLAGS_XARCH_64 = $(amd64_CFLAGS) 122CFLAGS_XARCH = $(CFLAGS_XARCH_$(CLASS)) 123 124COPTFLAG_32 = $(COPTFLAG) 125COPTFLAG_64 = $(COPTFLAG64) 126COPTIMIZE = $(COPTFLAG_$(CLASS)) 127 128CFLAGS = $(CFLAGS_XARCH) 129CFLAGS += $(COPTIMIZE) 130CFLAGS += $(INLINES) -D_ASM_INLINES 131CFLAGS += $(CCMODE) 132CFLAGS += $(SPACEFLAG) 133CFLAGS += $(CCUNBOUND) 134CFLAGS += $(CFLAGS_uts) 135CFLAGS += -xstrconst 136 137ASFLAGS_XARCH_32 = $(i386_ASFLAGS) 138ASFLAGS_XARCH_64 = $(amd64_ASFLAGS) 139ASFLAGS_XARCH = $(ASFLAGS_XARCH_$(CLASS)) 140 141ASFLAGS += $(ASFLAGS_XARCH) 142AS_INC_PATH += -I$(GENASSYM_DIR)/$(OBJS_DIR) 143 144# 145# Define the base directory for installation. 146# 147BASE_INS_DIR = $(ROOT) 148 149# 150# Debugging level 151# 152# Special knowledge of which special debugging options affect which 153# file is used to optimize the build if these flags are changed. 154# 155DEBUG_DEFS_OBJ32 = 156DEBUG_DEFS_DBG32 = -DDEBUG 157DEBUG_DEFS_OBJ64 = 158DEBUG_DEFS_DBG64 = -DDEBUG 159DEBUG_DEFS = $(DEBUG_DEFS_$(BUILD_TYPE)) 160 161DEBUG_COND_OBJ32 :sh = echo \\043 162DEBUG_COND_DBG32 = 163DEBUG_COND_OBJ64 :sh = echo \\043 164DEBUG_COND_DBG64 = 165IF_DEBUG_OBJ = $(DEBUG_COND_$(BUILD_TYPE))$(OBJS_DIR)/ 166 167$(IF_DEBUG_OBJ)syscall.o := DEBUG_DEFS += -DSYSCALLTRACE 168$(IF_DEBUG_OBJ)clock.o := DEBUG_DEFS += -DKSLICE=1 169 170# 171# This rather strange collection of definitions ensures that lint sees 172# 'struct cpu' containing a fully declared embedded 'struct machcpu' 173# 174# There's something deeply dissatisfying about this. 175# 176LINTMACHFLAGS = -D_MACHDEP -I../../i86pc 177$(LINTS_DIR)/kcpc.ln := LINTFLAGS += $(LINTMACHFLAGS) 178$(LINTS_DIR)/kdi.ln := LINTFLAGS += $(LINTMACHFLAGS) 179$(LINTS_DIR)/msacct.ln := LINTFLAGS += $(LINTMACHFLAGS) 180$(LINTS_DIR)/thread.ln := LINTFLAGS += $(LINTMACHFLAGS) 181 182# 183# Build `options'. These are entirely historical and the need for these 184# is completely removed by the module technology. 185# 186OPTION_DEFS = -DC2_AUDIT 187 188# 189# Collect the preprocessor definitions to be associated with *all* 190# files. 191# 192ALL_DEFS = $(DEBUG_DEFS) $(OPTION_DEFS) 193 194# 195# The kernels modules which are "implementation architecture" 196# specific for this machine are enumerated below. Note that most 197# of these modules must exist (in one form or another) for each 198# architecture. 199# 200# Common Drivers (usually pseudo drivers) (/kernel/drv) 201# DRV_KMODS are built both 32-bit and 64-bit 202# DRV_KMODS_32 are built only 32-bit 203# DRV_KMODS_64 are built only 64-bit 204# 205DRV_KMODS += aac 206DRV_KMODS += aggr 207DRV_KMODS += ahci 208DRV_KMODS += amd64_gart 209DRV_KMODS += amr 210DRV_KMODS += agpgart 211DRV_KMODS += agptarget 212DRV_KMODS += arp 213DRV_KMODS += asy 214DRV_KMODS += ata 215DRV_KMODS += ath 216DRV_KMODS += audio810 217DRV_KMODS += audiohd 218DRV_KMODS += audioixp 219DRV_KMODS += bl 220DRV_KMODS += bge 221DRV_KMODS += bofi 222DRV_KMODS += bscbus 223DRV_KMODS += bscv 224DRV_KMODS += clone 225DRV_KMODS += cmdk 226DRV_KMODS += cn 227DRV_KMODS += conskbd 228DRV_KMODS += consms 229DRV_KMODS += cpuid 230DRV_KMODS += cpunex 231DRV_KMODS += crypto 232DRV_KMODS += cryptoadm 233DRV_KMODS += devinfo 234DRV_KMODS += dld 235DRV_KMODS_32 += dnet 236DRV_KMODS += dump 237DRV_KMODS += ecpp 238DRV_KMODS += fd 239DRV_KMODS += fdc 240DRV_KMODS += fssnap 241DRV_KMODS += i8042 242DRV_KMODS += i915 243DRV_KMODS += icmp 244DRV_KMODS += icmp6 245DRV_KMODS += ip 246DRV_KMODS += ip6 247DRV_KMODS += ipf 248DRV_KMODS += ippctl 249DRV_KMODS += ipsecah 250DRV_KMODS += ipsecesp 251DRV_KMODS += ipw 252DRV_KMODS += iwi 253DRV_KMODS += iwscn 254DRV_KMODS += kb8042 255DRV_KMODS += keysock 256DRV_KMODS += kssl 257DRV_KMODS += kstat 258DRV_KMODS += ksyms 259DRV_KMODS += kmdb 260DRV_KMODS += llc1 261DRV_KMODS += lofi 262DRV_KMODS += log 263DRV_KMODS += logi 264DRV_KMODS += logindmux 265DRV_KMODS += mm 266DRV_KMODS += mouse8042 267DRV_KMODS_32 += mscsi 268DRV_KMODS_32 += msm 269DRV_KMODS += nca 270DRV_KMODS += nv_sata 271DRV_KMODS += openeepr 272DRV_KMODS += pci_pci 273DRV_KMODS += pcic 274DRV_KMODS += pcie_pci 275DRV_KMODS += physmem 276DRV_KMODS += pcan 277DRV_KMODS += pcwl 278DRV_KMODS += pm 279DRV_KMODS += poll 280DRV_KMODS += pool 281DRV_KMODS += power 282DRV_KMODS += pseudo 283DRV_KMODS += ptc 284DRV_KMODS += ptm 285DRV_KMODS += pts 286DRV_KMODS += ptsl 287DRV_KMODS += ral 288DRV_KMODS += ramdisk 289DRV_KMODS += random 290DRV_KMODS += rds 291DRV_KMODS += rpcib 292DRV_KMODS += rsm 293DRV_KMODS += rts 294DRV_KMODS += rtw 295DRV_KMODS += sad 296DRV_KMODS += sctp 297DRV_KMODS += sctp6 298DRV_KMODS += sd 299DRV_KMODS += sgen 300DRV_KMODS += si3124 301DRV_KMODS += smbios 302DRV_KMODS += spdsock 303DRV_KMODS += sppp 304DRV_KMODS += sppptun 305DRV_KMODS += st 306DRV_KMODS += sy 307DRV_KMODS += sysevent 308DRV_KMODS += sysmsg 309DRV_KMODS += tcp 310DRV_KMODS += tcp6 311DRV_KMODS += tl 312DRV_KMODS += tnf 313DRV_KMODS += udp 314DRV_KMODS += udp6 315DRV_KMODS += ucode 316DRV_KMODS += vgatext 317DRV_KMODS += vni 318DRV_KMODS += vnic 319DRV_KMODS += wc 320DRV_KMODS += winlock 321DRV_KMODS += wpi 322DRV_KMODS += xge 323DRV_KMODS += zcons 324DRV_KMODS += chxge 325 326# 327# Don't build some of these for OpenSolaris, since they will be 328# replaced by binaries that are signed by Sun Release Engineering. 329# 330$(CLOSED_BUILD)DRV_KMODS += dca 331 332$(CLOSED_BUILD)CLOSED_DRV_KMODS += audioens 333$(CLOSED_BUILD)CLOSED_DRV_KMODS += audiovia823x 334$(CLOSED_BUILD)CLOSED_DRV_KMODS += bmc 335$(CLOSED_BUILD)CLOSED_DRV_KMODS += elxl 336$(CLOSED_BUILD)CLOSED_DRV_KMODS += glm 337$(CLOSED_BUILD)CLOSED_DRV_KMODS += iprb 338$(CLOSED_BUILD)CLOSED_DRV_KMODS += llc2 339$(CLOSED_BUILD)CLOSED_DRV_KMODS += marvell88sx 340$(CLOSED_BUILD)CLOSED_DRV_KMODS += mpt 341$(CLOSED_BUILD)CLOSED_DRV_KMODS_32 += ncrs 342$(CLOSED_BUILD)CLOSED_DRV_KMODS += pcn 343$(CLOSED_BUILD)CLOSED_DRV_KMODS += rtls 344$(CLOSED_BUILD)CLOSED_DRV_KMODS_32 += sbpro 345 346# 347# Common code drivers 348# 349 350DRV_KMODS += afe 351DRV_KMODS += e1000g 352DRV_KMODS += mxfe 353DRV_KMODS += rge 354$(CLOSED_BUILD)CLOSED_DRV_KMODS += ixgb 355 356# 357# DTrace and DTrace Providers 358# 359DRV_KMODS += dtrace 360DRV_KMODS += fbt 361DRV_KMODS += lockstat 362DRV_KMODS += profile 363DRV_KMODS += sdt 364DRV_KMODS += systrace 365DRV_KMODS += fasttrap 366 367# 368# I/O framework test drivers 369# 370DRV_KMODS += pshot 371DRV_KMODS += gen_drv 372DRV_KMODS += tvhci tphci tclient 373DRV_KMODS += emul64 374 375# 376# Machine Specific Driver Modules (/kernel/drv): 377# 378DRV_KMODS += options 379DRV_KMODS += scsi_vhci 380 381# 382# PCMCIA specific module(s) 383# 384DRV_KMODS += pcs 385DRV_KMODS += pcata pcmem pcram 386DRV_KMODS += pem 387MISC_KMODS += cardbus 388$(CLOSED_BUILD)CLOSED_DRV_KMODS += pcelx 389$(CLOSED_BUILD)CLOSED_DRV_KMODS += pcser 390 391# 392# SCSI Enclosure Services driver 393# 394DRV_KMODS += ses 395 396# 397# USB specific modules 398# 399DRV_KMODS += hid 400DRV_KMODS += hubd 401DRV_KMODS += uhci 402DRV_KMODS += ehci 403DRV_KMODS += ohci 404DRV_KMODS += usb_mid 405DRV_KMODS += usb_ia 406DRV_KMODS += scsa2usb 407DRV_KMODS += usbprn 408DRV_KMODS += ugen 409DRV_KMODS += usbser 410DRV_KMODS += usbsacm 411DRV_KMODS += usbsksp 412DRV_KMODS += usbsprl 413DRV_KMODS += usb_ac 414DRV_KMODS += usb_as 415DRV_KMODS += usbskel 416DRV_KMODS += usbvc 417 418$(CLOSED_BUILD)CLOSED_DRV_KMODS += usbser_edge 419 420# 421# 1394 modules 422# 423MISC_KMODS += s1394 sbp2 424DRV_KMODS += hci1394 scsa1394 425DRV_KMODS += av1394 426DRV_KMODS += dcam1394 427 428# 429# InfiniBand pseudo drivers 430# 431DRV_KMODS += ib ibd rdsib sdp 432 433# 434# LVM modules 435# 436DRV_KMODS += md 437MISC_KMODS += md_stripe md_hotspares md_mirror md_raid md_trans md_notify 438MISC_KMODS += md_sp 439 440# 441# Brand modules 442# 443BRAND_KMODS += sn1_brand lx_brand 444DRV_KMODS += lx_systrace lx_ptm lx_audio 445STRMOD_KMODS += ldlinux 446 447# 448# Exec Class Modules (/kernel/exec): 449# 450EXEC_KMODS += elfexec intpexec javaexec 451 452# 453# Scheduling Class Modules (/kernel/sched): 454# 455SCHED_KMODS += IA RT TS RT_DPTBL TS_DPTBL FSS FX FX_DPTBL 456 457# 458# File System Modules (/kernel/fs): 459# 460FS_KMODS += autofs cachefs ctfs dev devfs fdfs fifofs hsfs lofs 461FS_KMODS += lx_afs lx_proc mntfs namefs nfs objfs zfs 462FS_KMODS += pcfs procfs sockfs specfs tmpfs udfs ufs sharefs 463 464# 465# Streams Modules (/kernel/strmod): 466# 467STRMOD_KMODS += 6to4tun atun bufmod connld dedump ldterm pckt pfmod pipemod 468STRMOD_KMODS += ptem redirmod rpcmod rlmod telmod timod 469STRMOD_KMODS += spppasyn spppcomp 470STRMOD_KMODS += tirdwr ttcompat tun 471STRMOD_KMODS += usbkbm 472STRMOD_KMODS += usbms 473STRMOD_KMODS += usb_ah 474STRMOD_KMODS += drcompat 475STRMOD_KMODS += cryptmod 476STRMOD_KMODS += vuid2ps2 477STRMOD_KMODS += vuid3ps2 478STRMOD_KMODS += vuidm3p 479STRMOD_KMODS += vuidm4p 480STRMOD_KMODS += vuidm5p 481 482# 483# 'System' Modules (/kernel/sys): 484# 485SYS_KMODS += c2audit 486SYS_KMODS += doorfs 487SYS_KMODS += exacctsys 488SYS_KMODS += inst_sync 489SYS_KMODS += kaio 490SYS_KMODS += msgsys 491SYS_KMODS += pipe 492SYS_KMODS += portfs 493SYS_KMODS += pset 494SYS_KMODS += semsys 495SYS_KMODS += shmsys 496SYS_KMODS += sysacct 497SYS_KMODS += acctctl 498 499# 500# 'Misc' Modules (/kernel/misc) 501# MISC_KMODS are built both 32-bit and 64-bit 502# MISC_KMODS_32 are built only 32-bit 503# MISC_KMODS_64 are built only 64-bit 504# 505MISC_KMODS += acpica 506MISC_KMODS += agpmaster 507MISC_KMODS += amsrc2 508MISC_KMODS += audiosup 509MISC_KMODS += bootdev 510MISC_KMODS += busra 511MISC_KMODS += cmlb 512MISC_KMODS += consconfig 513MISC_KMODS += ctf 514MISC_KMODS += dadk 515MISC_KMODS += diaudio 516MISC_KMODS += dls 517MISC_KMODS += drm 518MISC_KMODS += fssnap_if 519MISC_KMODS += gda 520MISC_KMODS += gld 521MISC_KMODS += hidparser 522MISC_KMODS += hook 523MISC_KMODS += hpcsvc 524MISC_KMODS += ibcm 525MISC_KMODS += ibdm 526MISC_KMODS += ibmf 527MISC_KMODS += ibtl 528MISC_KMODS += idmap 529MISC_KMODS += ipc 530MISC_KMODS += kbtrans 531MISC_KMODS += kcf 532MISC_KMODS += kgssapi 533MISC_KMODS += kmech_dummy 534MISC_KMODS += kmech_krb5 535MISC_KMODS += mac 536MISC_KMODS += mixer 537MISC_KMODS += net80211 538MISC_KMODS += nfs_dlboot 539MISC_KMODS += nfssrv 540MISC_KMODS += neti 541MISC_KMODS += pci_autoconfig 542MISC_KMODS += pcicfg 543MISC_KMODS += pciehpc 544MISC_KMODS += pcihp 545MISC_KMODS += pcmcia 546MISC_KMODS += rpcsec 547MISC_KMODS += rpcsec_gss 548MISC_KMODS += rsmops 549MISC_KMODS += sata 550MISC_KMODS += scsi 551MISC_KMODS += strategy 552MISC_KMODS += strplumb 553MISC_KMODS += sysinit 554MISC_KMODS += tem 555MISC_KMODS += tlimod 556MISC_KMODS += usba usba10 usbs49_fw 557MISC_KMODS += scsi_vhci_f_sym 558MISC_KMODS += scsi_vhci_f_tpgs 559MISC_KMODS += scsi_vhci_f_asym_sun 560 561$(CLOSED_BUILD)CLOSED_MISC_KMODS += amsrc1 562$(CLOSED_BUILD)CLOSED_MISC_KMODS += klmmod klmops 563$(CLOSED_BUILD)CLOSED_MISC_KMODS += phx 564$(CLOSED_BUILD)CLOSED_MISC_KMODS += scsi_vhci_f_asym_lsi 565$(CLOSED_BUILD)CLOSED_MISC_KMODS += scsi_vhci_f_asym_emc 566$(CLOSED_BUILD)CLOSED_MISC_KMODS += scsi_vhci_f_sym_emc 567 568# 569# Software Cryptographic Providers (/kernel/crypto): 570# 571# Don't build some of these for OpenSolaris, since they will be 572# replaced by binaries that are signed by Sun RE. 573# 574$(CLOSED_BUILD)CRYPTO_KMODS += aes 575$(CLOSED_BUILD)CRYPTO_KMODS += arcfour 576$(CLOSED_BUILD)CRYPTO_KMODS += blowfish 577$(CLOSED_BUILD)CRYPTO_KMODS += des 578CRYPTO_KMODS += md4 579CRYPTO_KMODS += md5 580CRYPTO_KMODS += rsa 581CRYPTO_KMODS += sha1 582CRYPTO_KMODS += sha2 583CRYPTO_KMODS += swrand 584 585# 586# IP Policy Modules (/kernel/ipp) 587# 588IPP_KMODS += dlcosmk 589IPP_KMODS += flowacct 590IPP_KMODS += ipgpc 591IPP_KMODS += dscpmk 592IPP_KMODS += tokenmt 593IPP_KMODS += tswtclmt 594 595# 596# generic-unix module (/kernel/genunix): 597# 598GENUNIX_KMODS += genunix 599 600# 601# SVVS Testing Modules (/kernel/strmod): 602# 603# These are streams and driver modules which are not to be 604# delivered with a released system. However, during development 605# it is convenient to build and install the SVVS kernel modules. 606# 607SVVS_KMODS += lmodb lmode lmodr lmodt lo tidg tivc tmux 608 609SVVS += svvs 610 611# 612# Modules eXcluded from the product: 613# 614$(CLOSED_BUILD)CLOSED_XMODS = \ 615 adpu320 \ 616 bnx \ 617 daplt \ 618 lsimega \ 619 nge \ 620 sdpib \ 621 spwr \ 622 tavor 623 624 625# 626# 'Dacf' Modules (/kernel/dacf): 627# 628DACF_KMODS += usb_ac_dacf 629 630# 631# Performance Counter BackEnd modules (/usr/kernel/pcbe) 632# 633PCBE_KMODS += p123_pcbe p4_pcbe opteron_pcbe 634 635# 636# MAC-Type Plugin Modules (/kernel/mac) 637# 638MAC_KMODS += mac_ether 639MAC_KMODS += mac_wifi 640 641# 642# 'Devname' Modules (kernel/devname) 643# 644DEVNAME_KMODS += sdev_nsconfig_mod 645