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