Makefile revision 11838:32bb5d254240
197049Speter#
2166124Srafan# CDDL HEADER START
397049Speter#
497049Speter# The contents of this file are subject to the terms of the
597049Speter# Common Development and Distribution License (the "License").
697049Speter# You may not use this file except in compliance with the License.
797049Speter#
897049Speter# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
997049Speter# or http://www.opensolaris.org/os/licensing.
1097049Speter# See the License for the specific language governing permissions
1197049Speter# and limitations under the License.
1297049Speter#
1397049Speter# When distributing Covered Code, include this CDDL HEADER in each
1497049Speter# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1597049Speter# If applicable, add the following below this CDDL HEADER, with the
1697049Speter# fields enclosed by brackets "[]" replaced with your own identifying
1797049Speter# information: Portions Copyright [yyyy] [name of copyright owner]
1897049Speter#
1997049Speter# CDDL HEADER END
2097049Speter#
2197049Speter#
2297049Speter# Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
2397049Speter# Use is subject to license terms.
2497049Speter#
2597049Speter# Makefile for system source
2697049Speter#
2797049Speter# include global definitions
2897049Speterinclude Makefile.master
2997049Speter#
3097049Speter# the Targetdirs file is the AT&T target.dirs file in a makefile format.
3197049Speter# it defines TARGETDIRS and ROOTDIRS.
32166124Srafaninclude Targetdirs
3397049Speter
3497049SpeterCOMMON_SUBDIRS=	uts lib cmd ucblib ucbcmd
3597049Speter
3697049Speter#
3797049Speter# sparc needs to build both stand and psm, in that order
3897049Speter# x86 needs to build psm and GRUB
3997049Speter#
4097049Spetersparc_SUBDIRS= stand psm
4197049Speteri386_SUBDIRS= psm grub
4297049Speter
4397049SpeterSUBDIRS= $(COMMON_SUBDIRS) $($(MACH)_SUBDIRS)
4497049Speter
4597049SpeterHDRSUBDIRS=	uts head lib cmd
4697049Speter
4797049Speter# UCB headers are bug-for-bug compatible and not checkable against the header
4897049Speter# standards.
4997049Speter#
5097049SpeterCHKHDRSUBDIRS=	head uts lib
5197049Speter
5297049Speter#
5397049Speter# Headers that can be built in parallel
5497049Speter#
5597049SpeterPARALLEL_HEADERS = sysheaders userheaders libheaders cmdheaders
5697049Speter
5797049Speter#
5897049Speter# Directories that can be built in parallel
5997049Speter#
6097049SpeterPARALLEL_DIRS = uts lib
6197049Speter
6297049Speter# The check target also causes smf(5) service manifests to be validated.
6397049SpeterCHKMFSTSUBDIRS=	cmd
6497049Speter
6597049SpeterMSGSUBDIRS=	cmd ucbcmd lib
6697049SpeterDOMAINS= \
6797049Speter	SUNW_OST_ADMIN \
6897049Speter	SUNW_OST_NETRPC \
6997049Speter	SUNW_OST_OSCMD \
7097049Speter	SUNW_OST_OSLIB \
7197049Speter	SUNW_OST_UCBCMD \
7297049Speter	SUNW_OST_ZONEINFO
7397049Speter
7497049SpeterMSGDDIRS=       $(DOMAINS:%=$(MSGROOT)/%)
7597049SpeterMSGDIRS=        $(MSGROOT) $(MSGDDIRS) $(MSGROOT)/LC_TIME
7697049Speter
7797049Speterall all_xmod :=		TARGET= all
7897049Speterinstall install_xmod :=	TARGET= install
7997049Speterinstall_h :=		TARGET= install_h
8097049Speterclean :=		TARGET= clean
8197049Speterclobber :=		TARGET= clobber
8297049Spetercheck :=		TARGET= check
8397049Speter_msg :=			TARGET= _msg
8497049Speter
8597049Speter
8697049Speter.KEEP_STATE:
8797049Speter
8897049Speter#
8997049Speter# Note: install only builds the all target for the pkg
9097049Speter#       directory.  We are not yet ready to have an install
9197049Speter#	build create 'packages' also.  To build packages
9297049Speter#	cd pkg and do a 'make install'
9397049Speter#
9497049Speterall: mapfiles closedbins sgs .WAIT $(SUBDIRS) pkg_all
9597049Speterinstall: mapfiles closedbins sgs .WAIT $(SUBDIRS) pkg_all .WAIT _msg
9697049Speter	@cd msg; pwd; $(MAKE) _msg
9797049Speter	@rm -rf "$(ROOT)/catalog"
9897049Speter
9997049Spetermapfiles: bldtools
10097049Speter	@cd common/mapfiles; pwd; $(MAKE) install
10197049Speter
10297049Speterclean clobber: $(SUBDIRS) head pkg
10397049Speter_msg: _msgdirs rootdirs $(MSGSUBDIRS)
10497049Speter
10597049Speter# for a complete build from scratch
10697049Spetercrankturn: sgs uts pkg_all
10797049Speter	@cd lib; pwd; $(MAKE) install
10897049Speter	@cd cmd; pwd; $(MAKE) all
10997049Speter	@cd ucblib; pwd; $(MAKE) install
11097049Speter	@cd ucbcmd; pwd; $(MAKE) all
11197049Speter
11297049Speterpkg_all:
11397049Speter	@cd pkg; pwd; $(MAKE) all
11497049Speter
11597049Speter#
11697049Speter# target for building a proto area for reference via the ROOT macro
11797049Speter#
11897049Speterprotolibs: rootlibs ucblibs
11997049Speter
12097049Speter# build all ucb libraries
12197049Speter#
12297049Speterucblibs:
12397049Speter	@cd ucblib; pwd; $(MAKE) install
12497049Speter
12597049Speter# Base subset of rootproto, excluding ucb libraries
12697049Speter#
12797049Speterrootlibs: sgs
12897049Speter	@cd lib; pwd; $(MAKE) install
12997049Speter
13097049Speterclosedbins: FRC $(ROOTDIRS)
13197049Speter	@CLOSED_ROOT="$$ON_CLOSED_BINS/root_$(MACH)$${RELEASE_BUILD+-nd}"; \
13297049Speter	if [ "$$CLOSED_IS_PRESENT" = no ]; then \
13397049Speter		if [ ! -d "$$CLOSED_ROOT" ]; then \
13497049Speter			$(ECHO) "Error: if closed sources are not present," \
13597049Speter			    "ON_CLOSED_BINS must point to closed binaries."; \
13697049Speter			$(ECHO) "root_$(MACH)$${RELEASE_BUILD+-nd} is not" \
13797049Speter			    "present in $$ON_CLOSED_BINS."; \
13897049Speter			exit 1; \
13997049Speter		fi; \
14097049Speter		$(ECHO) "Copying closed binaries from $$CLOSED_ROOT"; \
14197049Speter		(cd $$CLOSED_ROOT; tar cf - .) | \
14297049Speter		    (cd $(ROOT); tar xBpf -); \
14397049Speter	fi
14497049Speter
14597049Speter#
14697049Speter# Declare what parts can be build in parallel
14797049Speter# DUMMY at the end is used in case macro expansion produces an empty string to
14897049Speter# prevent everything going in parallel
14997049Speter#
15097049Speter.PARALLEL: $(PARALLEL_HEADERS) DUMMY
15197049Speter.PARALLEL: $(PARALLEL_DIRS) DUMMY
15297049Speter
15397049Speter$(SUBDIRS) head pkg: FRC
15497049Speter	@cd $@; pwd; $(MAKE) $(TARGET)
15597049Speter
15697049Speter# librpcsvc has a dependency on headers installed by
15797049Speter# userheaders, hence the .WAIT before libheaders.
15897049Spetersgs: rootdirs .WAIT sysheaders userheaders .WAIT \
15997049Speter	libheaders cmdheaders
16097049Speter
16197049Speter#
16297049Speter# Top-level setup target to setup the development environment that includes
16397049Speter# headers, tools and generated mapfiles.  For open-only builds (i.e.: source
16497049Speter# trees w/o usr/closed), this also depends on the closedbins target (above)
16597049Speter# in order to properly seed the proto area.  Note, although the tools are
16697049Speter# dependent on a number of constant mapfiles, the tools themselves are
16797049Speter# required to build the generated mapfiles.
16897049Speter#
16997049Spetersetup: bldtools mapfiles
17097049Speter
17197049Speterbldtools: closedbins sgs
17297049Speter	@cd tools; pwd; $(MAKE) install
17397049Speter
17497049Speter# /var/mail/:saved is a special case because of the colon in the name.
17597049Speter#
17697049Speterrootdirs: $(ROOTDIRS)
17797049Speter	$(INS) -d -m 775 $(ROOT)/var/mail/:saved
17897049Speter
17997049Speterlint: FRC
18097049Speter	$(MAKE) -f Makefile.lint
18197049Speter
18297049Speter_msgdirs:       $(MSGDIRS)
18397049Speter
18497049Speter$(ROOTDIRS) $(MSGDIRS):
18597049Speter	$(INS.dir)
18697049Speter
18797049Speteruserheaders: FRC
18897049Speter	@cd head; pwd; $(MAKE) install_h
18997049Speter
19097049Speterlibheaders: FRC
19197049Speter	@cd lib; pwd; $(MAKE) install_h
19297049Speter
19397049Spetersysheaders: FRC
19497049Speter	@cd uts; pwd; $(MAKE) install_h
19597049Speter
19697049Spetercmdheaders: FRC
19797049Speter	@cd cmd/fm; pwd; $(MAKE) install_h
19897049Speter	@cd cmd/mdb; pwd; $(MAKE) install_h
19997049Speter
20097049Speter# each xmod target depends on a corresponding MACH-specific pseudotarget
20197049Speter# before doing common xmod work
20297049Speter#
20397049Speterall_xmod install_xmod: $$@_$(MACH)
20497049Speter	@cd uts/common/sys; pwd; $(MAKE) svvs_h
20597049Speter
20697049Speterall_xmod_sparc install_xmod_sparc: FRC
20797049Speter	@cd uts/sparc; pwd; \
20897049Speter	  $(MAKE) TARGET=$(TARGET) svvs pm wsdrv
20997049Speter
21097049Speterall_xmod_i386 install_xmod_i386: FRC
21197049Speter	@cd uts/i86; pwd; $(MAKE) TARGET=$(TARGET) svvs
21297049Speter
21397049Spetercheck:	$(CHKHDRSUBDIRS) $(CHKMFSTSUBDIRS)
21497049Speter
21597049Speter#
21697049Speter# Cross-reference customization: skip all of the subdirectories that
21797049Speter# don't contain actual source code.
21897049Speter#
21997049Speter$(CLOSED_BUILD)XRDIRS += ../closed
22097049SpeterXRPRUNE = pkg prototypes xmod
22197049SpeterXRINCDIRS = uts/common head ucbhead
22297049Speter$(CLOSED_BUILD)XRINCDIRS = uts/common ../closed/uts/common head ucbhead
22397049Speter
22497049Spetercscope.out tags: FRC
22597049Speter	$(XREF) -f -x $@
22697049Speter
22797049SpeterFRC:
22897049Speter
22997049Speter# EXPORT DELETE START
23097049Speter
23197049SpeterXMOD_DELETE_FILES:sh = cat xmod/xmod_files
23297049Speter
23397049SpeterEXPORT_SRC:
23497049Speter	@cd $(CLOSED)/cmd/cmd-inet/usr.lib/in.iked;  pwd; $(MAKE) EXPORT_SRC
23597049Speter	@cd $(CLOSED)/cmd/cmd-inet/usr.lib/ike-certutils;  pwd; \
23697049Speter	    $(MAKE) EXPORT_SRC
23797049Speter	@cd cmd/cmd-inet/usr.sbin; pwd; $(MAKE) EXPORT_SRC
23897049Speter	@cd $(CLOSED)/cmd/cmd-crypto/etc; pwd; $(MAKE) EXPORT_SRC
23997049Speter	@cd cmd/crypt;	  pwd; $(MAKE) EXPORT_SRC
24097049Speter	@cd cmd/gss/gssd;         pwd; $(MAKE) EXPORT_SRC
24197049Speter	@cd cmd/krb5/kadmin;  pwd; $(MAKE) EXPORT_SRC
24297049Speter	@cd cmd/sendmail/src; pwd; $(MAKE) EXPORT_SRC
24397049Speter	@cd common/crypto/aes;	  pwd; $(MAKE) EXPORT_SRC
24497049Speter	@cd common/crypto/arcfour; pwd; $(MAKE) EXPORT_SRC
24597049Speter	@cd common/crypto/blowfish;	  pwd; $(MAKE) EXPORT_SRC
24697049Speter	@cd common/crypto/des;	  pwd; $(MAKE) EXPORT_SRC
24797049Speter	@cd common/crypto/rsa;	  pwd; $(MAKE) EXPORT_SRC
24897049Speter	@cd lib/crypt_modules/bsdbf; pwd ; $(MAKE) EXPORT_SRC
24997049Speter	@cd lib/gss_mechs/mech_dummy;   pwd; $(MAKE) EXPORT_SRC
25097049Speter	@cd lib/gss_mechs/mech_dh/backend;	pwd; $(MAKE) EXPORT_SRC
25197049Speter	@cd lib/gss_mechs/mech_krb5;		pwd; $(MAKE) EXPORT_SRC
25297049Speter	@cd lib/gss_mechs/mech_spnego;		pwd; $(MAKE) EXPORT_SRC
25397049Speter	@cd lib/libcrypt; pwd; $(MAKE) EXPORT_SRC
25497049Speter	@cd lib/libgss;   pwd; $(MAKE) EXPORT_SRC
25597049Speter	@cd $(CLOSED)/lib/libike;   pwd; $(MAKE) EXPORT_SRC
25697049Speter	@cd lib/libnsl;	  pwd; $(MAKE) EXPORT_SRC
25797049Speter	@cd lib/pkcs11/pkcs11_softtoken/common;  pwd; $(MAKE) EXPORT_SRC
25897049Speter	@cd lib/libsldap; pwd; $(MAKE) EXPORT_SRC
25997049Speter	@cd lib/libsasl; pwd; $(MAKE) EXPORT_SRC
26097049Speter	@cd lib/sasl_plugins; pwd; $(MAKE) EXPORT_SRC
26197049Speter	@cd lib/pam_modules/krb5;   pwd; $(MAKE) EXPORT_SRC
26297049Speter	@cd psm/stand/boot; pwd; $(MAKE) EXPORT_SRC
26397049Speter	@cd uts/common/crypto/io; pwd; $(MAKE) EXPORT_SRC
26497049Speter	@cd uts/common/des; pwd; $(MAKE) EXPORT_SRC
26597049Speter	@cd uts/common/rpc; pwd; $(MAKE) EXPORT_SRC
26697049Speter	@cd uts/common/sys; pwd; $(MAKE) EXPORT_SRC
26797049Speter	@cd uts/common/gssapi/include;		pwd; $(MAKE) EXPORT_SRC
26897049Speter	@cd uts/common/gssapi;			pwd; $(MAKE) EXPORT_SRC
26997049Speter	@cd uts/common/gssapi/mechs/dummy;	pwd; $(MAKE) EXPORT_SRC
27097049Speter	@cd uts/common/gssapi/mechs/krb5;	pwd; $(MAKE) EXPORT_SRC
27197049Speter	@cd uts/common; pwd; $(MAKE) EXPORT_SRC
27297049Speter	@cd uts/sparc; pwd; $(MAKE) EXPORT_SRC
27397049Speter	@cd $(CLOSED)/uts/sun4u/forthdebug; pwd; $(MAKE) EXPORT_SRC
27497049Speter	@cd $(CLOSED)/uts/sun4v/forthdebug; pwd; $(MAKE) EXPORT_SRC
27597049Speter	@cd uts/intel; pwd; $(MAKE) EXPORT_SRC
27697049Speter	@cd uts/sun4u; pwd; $(MAKE) EXPORT_SRC
27797049Speter	@cd $(CLOSED)/uts/sun4v/io/ncp;	pwd;	$(MAKE) EXPORT_SRC
27897049Speter	@cd $(CLOSED)/uts/sun4v/io/n2cp; pwd;	$(MAKE) EXPORT_SRC
27997049Speter	@cd pkg; pwd;	$(MAKE) EXPORT_SRC
28097049Speter	$(RM) -r $(XMOD_DELETE_FILES)
28197049Speter	$(RM) Targetdirs+
28297049Speter	sed -e "/^# EXPORT DELETE START/,/^# EXPORT DELETE END/d" \
28397049Speter			< Targetdirs > Targetdirs+
28497049Speter	$(MV) Targetdirs+ Targetdirs
28597049Speter	$(CHMOD) 444 Targetdirs
28697049Speter	$(RM) Makefile+
28797049Speter	sed -e "/^# EXPORT DELETE START/,/^# EXPORT DELETE END/d" \
28897049Speter			< Makefile > Makefile+
28997049Speter	$(MV) Makefile+ Makefile
29097049Speter	$(CHMOD) 444 Makefile
29197049Speter	$(RM) Makefile.master+
29297049Speter	sed -e "/^# EXPORT DELETE START/,/^# EXPORT DELETE END/d" \
29397049Speter			< Makefile.master > Makefile.master+
29497049Speter	$(MV) Makefile.master+ Makefile.master
29597049Speter	$(CHMOD) 444 Makefile.master
29697049Speter
29797049SpeterCRYPT_SRC:
29897049Speter	@cd $(CLOSED)/cmd/cmd-crypto/etc;  pwd; $(MAKE) CRYPT_SRC
29997049Speter	@cd $(CLOSED)/cmd/cmd-inet/usr.lib/in.iked;  pwd; $(MAKE) CRYPT_SRC
30097049Speter	@cd $(CLOSED)/cmd/cmd-inet/usr.lib/ike-certutils;  pwd; \
30197049Speter	    $(MAKE) CRYPT_SRC
30297049Speter	@cd lib/crypt_modules/bsdbf; pwd ; $(MAKE) CRYPT_SRC
30397049Speter	@cd lib/gss_mechs/mech_dummy;   pwd; $(MAKE) CRYPT_SRC
30497049Speter	@cd lib/gss_mechs/mech_dh/backend; pwd; $(MAKE) CRYPT_SRC
30597049Speter	@cd lib/gss_mechs/mech_krb5; pwd; $(MAKE) CRYPT_SRC
30697049Speter	@cd lib/gss_mechs/mech_spnego; pwd; $(MAKE) CRYPT_SRC
30797049Speter	@cd $(CLOSED)/lib/libike;   pwd; $(MAKE) CRYPT_SRC
30897049Speter	@cd lib/libnsl;	 pwd; $(MAKE) CRYPT_SRC
30997049Speter	@cd lib/libsasl;	 pwd; $(MAKE) CRYPT_SRC
31097049Speter	@cd lib/sasl_plugins; pwd; $(MAKE) CRYPT_SRC
31197049Speter	@cd lib/pam_modules/krb5;   pwd; $(MAKE) CRYPT_SRC
31297049Speter	@cd uts/common/gssapi;    pwd; $(MAKE) CRYPT_SRC
31397049Speter	@cd uts/common/gssapi/include;    pwd; $(MAKE) CRYPT_SRC
31497049Speter	@cd uts/common/gssapi/mechs/dummy;        pwd; $(MAKE) CRYPT_SRC
31597049Speter	@cd uts/common/gssapi/mechs/krb5; pwd; $(MAKE) CRYPT_SRC
31697049Speter	@cd pkg;    pwd; $(MAKE) CRYPT_SRC
31797049Speter	$(RM) Makefile+
31897049Speter	sed -e "/^# EXPORT DELETE START/,/^# EXPORT DELETE END/d" \
31997049Speter			< Makefile > Makefile+
32097049Speter	$(MV) Makefile+ Makefile
32197049Speter	$(CHMOD) 444 Makefile
32297049Speter	$(RM) Makefile.master+
32397049Speter	sed -e "/^# EXPORT DELETE START/,/^# EXPORT DELETE END/d" \
32497049Speter			< Makefile.master > Makefile.master+
32597049Speter	$(MV) Makefile.master+ Makefile.master
32697049Speter	$(CHMOD) 444 Makefile.master
32797049Speter
32897049Speter# EXPORT DELETE END
32997049Speter
33097049SpeterONC_PLUS:
33197049Speter	@cd cmd/login; pwd; $(MAKE) ONC_PLUS
33297049Speter	@cd uts; pwd; $(MAKE) ONC_PLUS
33397049Speter
33497049Speter#
33597049Speter# Targets for reporting compiler versions; nightly uses these.
33697049Speter#
33797049Speter
33897049Spetercc-version:
33997049Speter	@if $($(MACH)_CC) -_versions >/dev/null 2>/dev/null; then \
34097049Speter		$(ECHO) 32-bit compiler;			\
34197049Speter		$(ECHO) $($(MACH)_CC);				\
34297049Speter		$($(MACH)_CC) -_versions 2>&1 |			\
34397049Speter		    $(EGREP) '^(cw|cc|gcc|primary|shadow)';	\
34497049Speter	else							\
34597049Speter		__COMPILER=`$($(MACH)_CC) -_compiler 2>/dev/null || $(TRUE)`;\
34697049Speter		if [ -z "$$__COMPILER" ]; then			\
34797049Speter			$(ECHO) No 32-bit compiler found;	\
34897049Speter			exit 1;					\
34997049Speter		else						\
35097049Speter			$(ECHO) 32-bit compiler;		\
35197049Speter			$(ECHO) $($(MACH)_CC);			\
35297049Speter			$(ECHO) $$__COMPILER;			\
35397049Speter			$($(MACH)_CC) -V 2>&1 | head -1;	\
35497049Speter		fi;						\
35597049Speter	fi
35697049Speter
35797049Spetercc64-version:
35897049Speter	@if $($(MACH64)_CC) -_versions >/dev/null 2>/dev/null; then \
35997049Speter		$(ECHO) 64-bit compiler;			\
36097049Speter		$(ECHO) $($(MACH64)_CC);			\
36197049Speter		$($(MACH64)_CC) -_versions 2>&1 |		\
36297049Speter		    $(EGREP) '^(cw|cc|gcc|primary|shadow)';	\
36397049Speter	else							\
36497049Speter		__COMPILER=`$($(MACH64)_CC) -_compiler 2>/dev/null || $(TRUE)`;\
36597049Speter		if [ -z "$$__COMPILER" ]; then			\
36697049Speter			$(ECHO) No 64-bit compiler found;	\
36797049Speter			exit 1;					\
36897049Speter		else						\
36997049Speter			$(ECHO) 64-bit compiler;		\
37097049Speter			$(ECHO) $($(MACH64)_CC);		\
37197049Speter			$(ECHO) $$__COMPILER;			\
37297049Speter			$($(MACH64)_CC) -V 2>&1 | head -1;	\
37397049Speter		fi;						\
37497049Speter	fi
37597049Speter
37697049Speterjava-version:
37797049Speter	@if [ -x "$(JAVAC)" ]; then			\
37897049Speter		$(ECHO) $(JAVAC);			\
37997049Speter		$(JAVA_ROOT)/bin/java -fullversion 2>&1 | head -1;	\
38097049Speter	else						\
38197049Speter		$(ECHO) No Java compiler found;		\
38297049Speter		exit 1;					\
38397049Speter	fi
38497049Speter