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