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