#
#    Copyright (c) 2010-2011 Nest, Inc.
#    All rights reserved.
#
#    This document is the property of Nest. It is considered
#    confidential and proprietary information.
#
#    This document may not be reproduced or transmitted in any form,
#    in whole or in part, without the express written permission of
#    Nest.
#
#    Description:
#      This file is the makefile for the GNU C++ Standard Library.
#
#      The following set of packages MUST be a matched set:
#
#	 * Target Binary Utilities
#        * Target GNU C Standard Library
#        * Target GNU C++ Standard Library
#        * Target GDB server and client
#	 * Host Cross Binary Utilities
#	 * Host Cross Compilers
#        * Host Cross GDB client
#
#      These are presumed provided by the tool chain and are simply
#      sourced from it rather than built anew from source.
#
#      This is acceptable but a little less than ideal since it makes
#      the build tree, specifically this make file, dependent on the tool
#      chain in a non-abstracted way. Ideally, we'd like to be able to
#      rebuild all the target pieces from source against any arbitrary
#      tool chain meeting some minimum set of capabilities.
#

include pre.mak

PackageName		:= libstdc++

all: $(PackageDefaultGoal)

# Prepare the sources.

.PHONY: source
source:

# Patch the sources, if necessary.

.PHONY: patch
patch: source

# Configure the source for building.

.PHONY: configure
configure: source

# Build the source.

.PHONY: build
build: configure

# Stage the build to a temporary installation area.

.PHONY: stage
stage: build

include $(ToolVendor)-$(ToolProduct)-$(ToolVersion).mak

clean:
	$(Verbose)$(RM) $(RMFLAGS) -r $(ResultDirectory)

include post.mak
