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