Makefile revision 7c478bd95313f5f23a4c958a745db2134aa03244
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
297be3708069ef31814d6d75c0d71a50a78feb03Mark Andrews# CDDL HEADER START
75c0816e8295e180f4bc7f10db3d0d880383bc1cMark Andrews#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# The contents of this file are subject to the terms of the
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Common Development and Distribution License, Version 1.0 only
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# (the "License"). You may not use this file except in compliance
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# with the License.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# or http://www.opensolaris.org/os/licensing.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# See the License for the specific language governing permissions
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# and limitations under the License.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# When distributing Covered Code, include this CDDL HEADER in each
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# If applicable, add the following below this CDDL HEADER, with the
297be3708069ef31814d6d75c0d71a50a78feb03Mark Andrews# fields enclosed by brackets "[]" replaced with your own identifying
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# information: Portions Copyright [yyyy] [name of copyright owner]
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# CDDL HEADER END
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
e21a2904f02a03fa06b6db04d348f65fe9c67b2bMark Andrews#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Copyright 2004 Sun Microsystems, Inc. All rights reserved.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Use is subject to license terms.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# ident "%Z%%M% %I% %E% SMI"
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# This makefile drives the production of all implementation architecture
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# dependent modules for the sun4u architecture.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinUTSBASE = ..
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeininclude Makefile.sun4u
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# The following are SPARC specific (rather than sun4u) specific modules
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# which are required for the sun4u kernel to completely lint. They are
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# not involved in the build in any other way. In order to minimize
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# build time, it is assumed that they are up to date. But since sun4u
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# is really a separate architecture we cannot use the v7 sparc modules.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinSPARC_LIB_DIR = $(UTSBASE)/sparc/lint-libs/$(OBJS_DIR)
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinSPARC_LINTS =
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
297be3708069ef31814d6d75c0d71a50a78feb03Mark Andrews#
297be3708069ef31814d6d75c0d71a50a78feb03Mark Andrews#
297be3708069ef31814d6d75c0d71a50a78feb03Mark AndrewsLINT_LIBS = $(LINT_LIB) \
297be3708069ef31814d6d75c0d71a50a78feb03Mark Andrews $(LINT_KMODS:%=$(LINT_LIB_DIR)/llib-l%.ln) \
297be3708069ef31814d6d75c0d71a50a78feb03Mark Andrews $(SPARC_LINTS:%=$(SPARC_LIB_DIR)/llib-l%.ln)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# EXPORT DELETE START
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# CRYPTO_EK_KMODS modules go in the encryption pack (SUNWcry*)
297be3708069ef31814d6d75c0d71a50a78feb03Mark Andrews# They need to be listed separately since they duplicate global symbols
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# causing the 2nd pass of lint on the kernel to complain. CRYPTO_EK_KMODS
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews# should not be listed in the lint target.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinCRYPTO_EK_KMODS += aes256
71c66a876ecca77923638d3f94cc0783152b2f03Mark AndrewsCRYPTO_EK_KMODS += arcfour2048
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# EXPORT DELETE END
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeindef := TARGET= def
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinall := TARGET= all
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeininstall := TARGET= install
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrewsinstall_h := TARGET= install_h
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinclean := TARGET= clean
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinclobber := TARGET= clobber
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinlint := TARGET= lint
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinlintlib := TARGET= lintlib
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinmodlintlib := TARGET= modlintlib
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinclean.lint := TARGET= clean.lint
297be3708069ef31814d6d75c0d71a50a78feb03Mark Andrewscheck := TARGET= check
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews.KEEP_STATE:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein.PARALLEL: $(KMODS) $(XMODS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Override for CPU_KMODS... they cannot be built
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# in parallel
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein.NO_PARALLEL: $(CPU_KMODS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeindef all clean clobber clean.lint: genassym unix .WAIT $(KMODS) $(XMODS) \
297be3708069ef31814d6d75c0d71a50a78feb03Mark Andrews $(IMPLEMENTATIONS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeininstall: install_platforms genassym unix .WAIT $(KMODS) $(XMODS) \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(IMPLEMENTATIONS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrewslintlib: unix
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinmodlintlib: $(LINT_KMODS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
12351e0500dff39f56844401fd191a36bcc4a7adMark Andrewsgenassym unix $(KMODS) $(IMPLEMENTATIONS): FRC
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein @cd $@; pwd; $(MAKE) $(TARGET)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(XMODS): FRC
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein @if [ -f $@/Makefile ]; then \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein cd $@; pwd; $(MAKE) $(TARGET); \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein else \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein true; \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein fi
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeininstall_h check: install_platforms $(IMPLEMENTATIONS) FRC
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein @cd sys; pwd; $(MAKE) $(TARGET)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein @cd vm; pwd; $(MAKE) $(TARGET)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
297be3708069ef31814d6d75c0d71a50a78feb03Mark Andrews#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Rules for the /platforms directories. This is hardwired here because
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# the first stage of the project (KBI) only implements the userland
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# changes, but the only reasonable place to record the aliases is
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# here in kernel land.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(ROOT_PLAT_DIRS): $(ROOT_PLAT_DIR)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein -$(INS.dir.root.sys)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# create directories in /usr/platform/ for the implementations that are
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# defined in $(IMPLEMENTED_PLATFORM)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# (eg. SUNW,Ultra-1)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Foreach $(IMPLEMENTED_PLATFORM) there can be a list of $(LINKED_PLATFORMS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# that are linked to it.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
297be3708069ef31814d6d75c0d71a50a78feb03Mark Andrews$(USR_PLAT_DIR)/$(IMPLEMENTED_PLATFORM): $(USR_PLAT_DIR)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein -$(INS.dir.root.sys)
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# create the links in /usr/platform/ foreach $(LINKED_PLATFORMS)
5a4557e8de2951a2796676b5ec4b6a90caa5be14Mark Andrews# to it's corresponding $(IMPLEMENTED_PLATFORM).
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPLATFORMS = $(LINKED_PLATFORMS)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(USR_PLAT_DIRS): $(USR_PLAT_DIR)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(INS.slink3)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinPLATFORMS += $(IMPLEMENTED_PLATFORM)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# Make the /platforms directories. This is hardwired here because
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# the first stage of the project (KBI) only implements the userland
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# changes, but the only reasonable place to record the aliases is
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# here in kernel land.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeininstall_platforms: $(ROOT_PSM_DIR) $(USR_PSM_DIR) \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(ROOT_PLAT_DIRS) $(USR_PLAT_DIRS) \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(USR_DESKTOP_DIR) $(USR_DESKTOP_INC_DIR) \
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(USR_DESKTOP_SBIN_DIR) $(USR_DESKTOP_LIB_DIR)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# rules for making include, sbin, lib dirs/links in
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein# /usr/platform/$(PLATFORM)/ for desktop platforms
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein$(USR_DESKTOP_INC_DIR): $(USR_DESKTOP_DIR)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein $(INS.slink4)
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
$(USR_DESKTOP_SBIN_DIR): $(USR_DESKTOP_DIR)
$(INS.slink5)
$(USR_DESKTOP_LIB_DIR): $(USR_DESKTOP_DIR)
-$(INS.dir.root.bin)
#
# Full kernel lint target.
#
LINT_TARGET = globallint
globallint:
@-$(ECHO) "\nSUN4U KERNEL: global crosschecks:"
@-$(LINT) $(LINTFLAGS) $(LINT_LIBS) 2>&1 | $(LGREP.2)
lint: lintlib .WAIT modlintlib .WAIT $(SPARC_LINTS) $(LINT_DEPS) \
$(IMPLEMENTATIONS) $(CPU_KMODS)
# EXPORT DELETE START
EXPORT_SRC:
$(RM) Makefile+
sed -e "/^# EXPORT DELETE START/,/^# EXPORT DELETE END/d" \
< Makefile > Makefile+
$(MV) Makefile+ Makefile
$(CHMOD) 444 Makefile
# EXPORT DELETE END
include ../Makefile.targ
#
# Cross-reference customization: build a cross-reference over all of the
# sun4u-related directories.
#
XRDIRS = ../sun4u ../sun4 ../sfmmu ../sparc ../sun ../common
XRPRUNE = i86pc
cscope.out tags: FRC
$(XREF) -x $@