#
#    Copyright (c) 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 Mentor Graphics (formerly
#      CodeSourcery) Sourcery CodeBench 2011.03-65-specific staging
#      rules and commands for the GNU C++ Standard Library.
#

# Stage the build to a temporary installation area.
#
# Per the comments at the top of this file, we simply pull the tool
# chain's C++ library. We also appear to need libgcc.

.PHONY: stage
stage: build | $(ResultDirectory)
	$(Verbose)install -d $(call GenerateResultPaths,,usr/lib)
	$(Verbose)install $(ToolLibDir)/../../lib/libgcc_s.so.1		$(call GenerateResultPaths,,usr/lib/libgcc_s.so.1)
	$(Verbose)install $(ToolLibDir)/libstdc++.so.6.0.14	$(call GenerateResultPaths,,usr/lib/libstdc++.so.6.0.14)
	$(Verbose)ln -sf libgcc_s.so.1     			$(call GenerateResultPaths,,usr/lib/libgcc_s.so)
	$(Verbose)ln -sf libstdc++.so.6.0.14			$(call GenerateResultPaths,,usr/lib/libstdc++.so)
	$(Verbose)ln -sf libstdc++.so.6.0.14			$(call GenerateResultPaths,,usr/lib/libstdc++.so.6)
