#
#    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 for iw, a library and set of utilities for
#      manipulating Linux nl80211-based wireless network interfaces.
#


include pre.mak

PackageRoot		:= ./$(IwPackageName)
PackageExtension	:= tar.bz2
PackageSeparator	:=
PackageVersion		:=

PackagePatchArgs	:= -p1

PackageArchive		:= $(IwPackageName)/$(IwPackageName).$(PackageExtension)
PackageSourceDir	:= $(IwPackageName)/$(IwPackageName)$(PackageSeparator)$(PackageVersion)
PackagePatchDir	    := $(IwPackageName)/$(IwPackageName).patches

PackageBuildMakefile	= $(call GenerateBuildPaths,Makefile)

LicenseSourceFile	:= COPYING
LicenseSourcePath	:= $(addprefix $(PackageSourceDir)/,$(LicenseSourceFile))

CleanPaths		+= $(PackageLicenseFile)

NetlinkDir		:= sw/tps/libnl
NetlinkIncDir		:= $(call GenerateResultPaths,$(NetlinkDir),usr/include)
NetlinkLibDir		:= $(call GenerateResultPaths,$(NetlinkDir),usr/lib)

SOURCEDIRS                      = $(PackageSourceDir)
$(PackageSourceDir)_RULE_TARGET = $(BuildDirectory)/configure

all: $(PackageDefaultGoal)

# Generate the package license contents.

$(LicenseSourcePath): $(BuildDirectory)/source

$(PackageLicenseFile): $(LicenseSourcePath)
	$(copy-result)

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

$(PackageSourceDir): $(PackageArchive) $(PackagePatchPaths)
	$(call expand-archive,$(PackageArchive),$(PackageRoot))
	$(Verbose)touch $@
	$(call patch-directory,$(PackageSourceDir),$(PackagePatchArgs),$(PackagePatchPaths))

# Prepare the sources.

$(BuildDirectory)/source: | $(PackageSourceDir)
	$(Verbose)touch $@

# Patch the sources, if necessary.

$(BuildDirectory)/patch: $(BuildDirectory)/source
	$(Verbose)touch $@

# Generate the package build makefile.

# Configure the source for building.

$(BuildDirectory)/configure: $(BuildDirectory)/source | $(PackageSourceDir) $(BuildDirectory)
	$(call create-links,$(CURDIR)/$(PackageSourceDir),$(BuildDirectory))
	$(Verbose)touch $@

# Build the source.
#
# We have to unset MAKEFLAGS since they confuse the package build otherwise.

$(BuildDirectory)/build: $(BuildDirectory)/configure | $(BuildDirectory)
	$(Verbose)unset MAKEFLAGS && \
	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \
	CC="$(CC)" CXX="$(CXX)" AR=$(AR) NM=$(NM) RANLIB=$(RANLIB) STRIP=$(STRIP) \
	INSTALL="$(INSTALL) $(INSTALLFLAGS)" \
	NLLIBNAME="libnl-2.0" \
	NLCFLAGS="$(call ToolGenerateIncludeArgument,$(NetlinkIncDir))" \
	NLLDFLAGS="-L$(NetlinkLibDir)" \
	all
	$(Verbose)touch $@

# Stage the build to a temporary installation area.
#
# We have to unset MAKEFLAGS since they confuse the package build otherwise.

.PHONY: stage
stage: $(BuildDirectory)/stage-default $(BuildDirectory)/stage-headers

$(BuildDirectory)/stage-default: $(BuildDirectory)/build | $(ResultDirectory)
	$(Verbose)unset MAKEFLAGS && \
	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \
	NLLIBNAME="libnl-2.0" \
	DESTDIR=$(ResultDirectory) \
	install
	$(Verbose)touch $@

ResultHeaderDir			= $(ResultDirectory)/usr/include
SourceHeaderPaths		= $(wildcard $(BuildDirectory)/*.h)

$(ResultHeaderDir):
	$(create-directory)

$(BuildDirectory)/stage-headers: $(BuildDirectory)/build | $(ResultHeaderDir)
	install --mode=0664 $(SourceHeaderPaths) $(ResultHeaderDir)
	$(Verbose)touch $@

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

include post.mak
