Makefile revision 02e56f3f1bfc8d9977bafb8cb5202f576dcded27
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# CDDL HEADER START
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# The contents of this file are subject to the terms of the
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# Common Development and Distribution License (the "License").
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# You may not use this file except in compliance with the License.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# or http://www.opensolaris.org/os/licensing.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# See the License for the specific language governing permissions
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# and limitations under the License.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# When distributing Covered Code, include this CDDL HEADER in each
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# If applicable, add the following below this CDDL HEADER, with the
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# fields enclosed by brackets "[]" replaced with your own identifying
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# information: Portions Copyright [yyyy] [name of copyright owner]
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# CDDL HEADER END
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# Use is subject to license terms.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# ident "%Z%%M% %I% %E% SMI"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# Note: Hidden command and dependency checking plays havoc with perl module
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# makefiles, so we make sure to always unset the KEEP_STATE and
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# SUNPRO_DEPENDENCIES environment variables before calling any subsidiary makes.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews.KEEP_STATE:
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsinclude ../../Makefile.cmd
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# To turn KEEP_STATE off the following two environment variables must be unset.
5c526acb82c882e41b655c31f5fa4425c87b671cMark AndrewsKEEP_STATE_OFF = unset KEEP_STATE SUNPRO_DEPENDENCIES
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# Configuration files needed from the architecture-specific subdirectories.
5c526acb82c882e41b655c31f5fa4425c87b671cMark AndrewsMACH_CONFIG_FILES = config.sh
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# Where the configuration files need to be copied to.
5c526acb82c882e41b655c31f5fa4425c87b671cMark AndrewsDISTRIB_CONFIG_FILES = $(MACH_CONFIG_FILES:%=distrib/%)
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# Generated Makefiles, derived from config.sh.
5c526acb82c882e41b655c31f5fa4425c87b671cMark AndrewsGEN_MAKEFILES = Makefile.perlcfg distrib/ext/Makefile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsall := TARGET = all
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsinstall := TARGET = install
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsclobber := TARGET = clobber
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsclean := TARGET = clean
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewstest := TARGET = test
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# Compiler replacement rules
5c526acb82c882e41b655c31f5fa4425c87b671cMark AndrewsSED_CC = -e "s!'cc'!'$(CC)'!"
5c526acb82c882e41b655c31f5fa4425c87b671cMark AndrewsSED_CC_E = -e "s!'cc -E'!'$(REAL_CC) -E'!"
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# distrib holds the perl source, contrib holds the SMI modules.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsall clean test: configure FRC
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews @ cd distrib; pwd; $(KEEP_STATE_OFF); $(MAKE) $(TARGET)
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews @ cd contrib; pwd; $(KEEP_STATE_OFF); $(MAKE) $(TARGET)
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# distrib/Makefile copies both distrib and contrib to the proto area.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsinstall: all
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews @ cd distrib; pwd; $(KEEP_STATE_OFF); $(MAKE) install_files
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsconfigure: $(DISTRIB_CONFIG_FILES) $(GEN_MAKEFILES)
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# Modify config.sh to refer to the compiler used for the build.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsdistrib/config.sh: $(MACH)/config.sh
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews $(SED) $(SED_CC) $(SED_CC_E) $(MACH)/config.sh > $@
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark AndrewsMakefile.perlcfg: extract_config $(MACH)/config.sh
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews ./extract_config $(MACH)/config.sh > Makefile.perlcfg
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsdistrib/ext/Makefile: extract_makeext $(MACH)/config.sh
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews ./extract_makeext $(MACH)/config.sh > distrib/ext/Makefile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews.PARALLEL: extract_config extract_makeext distrib/config.sh Makefile.perlcfg \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews distrib/ext/Makefile
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# Subsidiary makefiles include the generated Makefiles,
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews# so make sure they exist first and then delete them afterwards.
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews#
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrewsclobber: $(GEN_MAKEFILES) FRC
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews @ cd distrib; pwd; $(KEEP_STATE_OFF); $(MAKE) $(TARGET)
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews @ cd contrib; pwd; $(KEEP_STATE_OFF); $(MAKE) $(TARGET)
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews - $(RM) $(DISTRIB_CONFIG_FILES) $(GEN_MAKEFILES) \
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews extract_config extract_makeext
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews
5c526acb82c882e41b655c31f5fa4425c87b671cMark AndrewsFRC:
5c526acb82c882e41b655c31f5fa4425c87b671cMark Andrews