#
#    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 the make file for NTP, the reference client and
#      server implementation for the Network Time Protocol (NTP).
#

BuildConfigSpecialized	:= No
BuildProductSpecialized	:= No

include pre.mak

PackageName		:= ntp

PackageExtension	:= tar.gz
PackageSeparator	:= -

PackagePatchArgs	:= -p1

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

PackageBuildMakefile	= $(call GenerateBuildPaths,Makefile)

LicenseSourceFile	:= $(PackageSourceDir)/COPYRIGHT

CleanPaths		+= $(PackageLicenseFile)

LibCapDir		:= sw/tps/libcap
LibCapIncDir		= $(call GenerateResultPaths,$(LibCapDir),usr/include)
LibCapLibDir		= $(call GenerateResultPaths,$(LibCapDir),lib)

LinuxDir		:= sw/tps/linux
LinuxIncDir		:= $(call GenerateResultPaths,$(LinuxDir),include)

OpenSslDir		:= sw/tps/openssl
OpenSslSearchDir	:= $(call GenerateResultPaths,$(OpenSslDir),usr)
OpenSslIncDir		:= $(call GenerateResultPaths,$(OpenSslDir),usr/include)
OpenSslLibDir		:= $(call GenerateResultPaths,$(OpenSslDir),usr/lib)

ZlibDir			:= sw/tps/zlib
ZlibSearchPath		:= $(call GenerateResultPaths,$(ZlibDir),usr)
ZlibLibDir		:= $(call GenerateResultPaths,$(ZlibDir),usr/lib)

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

# Generate the package build makefile.

$(PackageBuildMakefile): | $(PackageSourceDir) $(BuildDirectory) $(ResultDirectory)
	$(Verbose)cd $(BuildDirectory) && \
	$(CURDIR)/$(PackageSourceDir)/configure \
	CC=$(CC) CXX=$(CXX) AR=$(AR) NM=$(NM) RANLIB=$(RANLIB) STRIP=$(STRIP) \
	CFLAGS="$(call ToolGenerateIncludeArgument,$(LinuxIncDir)) \
	$(call ToolGenerateIncludeArgument,$(LibCapIncDir))" \
	LDFLAGS="-L$(LibCapLibDir) -Wl,-rpath-link -Wl,$(ZlibLibDir)" \
	--build=$(HostTuple) \
	--host=$(TargetTuple) \
	--prefix=/usr \
	--sysconfdir=/etc \
	--localstatedir=/var \
	--disable-debugging \
	--disable-debug-timing \
	--disable-all-clocks \
	--disable-parse-clocks \
	--enable-getifaddrs=yes \
	--enable-kmem \
	--enable-linuxcaps \
	--enable-ipv6 \
	--enable-accurate-adjtime \
	--without-net-snmp-config \
	--without-lineeditlibs \
	--with-openssl-libdir=$(OpenSslLibDir) \
	--with-openssl-incdir=$(OpenSslIncDir) \
	--with-crypto=openssl \
	--without-electricfence \
	--without-ntpsnmpd

# 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) -C $(BuildDirectory) \
	all

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

.PHONY: stage
stage: build | $(ResultDirectory)
	$(Verbose)unset MAKEFLAGS && \
	$(MAKE) -C $(BuildDirectory) \
	DESTDIR=$(ResultDirectory) \
	install

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

include post.mak
