Home | History | Annotate | Download | only in i86pc
      1   1167    kupfer #
      2   1167    kupfer # CDDL HEADER START
      3   1167    kupfer #
      4   1167    kupfer # The contents of this file are subject to the terms of the
      5   1167    kupfer # Common Development and Distribution License (the "License").
      6   1167    kupfer # You may not use this file except in compliance with the License.
      7   1167    kupfer #
      8   1167    kupfer # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
      9   1167    kupfer # or http://www.opensolaris.org/os/licensing.
     10   1167    kupfer # See the License for the specific language governing permissions
     11   1167    kupfer # and limitations under the License.
     12   1167    kupfer #
     13   1167    kupfer # When distributing Covered Code, include this CDDL HEADER in each
     14   1167    kupfer # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     15   1167    kupfer # If applicable, add the following below this CDDL HEADER, with the
     16   1167    kupfer # fields enclosed by brackets "[]" replaced with your own identifying
     17   1167    kupfer # information: Portions Copyright [yyyy] [name of copyright owner]
     18   1167    kupfer #
     19   1167    kupfer # CDDL HEADER END
     20   1167    kupfer #
     21   1549  fl147353 
     22   1167    kupfer #
     23   1167    kupfer # uts/i86pc/Makefile.i86pc
     24   1167    kupfer #
     25   8472      Sean # Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
     26   1167    kupfer # Use is subject to license terms.
     27   1167    kupfer #
     28   1167    kupfer #	This makefile contains the common definitions for the i86pc unix
     29   1167    kupfer #	and all i86pc implementation architecture dependent modules.
     30   1167    kupfer #
     31   1167    kupfer 
     32   1167    kupfer #
     33   1167    kupfer #	Machine type (implementation architecture):
     34   1167    kupfer #
     35   1167    kupfer PLATFORM	 = i86pc
     36   3446       mrj 
     37   3446       mrj #
     38   3446       mrj #	uname -m value
     39   3446       mrj #
     40   3446       mrj UNAME_M		= $(PLATFORM)
     41   6451       edp 
     42   6451       edp #
     43   6451       edp # Definitions for the platform-specific /platform directories.
     44   6451       edp #
     45   6451       edp # IMPLEMENTATIONS is used to designate i86pc machines which have
     46   6451       edp # platform specific modules.  All code specific to a given implementation
     47   6451       edp # resides in the appropriately named subdirectory.   This requires
     48   6451       edp # these platforms to have their own Makefiles to define ROOT_PLAT_DIRS,
     49   6451       edp # USR_PLAT_DIRS, etc.
     50   6451       edp #
     51   6451       edp IMPLEMENTATIONS	= i86hvm
     52   1167    kupfer 
     53   1167    kupfer #
     54   1167    kupfer #	Everybody needs to know how to build modstubs.o and to locate unix.o
     55   1167    kupfer #
     56   1167    kupfer UNIX_DIR	 = $(UTSBASE)/$(PLATFORM)/unix
     57   1167    kupfer GENLIB_DIR	 = $(UTSBASE)/intel/genunix
     58   1167    kupfer MODSTUBS_DIR	 = $(UNIX_DIR)
     59   1167    kupfer DSF_DIR		 = $(UTSBASE)/$(PLATFORM)/genassym
     60   1167    kupfer LINTS_DIR	 = $(OBJS_DIR)
     61   1167    kupfer LINT_LIB_DIR	 = $(UTSBASE)/$(PLATFORM)/lint-libs/$(OBJS_DIR)
     62   1167    kupfer GEN_LINT_LIB_DIR = $(UTSBASE)/intel/lint-libs/$(OBJS_DIR)
     63   1167    kupfer 
     64   1167    kupfer DTRACESTUBS_O	 = $(OBJS_DIR)/dtracestubs.o
     65   1167    kupfer DTRACESTUBS	 = $(OBJS_DIR)/libdtracestubs.so
     66   1167    kupfer 
     67   1167    kupfer SYM_MOD		= $(OBJS_DIR)/unix.sym
     68   1167    kupfer 
     69   1167    kupfer UNIX_O		 = $(UNIX_DIR)/$(OBJS_DIR)/unix.o
     70   1167    kupfer MODSTUBS_O	 = $(MODSTUBS_DIR)/$(OBJS_DIR)/modstubs.o
     71   1167    kupfer GENLIB	 	 = $(GENLIB_DIR)/$(OBJS_DIR)/libgenunix.so
     72   1167    kupfer LINT_LIB	 = $(LINT_LIB_DIR)/llib-lunix.ln
     73   3446       mrj DBOOT_LINT_LIB	 = $(LINT_LIB_DIR)/llib-ldboot.ln
     74   1167    kupfer GEN_LINT_LIB	 = $(GEN_LINT_LIB_DIR)/llib-lgenunix.ln
     75   1167    kupfer 
     76   1167    kupfer #
     77   1167    kupfer #	Include the makefiles which define build rule templates, the
     78   1167    kupfer #	collection of files per module, and a few specific flags. Note
     79   1167    kupfer #	that order is significant, just as with an include path. The
     80   1167    kupfer #	first build rule template which matches the files name will be
     81   1167    kupfer #	used. By including these in order from most machine dependent
     82   1167    kupfer #	to most machine independent, we allow a machine dependent file
     83   1167    kupfer #	to be used in preference over a machine independent version
     84   1167    kupfer #	(Such as a machine specific optimization, which preserves the
     85   1167    kupfer #	interfaces.)
     86   1167    kupfer #
     87   1167    kupfer include $(UTSTREE)/$(PLATFORM)/Makefile.files
     88   1167    kupfer include $(UTSTREE)/intel/Makefile.files
     89   1167    kupfer include $(UTSTREE)/common/Makefile.files
     90   1167    kupfer 
     91   1167    kupfer #
     92   1167    kupfer #	Include machine independent rules. Note that this does not imply
     93   1167    kupfer #	that the resulting module from rules in Makefile.uts is	machine
     94   1167    kupfer #	independent. Only that the build rules are machine independent.
     95   1167    kupfer #
     96   1167    kupfer include $(UTSBASE)/Makefile.uts
     97   1167    kupfer 
     98   1167    kupfer #
     99   1167    kupfer #	Define supported builds
    100   1167    kupfer #
    101   1167    kupfer DEF_BUILDS		= $(DEF_BUILDS64) $(DEF_BUILDS32)
    102   1167    kupfer ALL_BUILDS		= $(ALL_BUILDS64) $(ALL_BUILDS32)
    103   1167    kupfer 
    104   1167    kupfer #
    105   1167    kupfer #	x86 or amd64 inline templates
    106   1167    kupfer #
    107   3446       mrj INLINES_32		= $(UTSBASE)/intel/ia32/ml/ia32.il \
    108   3446       mrj 			  $(UTSBASE)/$(PLATFORM)/ml/ia32.il
    109   3446       mrj INLINES_64		= $(UTSBASE)/intel/amd64/ml/amd64.il \
    110   3446       mrj 			  $(UTSBASE)/$(PLATFORM)/ml/amd64.il
    111   1167    kupfer INLINES			+= $(INLINES_$(CLASS))
    112   1167    kupfer 
    113   1167    kupfer #
    114   1167    kupfer #	kernel-specific optimizations; override default in Makefile.master
    115   1167    kupfer #
    116   1167    kupfer 
    117   1167    kupfer CFLAGS_XARCH_32		= $(i386_CFLAGS)
    118   1167    kupfer CFLAGS_XARCH_64		= $(amd64_CFLAGS)
    119   1167    kupfer CFLAGS_XARCH		= $(CFLAGS_XARCH_$(CLASS))
    120   1167    kupfer 
    121   1167    kupfer COPTFLAG_32		= $(COPTFLAG)
    122   1167    kupfer COPTFLAG_64		= $(COPTFLAG64)
    123   1167    kupfer COPTIMIZE		= $(COPTFLAG_$(CLASS))
    124   1167    kupfer 
    125   1167    kupfer CFLAGS			= $(CFLAGS_XARCH)
    126   1167    kupfer CFLAGS			+= $(COPTIMIZE)
    127   1167    kupfer CFLAGS			+= $(INLINES) -D_ASM_INLINES
    128   1167    kupfer CFLAGS			+= $(CCMODE)
    129   1167    kupfer CFLAGS			+= $(SPACEFLAG)
    130   1167    kupfer CFLAGS			+= $(CCUNBOUND)
    131   1167    kupfer CFLAGS			+= $(CFLAGS_uts)
    132   4228     kchow CFLAGS			+= -xstrconst
    133   1167    kupfer 
    134   1167    kupfer ASFLAGS_XARCH_32	= $(i386_ASFLAGS)
    135   1167    kupfer ASFLAGS_XARCH_64	= $(amd64_ASFLAGS)
    136   1167    kupfer ASFLAGS_XARCH		= $(ASFLAGS_XARCH_$(CLASS))
    137   1167    kupfer 
    138   1167    kupfer ASFLAGS			+= $(ASFLAGS_XARCH)
    139   1167    kupfer 
    140   1167    kupfer AS_INC_PATH		+= -I$(DSF_DIR)/$(OBJS_DIR)
    141   1167    kupfer 
    142   1167    kupfer #
    143   1167    kupfer #	The following must be defined for all implementations:
    144   1167    kupfer #
    145   1167    kupfer #	MAPFILE:	ld mapfile for the build of kernel/unix.
    146   1167    kupfer #	MODSTUBS:	Module stubs source file.
    147   1167    kupfer #	GENASSYM_SRC:	genassym.c
    148   1167    kupfer #
    149   1167    kupfer MAPFILE		 = $(UTSBASE)/$(PLATFORM)/conf/Mapfile
    150   1167    kupfer MODSTUBS	 = $(UTSBASE)/intel/ia32/ml/modstubs.s
    151   1167    kupfer GENASSYM_SRC	 = $(UTSBASE)/$(PLATFORM)/ml/genassym.c
    152   1167    kupfer OFFSETS_SRC	 = $(UTSBASE)/$(PLATFORM)/ml/offsets.in
    153   1167    kupfer PLATFORM_OFFSETS_32	= $(UTSBASE)/$(PLATFORM)/ml/mach_offsets.in
    154   1167    kupfer PLATFORM_OFFSETS_64	= $(UTSBASE)/intel/amd64/ml/mach_offsets.in
    155   1167    kupfer PLATFORM_OFFSETS_SRC	= $(PLATFORM_OFFSETS_$(CLASS))
    156   3446       mrj KDI_OFFSETS_SRC	 = $(UTSBASE)/intel/kdi/kdi_offsets.in
    157   1167    kupfer 
    158   1167    kupfer #
    159   1167    kupfer #	Define the actual specific platforms
    160   1167    kupfer #
    161   1167    kupfer MACHINE_DEFS	 = -D$(PLATFORM) -D_MACHDEP
    162   1167    kupfer 
    163   1167    kupfer #
    164   1167    kupfer #	Software workarounds for hardware "features"
    165   1167    kupfer #
    166   1167    kupfer 
    167   1167    kupfer include	$(UTSBASE)/$(PLATFORM)/Makefile.workarounds
    168   1167    kupfer 
    169   1167    kupfer #
    170   1167    kupfer #	Debugging level
    171   1167    kupfer #
    172   1167    kupfer #	Special knowledge of which special debugging options effect which
    173   1167    kupfer #	file is used to optimize the build if these flags are changed.
    174   1167    kupfer #
    175   1167    kupfer #	XXX: The above could possibly be done for more flags and files, but
    176   1167    kupfer #	     is left as an experiment to the interested reader. Be forewarned,
    177   1167    kupfer #	     that excessive use could lead to maintenance difficulties.
    178   1167    kupfer #
    179   1167    kupfer DEBUG_DEFS_OBJ32	=
    180   1167    kupfer DEBUG_DEFS_DBG32	= -DDEBUG
    181   1167    kupfer DEBUG_DEFS_OBJ64	=
    182   1167    kupfer DEBUG_DEFS_DBG64	= -DDEBUG
    183   1167    kupfer DEBUG_DEFS		= $(DEBUG_DEFS_$(BUILD_TYPE))
    184   1167    kupfer 
    185   1167    kupfer DEBUG_COND_OBJ32	:sh = echo \\043
    186   1167    kupfer DEBUG_COND_DBG32	=
    187   1167    kupfer DEBUG_COND_OBJ64	:sh = echo \\043
    188   1167    kupfer DEBUG_COND_DBG64	=
    189   1167    kupfer IF_DEBUG_OBJ		= $(DEBUG_COND_$(BUILD_TYPE))$(OBJS_DIR)/
    190   1167    kupfer 
    191   1167    kupfer $(IF_DEBUG_OBJ)trap.o		:= DEBUG_DEFS += -DTRAPDEBUG -DTRAPTRACE
    192   1167    kupfer $(IF_DEBUG_OBJ)syscall_asm.o	:= DEBUG_DEFS += -DSYSCALLTRACE -DTRAPTRACE
    193   1167    kupfer $(IF_DEBUG_OBJ)syscall_asm_amd64.o := DEBUG_DEFS += -DSYSCALLTRACE -DTRAPTRACE
    194   1167    kupfer $(IF_DEBUG_OBJ)fast_trap_asm.o	:= DEBUG_DEFS += -DTRAPTRACE
    195   1167    kupfer $(IF_DEBUG_OBJ)interrupt.o	:= DEBUG_DEFS += -DTRAPTRACE
    196   3446       mrj $(IF_DEBUG_OBJ)intr.o		:= DEBUG_DEFS += -DTRAPTRACE
    197   1167    kupfer $(IF_DEBUG_OBJ)locore.o		:= DEBUG_DEFS += -DTRAPTRACE
    198   1167    kupfer $(IF_DEBUG_OBJ)mp_startup.o	:= DEBUG_DEFS += -DTRAPTRACE
    199   1167    kupfer $(IF_DEBUG_OBJ)machdep.o	:= DEBUG_DEFS += -DTRAPTRACE
    200   1167    kupfer $(IF_DEBUG_OBJ)exception.o	:= DEBUG_DEFS += -DTRAPTRACE
    201   3446       mrj $(IF_DEBUG_OBJ)x_call.o		:= DEBUG_DEFS += -DTRAPTRACE
    202   3446       mrj $(IF_DEBUG_OBJ)mp_call.o	:= DEBUG_DEFS += -DTRAPTRACE
    203   3446       mrj $(IF_DEBUG_OBJ)cbe.o		:= DEBUG_DEFS += -DTRAPTRACE
    204   1167    kupfer 
    205   1167    kupfer #
    206   1167    kupfer #	Collect the preprocessor definitions to be associated with *all*
    207   1167    kupfer #	files.
    208   1167    kupfer #
    209   1167    kupfer ALL_DEFS	 = $(MACHINE_DEFS) $(WORKAROUND_DEFS) $(DEBUG_DEFS) \
    210   1167    kupfer 		   $(OPTION_DEFS)
    211   1167    kupfer GENASSYM_DEFS	 = $(MACHINE_DEFS) $(OPTION_DEFS) \
    212   1167    kupfer 			-_gcc=-fno-eliminate-unused-debug-symbols \
    213   1167    kupfer 			-_gcc=-fno-eliminate-unused-debug-types
    214   1167    kupfer 
    215   1167    kupfer #
    216   1167    kupfer # ----- TRANSITIONAL SECTION --------------------------------------------------
    217   1167    kupfer #
    218   1167    kupfer 
    219   1167    kupfer #
    220   1167    kupfer #	Not everything which *should* be a module is a module yet. The
    221   1167    kupfer #	following is a list of such objects which are currently part of
    222   1167    kupfer #	the base kernel but should soon become kmods.
    223   1167    kupfer #
    224   1167    kupfer #	XXX: $(KMACCT_OBJS) is neither in the MT kernel nor was it ever
    225   1167    kupfer #	     made into a module. If it is made MT safe before being made
    226   1167    kupfer #	     into a module, it should be added to this list. It was in
    227   1167    kupfer #	     this list pre ON-4.0.
    228   1167    kupfer #
    229   1167    kupfer #
    230   1167    kupfer MACH_NOT_YET_KMODS	= $(AUTOCONF_OBJS)
    231   1167    kupfer 
    232   1167    kupfer #
    233   1167    kupfer # ----- END OF TRANSITIONAL SECTION -------------------------------------------
    234   1167    kupfer #
    235   1167    kupfer 
    236   1167    kupfer #
    237   1167    kupfer #	The kernels modules which are "implementation architecture"
    238   1167    kupfer #	specific for this machine are enumerated below. Note that most
    239   1167    kupfer #	of these modules must exist (in one form or another) for each
    240   1167    kupfer #	architecture.
    241   1167    kupfer #
    242   1167    kupfer #	Machine Specific Driver Modules (/kernel/drv)
    243   1167    kupfer #	DRV_KMODS are built both 32-bit and 64-bit
    244   1167    kupfer #	DRV_KMODS_32 are built only 32-bit
    245   1167    kupfer #	DRV_KMODS_64 are built only 64-bit
    246   1167    kupfer #
    247   1167    kupfer DRV_KMODS	+= rootnex
    248   1167    kupfer DRV_KMODS	+= isa
    249   3446       mrj DRV_KMODS	+= pcplusmp
    250   3446       mrj DRV_KMODS	+= cpc
    251   1167    kupfer DRV_KMODS	+= pci
    252   1167    kupfer DRV_KMODS	+= npe
    253   3446       mrj DRV_KMODS	+= pci-ide
    254   3446       mrj DRV_KMODS	+= xsvc
    255   3446       mrj DRV_KMODS	+= tzmon
    256   6573   phitran DRV_KMODS	+= acpi_drv 
    257  10394   Michael DRV_KMODS	+= acpinex
    258  10566    Vikram DRV_KMODS	+= amd_iommu
    259   6707    brutus DRV_KMODS	+= ioat
    260   9638     Randy DRV_KMODS	+= fipe
    261   1167    kupfer 
    262   4667   mh27603 DRV_KMODS	+= cpudrv
    263  10566    Vikram 
    264   5295    randyf 
    265   5295    randyf #
    266   5295    randyf # Platform Power Modules
    267   5295    randyf # 
    268   5295    randyf DRV_KMODS	+= ppm acpippm
    269   4667   mh27603 
    270   1414     cindi #
    271   1414     cindi #	CPU Modules
    272   1414     cindi #
    273   1414     cindi CPU_KMODS	+= amd_opteron
    274   1414     cindi CPU_KMODS	+= generic_cpu
    275   5254    gavinm CPU_KMODS	+= authenticamd
    276   5254    gavinm CPU_KMODS	+= genuineintel
    277   1167    kupfer 
    278   1167    kupfer #
    279  10831    Yanmin # Don't build some of these for OpenSolaris, since they will be
    280  10831    Yanmin # replaced by binaries that are signed by Sun Release Engineering.
    281  10831    Yanmin #
    282  10831    Yanmin $(CLOSED_BUILD)CLOSED_CPU_KMODS	+= intel_nhmex
    283  10831    Yanmin 
    284  10831    Yanmin #
    285   1167    kupfer #	Exec Class Modules (/kernel/exec):
    286   1167    kupfer #
    287   1167    kupfer EXEC_KMODS	+=
    288   1167    kupfer 
    289   1167    kupfer #
    290   1167    kupfer #	Scheduling Class Modules (/kernel/sched):
    291   1167    kupfer #
    292   1167    kupfer SCHED_KMODS	+=
    293   1167    kupfer 
    294   1167    kupfer #
    295   1167    kupfer #	File System Modules (/kernel/fs):
    296   1167    kupfer #
    297   1167    kupfer FS_KMODS	+=
    298   1167    kupfer 
    299   1167    kupfer #
    300   1167    kupfer #	Streams Modules (/kernel/strmod):
    301   1167    kupfer #
    302   3446       mrj STRMOD_KMODS	+=
    303   1167    kupfer 
    304   1167    kupfer #
    305   1167    kupfer #	'System' Modules (/kernel/sys):
    306   1167    kupfer #
    307   1167    kupfer SYS_KMODS	+=
    308   1167    kupfer 
    309   1167    kupfer #
    310   1167    kupfer #	'Misc' Modules (/kernel/misc):
    311   1167    kupfer #
    312   6451       edp MISC_KMODS	+= gfx_private pcie
    313  10394   Michael MISC_KMODS	+= acpidev
    314   3446       mrj 
    315   3446       mrj #
    316   3446       mrj #	'Dacf' modules (/kernel/dacf)
    317   3446       mrj #
    318   3446       mrj DACF_KMODS	+= consconfig_dacf
    319   1167    kupfer 
    320   1167    kupfer #
    321   1167    kupfer #	'Mach' Modules (/kernel/mach):
    322   1167    kupfer #
    323   1167    kupfer MACH_KMODS     	+= uppc
    324   5295    randyf 
    325   5295    randyf #
    326   5295    randyf #	CPR Misc Module.
    327   5295    randyf #
    328   5295    randyf MISC_KMODS	+= cpr
    329