#
#    Copyright (c) 2011-2013 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:
#

include pre.mak

# Enable warnings as errors
WARNINGS += $(call ToolAssertWarningFlag,$(WarnWarningsAreErrors))

ResultIncDir            = $(call GenerateResultPaths,,openssl)
ResultLibDir            = $(call GenerateResultPaths,,.)
BuildDir                = $(CURDIR)/$(BuildDirectory)

PolarsslIncDir          = $(call GenerateResultPaths,,polarssl)

AllLibraries = \
	libemssl.a \
	libbn.a \
	libjpake.a \
	libecdsa.a \
	libec.a \
	libecdh.a \
	libpolarssl.a \
	libctrdrbg.a

all: install-includes $(BuildDir)
	$(MAKE) \
		BUILD_DIR="$(BuildDir)" \
		LINK="$(LD) $(LDFLAGS)" \
		CC="$(CC)" \
		CPPFLAGS="$(CPPOPTFLAGS) -I$(NlEMallocIncludePath) -I$(NewLibCIncludePaths)" \
		AR=$(AR) \
		BN_MONT_ASM_TYPE=$(TargetProcArch) \
		-f Makefile.emssl
	$(INSTALL) $(INSTALLFLAGS) $(foreach l,$(AllLibraries),$(BuildDirectory)/lib/$(l)) $(ResultLibDir)

clean:
	$(MAKE) BUILD_DIR="$(BuildDir)" -f Makefile.emssl $@

$(PolarsslIncDir):
	$(MKDIR) -p $@

$(BuildDir):
	$(MKDIR) -p $@

install-includes: $(ResultIncDir) $(PolarsslIncDir)
	$(INSTALL) $(INSTALLFLAGS) openssl/*.h $(ResultIncDir)
	$(INSTALL) $(INSTALLFLAGS) polarssl/*.h $(PolarsslIncDir)

prepare: install-includes

include post.mak
