#
#    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 lpeg, a parsing expression grammar for Lua
#

.NOTPARALLEL:

EnableShared    = Yes

include pre.mak

PackageName		:= lpeg

PackageExtension	:= tar.gz
PackageSeparator	:= -

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

PackageBuildMakefile	= $(call GenerateBuildPaths,makefile)

LuaDir			:= sw/tps/lua
LuaIncDirs		:= $(call GenerateResultPaths,$(LuaDir),include)
LuaLibDir		:= $(call GenerateResultPaths,$(LuaDir),lib)

CleanPaths		+= $(PackageLicenseFile)

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

all: $(PackageDefaultGoal)

# Generate the package license contents.

$(PackageSourceDir)/LICENSE: $(BuildDirectory)/source

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

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

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

# Prepare the sources.

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

# Patch the sources, if necessary.

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

# Generate the package build makefile.

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

# Configure the source for building.

$(BuildDirectory)/configure: $(BuildDirectory)/patch | $(PackageBuildMakefile)
	$(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) -fPIC" LD="$(LD)" RANLIB=$(RANLIB) STRIP=$(STRIP) \
	INSTALL="$(INSTALL) $(INSTALLFLAGS)" \
	LUADIR=$(LuaIncDirs) \
	lpeg.so
	$(Verbose)touch $@

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

$(ResultDirectory)/lpeg.so: $(BuildDirectory)/lpeg.so $(BuildDirectory)/build | $(ResultDirectory)
	$(copy-result)

$(BuildDirectory)/stage: $(BuildDirectory)/build $(ResultDirectory)/lpeg.so | $(ResultDirectory)
	$(Verbose)touch $@

.PHONY: stage
stage: $(BuildDirectory)/stage

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

include post.mak
