#
#    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 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		:= glibc

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 $(PackageBuildMakefile)

# Build the source.

.PHONY: build
build: configure

# Stage the build to a temporary installation area.

.PHONY: stage
stage: build stage-dirs | $(ResultDirectory)

.PHONY: stage-dirs
stage-dirs: stage-lib stage-sbin stage-usrlib stage-usrbin stage-usrsbin

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

.PHONY: stage-lib
stage-lib:

.PHONY: stage-sbin
stage-sbin:

.PHONY: stage-usrlib
stage-usrlib:

.PHONY: stage-usrbin
stage-usrbin:

.PHONY: stage-usrsbin
stage-usrsbin:

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

include post.mak
