#
#    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 make file for i2c-tools, a heterogeneous set
#      of I2C tools for Linux.
#

BuildConfigSpecialized	:= No
BuildProductSpecialized	:= No

include pre.mak

PackageName		:= i2c-tools

PackageExtension	:= tar.bz2
PackageSeparator	:= -

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

PackageBuildMakefile	= $(call GenerateBuildPaths,Makefile)

CleanPaths		+= $(PackageLicenseFile)

all: $(PackageDefaultGoal)

# Generate the package license contents.

$(PackageSourceDir)/COPYING: source

$(PackageLicenseFile): $(PackageSourceDir)/COPYING
	$(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)

# Build the source.

.PHONY: build
build: configure
	$(Verbose)unset MAKEFLAGS && \
	$(MAKE) -C $(BuildDirectory) \
	CC=$(CC) CXX=$(CXX) AR=$(AR) RANLIB=$(RANLIB) STRIP=$(STRIP) \
	prefix=/usr \
	all

# Stage the build to a temporary installation area.

.PHONY: stage
stage: build | $(ResultDirectory)
	$(Verbose)unset MAKEFLAGS && \
	$(MAKE) -C $(BuildDirectory) \
	prefix=/usr \
	DESTDIR=$(ResultDirectory) \
	install

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

include post.mak
