#
#    Copyright (c) 2010-2012 Nest Labs, 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 mjson, a small, C-based
#      JavaScript Object Notation (JSON) parser.
#

BuildConfigSpecialized	:= No
BuildProductSpecialized	:= No

include pre.mak

PackageName		:= mjson

PackageExtension	:= tar.gz
PackageSeparator	:= -

PackagePatchArgs	:= -p1

PackageArchive		:= $(PackageName).$(PackageExtension)
PackageSourceDir	:= json$(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)
	$(Verbose)cd $(BuildDirectory) && \
	$(CURDIR)/$(PackageSourceDir)/configure \
	CC="$(CC)" CXX="$(CXX)" AR=$(AR) NM=$(NM) RANLIB=$(RANLIB) STRIP=$(STRIP) \
	INSTALL="$(INSTALL) $(INSTALLFLAGS)" \
	--build=$(HostTuple) \
	--host=$(TargetTuple) \
	--prefix=/usr \
	--sysconfdir=/etc \
	--localstatedir=/var \
	--disable-static

# Configure the source for building.

.PHONY: configure
configure: source $(PackageBuildMakefile)

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

.PHONY: build
build: configure
	$(Verbose)unset MAKEFLAGS && \
	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) all

# Stage the build to a temporary installation area.
#
# We have to unset MAKEFLAGS since they confuse the package build otherwise.
#
# We explictly remove 'libfoo.la' because some packages that depend on
# these libraries use libtool. If libtool finds a 'libfoo.la' file for
# a library, it uses the value of 'libdir=<dir>' it finds. In our
# case, since '--prefix=/usr' this value is '/usr/lib'. It then
# resolves '-lfoo'. In a cross-compilation environment, this is likely
# to be neither the right architecture nor the right version to link
# against. In short, we lose.
#
# We could also handle this by removing DESTDIR and setting the prefix
# to $(ResultDirectory); however, that results in libtool hard-coding
# $(ResultDirectory) as the RPATH in the linked executables which is
# NOT what we want either. We lose again.
#
# By removing the '*.la' file, we win by ensuring neither a misdirected
# link nor an RPATH.

.PHONY: stage
stage: build | $(ResultDirectory)
	$(Verbose)unset MAKEFLAGS && \
	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) DESTDIR=$(ResultDirectory) install
	$(Verbose)$(RM) $(RMFLAGS) $(call GenerateResultPaths,,usr/lib/libmjson.la)

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

include post.mak
