Makefile revision 3066:2a2af34f0642
111201Siignatyev#
213392Skbarrett# CDDL HEADER START
311201Siignatyev#
411201Siignatyev# The contents of this file are subject to the terms of the
511201Siignatyev# Common Development and Distribution License (the "License").
611201Siignatyev# You may not use this file except in compliance with the License.
711201Siignatyev#
811201Siignatyev# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
911201Siignatyev# or http://www.opensolaris.org/os/licensing.
1011201Siignatyev# See the License for the specific language governing permissions
1111201Siignatyev# and limitations under the License.
1211201Siignatyev#
1311201Siignatyev# When distributing Covered Code, include this CDDL HEADER in each
1411201Siignatyev# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1511201Siignatyev# If applicable, add the following below this CDDL HEADER, with the
1611201Siignatyev# fields enclosed by brackets "[]" replaced with your own identifying
1711201Siignatyev# information: Portions Copyright [yyyy] [name of copyright owner]
1811201Siignatyev#
1911201Siignatyev# CDDL HEADER END
2011201Siignatyev#
2111201Siignatyev
2212245Sjwilhelm#
2311201Siignatyev# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
2411201Siignatyev# Use is subject to license terms.
2511490Sehelin#
2612245Sjwilhelm# ident	"%Z%%M%	%I%	%E% SMI"
2712245Sjwilhelm#
2811201Siignatyev
2911201Siignatyev#
3011201Siignatyev#	This makefile drives the production of /unix (and unix.o).
3112245Sjwilhelm#
3211201Siignatyev#	sun4u implementation architecture dependent
3311201Siignatyev#
3412245Sjwilhelm
3512245Sjwilhelm#
3611201Siignatyev#	Path to the base of the uts directory tree (usually /usr/src/uts).
3711201Siignatyev#
3812245SjwilhelmUTSBASE	= ../..
3912245Sjwilhelm
4011201Siignatyev#
4113392Skbarrett#	Define the module and object file sets.
4213392Skbarrett#
4312245SjwilhelmUNIX		= unix
4412245SjwilhelmOBJECTS		= $(SPECIAL_OBJS:%=$(OBJS_DIR)/%) \
4512245Sjwilhelm		  $(CORE_OBJS:%=$(OBJS_DIR)/%) \
4612245Sjwilhelm		  $(MACH_NOT_YET_KMODS:%=$(OBJS_DIR)/%)
4712245SjwilhelmLINTS		= $(SPECIAL_OBJS:%.o=$(LINTS_DIR)/%.ln) \
4812245Sjwilhelm		  $(CORE_OBJS:%.o=$(LINTS_DIR)/%.ln) \
4912245Sjwilhelm		  $(MACH_NOT_YET_KMODS:%.o=$(LINTS_DIR)/%.ln) \
5012245Sjwilhelm		  $(LINTS_DIR)/vers.ln \
5113392Skbarrett		  $(LINTS_DIR)/modstubs.ln
5213392SkbarrettROOTMODULE	= $(ROOT_PSM_KERN_DIR)/$(UNIX)
5312245SjwilhelmUNIX32_LINK	= $(ROOT_PSM_KERN_DIR_32)/$(UNIX)
5412245SjwilhelmUNIX_BIN	= $(OBJS_DIR)/$(UNIX)
5512245Sjwilhelm
5612245SjwilhelmKRTLD_32	= misc/krtld
5712245SjwilhelmKRTLD_64	= misc/$(SUBDIR64)/krtld
5812245SjwilhelmKRTLD		= $(KRTLD_$(CLASS))
5912245Sjwilhelm
6012245SjwilhelmLIBS		= $(GENLIB) $(PLATLIB) $(CPULIB)
6112245Sjwilhelm
6212245SjwilhelmGENUNIX		= genunix
6312245SjwilhelmGENUNIX_DIR	= ../$(GENUNIX)
6412245SjwilhelmGENOPTS		= -L $(GENUNIX_DIR)/$(OBJS_DIR) -l $(GENUNIX)
6511201Siignatyev
6611201SiignatyevCPU_DIR		= .
6711201SiignatyevCPUOPTS		= -L $(CPU_DIR)/$(OBJS_DIR) -l $(CPUNAME)
6812245Sjwilhelm
6912245SjwilhelmPLAT_DIR	= ../platmod
7012245SjwilhelmPLATOPTS	= -L $(PLAT_DIR)/$(OBJS_DIR) -l $(PLATMOD)
7112245Sjwilhelm
7212245SjwilhelmLIBOPTS		= $(GENOPTS) $(PLATOPTS) $(CPUOPTS)
7312245Sjwilhelm
7412245SjwilhelmCTFEXTRAOBJS	= $(OBJS_DIR)/vers.o
7512245Sjwilhelm
7612245Sjwilhelm#
7712245Sjwilhelm#	Include common rules.
7812245Sjwilhelm#
7912245Sjwilhelminclude $(UTSBASE)/sun4u/Makefile.sun4u
8012245Sjwilhelm
8112245Sjwilhelm#
8212245Sjwilhelm#	Define targets
8312245Sjwilhelm#
8412245SjwilhelmALL_TARGET	= $(UNIX_BIN)
8512245SjwilhelmLINT_TARGET	= $(LINT_LIB)
8612245SjwilhelmINSTALL_TARGET	= $(UNIX_BIN) $(ROOTMODULE) $(UNIX32_LINK)
8712245Sjwilhelm
8812245Sjwilhelm#
8912245Sjwilhelm#	This is UNIX_DIR. Use a short path.
9012245Sjwilhelm#
9112245SjwilhelmUNIX_DIR	= .
9212245Sjwilhelm
9312245Sjwilhelm#
9412245Sjwilhelm#	Overrides
9512245Sjwilhelm#
9612245SjwilhelmCLEANFILES	+= $(UNIX_O) $(MODSTUBS_O) $(OBJS_DIR)/vers.c \
9712245Sjwilhelm		   $(OBJS_DIR)/vers.o $(CPU_OBJ) $(CPULIB) \
9812245Sjwilhelm		   $(DTRACESTUBS_O) $(DTRACESTUBS)
9912245Sjwilhelm
10012245SjwilhelmCLOBBERFILES	= $(CLEANFILES) $(UNIX_BIN)
10112245SjwilhelmCLEANLINTFILES	+= $(LINT_LIB)
10212245Sjwilhelm
10312245Sjwilhelm#
10412245Sjwilhelm# lint pass one enforcement 
10512245Sjwilhelm# Turn on doubleword alignment for 64 bit counter timer registers
10612245Sjwilhelm#
10712245SjwilhelmCFLAGS += $(CCVERBOSE) -dalign
10812245Sjwilhelm
10912245Sjwilhelm#
11012245Sjwilhelm# For now, disable these lint checks; maintainers should endeavor
11112245Sjwilhelm# to investigate and remove these for maximum lint coverage.
11212245Sjwilhelm# Please do not carry these forward to new Makefiles.
11312245Sjwilhelm#
11412245SjwilhelmLINTTAGS	+= -erroff=E_SUSPICIOUS_COMPARISON
11512245SjwilhelmLINTTAGS	+= -erroff=E_BAD_PTR_CAST_ALIGN
11612245SjwilhelmLINTTAGS	+= -erroff=E_SUPPRESSION_DIRECTIVE_UNUSED
11712245SjwilhelmLINTTAGS	+= -erroff=E_STATIC_UNUSED
11812245SjwilhelmLINTTAGS	+= -erroff=E_PTRDIFF_OVERFLOW
11912245SjwilhelmLINTTAGS	+= -erroff=E_ASSIGN_NARROW_CONV
12012245Sjwilhelm
12112245Sjwilhelm#
12212245Sjwilhelm#	Default build targets.
12312245Sjwilhelm#
12412245Sjwilhelm.KEEP_STATE:
12512245Sjwilhelm
12612245Sjwilhelmdef:		$(DEF_DEPS)
12712245Sjwilhelm
12812245Sjwilhelmall:		$(ALL_DEPS)
12912245Sjwilhelm
13012245Sjwilhelmclean:		$(CLEAN_DEPS)
13112245Sjwilhelm
13212245Sjwilhelmclobber:	$(CLOBBER_DEPS)
13312245Sjwilhelm
13412245Sjwilhelmlint:		$(LINT_DEPS)
13511201Siignatyev
13612245Sjwilhelmclean.lint:	$(CLEAN_LINT_DEPS)
13712245Sjwilhelm
13812245Sjwilhelminstall:  	$(INSTALL_DEPS)
13912245Sjwilhelm
14012245Sjwilhelm
14112245Sjwilhelm$(UNIX_BIN):	$(UNIX_O) $(MODSTUBS_O) $(MAPFILE) $(LIBS) $(DTRACESTUBS) 
14212245Sjwilhelm	$(LD) -dy -b -o $@ -e _start -I $(KRTLD) -M $(MAPFILE) \
14312245Sjwilhelm	    $(UNIX_O) $(MODSTUBS_O) $(LIBOPTS) $(DTRACESTUBS) 
14412245Sjwilhelm	$(CTFMERGE_UNIQUIFY_AGAINST_GENUNIX)
14512245Sjwilhelm	$(POST_PROCESS)
14612245Sjwilhelm
14712245Sjwilhelm$(UNIX32_LINK):	$(ROOT_PSM_KERN_DIR_32) $(UNIX_BIN)
14812245Sjwilhelm	-$(RM) $@; ln -s $(SUBDIR64)/$(UNIX) $@
14912245Sjwilhelm
15012245Sjwilhelmsymcheck:	$(UNIX_O) $(MODSTUBS_O) $(LIBS)
15112245Sjwilhelm	$(LD) -dy -b -o $(SYM_MOD) -M $(MAPFILE) \
15212245Sjwilhelm	$(UNIX_O) $(MODSTUBS_O) $(LIBOPTS) $(DTRACESTUBS)
15312245Sjwilhelm
15412245Sjwilhelm#$(UNIX).glom:	$(UNIX)
15512245Sjwilhelm#	${LD} -dy -b -z nodefs -o $@ -e _start -I $(KRTLD) -M $(MAPFILE) \
15612245Sjwilhelm#	$(UNIX_O) $(MODSTUBS_O) $(GENUNIX_DIR)/$(GENUNIX)
15712245Sjwilhelm#	$(POST_PROCESS)
15812245Sjwilhelm
15912245Sjwilhelm$(UNIX_O):	$(OBJECTS) $(OBJS_DIR)/vers.o
16012245Sjwilhelm	$(LD) -r -o $@ $(OBJECTS) $(OBJS_DIR)/vers.o
16112245Sjwilhelm
16212245Sjwilhelm#
16312245Sjwilhelm#	Special rules for generating assym.h for inclusion in assembly files.
16412245Sjwilhelm#
16512245Sjwilhelm$(DSF_DIR)/$(OBJS_DIR)/assym.h:	FRC
16612245Sjwilhelm	@cd $(DSF_DIR); $(MAKE) all.targ
16712245Sjwilhelm
16812245Sjwilhelm$(GENLIB):	FRC
16912245Sjwilhelm	@(cd $(GENLIB_DIR); pwd; $(MAKE) all.targ)
17012245Sjwilhelm	@pwd
17112245Sjwilhelm
17212245Sjwilhelm$(PLATLIB):
17311201Siignatyev	?@(cd $(PLAT_DIR); pwd; $(MAKE) all.targ)
17412245Sjwilhelm	?@pwd
17512245Sjwilhelm
17612245Sjwilhelm#
17713392Skbarrett#	CPU_OBJ now comprises of 2 object files which come from sun4 common
17812245Sjwilhelm#	and from architecture dependent code.  OBJS_DIR is prepended where
17912245Sjwilhelm#	CPU_OBJ is defined to allow for building multiple CPU_OBJ's
18013392Skbarrett#
18112245Sjwilhelm$(CPULIB):	$(CPU_OBJ)
18212245Sjwilhelm	$(BUILD.SO) $(CPU_OBJ)
18312245Sjwilhelm
18412245Sjwilhelm#
18512245Sjwilhelm#	The global lint target builds the kernel lint library (llib-lunix.ln)
18612245Sjwilhelm#	which is equivalent to a lint of /unix.o. Then all kernel modules for
18712245Sjwilhelm#	this architecture are linted against the kernel lint library.
18812245Sjwilhelm#
18912245Sjwilhelm#	Note:	lint errors in the kernel lint library will be repeated for
19012245Sjwilhelm#		each module. It is important that the kernel lint library
19112245Sjwilhelm#		be clean to keep the textual output to a reasonable level.
19212245Sjwilhelm#
19312245Sjwilhelm
19412245Sjwilhelm$(LINT_LIB):	$(LINT_LIB_DIR) $(LINTS)
19512245Sjwilhelm	@-$(ECHO) "\n$(UNIX): (library construction):"
19612245Sjwilhelm	@$(LINT) -o $(UNIX) $(LINTFLAGS) $(LINTS)
19712245Sjwilhelm	@$(MV) $(@F) $@
19812245Sjwilhelm
19912245Sjwilhelmlintlib:	$(LINT_DEPS)
20012245Sjwilhelm
20112245Sjwilhelm#
20212245Sjwilhelm#	Include common targets.
20312245Sjwilhelm#
20412245Sjwilhelminclude $(UTSBASE)/sun4u/Makefile.targ
205
206