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.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