# Makefile.in generated by automake 1.14.1 from Makefile.am.
# @configure_input@

# Copyright (C) 1994-2013 Free Software Foundation, Inc.

# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.

@SET_MAKE@

#
#    Copyright (c) 2014-2017 Nest Labs, Inc.
#    All rights reserved.
#
#    Licensed under the Apache License, Version 2.0 (the "License");
#    you may not use this file except in compliance with the License.
#    You may obtain a copy of the License at
#
#        http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.

#
#    Description:
#      This file is the GNU automake template for the Weave in-package,
#      tuned OpenSSL library.
#
#      This serves as "glue" or a proxy from the Weave build system to
#      the OpenSSL build system.
#
VPATH = @srcdir@
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
  case $${target_option-} in \
      ?) ;; \
      *) echo "am__make_running_with_option: internal error: invalid" \
              "target option '$${target_option-}' specified" >&2; \
         exit 1;; \
  esac; \
  has_opt=no; \
  sane_makeflags=$$MAKEFLAGS; \
  if $(am__is_gnu_make); then \
    sane_makeflags=$$MFLAGS; \
  else \
    case $$MAKEFLAGS in \
      *\\[\ \	]*) \
        bs=\\; \
        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
    esac; \
  fi; \
  skip_next=no; \
  strip_trailopt () \
  { \
    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
  }; \
  for flg in $$sane_makeflags; do \
    test $$skip_next = yes && { skip_next=no; continue; }; \
    case $$flg in \
      *=*|--*) continue;; \
        -*I) strip_trailopt 'I'; skip_next=yes;; \
      -*I?*) strip_trailopt 'I';; \
        -*O) strip_trailopt 'O'; skip_next=yes;; \
      -*O?*) strip_trailopt 'O';; \
        -*l) strip_trailopt 'l'; skip_next=yes;; \
      -*l?*) strip_trailopt 'l';; \
      -[dEDm]) skip_next=yes;; \
      -[JT]) skip_next=yes;; \
    esac; \
    case $$flg in \
      *$$target_option*) has_opt=yes; break;; \
    esac; \
  done; \
  test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
subdir = third_party/openssl
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/third_party/autoconf/mkinstalldirs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/third_party/nlbuild-autotools/repo/autoconf/m4/ax_check_compiler.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/autoconf/m4/nl_enable_coverage.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/autoconf/m4/nl_enable_coverage_reporting.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/autoconf/m4/nl_enable_debug.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/autoconf/m4/nl_enable_docs.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/autoconf/m4/nl_enable_optimization.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/autoconf/m4/nl_enable_tests.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/autoconf/m4/nl_enable_werror.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/autoconf/m4/nl_filtered_canonical.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/autoconf/m4/nl_prog_lndir.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/autoconf/m4/nl_werror.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/autoconf/m4/nl_with_package.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/third_party/autoconf/m4/ax_compare_version.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/third_party/autoconf/m4/ax_cxx_compile_stdcxx.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/third_party/autoconf/m4/ax_cxx_compile_stdcxx_11.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/third_party/autoconf/m4/ax_jni_include_dir.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/third_party/autoconf/m4/ax_pthread.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/third_party/autoconf/m4/libtool.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/third_party/autoconf/m4/ltoptions.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/third_party/autoconf/m4/ltsugar.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/third_party/autoconf/m4/ltversion.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/third_party/autoconf/m4/lt~obsolete.m4 \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/third_party/autoconf/m4/pkg.m4 \
	$(top_srcdir)/build/autoconf/m4/nl_check_project_config_includes.m4 \
	$(top_srcdir)/build/autoconf/m4/nl_enable_long_tests.m4 \
	$(top_srcdir)/build/autoconf/m4/nl_with_lwip.m4 \
	$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
	$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/third_party/autoconf/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/src/include/BuildConfig.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo "  GEN     " $@;
am__v_GEN_1 = 
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 = 
SOURCES =
DIST_SOURCES =
am__can_run_installinfo = \
  case $$AM_UPDATE_INFO_DIR in \
    n|no|NO) false;; \
    *) (install-info --version) >/dev/null 2>&1;; \
  esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BLUEZ_CPPFLAGS = @BLUEZ_CPPFLAGS@
BLUEZ_LDFLAGS = @BLUEZ_LDFLAGS@
BLUEZ_LIBS = @BLUEZ_LIBS@
BLUEZ_SUBDIRS = @BLUEZ_SUBDIRS@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CMP = @CMP@
CONFIG_DEVICE_LAYER = @CONFIG_DEVICE_LAYER@
CONFIG_HAVE_HEAP = @CONFIG_HAVE_HEAP@
CONFIG_HAVE_VCBPRINTF = @CONFIG_HAVE_VCBPRINTF@
CONFIG_HAVE_VSNPRINTF_EX = @CONFIG_HAVE_VSNPRINTF_EX@
CONFIG_NETWORK_LAYER_BLE = @CONFIG_NETWORK_LAYER_BLE@
CONFIG_NETWORK_LAYER_INET = @CONFIG_NETWORK_LAYER_INET@
CONFIG_TARGET_NETWORKS = @CONFIG_TARGET_NETWORKS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CROSS_SDK = @CROSS_SDK@
CROSS_SYSROOT = @CROSS_SYSROOT@
CROSS_TOP = @CROSS_TOP@
CURL_CPPFLAGS = @CURL_CPPFLAGS@
CURL_LDFLAGS = @CURL_LDFLAGS@
CURL_LIBS = @CURL_LIBS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DBUS_CFLAGS = @DBUS_CFLAGS@
DBUS_LIBS = @DBUS_LIBS@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DOT = @DOT@
DOXYGEN = @DOXYGEN@
DOXYGEN_USE_DOT = @DOXYGEN_USE_DOT@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GENHTML = @GENHTML@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
GREP = @GREP@
HAPPY_DNS = @HAPPY_DNS@
HAPPY_PATH = @HAPPY_PATH@
HAPPY_SERVICE = @HAPPY_SERVICE@
HAVE_CXX11 = @HAVE_CXX11@
HAVE_IN6_RTMSG = @HAVE_IN6_RTMSG@
HAVE_LINUX_IF_TUN_H = @HAVE_LINUX_IF_TUN_H@
HAVE_LINUX_IPV6_ROUTE_H = @HAVE_LINUX_IPV6_ROUTE_H@
HAVE_LINUX_ROUTE_H = @HAVE_LINUX_ROUTE_H@
INET_ENDPOINTS = @INET_ENDPOINTS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
JAR = @JAR@
JAVAC = @JAVAC@
JAVA_HOME = @JAVA_HOME@
JNI_CPPFLAGS = @JNI_CPPFLAGS@
LCOV = @LCOV@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIBWEAVE_VERSION_AGE = @LIBWEAVE_VERSION_AGE@
LIBWEAVE_VERSION_CURRENT = @LIBWEAVE_VERSION_CURRENT@
LIBWEAVE_VERSION_INFO = @LIBWEAVE_VERSION_INFO@
LIBWEAVE_VERSION_REVISION = @LIBWEAVE_VERSION_REVISION@
LIPO = @LIPO@
LNDIR = @LNDIR@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
LWIP_CPPFLAGS = @LWIP_CPPFLAGS@
LWIP_LDFLAGS = @LWIP_LDFLAGS@
LWIP_LIBS = @LWIP_LIBS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NLASSERT_CPPFLAGS = @NLASSERT_CPPFLAGS@
NLASSERT_LDFLAGS = @NLASSERT_LDFLAGS@
NLASSERT_LIBS = @NLASSERT_LIBS@
NLASSERT_SUBDIRS = @NLASSERT_SUBDIRS@
NLFAULTINJECTION_CPPFLAGS = @NLFAULTINJECTION_CPPFLAGS@
NLFAULTINJECTION_LDFLAGS = @NLFAULTINJECTION_LDFLAGS@
NLFAULTINJECTION_LIBS = @NLFAULTINJECTION_LIBS@
NLFAULTINJECTION_SUBDIRS = @NLFAULTINJECTION_SUBDIRS@
NLIO_CPPFLAGS = @NLIO_CPPFLAGS@
NLIO_LDFLAGS = @NLIO_LDFLAGS@
NLIO_LIBS = @NLIO_LIBS@
NLIO_SUBDIRS = @NLIO_SUBDIRS@
NLUNIT_TEST_CPPFLAGS = @NLUNIT_TEST_CPPFLAGS@
NLUNIT_TEST_LDFLAGS = @NLUNIT_TEST_LDFLAGS@
NLUNIT_TEST_LIBS = @NLUNIT_TEST_LIBS@
NLUNIT_TEST_SUBDIRS = @NLUNIT_TEST_SUBDIRS@
NL_PROJECT_CONFIG_INCLUDES = @NL_PROJECT_CONFIG_INCLUDES@
NM = @NM@
NMEDIT = @NMEDIT@
OBJC = @OBJC@
OBJCDEPMODE = @OBJCDEPMODE@
OBJCFLAGS = @OBJCFLAGS@
OBJCOPY = @OBJCOPY@
OBJCXX = @OBJCXX@
OBJCXXCPP = @OBJCXXCPP@
OBJCXXDEPMODE = @OBJCXXDEPMODE@
OBJCXXFLAGS = @OBJCXXFLAGS@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OPENSSL_CPPFLAGS = @OPENSSL_CPPFLAGS@
OPENSSL_LDFLAGS = @OPENSSL_LDFLAGS@
OPENSSL_LIBS = @OPENSSL_LIBS@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PERL = @PERL@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
PRETTY_CHECK = @PRETTY_CHECK@
PRETTY_CHECK_ARGS = @PRETTY_CHECK_ARGS@
PTHREAD_CC = @PTHREAD_CC@
PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
PTHREAD_LIBS = @PTHREAD_LIBS@
PYTHON = @PYTHON@
PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SOCKETS_CPPFLAGS = @SOCKETS_CPPFLAGS@
SOCKETS_LDFLAGS = @SOCKETS_LDFLAGS@
SOCKETS_LIBS = @SOCKETS_LIBS@
STRIP = @STRIP@
VERSION = @VERSION@
VISIBILITY_CFLAGS = @VISIBILITY_CFLAGS@
VISIBILITY_CXXFLAGS = @VISIBILITY_CXXFLAGS@
VISIBILITY_OBJCFLAGS = @VISIBILITY_OBJCFLAGS@
VISIBILITY_OBJCXXCFLAGS = @VISIBILITY_OBJCXXCFLAGS@
WEAVE_DEVICE_LAYER_TARGET = @WEAVE_DEVICE_LAYER_TARGET@
WEAVE_DEVICE_LAYER_TARGET_ESP32 = @WEAVE_DEVICE_LAYER_TARGET_ESP32@
WEAVE_LOGGING_STYLE = @WEAVE_LOGGING_STYLE@
WEAVE_LOGGING_STYLE_ANDROID = @WEAVE_LOGGING_STYLE_ANDROID@
WEAVE_LOGGING_STYLE_EXTERNAL = @WEAVE_LOGGING_STYLE_EXTERNAL@
WEAVE_LOGGING_STYLE_STDIO = @WEAVE_LOGGING_STYLE_STDIO@
WEAVE_LOGGING_STYLE_STDIO_WEAK = @WEAVE_LOGGING_STYLE_STDIO_WEAK@
WEAVE_OPENSSL_TARGET = @WEAVE_OPENSSL_TARGET@
WEAVE_OPENSSL_TARGET_DEFINES = @WEAVE_OPENSSL_TARGET_DEFINES@
WEAVE_SYSTEM_CONFIG_USE_LWIP = @WEAVE_SYSTEM_CONFIG_USE_LWIP@
WEAVE_SYSTEM_CONFIG_USE_SOCKETS = @WEAVE_SYSTEM_CONFIG_USE_SOCKETS@
WEAVE_TARGET_STYLE = @WEAVE_TARGET_STYLE@
WEAVE_TARGET_STYLE_EMBEDDED = @WEAVE_TARGET_STYLE_EMBEDDED@
WEAVE_TARGET_STYLE_UNIX = @WEAVE_TARGET_STYLE_UNIX@
_ACJNI_JAVAC = @_ACJNI_JAVAC@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_nlbuild_autotools_dir = @abs_top_nlbuild_autotools_dir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
ac_ct_OBJC = @ac_ct_OBJC@
ac_ct_OBJCXX = @ac_ct_OBJCXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
ax_pthread_config = @ax_pthread_config@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
nlbuild_autotools_stem = @nlbuild_autotools_stem@
oldincludedir = @oldincludedir@
openssl_buildstem = @openssl_buildstem@
pdfdir = @pdfdir@
pkgpyexecdir = @pkgpyexecdir@
pkgpythondir = @pkgpythondir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
pyexecdir = @pyexecdir@
pythondir = @pythondir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
subdirs = @subdirs@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@IsVariable = $(findstring $(2),$(origin $(1)))
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@IsVariableDefault = $(call IsVariable,$(1),default)
EXTRA_DIST = \
    README.third_party                 \
    openssl                            \
    openssl.url                        \
    openssl.version                    \
    patches                            \
    $(NULL)


# OpenSSL preprocessor definitions applicable for all target for the
# in-package OpenSSL.
#
# Pick up any target-specific preprocessor definitions that might be
# required.
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@WEAVE_OPENSSL_DEFINES = $(WEAVE_OPENSSL_TARGET_DEFINES)

# Tell the OpenSSL configuration script what features we do and do not
# want enabled.
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@WEAVE_OPENSSL_DISABLE_OPTIONS = no-asm no-engine no-dso no-shared no-apps no-test no-ssl no-tools no-async
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@WEAVE_OPENSSL_ENABLE_OPTIONS = 
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@WEAVE_OPENSSL_OPTIONS = \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@    $(WEAVE_OPENSSL_DISABLE_OPTIONS)   \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@    $(WEAVE_OPENSSL_ENABLE_OPTIONS)


# OpenSSL generally does a poor job of maintaining the sanctity of its
# source files across configuration and build, overwriting the package
# defaults with the user's selection.
#
# This causes unnecessary changes to appear if OpenSSL has been
# imported under active source code control.
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@openssl_builddir = $(builddir)/$(openssl_buildstem)
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@abs_openssl_builddir = $(abs_builddir)/$(openssl_buildstem)

# Sentinel files used for shadowing and configuring the package.
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@OPENSSL_SHADOW_SENTINEL = $(openssl_builddir)/.shadow-stamp
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@OPENSSL_CONFIG_SENTINEL = $(abs_openssl_builddir)/.configure-stamp
all: all-am

.SUFFIXES:
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
	@for dep in $?; do \
	  case '$(am__configure_deps)' in \
	    *$$dep*) \
	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
	        && { if test -f $@; then exit 0; else break; fi; }; \
	      exit 1;; \
	  esac; \
	done; \
	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign third_party/openssl/Makefile'; \
	$(am__cd) $(top_srcdir) && \
	  $(AUTOMAKE) --foreign third_party/openssl/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
	@case '$?' in \
	  *config.status*) \
	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
	  *) \
	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
	esac;

$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh

$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):

mostlyclean-libtool:
	-rm -f *.lo

clean-libtool:
	-rm -rf .libs _libs
tags TAGS:

ctags CTAGS:

cscope cscopelist:


distdir: $(DISTFILES)
	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
	list='$(DISTFILES)'; \
	  dist_files=`for file in $$list; do echo $$file; done | \
	  sed -e "s|^$$srcdirstrip/||;t" \
	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
	case $$dist_files in \
	  */*) $(MKDIR_P) `echo "$$dist_files" | \
			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
			   sort -u` ;; \
	esac; \
	for file in $$dist_files; do \
	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
	  if test -d $$d/$$file; then \
	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
	    if test -d "$(distdir)/$$file"; then \
	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
	    fi; \
	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
	    fi; \
	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
	  else \
	    test -f "$(distdir)/$$file" \
	    || cp -p $$d/$$file "$(distdir)/$$file" \
	    || exit 1; \
	  fi; \
	done
check-am: all-am
check: check-am
@WEAVE_WITH_OPENSSL_INTERNAL_FALSE@all-local:
all-am: Makefile all-local
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
@WEAVE_WITH_OPENSSL_INTERNAL_FALSE@uninstall: uninstall-am

install-am: all-am
	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am

installcheck: installcheck-am
install-strip:
	if test -z '$(STRIP)'; then \
	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
	      install; \
	else \
	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
	fi
mostlyclean-generic:

clean-generic:

distclean-generic:
	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)

maintainer-clean-generic:
	@echo "This command is intended for maintainers to use"
	@echo "it deletes files that may require special tools to rebuild."
@WEAVE_WITH_OPENSSL_INTERNAL_FALSE@install-data-local:
@WEAVE_WITH_OPENSSL_INTERNAL_FALSE@clean-local:
@WEAVE_WITH_OPENSSL_INTERNAL_FALSE@distclean-local:
clean: clean-am

clean-am: clean-generic clean-libtool clean-local mostlyclean-am

distclean: distclean-am
	-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-local

dvi: dvi-am

dvi-am:

html: html-am

html-am:

info: info-am

info-am:

install-data-am: install-data-local

install-dvi: install-dvi-am

install-dvi-am:

install-exec-am:

install-html: install-html-am

install-html-am:

install-info: install-info-am

install-info-am:

install-man:

install-pdf: install-pdf-am

install-pdf-am:

install-ps: install-ps-am

install-ps-am:

installcheck-am:

maintainer-clean: maintainer-clean-am
	-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic

mostlyclean: mostlyclean-am

mostlyclean-am: mostlyclean-generic mostlyclean-libtool

pdf: pdf-am

pdf-am:

ps: ps-am

ps-am:

uninstall-am:

.MAKE: install-am install-strip

.PHONY: all all-am all-local check check-am clean clean-generic \
	clean-libtool clean-local cscopelist-am ctags-am distclean \
	distclean-generic distclean-libtool distclean-local distdir \
	dvi dvi-am html html-am info info-am install install-am \
	install-data install-data-am install-data-local install-dvi \
	install-dvi-am install-exec install-exec-am install-html \
	install-html-am install-info install-info-am install-man \
	install-pdf install-pdf-am install-ps install-ps-am \
	install-strip installcheck installcheck-am installdirs \
	maintainer-clean maintainer-clean-generic mostlyclean \
	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
	tags-am uninstall uninstall-am


include $(abs_top_nlbuild_autotools_dir)/automake/pre.am

#
# The OpenSSL build system relies on the built-in make variables to
# ensure that ARFLAGS is set such that archive libraries can be
# successfully created.
#
# Consequently, if make is invoked with -R or --no-builtin-variables
# or if MAKEFLAGS contains -R or --no-builtin-variables, then ARFLAGS
# will be unset and OpenSSL will cryptically fail to build.
#
# Attempt to detect this condition and provide the user with a
# corrective action when detected.
#

@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@$(info Checking ARFLAGS...)

@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@$(if $(call IsVariableDefault,ARFLAGS),$(info ARFLAGS is '$(ARFLAGS)', OpenSSL should build correctly),$(error MAKEFLAGS is '$(MAKEFLAGS)' and ARFLAGS is '$(ARFLAGS)'. Your environment may have MAKEFLAGS set with '-R' or '--no-builtin-variables' set from another build system. This prevents the OpenSSL build system from picking up ARFLAGS from make default variables. Please try unsetting MAKEFLAGS from your environment before invoking make.))

#
# GNU autoconf/automake targets proxied to the OpenSSL makefile.
#

# For the local 'all' target, build the OpenSSL source.

@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@all-local: build-local

# OpenSSL doesn't intrinsically support non-colocated source and build
# directories, so shadow the source directory to the build directory.
#
# Use a dedicated sentinel stamp file to ensure the job is
# done. Attempts to use an actual shadowed file (e.g. Configure) will
# fail with non-colocated source and build directories because VPATH
# will believe it to already be satisfied. Finally, ensure that the
# shadowed tree is user-writable so that operations like 'make
# distcheck' succeed. In such an an environment, the source tree is
# read-only and shadowing it will otherwise create a read-only shadow
# copy.

@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@$(dir $(OPENSSL_SHADOW_SENTINEL)):
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	$(create-directory)

@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@$(OPENSSL_SHADOW_SENTINEL): | $(dir $(OPENSSL_SHADOW_SENTINEL))
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	@echo "  LNDIR    $(srcdir)"
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	$(AM_V_at)$(LNDIR) $(abs_srcdir)/openssl/. $(@D)
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	@echo "  CHMOD     $(srcdir)"
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	$(AM_V_at)chmod -R u+w $(@D)
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	$(AM_V_at)echo "sentinel stamp for openssl shadow" > $(@)

@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@.PHONY: shadow-local
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@shadow-local: $(OPENSSL_SHADOW_SENTINEL)

# OpenSSL requires configuration prior to building. Configure it
# appropriately for the target system, shadowing the source first
# if necessary.
#
# Note that, particularly for double-dash C compiler flags such as
# --sysroot, OpenSSL Configure will error out if compiler flags are
# placed anywhere other than at the end as os[/compiler][:flags] as
# shown below.
#
# There are no sentinel files created anew after configuration
# different from those prior to configuration. Consequently, create
# out own sentinel file.

@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@$(OPENSSL_CONFIG_SENTINEL): $(OPENSSL_SHADOW_SENTINEL)
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	@echo "  CONFIG   $(WEAVE_OPENSSL_TARGET)"
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	$(AM_V_CONFIG)cd $(abs_openssl_builddir) && \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@                INSTALL="$(INSTALL)" \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@		CFLAGS="$(CFLAGS)" \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@		LDFLAGS="$(LDFLAGS)" \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@		./Configure \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@		--prefix=/ \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@		--openssldir=/openssl \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@		$(VISIBILITY_CFLAGS) \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@		$(WEAVE_OPENSSL_OPTIONS) \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@		$(WEAVE_OPENSSL_DEFINES) \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@		$(WEAVE_OPENSSL_TARGET)
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	$(AM_V_at)echo "sentinel stamp for openssl configuration" > $(@)

@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@.PHONY: configure-local
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@configure-local: $(OPENSSL_CONFIG_SENTINEL)

#
# MakeOpenSSLWithTarget <OpenSSL Target> [<Verbose Target>]
#
# This invokes make against the specified OpenSSL target displaying
# that target or, if provided, the optional "verbose" target as the
# verbose output.

@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@define MakeOpenSSLWithTarget
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@@echo "  SUBDIR   $(openssl_builddir)"
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@@echo "  MAKE     $(if $(2),$(2),$(1))"
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(abs_openssl_builddir) \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@        CC="$(CC) $(CFLAGS)" AR="$(AR) $(ARFLAGS)" RANLIB=$(RANLIB) \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@        CROSS_TOP="$(CROSS_TOP)" \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@        CROSS_SDK="$(CROSS_SDK)" \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@        CROSS_SYSROOT="$(CROSS_SYSROOT)" \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@        DESTDIR="$(DESTDIR)" \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@        INSTALLTOP="$(prefix)" \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@        $(1)
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@endef # MakeOpenSSLWithTarget

# Build the configured OpenSSL source.

@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@.PHONY: build-local
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@build-local: configure-local
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	$(call MakeOpenSSLWithTarget, all)

# Install (stage) the built OpenSSL source.

@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@stage-local: build-local
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	$(call MakeOpenSSLWithTarget, install_sw, install)

@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@install-data-local: stage-local

@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@install-headers: stage-local

# Uninstall (to support the 'distcheck' and 'distuninstallcheck' targets)

@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@unstage-local:
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	$(call MakeOpenSSLWithTarget, uninstall_sw, uninstall)

@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@uninstall: unstage-local

# Clean things up to the requested level.

@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@clean-local:
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	$(AM_V_at)if test -d "$(abs_openssl_builddir)"; then \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	    echo "  SUBDIR   $(openssl_builddir)"; \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	    echo "  MAKE     clean";               \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	    $(MAKE) $(AM_MAKEFLAGS) -C $(abs_openssl_builddir) clean; \
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	fi

# Remove the entirety of the OpenSSL build directory for the
# 'distclean' target.

@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@distclean-local:
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	@echo "  RM       $(openssl_builddir)"
@WEAVE_WITH_OPENSSL_INTERNAL_TRUE@	$(AM_V_at)rm -r -f $(openssl_builddir)

include $(abs_top_nlbuild_autotools_dir)/automake/post.am

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
