1
0
Files
irix-657m-src/irix/kern/kcommondefs
T
2022-09-29 17:59:04 +03:00

701 lines
20 KiB
Plaintext

#
# kcommondefs - contains basic common flags/locations for kernel builds
# ALL makefiles should include this - so that builds may be done in any
# directory
#
# DEPTH - should be set in the top of each Makefile - it spells the ".."
# path up to top level directory
#
#ident "$Revision: 3.379 $"
#if defined(PRODUCT) && ! empty(PRODUCT)
PRODUCTDEFS= $(ROOT)/usr/include/make/$(PRODUCT)defs
RELEASEDEFS= $(ROOT)/usr/include/make/releasedefs
include $(PRODUCTDEFS)
COMPILATION_MODEL?=32
#
# Set up OBJECT_STYLE - this could also be done in the PRODUCTDEFS file(s)
#
#if $(CPUBOARD) == "IP19"
# EVEREST
OBJECT_STYLE=64_M3
#elif $(CPUBOARD) == "IP20"
#if $(COMPILATION_MODEL) == "N32"
OBJECT_STYLE=N32_M3
#else
OBJECT_STYLE=32_M2
ASTYLE=-mips3 -32 -Wb,-diag
#endif
#elif $(CPUBOARD) == "IP21"
OBJECT_STYLE=64_M4
#elif $(CPUBOARD) == "IP22"
#if $(COMPILATION_MODEL) == "64"
OBJECT_STYLE=64_M3
#elif $(COMPILATION_MODEL) == "N32"
OBJECT_STYLE=N32_M3
#else
OBJECT_STYLE=32_M2
ASTYLE=-mips3 -32 -Wb,-diag
#endif
#elif $(CPUBOARD) == "IP26"
# TETON
OBJECT_STYLE=64_M4
#elif $(CPUBOARD) == "IP28"
OBJECT_STYLE=64_M4
#elif $(CPUBOARD) == "IP27"
OBJECT_STYLE=64_M4
#elif $(CPUBOARD) == "IP25"
OBJECT_STYLE=64_M4
#elif $(CPUBOARD) == "IP30"
OBJECT_STYLE=64_M4
#elif $(CPUBOARD) == "IP32" || $(CPUBOARD) == "IP32SIM"
#if $(COMPILATION_MODEL) == "64"
OBJECT_STYLE=64_M3
#elif $(COMPILATION_MODEL) == "N32"
OBJECT_STYLE=N32_M3
#else
OBJECT_STYLE=32_M2
# ASTYLE=-triton_ucode -mips4 -32 -Wb,-diag
ASTYLE=-mips3 -32 -Wb,-diag
#endif
#elif $(CPUBOARD) == "IPMHSIM" || $(CPUBOARD) == "BEAST"
#if $(COMPILATION_MODEL) == "64"
OBJECT_STYLE=64_M3
#elif $(COMPILATION_MODEL) == "N32"
OBJECT_STYLE=N32_M3
#else
OBJECT_STYLE=32_M2
ASTYLE=-mips3 -32 -Wb,-diag
#endif
#elif $(CPUBOARD) == "IP33"
OBJECT_STYLE=64_M4
#else
.BEGIN:
@echo "Unknown CPUBOARD!"
exit 1
#endif
#endif
#
# We don't want LD library searches ...
#
NO_LSRCH=yes
include $(ROOT)/usr/include/make/commondefs
EVERYPRODUCT=4D40 4DACE1 BB_EVEREST EVEREST TETON SN0 RACER T5_EVEREST T5I2 4DMH
KCOMMONTARGS= $(COMMONTARGS) lint
KCOMMONPREF=k
#
# We define a postop idb which should be used whenever we want to ensure
# that a reconfig will occur: it avoids any local system time problems
# by changing the old kernel date back to the epoch.
# XXX we should fix inst to sanity-check the mtime of /unix and other
# XXX important files against current time. FORCE exists seperately
# so that it can be used in other makefiles that need to do more than
# LBOOTPOSTOP
#
FORCEUNIXBUILD=touch -ct 197001010000 $$rbase/unix || true
LBOOTPOSTOP=-idb 'postop("$(FORCEUNIXBUILD)")'
# setsym information
# for os/numa/Makefile, for now
KMODEOPT?=
#
# Compile Time Options - use KCDEFS, KCINCS, and KCOPTS in makefiles which
# include kcommondefs
#
# By default, all files are compiled -fullwarn.
# To override, set FULLWARN to null in individual makefiles.
# 1068 - integer conversion resulted in a change of sign
# 1209 - controlling expression is constant
# 1505 - implicit conversion from <type> to <type>: rounding,
# sign extension, or loss of accuracy may result
# 1506 - the v6.02 compiler changes 1505 to 1506.
# implicit conversion from <type> to <type>: rounding,
# sign extension, or loss of accuracy may result
# 1692 - prototyped function redeclared without prototype
#
# Some kernels:
# 1552 - variable set but never used
#
FULLWARN=-fullwarn
LWOFF=,1068,1209,1505,1506,1692$(PRODWOFF)$(KWOFF)
# We promote many warnings to be errors in order to keep the kernel builds
# clean and avoid stupid errors that the compiler is good at catching. The
# current warning to error promotions are:
#
# 1116: non-void function does not return a value
# 1196: function declared implicitly
# 1551: variable is used before it is set
# 1413: source type of cast is too small to hold all pointers
# 1498: no prototype for the call to <func> - this occurs
# with prototypes such as void foo() - should be void foo(void)
# 1009: nested comment is not allowed
# 1047: macro redefined differently
# 1110: statement is unreachable
# 1171: expression has no effect
# 1140: a value of type <type1> cannot be used to initialize an
# entity of type <type2> (useful for lboot devsw mismatches)
# 1164: argument of type <X> is incompatible with parameter of type <Y>
# 1412: destination type of cast is too small to hold all pointers
# 1069: integer conversion resulted in truncation
# 1035: #error is fatal!
# 1183: pointless comparison of unsigned integer with zero
#
# We also disallow certain normally legal language elements because they cause
# problems of one sort or another:
#
# -LANG:vla=off: disallow variable length arrays. There's currently no
# code that needs them and they cause all sorts of problems with
# the stack backtrace code in idbg, icrash and the kernel
# profiler.
#
# The WFATAL flag may be added to or overridden as necesary on a per
# system basis. So far, they are all the same, except for o32 kernels
# which can't set it.
WFATAL=-diag_error 1116,1196,1551,1413,1498,1009,1110,1171,1047,1140,1164,1412,1069,1035,1183 \
-LANG:vla=off
#
# The default compilation model is 32 bits.
#
COMPILATION_MODEL?=32
#
# The default virtual page size is 4KB for 32 bit kernels, 16kb for
# 64 bit kernels.
#
#if $(COMPILATION_MODEL) == "64"
PGSZOPT?=-D_PAGESZ=16384
#else
PGSZOPT?=-D_PAGESZ=4096
#endif
SABLE?=0
COMPLEX?=SP
LBOOTOPTS=-v
#
# kernidl stuff:
#
# The variable KERNIDLFILES should be set to a the list of IDL files to be
# processed. e.g. ``registry.idl ...'' For each IDL file foo.idl, the files
# invk_foo_stubs.h, I_foo_stubs.h, and I_foo_stubs.c
#
KERNIDL=$(BOOTAREA)/kernidl
KERNIDLFLAGS=$(CDEFS) $(CINCS) -I.. -MDupdate $(MKDEPFILE) -MDtarget $(.TARGET)
KERNIDLHEADERS=$(KERNIDLFILES:S/^/invk_/g:.idl=_stubs.h)
KERNIDLDIRT=$(KERNIDLHEADERS)
KERNIDLDIRT+=$(KERNIDLFILES:S/^/I_/g:.idl=_stubs.h)
KERNIDLDIRT+=$(KERNIDLFILES:S/^/I_/g:.idl=_stubs.c)
#
# Set up options specific to particular compiler suites
#
# Options common to all
GNUMVAL=8
OPTIMIZER=-O3
#if $(VCC) == "RAGNAROK"
PRODCOPTS= -TENV:kernel
PRODCOPTS+=-TENV:misalignment=1
PRODCOPTS+=-OPT:space
PRODCOPTS+=-OPT:quad_align_branch_targets=FALSE
PRODCOPTS+=-OPT:quad_align_with_memops=FALSE
PRODCOPTS+=-OPT:unroll_times=0
JALR=-jalr
#elif $(VCC) == "CFE"
PRODCOPTS=-Wc,-pic0
JALR?=-Wc,-jalr
ASTYLE+=-Wb,-pic0
WFATAL=
#elif $(VCC) == "MONGOOSE"
PRODCOPTS= -TENV:kernel
PRODCOPTS+=-OPT:space
PRODCOPTS+=-OPT:Olimit=0
PRODCOPTS+=-CG:unique_exit=on
# This reduces the size of gp relative strings at the cost of some minor
# text size increase and added time to access short strings (<= 8 character).
# Since the kernel rarely needs to access strings this generally isn't a
# problem.
#
PRODCOPTS+=-TENV:strings_not_gprelative=on
# Options to change when going from -O2 to -O3.
#if $(OPTIMIZER) == "-O3"
PRODCOPTS+=-TENV:X=1
PRODCOPTS+=-OPT:IEEE_arithmetic=1
PRODCOPTS+=-OPT:roundoff=0
PRODCOPTS+=-OPT:wrap_around_unsafe_opt=off
# Will default to 80, but the use of -OPT:space which
# is implied in -TENV:kernel reduces the number to 20.
# We may remove "unroll_times" when going to -O3 or
# change the "default" from 20 -> ???.
#PRODCOPTS+=-OPT:unroll_times=0
#else
PRODCOPTS+=-OPT:unroll_times=0
#endif
# These following options ONLY work on the 7.2+ compiler
# and should NOT be used on the 7.2 compiler or many ugly
# message will be spewed.
#
# These option are might be turned on for the 7.2+ compiler.
# For now do NOT uncomment the mem_intrinsics option.
#PRODCOPTS+= -OPT:mem_intrinsics=ON
JALR = -TARG:force_jalr
#if defined(PRODUCT) && !empty(PRODUCT)
#if $(CPUARCH) == "TFP"
PRODCOPTS+= -TARG:processor=r8000
#endif
#if $(CPUARCH) == "R10000"
PRODCOPTS+= -TARG:processor=r10000
#endif
#endif
#if defined(MONGOOSE_IPA)
LLDOPTS += -ipa
PRODCOPTS+= -ipa
PRODCOPTS+= -IPA:addressing=TRUE
PRODCOPTS+= -IPA:aggr_cprop=TRUE
PRODCOPTS+= -IPA:alias=TRUE
PRODCOPTS+= -IPA:opt_alias=TRUE
#endif
#if defined(MONGOOSE_PREFETCH)
# we shouldn't turn prefetch on for systems with 1 outstanding read like IP28.
#
# Need -O3 optimization for prefetch to work. Set to -O3 unless
# it was changed in klocaldefs.
#
#if $(OPTIMIZER) == "-O2"
OPTIMIZER=-O3
#endif
# try these later...
#PRODCOPTS+= -CG:prefetch=on
#PRODCOPTS+= -LNO:prefetch_ahead=2
#PRODCOPTS+= -SWP:prune_prefetches=TRUE
#endif
#else
.BEGIN:
@echo "Unknown VCC!"
exit 1
#endif
# turn off warnings that we "expect", so customers aren't worried
# by them (these go into irix.sm LDOPTS). 39 was added because
# the alignment we specify doesn't match up with the default 16KB
# alignment in 7.3 linker (which we asked for!), and changing
# the alignment may still result in the message; elspec is the
# only longterm answer. 17 about different sizes for "same"
# element is something we used to get a lot and was/is acceptable;
# it may be obsolete now, but I don't want to be brave.
LDWOFF=-woff 84,47,39,17
LBOOT=$(TOOLROOTSAFE) $(TOOLROOT)/usr/sbin/lboot
SETSYM=$(TOOLROOTSAFE) $(TOOLROOT)/usr/sbin/setsym
#if defined(PRODUCT) && !empty(PRODUCT)
PRODCDEFS=
#if $(CPUBOARD) == "IP19"
PRODCDEFS=-D_MIPS3_ADDRSPACE -DR4000_DADDIU_WAR -DFAST_LOCORE_TFAULT \
-DPTE_64BIT -DEVEREST -DBADVA_WAR -DMP_R4000_BADVA_WAR \
-DECC_RECOVER -DCLOCK_CTIME_IS_ABSOLUTE \
-DULI -DCKPT \
-DDELAY_CEL_WRITES -DNO_MFC_NOPS -DIDLESTACK_FASTINT \
-DSW_FAST_CACHE_SYNCH -DUSE_PTHREAD_RSA \
-DMC3_CFG_READ_WAR -DIO4_CFG_READ_WAR \
-D_SHAREII
#endif
#if $(CPUBOARD) == "IP25"
T5WARS=-DR10000_MFHI_WAR -DR10K_LLSC_WAR -DT5TREX_IBE_WAR
PRODCDEFS=-D_MIPS3_ADDRSPACE -DFAST_LOCORE_TFAULT -DPTE_64BIT \
-DEVEREST -DECC_RECOVER -DCLOCK_CTIME_IS_ABSOLUTE \
-DSCACHE_SET_ASSOC=2 -DMIPS4_ISA -DULI -DCKPT \
-DDELAY_CEL_WRITES -DIDLESTACK_FASTINT -DUSE_PTHREAD_RSA $(T5WARS) \
-DMULTIPLE_CFG_WRITE_WAR -DMC3_CFG_READ_WAR -DIO4_CFG_READ_WAR \
-D_SHAREII
R10K_LLSC_WAR=True
#endif
#if $(CPUBOARD) == "IP20"
PRODCDEFS=-DJUMP_WAR -DPROBE_WAR -DBADVA_WAR -D_MEM_PARITY_WAR \
-DSW_FAST_CACHE_SYNCH -DCKPT -DIDLESTACK_FASTINT
#endif
#if $(CPUBOARD) == "IP21"
PRODCDEFS=-D_MIPS3_ADDRSPACE
PRODCDEFS+=-DEVEREST -DNO_WIRED_SEGMENTS -DSCACHE_SET_ASSOC=4 \
-DTFP_MOVC_CPFAULT_FAST_WAR -DTFP_ADE_EBUS_WBACK_WAR \
-DTFP_CC_REGISTER_READ_WAR -DTFP_DMFC0_BADVA_WAR \
-DTFP_PREFETCH_WAR $(STATOPT) -DCLOCK_CTIME_IS_ABSOLUTE \
-DULI -DMIPS4_ISA -DCKPT -DIDLESTACK_FASTINT -DUSE_PTHREAD_RSA \
-DMC3_CFG_READ_WAR \
-D_SHAREII
#endif
#if $(CPUBOARD) == "IP27"
T5WARS=-DR10000_MFHI_WAR -DR10K_LLSC_WAR -DT5TREX_IBE_WAR
PRODCDEFS=-D_MIPS3_ADDRSPACE -DSN -DSN0 -DMIPS4_ISA \
-DCLOCK_CTIME_IS_ABSOLUTE -DFAST_LOCORE_TFAULT -DULI -DCKPT \
-DSCACHE_SET_ASSOC=2 -DIDLESTACK_FASTINT -DPTE_64BIT\
-DSW_FAST_CACHE_SYNCH -DUSE_PTHREAD_RSA \
-DAUDIO_TIMEOUT_IS_THREADED -DTSERIALIO_TIMEOUT_IS_THREADED \
$(T5WARS) -D_SHAREII -DCELL_PREPARE -DRT_SCALE
PRODCOPTS+= -FE:pointer_readonly -use_readonly_const
R10K_LLSC_WAR = True
#endif
#if $(CPUBOARD) == "IP22"
PRODCDEFS=-DBADVA_WAR -DJUMP_WAR -DPROBE_WAR -D_MEM_PARITY_WAR \
-D_TLB_LOOP_LIMIT -DTLBMOD_BADVADDR_WAR \
-D_VCE_AVOIDANCE -D_R4600_CACHEOP_WAR -D_R4600_2_0_CACHEOP_WAR \
-D_VCE_AVOIDANCE_DEBUG \
-D_IRIX5_MIPS3 -D_IRIX5_MIPS4 -D_R5000_BADVADDR_WAR \
-DMIPS4_ISA -DIDLESTACK_FASTINT \
-DSW_FAST_CACHE_SYNCH -DCKPT \
-D_R5000_CVT_WAR=1 -D_MTEXT_VFS $(T5WARS) \
-DPOWER_DUMP
#if $(COMPILATION_MODEL) == "N32"
PRODCDEFS+=-DR4000_DADDIU_WAR
#endif
#endif
#if $(CPUBOARD) == "IP26"
PRODCDEFS=-D_MIPS3_ADDRSPACE
PRODCDEFS+=-DNO_WIRED_SEGMENTS -DSCACHE_SET_ASSOC=4 \
-DTFP_MOVC_CPFAULT_FAST_WAR -DTFP_DMFC0_BADVA_WAR \
-D_NO_UNCACHED_MEM_WAR -DMIPS4_ISA -DTFP_PREFETCH_WAR $(STATOPT) \
-DCKPT -DIDLESTACK_FASTINT
PRODCOPTS+=-TARG:sync=off
PRODWOFF=,1552,1174
#endif
#if $(CPUBOARD) == "IP28"
T5WARS=-DR10000_SPECULATION_WAR
PRODCDEFS=-D_MIPS3_ADDRSPACE -DFAST_LOCORE_TFAULT -DSCACHE_SET_ASSOC=2 \
-D_NO_UNCACHED_MEM_WAR -DMIPS4_ISA $(STATOPT) $(T5WARS) \
-DSW_FAST_CACHE_SYNCH -DCKPT -DIDLESTACK_FASTINT
PRODCOPTS+=-Wb,-TARG:t5_no_spec_stores
PRODASOPTS+=-Wa,-t5_no_spec_stores
PRODWOFF=,1552,1174
#endif
#if $(CPUBOARD) == "IP30"
T5WARS=-DR10000_MFHI_WAR -DR10K_LLSC_WAR -DT5TREX_IBE_WAR
PRODCDEFS=-D_MIPS3_ADDRSPACE -DFAST_LOCORE_TFAULT -DCLOCK_CTIME_IS_ABSOLUTE
PRODCDEFS+=-DECC_RECOVER -DSCACHE_SET_ASSOC=2 -DMIPS4_ISA \
-DCKPT -DSW_FAST_CACHE_SYNCH -DIDLESTACK_FASTINT \
-DULI $(T5WARS) -DPTE_64BIT -DCELL_PREPARE \
-DAUDIO_TIMEOUT_IS_THREADED -DTSERIALIO_TIMEOUT_IS_THREADED \
-DRT_SCALE
R10K_LLSC_WAR = True
#endif
#if $(CPUBOARD) == "IPMHSIM"
T5WARS=-DR10000_SPECULATION_WAR -DMH_R10000_SPECULATION_WAR
#if $(CPUARCH) == "R10000"
PRODCDEFS=-D_IRIX_MIPS4 -D_IRIX_MIPS3 -D_SYSTEM_SIMULATION -D_SABLE_SYNC_IO \
-DMIPS4_ISA \
-DSCACHE_SET_ASSOC=2 \
$(STATOPT) $(WART523) $(T5WARS)
#else
PRODCDEFS= -D_TLB_LOOP_LIMIT -D_VCE_AVOIDANCE -D_SYSTEM_SIMULATION \
-D_SABLE_SYNC_IO -DSABLE_SYMMON -DSABLE_SYMMON_INITPC=0xa0007120 \
-D_VCE_AVOIDANCE_DEBUG \
-D_IRIX5_MIPS4 -D_IRIX5_MIPS3 \
-D_R5000_BADVADDR_WAR -DMIPS4_ISA -DSW_FAST_CACHE_SYNCH \
-DSCACHE_SET_ASSOC=2 \
-D_R5000_CVT_WAR=1 -D_MTEXT_VFS $(T5WARS)
# XXX Not Yet
# -DTILE_DATA -DSWASH
#endif
# PRODASOPTS=-triton_ucode -mips4 -32 -Wb,-diag
#endif
#if $(CPUBOARD) == "IP32"
T5WARS=-DR10000_SPECULATION_WAR -DMH_R10000_SPECULATION_WAR -DR10000_MFHI_WAR -DT5TREX_IBE_WAR
PRODCDEFS=-D_VCE_AVOIDANCE \
-DTLBMOD_BADVADDR_WAR \
-D_VCE_AVOIDANCE_DEBUG \
-D_TLB_LOOP_LIMIT \
-DP0_WAR -D_IRIX5_MIPS4 -D_IRIX5_MIPS3 -DIDLESTACK_FASTINT \
-D_R5000_BADVADDR_WAR \
-DMIPS4_ISA -DSW_FAST_CACHE_SYNCH \
-DSCACHE_SET_ASSOC=2 \
-DTILES_TO_LPAGES $(T5WARS) \
-DCKPT \
-D_R5000_CVT_WAR=1 -D_MTEXT_VFS \
-DPOWER_DUMP \
-D_DISABLE_CDX \
-D_PIO_EXTRA_SAFE \
-DUSE_PCI_PIO
# XXX Not Yet
# -DTILE_DATA -DSWASH
# PRODASOPTS=-triton_ucode -mips4 -32 -Wb,-diag
#endif
#if $(CPUBOARD) == "IP32SIM"
T5WARS=-DR10000_SPECULATION_WAR -DMH_R10000_SPECULATION_WAR
PRODCDEFS=-D_VCE_AVOIDANCE -D_SABLE_SYNC_IO \
-D_VCE_AVOIDANCE_DEBUG \
-D_TLB_LOOP_LIMIT \
-DIP32 -D_IRIX5_MIPS4 -D_IRIX5_MIPS3 \
-D_R5000_BADVADDR_WAR \
-DMIPS4_ISA -DSW_FAST_CACHE_SYNCH \
-DSCACHE_SET_ASSOC=2 \
-D_R5000_CVT_WAR=1 -D_MTEXT_VFS $(T5WARS)
# XXX Not Yet
# -DTILE_DATA -DSWASH
# PRODASOPTS=-triton_ucode -mips4 -32 -Wb,-diag
#endif
#if $(CPUBOARD) == "IP33"
PRODCDEFS=-D_MIPS3_ADDRSPACE -DSN -DSN1 -DMIPS4_ISA \
-DCLOCK_CTIME_IS_ABSOLUTE -DFAST_LOCORE_TFAULT -DULI -DCKPT \
-DIDLESTACK_FASTINT -DPTE_64BIT
# -DSW_FAST_CACHE_SYNCH
PRODCOPTS+= -FE:pointer_readonly -use_readonly_const
#endif
#
# Flags supported on all machines
#
PRODCDEFS+=-D_MP_NETLOCKS -DMP_STREAMS=1
#endif /* defined(PRODUCT) && !empty(PRODUCT) */
#if $(SABLE) == "1"
PRODCDEFS+=-DSABLE
SABLE_BOOT=SABLE
#endif
#
# CELL definitions
#
#if defined(CELL)
PRODCDEFS+=-DCELL -DBHV_SYNCH
#endif
#if defined(CELL_IRIX)
PRODCDEFS+=-DCELL_IRIX
#endif
#if defined(CELL_ARRAY)
PRODCDEFS+=-DCELL_ARRAY
#endif
#if defined(CELL_IRIX) && defined(CELL_ARRAY)
.BEGIN:
@echo "Invalid combination of CELL options"
exit 1
#endif
#
# When the environment variable KDEBUG is set, we build a debug kernel in
# a boot area with the string "DEBUG" added into the name. Debug kernels
# are built with -DDEBUG and a number of common subsystem specific debug
# flags. We also load debug and metered locks by default.
#
#if defined(KDEBUG) && ! empty(KDEBUG)
KDEBUG=DEBUG
DBOPTS+= -DDEBUG -DDEBUG_BUFTRACE
SYSCONFIGDEFS+= -DDEBUG_LOCKS -DDEBUG_SEMAMETER
#
# Keep optimizer on for n32 kernels to keep kernel
# text small enough to load properly.
#
#if $(COMPILATION_MODEL) != "N32"
OPTIMIZER=
#else
OPTIMIZER=-O2 -g3
#endif
#endif
#
# When the environment variable TRIX_BUILD is set, we build a
# Trusted Irix kernel. The kernel includes Mandatory Access
# Control and TSIX trusted networking.
#if defined(TRIX_BUILD)
SYSCONFIGDEFS+= -Dmac_enabled -Dsesmgr_enabled
#endif
#
# When the environment variable PERF_BUILD is set, we build a ``performance
# kernel'' that's useful for doing performance analysis. Mostly this is
# used to exclude certain optional subsystems from unix.kdebug -- most of
# those being security subsystems of one sort or another. Note that
# PERF_BUILD and KDEBUG are mutually exclusive but we don't test for that
# here.
#
#if defined(PERF_BUILD)
SYSCONFIGDEFS+= -DPERF_BUILD
#endif
#if !defined(PERF_BUILD)
#
# DEBUG_CONPOLL will allow polling the serial console port for
# ctrl-A char to break into the debugger incase of code hangs/loops
# during splhi. DEBUG_CONPOLL only compiles in the check of dbgconpoll
# variable along with kdebug, the cmd conpoll in the debugger will
# enable the fastclock which will enable profiling clock interrupts.
# Currently only the IP22 and IP32 desktop platforms has the CONPOLL
# code active. Compiling with DEBUG will enable CONPOLL code.
#
#if defined(PRODUCT) && ! empty(PRODUCT)
#if $(CPUBOARD) == "IP32" || $(CPUBOARD) == "IP22"
DBOPTS+=-DDEBUG_CONPOLL
#endif
#endif
#endif
GKDEFS= $(KMODEOPT) $(PGSZOPT) -D_KERNEL -DSTATIC=static $(DBOPTS) $(PRODCDEFS) -D$(COMPLEX) -D$(CPUBOARD) -D$(CPUARCH) $(CPUARCH_PRODDEFS)
GKOPTS= -G $(GNUMVAL) $(PRODOBJECT)
GKCOPTS=$(PRODCOPTS) $(FULLWARN) $(WFATAL) -non_shared
GKASOPTS=$(PRODASOPTS) -non_shared
LCDEFS= $(KCDEFS) $(GKDEFS)
LCINCS= $(KCINCS) -I$(DEPTH) -I. -I$(BOOTAREA)
LCOPTS= $(KCOPTS) $(GKOPTS) $(GKCOPTS)
LASDEFS=$(KASDEFS) $(GKDEFS)
LASINCS=$(KASINCS) -I$(DEPTH) -I. -I$(BOOTAREA)
LASOPTS=$(KASOPTS) $(GKOPTS) $(GKASOPTS)
#if defined(INET6_BUILD)
LCDEFS+= -DINET6 -DMROUTING6
#endif
#
# Kernel wants to shut off most standard LD stuff..
#
LD_QUICKSTART_INFO=
LDLIBS=
LLDOPTS=$(KLDFLAGS) $(GKOPTS) $(LDWOFF)
MKDEPFILE=$(KPATH)/Makedepend.$(CPUBOARD)$(SUBPRODUCT)$(KDEBUG)$(ITHREAD)$(SABLE_BOOT)
LMKDEPFILE=Makedepend.$(CPUBOARD)$(SUBPRODUCT)$(KDEBUG)$(ITHREAD)$(SABLE_BOOT)
#
# Lint options
#
LINTCFLAGS= $(CVERSION) $(ENDIAN) $(CDEFS) $(CINCS) -u -n -woff 91,102,302,307
LINTLDFLAGS= -u -n -woff 91,102
#
# Pathnames for lboot/objects
#
SYSGENDIR=/usr/sysgen
BOOTAREA=$(DEPTH)/$(CPUBOARD)$(SUBPRODUCT)$(KDEBUG)$(ITHREAD)$(SABLE_BOOT)bootarea
CPUINSTDIR=$(SYSGENDIR)/$(CPUBOARD)$(SUBPRODUCT)$(KDEBUG)$(ITHREAD)$(SABLE_BOOT)boot
BOOTDIR=$(SYSGENDIR)/boot
MASTERDIR=$(SYSGENDIR)/master.d
MTUNEDIR=$(SYSGENDIR)/mtune
SHIP_SYSGENDIR=/var/sysgen
SHIP_CPUINSTDIR=/usr/cpu/sysgen/$(CPUBOARD)boot
SHIP_MASTERDIR=$(SHIP_SYSGENDIR)/master.d
SHIP_MTUNEDIR=$(SHIP_SYSGENDIR)/mtune
# full path here so can override in klocaldefs
STUNEFILE=$(ROOT)/$(SYSGENDIR)/stune
SHIP_STUNEFILE=$(ROOT)/$(SHIP_SYSGENDIR)/stune
# lint object area
LINTBOOTAREA=$(DEPTH)/lintbootarea
#
# relative level from BOOTAREA to top of source
#
TOP=..
#
# Kernel install rule for production (shipped) objects
#
#if $(COMPILATION_MODEL) == "N32"
MODETAG=32bit
#else
MODETAG=$(COMPILATION_MODEL)bit
#endif
KINSTALL=$(INSTALL) -F $(SHIP_CPUINSTDIR) -m 444 -idb "nostrip mach($(CPUBOARD)$(SUBPRODUCT) MODE=$(MODETAG))"
KNOMODEINSTALL=$(INSTALL) -F $(SHIP_CPUINSTDIR) -idb "nostrip mach($(CPUBOARD)$(SUBPRODUCT) MODE=$(MODETAG))"
#
# Kernel install rule for developer objects
#
KDEVINSTALL=$(INSTALL) -F $(CPUINSTDIR) -m 444 -idb nostrip
KNOMODEDEVINSTALL=$(INSTALL) -F $(CPUINSTDIR) -idb nostrip
#
# Kernel install rule for putting object into $(ROOT)/$(CPUINSTDIR)
# this needs to NEVER have RAWIDB set
#
KLINKINSTALL=RAWIDB= $(INSTALL) -F $(CPUINSTDIR) -m 444 -idb nostrip
#
# All low level makefiles will execute this rule for the default build case
#
TARGETRULE= \
cd $(BOOTAREA); \
exec $(MAKE) -f $(KPATH)/Makefile targets DEPTH=$(TOP)
#
# SUBDIRS_MAKERULE that can handle a unset SUBDIRS variable
# and an arbitrary RULE
#
KSUBDIRS_MAKERULE= \
if [ -n "${SUBDIRS}" ]; then \
SUBD="${SUBDIRS}" ;\
for d in $${SUBD}; do $(SUBDIR_MAKERULE); done; \
fi
#
# default is ALWAYS the MAIN target - by specifying it here we need not
# worry about ordering in the makefile
#
.MAIN:default
sinclude $(DEPTH)/klocaldefs