#
#    Copyright (c) 2015 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 eigen, a C++ linear algebra library
#

BuildConfigSpecialized	:= No
BuildProductSpecialized	:= No

include pre.mak

PackageName		:= eigen

PackageExtension	:= tar.bz2
PackageSeparator	:= -

PackagePatchArgs	:= -p1

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

PackageBuildMakefile	= $(call GenerateBuildPaths,Makefile)

LicenseSourceFile	:= $(PackageSourceDir)/COPYING.MPL2

CleanPaths		+= $(PackageLicenseFile)

all: $(PackageDefaultGoal)

# Generate the package license contents.

$(LicenseSourceFile): source

$(PackageLicenseFile): $(LicenseSourceFile)
	$(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

ResultHeaderPath             = $(ResultDirectory)/include
SourceHeaderPathEigen        = $(PackageSourceDir)/Eigen
SourceHeaderPathUnsupported  = $(PackageSourceDir)/unsupported

$(ResultHeaderPath):
	$(create-directory)

.PHONY: copyEigen
copyEigen: patch | $(ResultHeaderPath)
	cp -Rf $(SourceHeaderPathEigen) $(ResultHeaderPath)

.PHONY: copyUnsupported
copyUnsupported: patch | $(ResultHeaderPath)
	cp -Rf $(SourceHeaderPathUnsupported) $(ResultHeaderPath)

.PHONY: stage
stage: copyEigen copyUnsupported | $(ResultDirectory)

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

include post.mak
