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.
8 # You can obtain a copy of the license at usr/src/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.
13 # When distributing Covered Code, include this CDDL HEADER in each
14 # file and include the License file at usr/src/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]
23 # Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
24 # Copyright (c) 2012 by Delphix. All rights reserved.
28 # Makefile for system source
30 # include global definitions
31 include Makefile.master
33 # the Targetdirs file is the AT&T target.dirs file in a makefile format.
34 # it defines TARGETDIRS and ROOTDIRS.
37 COMMON_SUBDIRS
= uts lib cmd ucblib ucbcmd psm man
test
42 # sparc needs to build stand before psm
44 $(SPARC_BLD
)psm
: stand
46 SUBDIRS
= $(COMMON_SUBDIRS
) $($(MACH
)_SUBDIRS
)
48 HDRSUBDIRS
= uts head lib cmd
50 # UCB headers are bug-for-bug compatible and not checkable against the header
53 CHKHDRSUBDIRS
= head uts lib
56 # Headers that can be built in parallel
58 PARALLEL_HEADERS
= sysheaders userheaders libheaders cmdheaders
61 # Directories that can be built in parallel
63 PARALLEL_DIRS
= uts lib man
65 # The check target also causes smf(5) service manifests to be validated.
68 MSGSUBDIRS
= cmd ucbcmd lib
77 MSGDDIRS
= $(DOMAINS
:%=$(MSGROOT
)/%)
78 MSGDIRS
= $(MSGROOT
) $(MSGDDIRS
) $(MSGROOT
)/LC_TIME
80 all all_xmod
:= TARGET
= all
81 install install_xmod
:= TARGET
= install
82 install1
:= TARGET
= install
83 install2
:= TARGET
= install
84 install_h
:= TARGET
= install_h
85 clean := TARGET
= clean
86 clobber := TARGET
= clobber
87 check := TARGET
= check
92 # Note: install does not cause a build in pkg. To build packages,
93 # cd pkg and do a 'make install'
96 all: mapfiles closedbins sgs .WAIT
$(SUBDIRS
) pkg
99 # The _msg build is a two-step process. First, the _msg dependency
100 # causes recursive makes in $(MSGSUBDIRS), which stages raw message
101 # files in $(ROOT)/catalog. Second, the action from the install
102 # target rule causes those messages to be post-processed from where
103 # they were staged in $(ROOT)/catalog, and the results placed into the
106 # The stage-licenses target causes the license files needed for
107 # packaging to be pulled from $(SRC) and $(CLOSED) and staged in
110 install: install1 install2 _msg stage-licenses
111 @cd msg
; pwd
; $(MAKE
) _msg
112 @
rm -rf
"$(ROOT)/catalog"
114 stage-licenses
: install2
115 @cd pkg
; pwd
; $(MAKE
) stage-licenses
117 install1
: mapfiles closedbins sgs
119 install2
: install1
$(SUBDIRS
)
121 _msg
: _msgdirs rootdirs install2 FRC
122 @for m in
$(MSGSUBDIRS
); do \
123 cd
$$m; pwd
; $(MAKE
) _msg
; cd ..
; \
127 @cd common
/mapfiles
; pwd
; $(MAKE
) install
129 clean clobber: $(SUBDIRS
) head pkg
131 closedbins
: bldtools
$(ROOTDIRS
) FRC
132 @CLOSED_ROOT
="$$ON_CLOSED_BINS/root_$(MACH)$${RELEASE_BUILD+-nd}"; \
133 if
[ "$$CLOSED_IS_PRESENT" = no
]; then \
134 if
[ ! -d
"$$CLOSED_ROOT" ]; then \
135 $(ECHO
) "Error: if closed sources are not present," \
136 "ON_CLOSED_BINS must point to closed binaries."; \
137 $(ECHO
) "root_$(MACH)$${RELEASE_BUILD+-nd} is not" \
138 "present in $$ON_CLOSED_BINS."; \
141 $(ECHO
) "Copying closed binaries from $$CLOSED_ROOT"; \
143 $(TAR
) cfX
- $(CODEMGR_WS
)/exception_lists
/closed-bins .
) | \
144 (cd
$(ROOT
); $(TAR
) xBpf
-); \
145 ( cd
$(ROOT
); $(CTFSTRIP
) $$(cd
$$CLOSED_ROOT; $(FIND
) \
146 .
/kernel .
/usr
/kernel .
/platform
/*/kernel
-type f
-a
-perm
-u
+x | \
147 $(EGREP
) -vf
$(CODEMGR_WS
)/exception_lists
/closed-bins
) ); \
151 # Declare what parts can be built in parallel
152 # DUMMY at the end is used in case macro expansion produces an empty string to
153 # prevent everything going in parallel
155 .PARALLEL
: $(PARALLEL_HEADERS
) DUMMY
156 .PARALLEL
: $(PARALLEL_DIRS
) DUMMY
158 $(SUBDIRS
) head pkg
: FRC
159 @cd
$@
; pwd
; $(MAKE
) $(TARGET
)
161 # librpcsvc has a dependency on headers installed by
162 # userheaders, hence the .WAIT before libheaders.
163 sgs
: rootdirs .WAIT sysheaders userheaders .WAIT \
164 libheaders cmdheaders
167 # Top-level setup target to setup the development environment that includes
168 # headers, tools and generated mapfiles. For open-only builds (i.e.: source
169 # trees w/o usr/closed), this also depends on the closedbins target (above)
170 # in order to properly seed the proto area. Note, although the tools are
171 # dependent on a number of constant mapfiles, the tools themselves are
172 # required to build the generated mapfiles.
174 setup
: closedbins bldtools sgs mapfiles
177 @cd tools
; pwd
; $(MAKE
) install
179 # /var/mail/:saved is a special case because of the colon in the name.
181 rootdirs
: $(ROOTDIRS
)
182 $(INS
) -d
-m
775 $(ROOT
)/var
/mail
/:saved
185 $(MAKE
) -f Makefile.lint
189 $(ROOTDIRS
) $(MSGDIRS
):
193 @cd head
; pwd
; $(MAKE
) install_h
196 @cd lib
; pwd
; $(MAKE
) install_h
199 @cd uts
; pwd
; $(MAKE
) install_h
202 @cd cmd
/fm
; pwd
; $(MAKE
) install_h
203 @cd cmd
/mdb
; pwd
; $(MAKE
) install_h
205 # each xmod target depends on a corresponding MACH-specific pseudotarget
206 # before doing common xmod work
208 all_xmod install_xmod
: $$@_
$(MACH
)
209 @cd uts
/common
/sys
; pwd
; $(MAKE
) svvs_h
211 all_xmod_sparc install_xmod_sparc
: FRC
212 @cd uts
/sparc
; pwd
; \
213 $(MAKE
) TARGET
=$(TARGET
) svvs pm wsdrv
215 all_xmod_i386 install_xmod_i386
: FRC
216 @cd uts
/i86
; pwd
; $(MAKE
) TARGET
=$(TARGET
) svvs
218 check: $(CHKHDRSUBDIRS
) $(CHKMFSTSUBDIRS
)
221 # Cross-reference customization: skip all of the subdirectories that
222 # don't contain actual source code.
224 $(CLOSED_BUILD
)XRDIRS
+= ..
/closed
225 XRPRUNE
= pkg prototypes xmod
226 XRINCDIRS
= uts
/common head ucbhead
227 $(CLOSED_BUILD
)XRINCDIRS
= uts
/common ..
/closed
/uts
/common head ucbhead
234 # EXPORT DELETE START
236 XMOD_DELETE_FILES
:sh
= cat xmod
/xmod_files
239 @cd
$(CLOSED
)/cmd
/cmd-inet
/usr.lib
/in.iked
; pwd
; $(MAKE
) EXPORT_SRC
240 @cd
$(CLOSED
)/cmd
/cmd-inet
/usr.lib
/ike-certutils
; pwd
; \
242 @cd cmd
/cmd-inet
/usr.sbin
; pwd
; $(MAKE
) EXPORT_SRC
243 @cd
$(CLOSED
)/cmd
/cmd-crypto
/etc
; pwd
; $(MAKE
) EXPORT_SRC
244 @cd cmd
/crypt
; pwd
; $(MAKE
) EXPORT_SRC
245 @cd cmd
/gss
/gssd
; pwd
; $(MAKE
) EXPORT_SRC
246 @cd cmd
/krb5
/kadmin
; pwd
; $(MAKE
) EXPORT_SRC
247 @cd cmd
/sendmail
/src
; pwd
; $(MAKE
) EXPORT_SRC
248 @cd common
/crypto
/aes
; pwd
; $(MAKE
) EXPORT_SRC
249 @cd common
/crypto
/arcfour
; pwd
; $(MAKE
) EXPORT_SRC
250 @cd common
/crypto
/blowfish
; pwd
; $(MAKE
) EXPORT_SRC
251 @cd common
/crypto
/des
; pwd
; $(MAKE
) EXPORT_SRC
252 @cd common
/crypto
/rsa
; pwd
; $(MAKE
) EXPORT_SRC
253 @cd lib
/crypt_modules
/bsdbf
; pwd
; $(MAKE
) EXPORT_SRC
254 @cd lib
/gss_mechs
/mech_dummy
; pwd
; $(MAKE
) EXPORT_SRC
255 @cd lib
/gss_mechs
/mech_dh
/backend
; pwd
; $(MAKE
) EXPORT_SRC
256 @cd lib
/gss_mechs
/mech_krb5
; pwd
; $(MAKE
) EXPORT_SRC
257 @cd lib
/gss_mechs
/mech_spnego
; pwd
; $(MAKE
) EXPORT_SRC
258 @cd lib
/libcrypt
; pwd
; $(MAKE
) EXPORT_SRC
259 @cd lib
/libgss
; pwd
; $(MAKE
) EXPORT_SRC
260 @cd
$(CLOSED
)/lib
/libike
; pwd
; $(MAKE
) EXPORT_SRC
261 @cd lib
/libnsl
; pwd
; $(MAKE
) EXPORT_SRC
262 @cd lib
/pkcs11
/pkcs11_softtoken
/common
; pwd
; $(MAKE
) EXPORT_SRC
263 @cd lib
/libsldap
; pwd
; $(MAKE
) EXPORT_SRC
264 @cd lib
/libsasl
; pwd
; $(MAKE
) EXPORT_SRC
265 @cd lib
/sasl_plugins
; pwd
; $(MAKE
) EXPORT_SRC
266 @cd lib
/pam_modules
/krb5
; pwd
; $(MAKE
) EXPORT_SRC
267 @cd psm
/stand
/boot
; pwd
; $(MAKE
) EXPORT_SRC
268 @cd uts
/common
/crypto
/io
; pwd
; $(MAKE
) EXPORT_SRC
269 @cd uts
/common
/des
; pwd
; $(MAKE
) EXPORT_SRC
270 @cd uts
/common
/rpc
; pwd
; $(MAKE
) EXPORT_SRC
271 @cd uts
/common
/sys
; pwd
; $(MAKE
) EXPORT_SRC
272 @cd uts
/common
/gssapi
/include; pwd
; $(MAKE
) EXPORT_SRC
273 @cd uts
/common
/gssapi
; pwd
; $(MAKE
) EXPORT_SRC
274 @cd uts
/common
/gssapi
/mechs
/dummy
; pwd
; $(MAKE
) EXPORT_SRC
275 @cd uts
/common
/gssapi
/mechs
/krb5
; pwd
; $(MAKE
) EXPORT_SRC
276 @cd uts
/common
; pwd
; $(MAKE
) EXPORT_SRC
277 @cd uts
/sparc
; pwd
; $(MAKE
) EXPORT_SRC
278 @cd
$(CLOSED
)/uts
/sun4u
/forthdebug
; pwd
; $(MAKE
) EXPORT_SRC
279 @cd
$(CLOSED
)/uts
/sun4v
/forthdebug
; pwd
; $(MAKE
) EXPORT_SRC
280 @cd uts
/intel
; pwd
; $(MAKE
) EXPORT_SRC
281 @cd uts
/sun4u
; pwd
; $(MAKE
) EXPORT_SRC
282 @cd
$(CLOSED
)/uts
/sun4v
/io
/ncp
; pwd
; $(MAKE
) EXPORT_SRC
283 @cd
$(CLOSED
)/uts
/sun4v
/io
/n2cp
; pwd
; $(MAKE
) EXPORT_SRC
284 @cd pkg
; pwd
; $(MAKE
) EXPORT_SRC
285 $(RM
) -r
$(XMOD_DELETE_FILES
)
287 sed
-e
"/^# EXPORT DELETE START/,/^# EXPORT DELETE END/d" \
288 < Targetdirs
> Targetdirs
+
289 $(MV
) Targetdirs
+ Targetdirs
290 $(CHMOD
) 444 Targetdirs
292 sed
-e
"/^# EXPORT DELETE START/,/^# EXPORT DELETE END/d" \
293 < Makefile
> Makefile
+
294 $(MV
) Makefile
+ Makefile
295 $(CHMOD
) 444 Makefile
296 $(RM
) Makefile.master
+
297 sed
-e
"/^# EXPORT DELETE START/,/^# EXPORT DELETE END/d" \
298 < Makefile.master
> Makefile.master
+
299 $(MV
) Makefile.master
+ Makefile.master
300 $(CHMOD
) 444 Makefile.master
303 @cd
$(CLOSED
)/cmd
/cmd-crypto
/etc
; pwd
; $(MAKE
) CRYPT_SRC
304 @cd
$(CLOSED
)/cmd
/cmd-inet
/usr.lib
/in.iked
; pwd
; $(MAKE
) CRYPT_SRC
305 @cd
$(CLOSED
)/cmd
/cmd-inet
/usr.lib
/ike-certutils
; pwd
; \
307 @cd lib
/crypt_modules
/bsdbf
; pwd
; $(MAKE
) CRYPT_SRC
308 @cd lib
/gss_mechs
/mech_dummy
; pwd
; $(MAKE
) CRYPT_SRC
309 @cd lib
/gss_mechs
/mech_dh
/backend
; pwd
; $(MAKE
) CRYPT_SRC
310 @cd lib
/gss_mechs
/mech_krb5
; pwd
; $(MAKE
) CRYPT_SRC
311 @cd lib
/gss_mechs
/mech_spnego
; pwd
; $(MAKE
) CRYPT_SRC
312 @cd
$(CLOSED
)/lib
/libike
; pwd
; $(MAKE
) CRYPT_SRC
313 @cd lib
/libnsl
; pwd
; $(MAKE
) CRYPT_SRC
314 @cd lib
/libsasl
; pwd
; $(MAKE
) CRYPT_SRC
315 @cd lib
/sasl_plugins
; pwd
; $(MAKE
) CRYPT_SRC
316 @cd lib
/pam_modules
/krb5
; pwd
; $(MAKE
) CRYPT_SRC
317 @cd uts
/common
/gssapi
; pwd
; $(MAKE
) CRYPT_SRC
318 @cd uts
/common
/gssapi
/include; pwd
; $(MAKE
) CRYPT_SRC
319 @cd uts
/common
/gssapi
/mechs
/dummy
; pwd
; $(MAKE
) CRYPT_SRC
320 @cd uts
/common
/gssapi
/mechs
/krb5
; pwd
; $(MAKE
) CRYPT_SRC
322 sed
-e
"/^# EXPORT DELETE START/,/^# EXPORT DELETE END/d" \
323 < Makefile
> Makefile
+
324 $(MV
) Makefile
+ Makefile
325 $(CHMOD
) 444 Makefile
326 $(RM
) Makefile.master
+
327 sed
-e
"/^# EXPORT DELETE START/,/^# EXPORT DELETE END/d" \
328 < Makefile.master
> Makefile.master
+
329 $(MV
) Makefile.master
+ Makefile.master
330 $(CHMOD
) 444 Makefile.master
335 @cd cmd
/login
; pwd
; $(MAKE
) ONC_PLUS
336 @cd uts
; pwd
; $(MAKE
) ONC_PLUS
339 # Targets for reporting compiler versions; nightly uses these.
343 @if
$($(MACH
)_CC
) -_versions
>/dev
/null
2>/dev
/null
; then \
344 $(ECHO
) 32-bit compiler
; \
345 $(ECHO
) $($(MACH
)_CC
); \
346 $($(MACH
)_CC
) -_versions
2>&1 | \
347 $(EGREP
) '^(cw|cc|gcc|primary|shadow)'; \
349 __COMPILER
=`$($(MACH)_CC) -_compiler 2>/dev/null || $(TRUE)`;\
350 if
[ -z
"$$__COMPILER" ]; then \
351 $(ECHO
) No
32-bit compiler found
; \
354 $(ECHO
) 32-bit compiler
; \
355 $(ECHO
) $($(MACH
)_CC
); \
356 $(ECHO
) $$__COMPILER; \
357 $($(MACH
)_CC
) -V
2>&1 | head
-1; \
362 @if
$($(MACH64
)_CC
) -_versions
>/dev
/null
2>/dev
/null
; then \
363 $(ECHO
) 64-bit compiler
; \
364 $(ECHO
) $($(MACH64
)_CC
); \
365 $($(MACH64
)_CC
) -_versions
2>&1 | \
366 $(EGREP
) '^(cw|cc|gcc|primary|shadow)'; \
368 __COMPILER
=`$($(MACH64)_CC) -_compiler 2>/dev/null || $(TRUE)`;\
369 if
[ -z
"$$__COMPILER" ]; then \
370 $(ECHO
) No
64-bit compiler found
; \
373 $(ECHO
) 64-bit compiler
; \
374 $(ECHO
) $($(MACH64
)_CC
); \
375 $(ECHO
) $$__COMPILER; \
376 $($(MACH64
)_CC
) -V
2>&1 | head
-1; \
381 @if
[ -x
"$(JAVAC)" ]; then \
383 $(JAVA_ROOT
)/bin
/java
-fullversion
2>&1 | head
-1; \
385 $(ECHO
) No Java compiler found
; \