#
#    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 Makefile is used to build lua, a lightweight scripting language.
#    This package produces both a standalone lua interpreter and a C binding library.
#

BuildConfigSpecialized	:= No
BuildProductSpecialized	:= No

include pre.mak

PackageName		:= Python

PackageExtension	:= tar.bz2
PackageSeparator	:= -
PackageVersion		:= 2.7.8
PackagePatchArgs 	:= -p1

PackageArchive		:= $(PackageName)$(PackageSeparator)$(PackageVersion).$(PackageExtension)
PackageSourceDir	:= $(PackageName)$(PackageSeparator)$(PackageVersion)

PackageBuildMakefile	= $(call GenerateBuildPaths,Makefile)

CleanPaths		+= $(PackageLicenseFile)

all: $(PackageDefaultGoal)

# Generate the package license contents.

$(PackageSourceDir)/COPYRIGHT: source

$(PackageLicenseFile): $(PackageSourceDir)/COPYRIGHT
	$(copy-result)

# Extract the source from the archive and apply patches, if any.

$(PackageSourceDir): $(PackageArchive) $(PackagePatchPaths)
	$(expand-and-patch-package)

# Prepare the sources.

.PHONY: source
source: | ${PackageSourceDir}

# Patch the sources, if necessary.

.PHONY: patch
patch: source

# Generate the package build makefile.

$(PackageBuildMakefile): | $(PackageSourceDir) $(BuildDirectory)
	$(call create-links,$(CURDIR)/$(PackageSourceDir),$(BuildDirectory))

# Configure the source for building.

.PHONY: configure
configure: source $(PackageBuildMakefile)
	$(Verbose)cd $(BuildDirectory) && \
	CC="$(CC)" LD="$(LD)" LDFLAGS="$(LDFLAGS)" ./configure \
	--enable-shared \
	--prefix=$(ResultDirectory) \
	--exec-prefix=$(ResultDirectory) \
	--with-libm="-lm"

# Build the source.
#
# We have to unset MAKEFLAGS since the python's Makefile wants
# to change MAKEFLAGS.

.PHONY: build
build: configure | $(BuildDirectory)
	$(Verbose)unset MAKEFLAGS && \
	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \
	CC="$(CC)" AR="$(AR)" RANLIB=$(RANLIB)


# Stage the build to a temporary installation area.
#
# We have to unset MAKEFLAGS since the python's Makefile wants
# to change MAKEFLAGS.

.PHONY: stage
stage: build | $(ResultDirectory)
	$(Verbose)unset MAKEFLAGS && \
	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \
	install

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

include post.mak
