#
#    Copyright (c) 2017 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 protobuf makefile for the target.  Once the
#    automatically generated code is compiled using the cross compiler,
#    the protobuf shared object will need to reside on the target.
#

include pre.mak

PackageName		:= protobuf

PackageExtension	:= tar.gz
PackageSeparator	:= -

PackagePatchArgs	:= -p1

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

PackageBuildMakefile	= $(call GenerateBuildPaths,Makefile)

PackageResultPath = $(call GenerateResultPaths,,usr)

CleanPaths		+= $(PackageLicenseFile)

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

all: $(PackageDefaultGoal)

$(ResultDirectory)/lib:
	$(create-directory)

$(ResultDirectory)/include:
	$(create-directory)

# 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: $(BuildDirectory)/source_empty
$(BuildDirectory)/source_empty: | $(PackageSourceDir) $(BuildDirectory)
	$(Verbose)touch $@

.PHONY: patch
patch: $(BuildDirectory)/patch_empty
$(BuildDirectory)/patch_empty: $(BuildDirectory)/source_empty | $(BuildDirectory)
	$(Verbose)touch $@

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

.PHONY: configure
configure: $(BuildDirectory)/configure_empty
$(BuildDirectory)/configure_empty: $(BuildDirectory)/source_empty $(PackageBuildMakefile) | $(BuildDirectory)
	$(Verbose)cd $(BuildDirectory) && \
	$(CURDIR)/$(PackageSourceDir)/configure \
	INSTALL="$(INSTALL) $(INSTALLFLAGS)" \
	CC="$(CC) $(CPPOPTFLAGS)" CXX="$(CXX) $(CPPOPTFLAGS)" AR="$(AR)" RANLIB="$(RANLIB)" STRIP="$(STRIP)" \
	CPPFLAGS="$(call ToolGenerateIncludeArgument,$(LinuxIncludePath))" \
	--build=$(HostTuple) \
	--host=$(TargetTuple) \
	--prefix=$(PackageResultPath) \
	--sysconfdir=/etc \
	--localstatedir=/var \
	--enable-static=no \
	--enable-shared=yes \
	--without-zlib \
	--with-protoc=$(ProtocExecutableHostResultPath)/protoc
	$(Verbose)touch $@

.PHONY: build
build: $(BuildDirectory)/build_empty
$(BuildDirectory)/build_empty: $(BuildDirectory)/configure_empty | $(BuildDirectory)
	$(Verbose)unset MAKEFLAGS && \
	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \
	all
	$(Verbose)touch $@

.PHONY: stage
stage: $(BuildDirectory)/stage_empty
$(BuildDirectory)/stage_empty: $(BuildDirectory)/build_empty | $(ResultDirectory) $(BuildDirectory)
	$(Verbose)unset MAKEFLAGS && \
	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \
	install
	$(Verbose)touch $@

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

include post.mak
