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