Home | History | Annotate | Download | only in sun_nws
      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 src/sun_nws/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 src/sun_nws/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 2008 Sun Microsystems, Inc.  All rights reserved.
     23 # Use is subject to license terms.
     24 #
     25 #ident	"@(#)Makefile.common	1.39	08/04/29 SMI"
     26 #
     27 # src/sun_nws/Makefile.commmon
     28 
     29 .KEEP_STATE:
     30 
     31 .KEEP_STATE_FILE:	.make.state.$(MACH)$(BUILD_TYPE)
     32 
     33 $(BUIILD32)CLOBBERFILES += $(OBJ32)
     34 $(BUIILD64)CLOBBERFILES += $(OBJ64)
     35 
     36 MACROINCLUDES   = -I$(COM_INC_FC)
     37 MACROINCLUDES  += -I$(COMMON_FC_IMPL_HDRS_DIR)
     38 MACROINCLUDES  += -I$(MOD_INC_FCIP)
     39 MACROINCLUDES  += -I$(MOD_INC_FCP)
     40 MACROINCLUDES  += -I$(MOD_INC_FCSM)
     41 MACROINCLUDES  += -I$(MOD_INC_FCTL)
     42 MACROINCLUDES  += -I$(MOD_INC_FP)
     43 MACROINCLUDES  += -I$(MOD_INC_QLC)
     44 MACROINCLUDES  += -I$(MOD_INC_QUS)
     45 MACROINCLUDES  += -I$(MOD_INC_SUNFC)
     46 MACROINCLUDES  += -I$(COM_INC_ISCSI)
     47 MACROINCLUDES  += -I$(MOD_INC_ISCSI)
     48 MACROINCLUDES  += -I$(MOD_INC_FCINFO)
     49 
     50 
     51 sparc_ASM_CODE	= $(ON_REF_GATE)/usr/src/uts/sparc/ml/sparc.il
     52 i386_ASM_CODE	=
     53 ASM_CODE	= $($(MACH)_ASM_CODE)
     54 
     55 #
     56 # Standard Targets
     57 #
     58 
     59 all:		$(ALLPREQ)
     60 
     61 install: 	$(INSTALLPREQ)
     62 
     63 pkg: 		$(AWKPKGINFO) $(PKGPREQ)
     64 
     65 $(DIRS):
     66 	mkdir -p $@
     67 
     68 # -----------------------------------------------------------------------------
     69 #                      Module lint library construction targets
     70 # -----------------------------------------------------------------------------
     71 
     72 lint:=          DEBUG = -DDEBUG
     73 
     74 # ON lint libraries
     75 # ----------------- 
     76 UNIX_LINT_LIB32 = $(ON_REF_GATE)/usr/src/uts/$(ARCH)/lint-libs/debug32/llib-lunix.ln
     77 sparc_GENUNIX_LINT_LIB32 = $(ON_REF_GATE)/usr/src/uts/$(ARCH)/lint-libs/debug32/llib-lgenunix.ln
     78 i386_GENUNIX_LINT_LIB32 = $(ON_REF_GATE)/usr/src/uts/intel/lint-libs/debug32/llib-lgenunix.ln
     79 GENUNIX_LINT_LIB32 = $($(MACH)_GENUNIX_LINT_LIB32)
     80 
     81 UNIX_LINT_LIB64 = $(ON_REF_GATE)/usr/src/uts/$(ARCH)/lint-libs/debug64/llib-lunix.ln
     82 sparc_GENUNIX_LINT_LIB64 = $(ON_REF_GATE)/usr/src/uts/$(ARCH)/lint-libs/debug64/llib-lgenunix.ln
     83 i386_GENUNIX_LINT_LIB64 = $(ON_REF_GATE)/usr/src/uts/intel/lint-libs/debug64/llib-lgenunix.ln
     84 GENUNIX_LINT_LIB64 = $($(MACH)_GENUNIX_LINT_LIB64)
     85 
     86 LINT_LIB_DIR   = $(PROJAREA)/lint_lib
     87 LINT_LIB_DIR32 = $(LINT_LIB_DIR)/$(DBG32)
     88 LINT_LIB_DIR64 = $(LINT_LIB_DIR)/$(DBG64)
     89 
     90 LINTS_32 = $(MODULE_SRC:%.c=$(DBG32)/%.ln)
     91 LINTS_64 = $(MODULE_SRC:%.c=$(DBG64)/%.ln)
     92 
     93 MOD_LINT_SUFFIXE32 = $(MODULE)-$(MACH32)
     94 MOD_LINT_SUFFIXE64 = $(MODULE)-$(MACH64)
     95 MOD_LINT_LIB32 = llib-l$(MOD_LINT_SUFFIXE32).ln
     96 MOD_LINT_LIB64 = llib-l$(MOD_LINT_SUFFIXE64).ln
     97 MOD_LINT_LIB32_EXP = $(LINT_LIB_DIR32)/llib-l$(MODULE).ln
     98 MOD_LINT_LIB64_EXP = $(LINT_LIB_DIR64)/llib-l$(MODULE).ln
     99 
    100 LIB_LINT_SUFFIXE32 = $(LIBNAME)-$(MACH32)
    101 LIB_LINT_SUFFIXE64 = $(LIBNAME)-$(MACH64)
    102 LIB_LINT_LIB32 = llib-l$(LIB_LINT_SUFFIXE32).ln
    103 LIB_LINT_LIB64 = llib-l$(LIB_LINT_SUFFIXE64).ln
    104 LIB_LINT_LIB32_EXP = $(LINT_LIB_DIR32)/llib-l$(LIBNAME).ln
    105 LIB_LINT_LIB64_EXP = $(LINT_LIB_DIR64)/llib-l$(LIBNAME).ln
    106 
    107 $(LINT_LIB_DIR32) $(LINT_LIB_DIR64):
    108 	- mkdir -p $@ 2> /dev/null
    109 
    110 $(MOD_LINT_LIB32_EXP):	$(MOD_LINT_LIB32)
    111 	$(MV) $(MOD_LINT_LIB32) $@
    112 
    113 $(MOD_LINT_LIB32):	$(DBG32) .WAIT $(LINTS_32)
    114 	@$(ECHO) "\n$(DBG32)/$(MODULE): (library construction):"
    115 	@$(LINT32) -o $(MOD_LINT_SUFFIXE32) $(LFLAGS32) $(LINTS_32)
    116 
    117 $(MOD_LINT_LIB64_EXP): $(MOD_LINT_LIB64)
    118 	$(MV) $(MOD_LINT_LIB64) $@
    119 
    120 $(MOD_LINT_LIB64): $(DBG64) .WAIT $(LINTS_64)
    121 	@$(ECHO) "\n$(DBG64)/$(MODULE): (library construction):"
    122 	@$(LINT64) -o $(MOD_LINT_SUFFIXE64) $(LFLAGS64) $(LINTS_64)
    123 
    124 $(LIB_LINT_LIB32_EXP):	$(LIB_LINT_LIB32)
    125 	$(MV) $(LIB_LINT_LIB32) $@
    126 
    127 $(LIB_LINT_LIB32): $(DBG32) .WAIT $(MODULE_SRC:%=$(SRC_DIR)/%)
    128 	@$(ECHO) "\n$(LIBNAME): (library construction):"
    129 	@$(LINT32) $(LFLAGS32) $(INCLUDES) $(LDEF32) -o $(LIB_LINT_SUFFIXE32) $(MODULE_SRC:%=$(SRC_DIR)/%)
    130 
    131 $(LIB_LINT_LIB64_EXP): $(LIB_LINT_LIB64)
    132 	$(MV) $(LIB_LINT_LIB64) $@
    133 
    134 $(LIB_LINT_LIB64): $(DBG64) .WAIT $(MODULE_SRC:%=$(SRC_DIR)/%)
    135 	@$(ECHO) "\n$(LIBNAME): (library construction):"
    136 	@$(LINT64) $(LFLAGS64) $(INCLUDES) $(LDEF64) -o $(LIB_LINT_SUFFIXE64) $(MODULE_SRC:%=$(SRC_DIR)/%)
    137 
    138 lint:	$(LINT_TARGETS)
    139 
    140 lint32: $(LINT_LIB_DIR32) .WAIT $(MOD_LINT_LIB32_EXP)
    141 	@$(ECHO) "\n$(DBG32)/$(MODULE): global crosschecks:"
    142 	@$(LINT32) $(LFLAGS32) $(MOD_LINT_LIB32_EXP) $(UNIX_LINT_LIB32) $(GENUNIX_LINT_LIB32) 2> $(DBG32)/$(MODULE)-lint-msg
    143 	@if \
    144 		$(GREP) $(CODEMGR_WS) $(DBG32)/$(MODULE)-lint-msg > /dev/null ; \
    145 	then \
    146 		$(ECHO) "*** Error Lint Global Crosschecks ***" ; \
    147 		$(GREP) $(CODEMGR_WS) $(DBG32)/$(MODULE)-lint-msg ; \
    148 	fi
    149 
    150 lint64: $(LINT_LIB_DIR64) .WAIT $(MOD_LINT_LIB64_EXP)
    151 	@$(ECHO) "\n$(DBG64)/$(MODULE): global crosschecks:"
    152 	@$(LINT64) $(LFLAGS64) $(MOD_LINT_LIB64_EXP) $(UNIX_LINT_LIB64) $(GENUNIX_LINT_LIB64) 2> $(DBG64)/$(MODULE)-lint-msg
    153 	@if \
    154 		$(GREP) $(CODEMGR_WS) $(DBG64)/$(MODULE)-lint-msg > /dev/null ; \
    155 	then \
    156 		$(ECHO) "*** Error Lint Global Crosschecks ***" ; \
    157 		$(GREP) $(CODEMGR_WS) $(DBG64)/$(MODULE)-lint-msg ; \
    158 	fi
    159 
    160 enhanced_lint32: $(DBG32)
    161 	@$(LINT32) -dirout=$(DBG32) $(LFLAGS32) $(LDEF32) $(DEBUG) $(CPPFLAGS32) $(INCLUDES) \
    162 	    -errchk=%all -errhdr=%all -Ncheck=%all -errsecurity=standard \
    163 	    -erroff=E_TYPEDEF_UNUSE \
    164 	    -erroff=E_ENUM_UNUSE \
    165 	    $(MODULE_SRC:%=$(SRC_DIR)/%) 2> $(DBG32)/$(MODULE)-lint-msg
    166 	@if \
    167 		$(GREP) $(CODEMGR_WS) $(DBG32)/$(MODULE)-lint-msg > /dev/null ; \
    168 	then \
    169 		$(ECHO) "*** Error Lint Global Crosschecks ***" ; \
    170 		$(GREP) $(CODEMGR_WS) $(DBG32)/$(MODULE)-lint-msg ; \
    171 	fi
    172 
    173 enhanced_lint64: $(DBG64)
    174 	@($(LINT64) -dirout=$(DBG64) $(LFLAGS64) $(LDEF64) $(DEBUG) $(CPPFLAGS64) $(INCLUDES) \
    175 	    -errchk=%all -errhdr=%all -Ncheck=%all -errsecurity=standard \
    176 	    -erroff=E_TYPEDEF_UNUSE \
    177 	    -erroff=E_ENUM_UNUSE \
    178 	    -Nlevel=$(ENHANCED_LINT_LEVEL) \
    179 	    $(MODULE_SRC:%=$(SRC_DIR)/%) 2> $(DBG64)/$(MODULE)-lint-msg)
    180 	@if \
    181 		$(GREP) $(CODEMGR_WS) $(DBG64)/$(MODULE)-lint-msg > /dev/null ; \
    182 	then \
    183 		$(ECHO) "*** Error Lint Global Crosschecks ***" ; \
    184 		$(GREP) $(CODEMGR_WS) $(DBG64)/$(MODULE)-lint-msg ; \
    185 	fi
    186 
    187 lib_lint32: $(LINT_LIB_DIR32) .WAIT $(LIB_LINT_LIB32_EXP)
    188 
    189 lib_lint64: $(LINT_LIB_DIR64) .WAIT $(LIB_LINT_LIB64_EXP)
    190 
    191 cmd_lint32: $(DBG32) .WAIT $(LINTS_32)
    192 
    193 cmd_lint64: $(DBG64) .WAIT $(LINTS_64)
    194 
    195 # Rules
    196 # -----
    197 $(OBJ32)/%.o: $(SRC_DIR)/%.c
    198 	$(CC) $(CFLAGS32) $(DEBUG) $(CPPFLAGS32) $(INCLUDES) -c -o $@ $<
    199 	$(CTFCONVERT)
    200 
    201 $(OBJ32)/%.o: $(COMMON_DIR)/%.c
    202 	$(CC) $(CFLAGS32) $(DEBUG) $(CPPFLAGS32) $(INCLUDES) -c -o $@ $<
    203 	$(CTFCONVERT)
    204 
    205 $(OBJ32)/%.o: $(COM_SRC_ISCSI)/%.c
    206 	$(CC) $(CFLAGS32) $(DEBUG) $(CPPFLAGS32) $(INCLUDES) -c -o $@ $<
    207 	$(CTFCONVERT)
    208 
    209 $(OBJ32)/%.o: $(COM_SRC_CMDPARSE)/%.c
    210 	$(CC) $(CFLAGS32) $(DEBUG) $(CPPFLAGS32) $(INCLUDES) -c -o $@ $<
    211 	$(CTFCONVERT)
    212 
    213 $(OBJ32)/%.o: $(SRC_DIR)/%.cc
    214 	$(CCC) $(CCFLAGS32) $(DEBUG) $(CPPFLAGS32) $(CCINCLUDES) -c -o $@ $<
    215 	$(CTFCONVERT)
    216 
    217 $(DBG32)/%.ln: $(SRC_DIR)/%.c
    218 	@$(ECHO) "\n$@"
    219 	@$(LINT32) -c -dirout=$(DBG32) $(LFLAGS32) $(LDEF32) $(DEBUG) $(CPPFLAGS32) $(INCLUDES) $<
    220 
    221 $(OBJ32)/$(MODULE)	: $(MODULE_OBJ_32)
    222 	$(DTRACE32)
    223 	$(LINK32)
    224 	$(CTFMERGE32)
    225 
    226 $(OBJ64)/%.o: $(SRC_DIR)/%.c
    227 	$(CC) $(CFLAGS64) $(DEBUG) $(CPPFLAGS64) $(INCLUDES) -c -o $@ $<
    228 	$(CTFCONVERT)
    229 
    230 $(OBJ64)/%.o: $(COMMON_DIR)/%.c
    231 	$(CC) $(CFLAGS64) $(DEBUG) $(CPPFLAGS64) $(INCLUDES) -c -o $@ $<
    232 	$(CTFCONVERT)
    233 
    234 $(OBJ64)/%.o: $(COM_SRC_ISCSI)/%.c
    235 	$(CC) $(CFLAGS64) $(DEBUG) $(CPPFLAGS64) $(INCLUDES) -c -o $@ $<
    236 	$(CTFCONVERT)
    237 
    238 $(OBJ64)/%.o: $(SRC_DIR)/%.cc
    239 	$(CCC) $(CCFLAGS64) $(DEBUG) $(CCINCLUDES) -c -o $@ $<
    240 	$(CTFCONVERT)
    241 
    242 $(DBG64)/%.ln: $(SRC_DIR)/%.c
    243 	@$(ECHO) "\n$@"
    244 	@$(LINT64) -c -dirout=$(DBG64) $(LFLAGS64) $(LDEF64) $(DEBUG) $(CPPFLAGS64) $(INCLUDES) $<
    245                     
    246 $(OBJ64)/$(MODULE): $(MODULE_OBJ_64)
    247 	$(DTRACE64)
    248 	$(LINK64)
    249 	$(CTFMERGE64)
    250 
    251 # Define a setting for installations into the proto.  
    252 # If the uid = root, the user and group settings are provided to the 
    253 # install program.
    254 
    255 CONFFILEPERM   =	644
    256 PERMS          =        755
    257 MODULEUSER     =        root
    258 MODULEGRP      =        sys
    259 
    260 MORTAL_USER : sh = if [ "$LOGNAME" = "root" ]; \
    261 then \
    262 	echo "$(POUND_SIGN)"; \
    263 fi;
    264 
    265 ROOT_USER : sh = if [ "$LOGNAME" != "root" ]; \
    266 then \
    267 	echo "$(POUND_SIGN)"; \
    268 fi;
    269 
    270 # install targets
    271 
    272 $(MORTAL_USER)INSTALL_CMD       =       $(INSTALL) -s -m $(PERMS)
    273 $(ROOT_USER)INSTALL_CMD         =       $(INSTALL) -s -m $(PERMS) -u $(MODULEUSER) -g $(MODULEGRP)
    274 
    275 
    276 $(STAGING32)/$(CONFFILE) := PERMS = $(CONFFILEPERM)
    277 
    278 $(STAGING32)/$(CONFFILE) :  $(STAGING32) $(SRC_DIR)/$(CONFFILE)
    279 	$(INSTALL_CMD)  -f $(STAGING32) $(SRC_DIR)/$(CONFFILE)
    280  
    281 $(STAGING32)/$(MODULE) : $(OBJ32)/$(MODULE)
    282 	$(INSTALL_CMD) -f $(STAGING32) $(OBJ32)/$(MODULE)
    283 
    284 $(STAGING64)/$(MODULE) : $(OBJ64)/$(MODULE)
    285 	$(INSTALL_CMD) -f $(STAGING64) $(OBJ64)/$(MODULE)
    286 
    287 $(MISCMODULES:%=$(STAGINGMISC32)/%) : $(OBJ32)/$$(@F)
    288 	$(INSTALL_CMD) -f $(STAGINGMISC32) $(OBJ32)/$(@F)
    289 
    290 $(MISCMODULES:%=$(STAGINGMISC64)/%) : $(OBJ64)/$$(@F)
    291 	$(INSTALL_CMD) -f $(STAGINGMISC64) $(OBJ64)/$(@F)
    292 
    293 $(STAGING32)/$(LIBLINKS):     $(STAGING32)/$(DYNLIB)
    294 	$(RM) $(STAGING32)/$(LIBLINKS)
    295 	$(LN) -s $(DYNLIB) $(STAGING32)/$(LIBLINKS) 
    296 
    297 $(STAGING64)/$(LIBLINKS):     $(STAGING64)/$(DYNLIB)
    298 	$(RM) $(STAGING64)/$(LIBLINKS)
    299 	$(LN) -s $(DYNLIB) $(STAGING64)/$(LIBLINKS) 
    300 
    301 $(OBJ32)/$(LIBLINKS):	$(OBJ32)/$(DYNLIB)
    302 	$(RM) $(OBJ32)/$(LIBLINKS)
    303 	$(LN) -s $(DYNLIB) $(OBJ32)/$(LIBLINKS) 
    304 
    305 $(OBJ64)/$(LIBLINKS):	$(OBJ64)/$(DYNLIB)
    306 	$(RM) $(OBJ64)/$(LIBLINKS)
    307 	$(LN) -s $(DYNLIB) $(OBJ64)/$(LIBLINKS) 
    308 
    309 $(COMPONENTS): 
    310 	cd $(PROJAREA)/$@; pwd ; $(MAKE) all
    311 		
    312 $(COMPONENTS:%=%_installed): 
    313 	cd $(PROJAREA)/${@:%_installed=%}; pwd ; $(MAKE) install
    314 
    315 #
    316 #
    317 # Maintenance targets.
    318 #
    319 
    320 clean:
    321 	rm -rf $(CLEANFILES)
    322 
    323 clobber:
    324 	rm -rf $(CLOBBERFILES)
    325 
    326 nuke:
    327 	rm -rf $(NUKEFILES)
    328 
    329 # Packaging targets.
    330 #
    331 
    332 $(PKGAREA)/%: $(INSTALLPREQ)
    333 	@(cd $(PKGS)/$(@F) ; \
    334 	rm -rf $(MACH)$(BUILD_TYPE); mkdir -p $(MACH)$(BUILD_TYPE) ; \
    335 	if [ "$(LIC_PKG)" = $(@F) ] ; then \
    336 	  if [ -z "$(LIC_FILES)" ] ; then \
    337 	    filelist="" ; \
    338 	  else \
    339 	    filelist=`echo $(LIC_FILES)` ; \
    340 	  fi ; \
    341 	  for lic_file in $$filelist ; do \
    342 	    if [ ! -f $$lic_file ] ; then \
    343 	      echo "Missing license file(s) in "$$filelist ; \
    344 	      exit 1 ; \
    345 	    fi ; \
    346 	  done ; \
    347 	  cp $(LIC_FILES) ./$(MACH)$(BUILD_TYPE) ; \
    348 	fi ; \
    349 	cp `ls -F | grep -v /` ./$(MACH)$(BUILD_TYPE) ; \
    350 	if [ ! -f depend ] ; then  \
    351 	  cp $(PKGDEPEND) $(MACH)$(BUILD_TYPE)/depend ; \
    352 	fi ; \
    353 	cd $(MACH)$(BUILD_TYPE) ; \
    354 	$(SED) -f $(CPR_FILTER) copyright.tmpl > copyright ; \
    355 	for class_action in  $(CLASS_ACTIONS) ; do \
    356 	  if [ $$class_action != none ] ; then \
    357 	    clsactname=`basename $$class_action` ; \
    358 	    rm -f $$clsactname ; cp $$class_action $$clsactname ; \
    359 	  fi ; \
    360 	done  ; \
    361 	ksh $(BLDAWKPKGINFO) -m $(MACH) -p "$(RELEASE)/$(VERSION)" \
    362 	-o awk_pkginfo -v $(ONVERS) ; \
    363 	$(NAWK) -f awk_pkginfo pkginfo.tmpl > pkginfo ; \
    364 	$(PKGMK) -f prototype_$(MACH) -d $(PKGAREA) -r $(PROTO_ROOT) -o $(@F) )
    365 
    366 #
    367 # End package targets
    368 #
    369 
    370 #
    371 # MDB Macro targets
    372 #
    373 
    374 $(MDBMODS32)	: $(OBJ32) $(MDBMODS32:$(OBJ32)/%.so=$(MDB_SRC_DIR)/%.c)
    375 	$(CC) $(MDBMODCFLAGS) $(MDBMODCPPFLAGS) $(MACROINCLUDES) \
    376 	    -c -o $(OBJ32)/$(@F:%.so=%.o) $(MDB_SRC_DIR)/$(@F:%.so=%.c)
    377 	$(CC) $(MDBMODCFLAGS) -G -o $(OBJ32)/$(@F) $(OBJ32)/$(@F:%.so=%.o) \
    378 	    $(MDBMODLDFLAGS)
    379 
    380 $(STAGINGMDB32)/%: $(STAGINGMDB32) $(OBJ32)/%
    381 	$(INSTALL) -s -m 644 -f $(STAGINGMDB32) $(OBJ32)/$(@F)
    382 
    383 $(MDBMODS64)	: $(OBJ64) $(MDBMODS64:$(OBJ64)/%.so=$(MDB_SRC_DIR)/%.c)
    384 	$(CC) $(MDBMODCFLAGS64) $(MDBMODCPPFLAGS64) $(MACROINCLUDES) \
    385 	    -c -o $(OBJ64)/$(@F:%.so=%.o) $(MDB_SRC_DIR)/$(@F:%.so=%.c)
    386 	$(CC) $(MDBMODCFLAGS64) -G -o $(OBJ64)/$(@F) \
    387 	    $(OBJ64)/$(@F:%.so=%.o) $(MDBMODLDFLAGS64)
    388 
    389 $(STAGINGMDB64)/%: $(STAGINGMDB64) $(OBJ64)/%
    390 	$(INSTALL) -s -m 644 -f $(STAGINGMDB64) $(OBJ64)/$(@F)
    391 
    392 #
    393 # End MDB macros
    394 #
    395 
    396 #
    397 # Dtrace
    398 #
    399 $(DTRACE_HEADER):     src/$(DTRACE_PROVIDER)
    400 	$(DTRACE) -h -s $? -o $@
    401 
    402 #
    403 include $(PROJAREA)/Makefile.help
    404 	
    405