#
#    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 makefile for an open-source version of Apple's
#      CoreFoundation library.
#

BuildConfigSpecialized	:= No
BuildProductSpecialized	:= No

include pre.mak

PackageName		:= opencflite

PackageExtension	:= tar.gz
PackageSeparator	:= -

PackagePatchArgs	:= -p1

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

PackageBuildMakefile	= $(call GenerateBuildPaths,Makefile)

CleanPaths		+= $(PackageLicenseFile)

# XXX - CoreFoundation occassionally has a segment fault in
# CFDictionaryRemoveValue when compiled with -O2 or higher. Until this
# has been fully-debugged, build with -Os.

PackageOptimizerFlags	:= -g -Os

TpsDir			:= sw/tps
ICUDir			:= $(TpsDir)/icu
ICUSearchPath		:= $(call GenerateResultPaths,$(ICUDir),usr)
UUIDDir			:= $(TpsDir)/e2fsprogs
UUIDSearchPath		:= $(call GenerateResultPaths,$(UUIDDir),usr)
TzDir			:= $(TpsDir)/tz
TzSearchPath		:= $(call GenerateResultPaths,$(TzDir),usr)

all: $(PackageDefaultGoal)

# Generate the package license contents.

$(PackageSourceDir)/LICENSE: 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.

.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) RANLIB=$(RANLIB) STRIP=$(STRIP) \
	CFLAGS="$(PackageOptimizerFlags)" \
	CXXFLAGS="$(PackageOptimizerFlags)" \
	--build=$(HostTuple) \
	--host=$(TargetTuple) \
	--disable-profile \
	--with-icu=$(ICUSearchPath) \
	--with-uuid=$(UUIDSearchPath) \
	--with-tz-includes=$(TzSearchPath) \
	--prefix=/usr \
	--sysconfdir=/etc \
	--localstatedir=/var

# 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.
#
# 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) -C $(BuildDirectory) DESTDIR=$(ResultDirectory) install
	$(Verbose)$(RM) $(RMFLAGS) $(call GenerateResultPaths,,usr/lib/libCoreFoundation.la usr/lib/libCoreFoundation_debug.la usr/lib/libCoreFoundation_profile.la)

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

include post.mak
