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]
22 # Copyright 2008 Sun Microsystems, Inc. All rights reserved.
23 # Use is subject to license terms.
25 # Makefile for system source
27 # include global definitions
28 include Makefile.master
30 # the Targetdirs file is the AT&T target.dirs file in a makefile format.
31 # it defines TARGETDIRS and ROOTDIRS.
34 COMMON_SUBDIRS
= uts lib cmd ucblib ucbcmd
37 # sparc needs to build both stand and psm, in that order
38 # x86 needs to build psm and GRUB
40 sparc_SUBDIRS
= stand psm
41 i386_SUBDIRS
= psm grub
43 SUBDIRS
= $(COMMON_SUBDIRS
) $($(MACH
)_SUBDIRS
)
45 HDRSUBDIRS
= uts head lib cmd ucbhead
47 # UCB headers are bug-for-bug compatible and not checkable against the header
50 CHKHDRSUBDIRS
= head uts lib
53 # Headers that can be built in parallel
55 PARALLEL_HEADERS
= sysheaders userheaders libheaders ucbheaders cmdheaders
58 # Directories that can be built in parallel
60 PARALLEL_DIRS
= uts lib
62 # The check target also causes smf(5) service manifests to be validated.
65 MSGSUBDIRS
= cmd ucbcmd lib
74 MSGDDIRS
= $(DOMAINS
:%=$(MSGROOT
)/%)
75 MSGDIRS
= $(MSGROOT
) $(MSGDDIRS
) $(MSGROOT
)/LC_TIME
77 all all_xmod
:= TARGET
= all
78 install install_xmod
:= TARGET
= install
79 install_h
:= TARGET
= install_h
80 clean := TARGET
= clean
81 clobber := TARGET
= clobber
82 check := TARGET
= check
89 # Note: install only builds the all target for the pkgdefs
90 # directory. We are not yet ready to have an install
91 # build create 'packages' also. To build packages
92 # cd pkgdefs and do a 'make install'
94 all: mapfiles closedbins sgs .WAIT
$(SUBDIRS
) pkg_all
95 install: mapfiles closedbins sgs .WAIT
$(SUBDIRS
) pkg_all .WAIT _msg
96 @cd pkgdefs
/SUNW0on
; pwd
; $(MAKE
) _msg
97 @
rm -rf
"$(ROOT)/catalog"
100 @cd common
/mapfiles
; pwd
; $(MAKE
) install
102 clean clobber: $(SUBDIRS
) head pkgdefs
103 _msg
: _msgdirs rootdirs
$(MSGSUBDIRS
)
105 # for a complete build from scratch
106 crankturn
: sgs uts pkg_all
107 @cd lib
; pwd
; $(MAKE
) install
108 @cd cmd
; pwd
; $(MAKE
) all
109 @cd ucblib
; pwd
; $(MAKE
) install
110 @cd ucbcmd
; pwd
; $(MAKE
) all
113 @cd pkgdefs
; pwd
; $(MAKE
) all
116 # target for building a proto area for reference via the ROOT macro
118 protolibs
: rootlibs ucblibs
120 # build all ucb libraries
123 @cd ucblib
; pwd
; $(MAKE
) install
125 # Base subset of rootproto, excluding ucb libraries
128 @cd lib
; pwd
; $(MAKE
) install
130 closedbins
: FRC
$(ROOTDIRS
)
131 @CLOSED_ROOT
="$$ON_CLOSED_BINS/root_$(MACH)$${RELEASE_BUILD+-nd}"; \
132 if
[ "$$CLOSED_IS_PRESENT" = no
]; then \
133 if
[ ! -d
"$$CLOSED_ROOT" ]; then \
134 $(ECHO
) "Error: if closed sources are not present," \
135 "ON_CLOSED_BINS must point to closed binaries."; \
136 $(ECHO
) "root_$(MACH)$${RELEASE_BUILD+-nd} is not" \
137 "present in $$ON_CLOSED_BINS."; \
140 $(ECHO
) "Copying closed binaries from $$CLOSED_ROOT"; \
141 (cd
$$CLOSED_ROOT; tar cf
- .
) | \
142 (cd
$(ROOT
); tar xBpf
-); \
146 # Declare what parts can be build in parallel
147 # DUMMY at the end is used in case macro expansion produces an empty string to
148 # prevent everything going in parallel
150 .PARALLEL
: $(PARALLEL_HEADERS
) DUMMY
151 .PARALLEL
: $(PARALLEL_DIRS
) DUMMY
153 $(SUBDIRS
) head ucbhead pkgdefs
: FRC
154 @cd
$@
; pwd
; $(MAKE
) $(TARGET
)
156 # librpcsvc has a dependency on headers installed by
157 # userheaders, hence the .WAIT before libheaders.
158 sgs
: rootdirs .WAIT sysheaders userheaders .WAIT \
159 libheaders ucbheaders cmdheaders
162 # Top-level setup target to setup the development environment that includes
163 # headers, tools and generated mapfiles. For open-only builds (i.e.: source
164 # trees w/o usr/closed), this also depends on the closedbins target (above)
165 # in order to properly seed the proto area. Note, although the tools are
166 # dependent on a number of constant mapfiles, the tools themselves are
167 # required to build the generated mapfiles.
169 setup
: bldtools mapfiles
171 bldtools
: closedbins sgs
172 @cd tools
; pwd
; $(MAKE
) install
174 # /var/mail/:saved is a special case because of the colon in the name.
176 rootdirs
: $(ROOTDIRS
)
177 $(INS
) -d
-m
775 $(ROOT
)/var
/mail
/:saved
178 $(CH
)$(CHOWN
) root
$(ROOT
)/var
/mail
/:saved
179 $(CH
)$(CHGRP
) mail
$(ROOT
)/var
/mail
/:saved
182 $(MAKE
) -f Makefile.lint
186 $(ROOTDIRS
) $(MSGDIRS
):
190 @cd head
; pwd
; $(MAKE
) install_h
193 @cd lib
; pwd
; $(MAKE
) install_h
196 @cd uts
; pwd
; $(MAKE
) install_h
199 @cd ucbhead
; 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
= pkgdefs 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 cmd
/xntpd
; pwd
; $(MAKE
) EXPORT_SRC
249 @cd common
/crypto
/aes
; pwd
; $(MAKE
) EXPORT_SRC
250 @cd common
/crypto
/arcfour
; pwd
; $(MAKE
) EXPORT_SRC
251 @cd common
/crypto
/blowfish
; pwd
; $(MAKE
) EXPORT_SRC
252 @cd common
/crypto
/des
; pwd
; $(MAKE
) EXPORT_SRC
253 @cd common
/crypto
/rsa
; pwd
; $(MAKE
) EXPORT_SRC
254 @cd lib
/crypt_modules
/bsdbf
; pwd
; $(MAKE
) EXPORT_SRC
255 @cd lib
/gss_mechs
/mech_dummy
; pwd
; $(MAKE
) EXPORT_SRC
256 @cd lib
/gss_mechs
/mech_dh
/backend
; pwd
; $(MAKE
) EXPORT_SRC
257 @cd lib
/gss_mechs
/mech_krb5
; pwd
; $(MAKE
) EXPORT_SRC
258 @cd lib
/gss_mechs
/mech_spnego
; pwd
; $(MAKE
) EXPORT_SRC
259 @cd lib
/libcrypt
; pwd
; $(MAKE
) EXPORT_SRC
260 @cd lib
/libgss
; pwd
; $(MAKE
) EXPORT_SRC
261 @cd
$(CLOSED
)/lib
/libike
; pwd
; $(MAKE
) EXPORT_SRC
262 @cd lib
/libnsl
; pwd
; $(MAKE
) EXPORT_SRC
263 @cd lib
/pkcs11
/pkcs11_softtoken
/common
; pwd
; $(MAKE
) EXPORT_SRC
264 @cd lib
/libsldap
; pwd
; $(MAKE
) EXPORT_SRC
265 @cd lib
/libsasl
; pwd
; $(MAKE
) EXPORT_SRC
266 @cd lib
/sasl_plugins
; pwd
; $(MAKE
) EXPORT_SRC
267 @cd
$(CLOSED
)/lib
/smartcard
; pwd
; $(MAKE
) EXPORT_SRC
268 @cd lib
/pam_modules
/krb5
; pwd
; $(MAKE
) EXPORT_SRC
269 @cd lib
/udapl
; pwd
; $(MAKE
) EXPORT_SRC
270 @cd lib
/libresolv2
; pwd
; $(MAKE
) EXPORT_SRC
271 @cd psm
/stand
/boot
; pwd
; $(MAKE
) EXPORT_SRC
272 @cd uts
/common
/crypto
/io
; pwd
; $(MAKE
) EXPORT_SRC
273 @cd uts
/common
/des
; pwd
; $(MAKE
) EXPORT_SRC
274 @cd uts
/common
/rpc
; pwd
; $(MAKE
) EXPORT_SRC
275 @cd uts
/common
/sys
; pwd
; $(MAKE
) EXPORT_SRC
276 @cd uts
/common
/gssapi
/include; pwd
; $(MAKE
) EXPORT_SRC
277 @cd uts
/common
/gssapi
; pwd
; $(MAKE
) EXPORT_SRC
278 @cd uts
/common
/gssapi
/mechs
/dummy
; pwd
; $(MAKE
) EXPORT_SRC
279 @cd uts
/common
/gssapi
/mechs
/krb5
; pwd
; $(MAKE
) EXPORT_SRC
280 @cd uts
/common
; pwd
; $(MAKE
) EXPORT_SRC
281 @cd uts
/sparc
; pwd
; $(MAKE
) EXPORT_SRC
282 @cd
$(CLOSED
)/uts
/sun4u
/forthdebug
; pwd
; $(MAKE
) EXPORT_SRC
283 @cd
$(CLOSED
)/uts
/sun4v
/forthdebug
; pwd
; $(MAKE
) EXPORT_SRC
284 @cd uts
/intel
; pwd
; $(MAKE
) EXPORT_SRC
285 @cd uts
/sun4u
; pwd
; $(MAKE
) EXPORT_SRC
286 @cd
$(CLOSED
)/uts
/sun4v
/io
/ncp
; pwd
; $(MAKE
) EXPORT_SRC
287 @cd pkgdefs
; pwd
; $(MAKE
) EXPORT_SRC
288 $(RM
) -r
$(XMOD_DELETE_FILES
)
290 sed
-e
"/^# EXPORT DELETE START/,/^# EXPORT DELETE END/d" \
291 < Targetdirs
> Targetdirs
+
292 $(MV
) Targetdirs
+ Targetdirs
293 $(CHMOD
) 444 Targetdirs
295 sed
-e
"/^# EXPORT DELETE START/,/^# EXPORT DELETE END/d" \
296 < Makefile
> Makefile
+
297 $(MV
) Makefile
+ Makefile
298 $(CHMOD
) 444 Makefile
299 $(RM
) Makefile.master
+
300 sed
-e
"/^# EXPORT DELETE START/,/^# EXPORT DELETE END/d" \
301 < Makefile.master
> Makefile.master
+
302 $(MV
) Makefile.master
+ Makefile.master
303 $(CHMOD
) 444 Makefile.master
306 @cd
$(CLOSED
)/cmd
/cmd-crypto
/etc
; pwd
; $(MAKE
) CRYPT_SRC
307 @cd
$(CLOSED
)/cmd
/cmd-inet
/usr.lib
/in.iked
; pwd
; $(MAKE
) CRYPT_SRC
308 @cd
$(CLOSED
)/cmd
/cmd-inet
/usr.lib
/ike-certutils
; pwd
; \
310 @cd lib
/crypt_modules
/bsdbf
; pwd
; $(MAKE
) CRYPT_SRC
311 @cd lib
/gss_mechs
/mech_dummy
; pwd
; $(MAKE
) CRYPT_SRC
312 @cd lib
/gss_mechs
/mech_dh
/backend
; pwd
; $(MAKE
) CRYPT_SRC
313 @cd lib
/gss_mechs
/mech_krb5
; pwd
; $(MAKE
) CRYPT_SRC
314 @cd lib
/gss_mechs
/mech_spnego
; pwd
; $(MAKE
) CRYPT_SRC
315 @cd
$(CLOSED
)/lib
/libike
; pwd
; $(MAKE
) CRYPT_SRC
316 @cd lib
/libnsl
; pwd
; $(MAKE
) CRYPT_SRC
317 @cd lib
/libsasl
; pwd
; $(MAKE
) CRYPT_SRC
318 @cd lib
/libresolv2
; pwd
; $(MAKE
) CRYPT_SRC
319 @cd lib
/sasl_plugins
; pwd
; $(MAKE
) CRYPT_SRC
320 @cd lib
/pam_modules
/krb5
; pwd
; $(MAKE
) CRYPT_SRC
321 @cd uts
/common
/gssapi
; pwd
; $(MAKE
) CRYPT_SRC
322 @cd uts
/common
/gssapi
/include; pwd
; $(MAKE
) CRYPT_SRC
323 @cd uts
/common
/gssapi
/mechs
/dummy
; pwd
; $(MAKE
) CRYPT_SRC
324 @cd uts
/common
/gssapi
/mechs
/krb5
; pwd
; $(MAKE
) CRYPT_SRC
325 @cd pkgdefs
; pwd
; $(MAKE
) CRYPT_SRC
327 sed
-e
"/^# EXPORT DELETE START/,/^# EXPORT DELETE END/d" \
328 < Makefile
> Makefile
+
329 $(MV
) Makefile
+ Makefile
330 $(CHMOD
) 444 Makefile
331 $(RM
) Makefile.master
+
332 sed
-e
"/^# EXPORT DELETE START/,/^# EXPORT DELETE END/d" \
333 < Makefile.master
> Makefile.master
+
334 $(MV
) Makefile.master
+ Makefile.master
335 $(CHMOD
) 444 Makefile.master
340 @cd cmd
/login
; pwd
; $(MAKE
) ONC_PLUS
341 @cd uts
; pwd
; $(MAKE
) ONC_PLUS
344 # Targets for reporting compiler versions; nightly uses these.
348 @if
$($(MACH
)_CC
) -_versions
>/dev
/null
2>/dev
/null
; then \
349 $(ECHO
) 32-bit compiler
; \
350 $(ECHO
) $($(MACH
)_CC
); \
351 $($(MACH
)_CC
) -_versions
2>&1 | \
352 $(EGREP
) '^(cw|cc|gcc|primary|shadow)'; \
354 __COMPILER
=`$($(MACH)_CC) -_compiler 2>/dev/null || $(TRUE)`;\
355 if
[ -z
"$$__COMPILER" ]; then \
356 $(ECHO
) No
32-bit compiler found
; \
359 $(ECHO
) 32-bit compiler
; \
360 $(ECHO
) $($(MACH
)_CC
); \
361 $(ECHO
) $$__COMPILER; \
362 $($(MACH
)_CC
) -V
2>&1 | head
-1; \
367 @if
$($(MACH64
)_CC
) -_versions
>/dev
/null
2>/dev
/null
; then \
368 $(ECHO
) 64-bit compiler
; \
369 $(ECHO
) $($(MACH64
)_CC
); \
370 $($(MACH64
)_CC
) -_versions
2>&1 | \
371 $(EGREP
) '^(cw|cc|gcc|primary|shadow)'; \
373 __COMPILER
=`$($(MACH64)_CC) -_compiler 2>/dev/null || $(TRUE)`;\
374 if
[ -z
"$$__COMPILER" ]; then \
375 $(ECHO
) No
64-bit compiler found
; \
378 $(ECHO
) 64-bit compiler
; \
379 $(ECHO
) $($(MACH64
)_CC
); \
380 $(ECHO
) $$__COMPILER; \
381 $($(MACH64
)_CC
) -V
2>&1 | head
-1; \
386 @if
[ -x
"$(JAVAC)" ]; then \
388 $(JAVA_ROOT
)/bin
/java
-fullversion
2>&1 | head
-1; \
390 $(ECHO
) No Java compiler found
; \