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