| # | 
 | #    Copyright (c) 2010-2012 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 the Open Secure Socket Layer | 
 | #      (SSL) library. | 
 | # | 
 |  | 
 | .NOTPARALLEL: | 
 |  | 
 | BuildConfigSpecialized	:= No | 
 |  | 
 | include pre.mak | 
 |  | 
 | PackageName		:= openssl | 
 |  | 
 | PackageExtension	:= tar.gz | 
 | PackageSeparator	:= - | 
 |  | 
 | PackagePatchArgs	:= -p1 | 
 |  | 
 | PackageArchive		:= $(PackageName)$(PackageSeparator)$(PackageVersion).$(PackageExtension) | 
 | PackageSourceDir	:= $(PackageName)$(PackageSeparator)$(PackageVersion) | 
 |  | 
 | PackageBuildMakefile	= $(call GenerateBuildPaths,Makefile) | 
 |  | 
 | CleanPaths		+= $(PackageLicenseFile) | 
 |  | 
 | LinuxDir		:= sw/tps/linux | 
 | LinuxIncDir		:= $(call GenerateResultPaths,$(LinuxDir),include) | 
 |  | 
 | ZlibDir			:= sw/tps/zlib | 
 | ZlibIncDir      	:= $(call GenerateResultPaths,$(ZlibDir),usr/include) | 
 | ZlibLibDir      	:= $(call GenerateResultPaths,$(ZlibDir),usr/lib) | 
 |  | 
 | OpenSSLPackageOptions	+= experimental-jpake $(call ToolGenerateDefineArgument,OPENSSL_EXPERIMENTAL_JPAKE) | 
 |  | 
 | OpenSSLTargets	      = all | 
 | OpenSSLInstallTargets = install | 
 |  | 
 | # If the feature BUILD_FEATURE_OPENSSL_FORCE32_LONG is set, we're forcing OpenSSL to use a 32bit long | 
 | # We typically set this when building the simulator because our PASE code expects BN_BYTES == 4 | 
 | # We force 32bit by setting the TargetConfig to gcc | 
 | # Couple unfortunate side effects: | 
 | # 1) Assembly is not supported | 
 | # 2) This TargetConfig forces us to build as a static library (OpenSSL limitation) | 
 | # 3) We have to turn off compression.  Zlib causes problems for other packages like curl  | 
 | #    whose configure script can't seem to realize that it needs to bring in zlib as well | 
 | #    (might be a pkgconfig issue with openssl?) | 
 | # 4) We have to compile with -fPIC since other dylibs (curl) link openssl | 
 | ifeq ($(BUILD_FEATURE_OPENSSL_FORCE32_LONG),1) | 
 | OpenSSLPackageOptions += no-asm no-zlib | 
 | OpenSSLCCFlags        = -fPIC | 
 | OpenSSLTargetConfig   = gcc | 
 | else | 
 | OpenSSLPackageOptions += shared zlib | 
 | endif | 
 |  | 
 | 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 | 
 |  | 
 | $(PackageBuildMakefile): | $(PackageSourceDir) $(BuildDirectory) | 
 | 	$(Verbose)$(call create-links,$(CURDIR)/$(PackageSourceDir),$(BuildDirectory)) ; \ | 
 | 	cd $(BuildDirectory) && \ | 
 | 	INSTALL="$(INSTALL) $(INSTALLFLAG)" \ | 
 | 	./Configure \ | 
 | 	--prefix=/usr \ | 
 | 	--openssldir=/usr/lib/ssl \ | 
 | 	$(call ToolGenerateIncludeArgument,$(ZlibIncDir)) \ | 
 | 	$(call ToolGenerateLibraryPathArgument,$(ZlibLibDir)) \ | 
 | 	$(OpenSSLPackageOptions) \ | 
 | 	$(OpenSSLCCFlags) \ | 
 | 	$(OpenSSLTargetConfig) | 
 |  | 
 | # 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 | $(BuildDirectory) | 
 | 	$(Verbose)unset MAKEFLAGS && \ | 
 | 	$(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \ | 
 | 	CC="$(CC)" AR="$(AR) $(ARFLAGS)" RANLIB=$(RANLIB) \ | 
 | 	INSTALL_PREFIX=$(ResultDirectory) \ | 
 | 	$(OpenSSLTargets) | 
 |  | 
 | # 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) \ | 
 | 	CC="$(CC)" AR="$(AR) $(ARFLAGS)" RANLIB=$(RANLIB) \ | 
 | 	INSTALL="$(INSTALL) $(INSTALLFLAGS)" \ | 
 | 	INSTALL_PREFIX=$(ResultDirectory) \ | 
 | 	$(OpenSSLInstallTargets) | 
 |  | 
 | clean: | 
 | 	$(Verbose)$(RM) $(RMFLAGS) -r $(PackageSourceDir) | 
 | 	$(Verbose)$(RM) $(RMFLAGS) -r $(BuildDirectory) | 
 | 	$(Verbose)$(RM) $(RMFLAGS) -r $(ResultDirectory) | 
 |  | 
 | include post.mak |