Home | History | Annotate | Download | only in sun4v
      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 # Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
     23 # Use is subject to license terms.
     24 #
     25 #	This makefile drives the production of all implementation architecture
     26 #	dependent modules for the sun4v architecture.
     27 #
     28 
     29 UTSBASE = ..
     30 
     31 include Makefile.sun4v
     32 include Makefile.stpaul
     33 include Makefile.huron
     34 include Makefile.maramba
     35 include Makefile.thunder
     36 include Makefile.turgo
     37 include Makefile.congo
     38 include Makefile.monza
     39 
     40 USR_GLENDALE_DIR	= $(USR_PLAT_DIR)/SUNW,Sun-Blade-T6320
     41 USR_GLENDALE_SBIN_DIR	= $(USR_GLENDALE_DIR)/sbin
     42 USR_GLENDALE_LIB_DIR	= $(USR_GLENDALE_DIR)/lib
     43 
     44 
     45 #
     46 #	The following are SPARC specific (rather than sun4v) specific modules
     47 #	which are required for the sun4v kernel to completely lint. They are
     48 #	not involved in the build in any other way. In order to minimize
     49 #	build time, it is assumed that they are up to date. But since sun4v
     50 #	is really a separate architecture we cannot use the v7 sparc modules.
     51 #
     52 SPARC_LIB_DIR	 = $(UTSBASE)/sparc/lint-libs/$(OBJS_DIR)
     53 
     54 SPARC_LINTS	 =
     55 
     56 #
     57 #
     58 #
     59 LINT_LIBS	 = $(LINT_LIB) \
     60 		   $(LINT_KMODS:%=$(LINT_LIB_DIR)/llib-l%.ln) \
     61 		   $(CLOSED_LINT_KMODS:%=$(LINT_LIB_DIR)/llib-l%.ln) \
     62 		   $(SPARC_LINTS:%=$(SPARC_LIB_DIR)/llib-l%.ln)
     63 
     64 def		:=	TARGET= def
     65 all		:=	TARGET= all
     66 install		:=	TARGET= install
     67 install_h	:=	TARGET= install_h
     68 clean		:=	TARGET= clean
     69 clobber		:=	TARGET= clobber
     70 lint		:=	TARGET= lint
     71 lintlib		:=	TARGET= lintlib
     72 modlintlib	:=	TARGET= modlintlib
     73 modlist		:=	TARGET= modlist
     74 modlist	modlist.sparc :=	NO_STATE= -K $$MODSTATE$$$$
     75 clean.lint	:=	TARGET= clean.lint
     76 check		:=	TARGET= check
     77 
     78 .KEEP_STATE:
     79 
     80 .PARALLEL:	$(PARALLEL_KMODS) $(CLOSED_KMODS) $(XMODS) $(CLOSED_XMODS) \
     81 		modlist modlist.sparc
     82 
     83 # Override for CPU_KMODS... they cannot be built
     84 # in parallel
     85 .NO_PARALLEL:	$(CPU_KMODS)
     86 
     87 def all clean clobber clean.lint: genassym unix .WAIT \
     88 	$(KMODS) $(CLOSED_KMODS) $(XMODS) $(CLOSED_XMODS) $(IMPLEMENTATIONS)
     89 
     90 # list the modules under sun4v.
     91 modlist: unix $(KMODS) $(CLOSED_KMODS) $(XMODS) $(CLOSED_XMODS) \
     92 	$(IMPLEMENTATIONS)
     93 
     94 # list the modules for Install -k sun4v.
     95 modlist.karch: modlist modlist.sparc
     96 
     97 modlist.sparc:
     98 	@cd $(SRC)/uts/sparc; pwd; $(MAKE) $(NO_STATE) modlist
     99 
    100 install: install_platforms genassym unix .WAIT $(KMODS) $(CLOSED_KMODS) \
    101 	$(XMODS) $(CLOSED_XMODS) $(IMPLEMENTATIONS)
    102 
    103 lintlib:	unix
    104 
    105 modlintlib:	$(LINT_KMODS) $(CLOSED_LINT_KMODS)
    106 
    107 genassym unix $(KMODS):	FRC
    108 	@cd $@; pwd; $(MAKE) $(NO_STATE) $(TARGET)
    109 
    110 $(IMPLEMENTATIONS):	FRC
    111 	@cd $@; pwd; THISIMPL=$@ $(MAKE) $(NO_STATE) $(TARGET)
    112 
    113 $(XMODS):	FRC
    114 	@if [ -f $@/Makefile  ]; then \
    115 		cd $@; pwd; $(MAKE) $(NO_STATE) $(TARGET); \
    116 	else \
    117 		true; \
    118 	fi
    119 
    120 $(CLOSED_XMODS):	FRC
    121 	@if [ -f $(CLOSED)/uts/sun4v/$@/Makefile  ]; then \
    122 		cd $(CLOSED)/uts/sun4v/$@; pwd; \
    123 		    $(MAKE) $(NO_STATE) $(TARGET); \
    124 	else \
    125 		true; \
    126 	fi
    127 
    128 $(CLOSED_KMODS):	FRC
    129 	cd $(CLOSED)/uts/sun4v/$@; pwd; $(MAKE) $(NO_STATE) $(TARGET)
    130 
    131 install_h check:	install_platforms $(IMPLEMENTATIONS) FRC
    132 	@cd sys; pwd; $(MAKE) $(TARGET)
    133 	@cd vm; pwd; $(MAKE) $(TARGET)
    134 
    135 #
    136 # Rules for the /platforms directories.  This is hardwired here because
    137 # the first stage of the project (KBI) only implements the userland
    138 # changes, but the only reasonable place to record the aliases is
    139 # here in kernel land.
    140 #
    141 $(ROOT_PLAT_DIRS): $(ROOT_PLAT_DIR)
    142 	-$(INS.dir)
    143 
    144 $(LINKED_PLATFORMS:%=$(ROOT_PLAT_DIR)/%): $(ROOT_PLAT_DIR)
    145 	$(INS.slink1)
    146 
    147 #
    148 # create directories in /usr/platform/ for the implementations that are
    149 # defined in $(IMPLEMENTED_PLATFORM)
    150 #
    151 
    152 # Foreach $(IMPLEMENTED_PLATFORM) there can be a list of $(LINKED_PLATFORMS)
    153 # that are linked to it.
    154 #
    155 $(USR_PLAT_DIR)/$(IMPLEMENTED_PLATFORM):	$(USR_PLAT_DIR)
    156 	-$(INS.dir)
    157 
    158 #
    159 # create the links in /usr/platform/ foreach $(LINKED_PLATFORMS)
    160 # to it's corresponding $(IMPLEMENTED_PLATFORM).
    161 #
    162 PLATFORMS	= $(LINKED_PLATFORMS)
    163 
    164 $(USR_PLAT_DIRS): $(USR_PLAT_DIR)
    165 	$(INS.slink3)
    166 
    167 PLATFORMS	+= $(IMPLEMENTED_PLATFORM)
    168 
    169 
    170 #
    171 # Make the /platforms directories.  This is hardwired here because
    172 # the first stage of the project (KBI) only implements the userland
    173 # changes, but the only reasonable place to record the aliases is
    174 # here in kernel land.
    175 #
    176 
    177 install_platforms:	$(ROOT_PSM_DIR) $(USR_PSM_DIR) \
    178 			$(ROOT_PLAT_DIRS) $(USR_PLAT_DIRS) \
    179 			$(LINKED_PLATFORMS:%=$(ROOT_PLAT_DIR)/%) \
    180 			$(USR_DESKTOP_DIR) $(USR_DESKTOP_INC_DIR) \
    181 			$(USR_DESKTOP_SBIN_DIR) $(USR_DESKTOP_LIB_DIR) \
    182 			$(USR_STPAUL_DIR) $(USR_STPAUL_SBIN_DIR) \
    183 			$(USR_STPAUL_LIB_DIR) \
    184 			$(USR_GLENDALE_DIR) $(USR_GLENDALE_SBIN_DIR) \
    185 			$(USR_GLENDALE_LIB_DIR) \
    186 			$(USR_HURON_DIR) \
    187 			$(USR_HURON_SBIN_DIR) $(USR_HURON_LIB_DIR) \
    188 			$(USR_MARAMBA_DIR) $(USR_MARAMBA_SBIN_DIR) \
    189 			$(USR_MARAMBA_LIB_DIR) \
    190 			$(USR_THUNDER_DIR) $(USR_THUNDER_SBIN_DIR) \
    191 			$(USR_THUNDER_LIB_DIR) \
    192 			$(USR_TURGO_DIR) $(USR_TURGO_SBIN_DIR) \
    193 			$(USR_TURGO_LIB_DIR) \
    194 			$(USR_CONGO_DIR) $(USR_CONGO_SBIN_DIR) \
    195 			$(USR_CONGO_LIB_DIR) \
    196 			$(USR_MONZA_DIR) \
    197 			$(USR_MONZA_SBIN_DIR) $(USR_MONZA_SBIN_LINKS)
    198 
    199 
    200 #
    201 # rules for making include, sbin, lib dirs/links in
    202 # /usr/platform/$(PLATFORM)/ for desktop platforms
    203 #
    204 $(USR_DESKTOP_INC_DIR):		$(USR_DESKTOP_DIR)
    205 	$(INS.slink4)
    206 
    207 $(USR_DESKTOP_SBIN_DIR):	$(USR_DESKTOP_DIR)
    208 	$(INS.slink5)
    209 
    210 $(USR_DESKTOP_LIB_DIR):		$(USR_DESKTOP_DIR)
    211 	-$(INS.dir)
    212 
    213 $(USR_STPAUL_DIR):		$(USR_SUN4V_PLAT_DIR)
    214 	-$(INS.dir)
    215 
    216 $(USR_STPAUL_SBIN_DIR):		$(USR_STPAUL_DIR)
    217 	$(INS.slink5)
    218 
    219 $(USR_STPAUL_LIB_DIR):		$(USR_STPAUL_DIR)
    220 	-$(INS.dir)
    221 
    222 $(USR_HURON_DIR):		$(USR_SUN4V_PLAT_DIR)
    223 	-$(INS.dir)
    224 
    225 $(USR_HURON_SBIN_DIR):		$(USR_HURON_DIR)
    226 	$(INS.slink5)
    227 
    228 $(USR_HURON_LIB_DIR):		$(USR_HURON_DIR)
    229 	-$(INS.dir)
    230 
    231 $(USR_GLENDALE_DIR):		$(USR_SUN4V_PLAT_DIR)
    232 	-$(INS.dir)
    233 
    234 $(USR_GLENDALE_SBIN_DIR):		$(USR_GLENDALE_DIR)
    235 	$(INS.slink5)
    236 
    237 $(USR_GLENDALE_LIB_DIR):		$(USR_GLENDALE_DIR)
    238 	-$(INS.dir)
    239 
    240 $(USR_MARAMBA_DIR):		$(USR_SUN4V_PLAT_DIR)
    241 	-$(INS.dir)
    242 
    243 $(USR_MARAMBA_SBIN_DIR):	$(USR_MARAMBA_DIR)
    244 	$(INS.slink5)
    245 
    246 $(USR_MARAMBA_LIB_DIR):		$(USR_MARAMBA_DIR)
    247 	-$(INS.dir)
    248 
    249 $(USR_THUNDER_DIR):		$(USR_SUN4V_PLAT_DIR)
    250 	-$(INS.dir)
    251 
    252 $(USR_THUNDER_SBIN_DIR):	$(USR_THUNDER_DIR)
    253 	$(INS.slink5)
    254 
    255 $(USR_THUNDER_LIB_DIR):		$(USR_THUNDER_DIR)
    256 	-$(INS.dir)
    257 
    258 $(USR_TURGO_DIR):		$(USR_SUN4V_PLAT_DIR)
    259 	-$(INS.dir)
    260 
    261 $(USR_TURGO_SBIN_DIR):		$(USR_TURGO_DIR)
    262 	$(INS.slink5)
    263 
    264 $(USR_TURGO_LIB_DIR):		$(USR_TURGO_DIR)
    265 	-$(INS.dir)
    266 
    267 $(USR_CONGO_DIR):		$(USR_SUN4V_PLAT_DIR)
    268 	-$(INS.dir)
    269 
    270 $(USR_CONGO_SBIN_DIR):		$(USR_CONGO_DIR)
    271 	$(INS.slink5)
    272 
    273 $(USR_CONGO_LIB_DIR):		$(USR_CONGO_DIR)
    274 	-$(INS.dir)
    275 
    276 $(USR_MONZA_DIR):		$(USR_SUN4V_PLAT_DIR)
    277 	-$(INS.dir)
    278 
    279 $(USR_MONZA_SBIN_DIR):		$(USR_MONZA_DIR)
    280 	-$(INS.dir)
    281 
    282 $(USR_MONZA_SBIN_LINKS):	$(USR_MONZA_SBIN_DIR)
    283 	$(INS.slink7)
    284 
    285 #
    286 #	Full kernel lint target.
    287 #
    288 LINT_TARGET	= globallint
    289 
    290 globallint:
    291 	@-$(ECHO) "\nSUN4V KERNEL: global crosschecks:"
    292 	@-$(LINT) $(LINTFLAGS) $(LINT_LIBS) 2>&1 | $(LGREP.2)
    293 
    294 lint:	lintlib .WAIT modlintlib .WAIT $(SPARC_LINTS) $(LINT_DEPS) \
    295 	$(IMPLEMENTATIONS) $(LINT_CPU_KMODS)
    296 
    297 # EXPORT DELETE START
    298 
    299 EXPORT_SRC:
    300 	$(RM) Makefile+
    301 	sed -e "/^# EXPORT DELETE START/,/^# EXPORT DELETE END/d" \
    302 	    < Makefile > Makefile+
    303 	$(MV) Makefile+ Makefile
    304 	$(CHMOD) 444 Makefile
    305 
    306 # EXPORT DELETE END
    307 
    308 include ../Makefile.targ
    309 
    310 #
    311 # Cross-reference customization: build a cross-reference over all of the
    312 # sun4v-related directories.
    313 #
    314 SHARED_XRDIRS	= ../sun4v ../sun4 ../sfmmu ../sparc ../sun ../common
    315 CLOSED_XRDIRS	= $(SHARED_XRDIRS:../%=../% ../../../closed/uts/%)
    316 XRDIRS		= $(SHARED_XRDIRS)
    317 $(CLOSED_BUILD)XRDIRS	= $(CLOSED_XRDIRS:../../../closed/uts/sfmmu=)
    318 
    319 XRPRUNE = i86pc sun4u intel
    320 
    321 cscope.out tags: FRC
    322 	$(XREF) -x $@
    323