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 2007 Sun Microsystems, Inc.  All rights reserved.
  23 # Use is subject to license terms.
  24 #
  25 #ident  "@(#)Makefile.common    1.37    07/11/15 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 $(STAGING32)/$(LIBLINKS):     $(STAGING32)/$(DYNLIB)
 288         $(RM) $(STAGING32)/$(LIBLINKS)
 289         $(LN) -s $(DYNLIB) $(STAGING32)/$(LIBLINKS) 
 290 
 291 $(STAGING64)/$(LIBLINKS):     $(STAGING64)/$(DYNLIB)
 292         $(RM) $(STAGING64)/$(LIBLINKS)
 293         $(LN) -s $(DYNLIB) $(STAGING64)/$(LIBLINKS) 
 294 
 295 $(OBJ32)/$(LIBLINKS):   $(OBJ32)/$(DYNLIB)
 296         $(RM) $(OBJ32)/$(LIBLINKS)
 297         $(LN) -s $(DYNLIB) $(OBJ32)/$(LIBLINKS) 
 298 
 299 $(OBJ64)/$(LIBLINKS):   $(OBJ64)/$(DYNLIB)
 300         $(RM) $(OBJ64)/$(LIBLINKS)
 301         $(LN) -s $(DYNLIB) $(OBJ64)/$(LIBLINKS) 
 302 
 303 $(COMPONENTS): 
 304         cd $(PROJAREA)/$@; pwd ; $(MAKE) all
 305                 
 306 $(COMPONENTS:%=%_installed): 
 307         cd $(PROJAREA)/${@:%_installed=%}; pwd ; $(MAKE) install
 308 
 309 #
 310 #
 311 # Maintenance targets.
 312 #
 313 
 314 clean:
 315         rm -rf $(CLEANFILES)
 316 
 317 clobber:
 318         rm -rf $(CLOBBERFILES)
 319 
 320 nuke:
 321         rm -rf $(NUKEFILES)
 322 
 323 # Packaging targets.
 324 #
 325 
 326 $(PKGAREA)/%: $(INSTALLPREQ)
 327         @(cd $(PKGS)/$(@F) ; \
 328         rm -rf $(MACH)$(BUILD_TYPE); mkdir -p $(MACH)$(BUILD_TYPE) ; \
 329         cp $(COPYRIGHT) $(MACH)$(BUILD_TYPE)/copyright ; \
 330         if [ "$(LIC_PKG)" = $(@F) ] ; then \
 331           if [ -z "$(LIC_FILES)" ] ; then \
 332             filelist="" ; \
 333           else \
 334             filelist=`echo $(LIC_FILES)` ; \
 335           fi ; \
 336           for lic_file in $$filelist ; do \
 337             if [ ! -f $$lic_file ] ; then \
 338               echo "Missing license file(s) in "$$filelist ; \
 339               exit 1 ; \
 340             fi ; \
 341           done ; \
 342           cp $(LIC_FILES) ./$(MACH)$(BUILD_TYPE) ; \
 343         fi ; \
 344         cp `ls -F | grep -v /` ./$(MACH)$(BUILD_TYPE) ; \
 345         if [ ! -f SCCS/s.depend ] ; then  \
 346           rm -f $(MACH)$(BUILD_TYPE)/depend ; \
 347           cp $(PKGDEPEND) $(MACH)$(BUILD_TYPE)/depend ; \
 348         fi ; \
 349         cd $(MACH)$(BUILD_TYPE) ; \
 350         for class_action in  $(CLASS_ACTIONS) ; do \
 351           if [ $$class_action != none ] ; then \
 352             clsactname=`basename $$class_action` ; \
 353             rm -f $$clsactname ; cp $$class_action $$clsactname ; \
 354           fi ; \
 355         done  ; \
 356         ksh $(BLDAWKPKGINFO) -m $(MACH) -p "$(RELEASE)/$(VERSION)" \
 357         -o awk_pkginfo -v $(ONVERS) ; \
 358         $(NAWK) -f awk_pkginfo pkginfo.tmpl > pkginfo ; \
 359         $(PKGMK) -f prototype_$(MACH) -d $(PKGAREA) -r $(PROTO_ROOT) -o $(@F) )
 360 
 361 #
 362 # End package targets
 363 #
 364 
 365 #
 366 # MDB Macro targets
 367 #
 368 
 369 $(MDBMODS32)    : $(OBJ32) $(MDBMODS32:$(OBJ32)/%.so=$(MDB_SRC_DIR)/%.c)
 370         $(CC) $(MDBMODCFLAGS) $(MDBMODCPPFLAGS) $(MACROINCLUDES) \
 371             -c -o $(OBJ32)/$(@F:%.so=%.o) $(MDB_SRC_DIR)/$(@F:%.so=%.c)
 372         $(CC) $(MDBMODCFLAGS) -G -o $(OBJ32)/$(@F) $(OBJ32)/$(@F:%.so=%.o) \
 373             $(MDBMODLDFLAGS)
 374 
 375 $(STAGINGMDB32)/%: $(STAGINGMDB32) $(OBJ32)/%
 376         $(INSTALL) -s -m 644 -f $(STAGINGMDB32) $(OBJ32)/$(@F)
 377 
 378 $(MDBMODS64)    : $(OBJ64) $(MDBMODS64:$(OBJ64)/%.so=$(MDB_SRC_DIR)/%.c)
 379         $(CC) $(MDBMODCFLAGS64) $(MDBMODCPPFLAGS64) $(MACROINCLUDES) \
 380             -c -o $(OBJ64)/$(@F:%.so=%.o) $(MDB_SRC_DIR)/$(@F:%.so=%.c)
 381         $(CC) $(MDBMODCFLAGS64) -G -o $(OBJ64)/$(@F) \
 382             $(OBJ64)/$(@F:%.so=%.o) $(MDBMODLDFLAGS64)
 383 
 384 $(STAGINGMDB64)/%: $(STAGINGMDB64) $(OBJ64)/%
 385         $(INSTALL) -s -m 644 -f $(STAGINGMDB64) $(OBJ64)/$(@F)
 386 
 387 #
 388 # End MDB macros
 389 #
 390 #
 391 # Dtrace
 392 #
 393 $(DTRACE_HEADER):     src/$(DTRACE_PROVIDER)
 394         $(DTRACE) -h -s $? -o $@
 395 
 396 include $(PROJAREA)/Makefile.help