# 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 Nest Weave
#      Device Manager Python script binding module.
#
#      NOTE: The Python module loader cannot differentiate between
#            WeaveDeviceMgr.py and WeaveDeviceMgr.so when attempting
#            to import WeaveDeviceMgr. Consequently, we follow typical
#            Python convention and name the DLL/DSO with a leading
#            underscore (_) to disambiguate them when they are sitting
#            in the same directory during development.
#



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@
@CONFIG_NETWORK_LAYER_BLE_TRUE@@WEAVE_WITH_PYTHON_TRUE@am__append_1 = \
@CONFIG_NETWORK_LAYER_BLE_TRUE@@WEAVE_WITH_PYTHON_TRUE@    WeaveDeviceManager-BleApplicationDelegate.h     \
@CONFIG_NETWORK_LAYER_BLE_TRUE@@WEAVE_WITH_PYTHON_TRUE@    WeaveDeviceManager-BlePlatformDelegate.h        \
@CONFIG_NETWORK_LAYER_BLE_TRUE@@WEAVE_WITH_PYTHON_TRUE@    $(NULL)

@CONFIG_NETWORK_LAYER_BLE_TRUE@@WEAVE_WITH_PYTHON_TRUE@am__append_2 = \
@CONFIG_NETWORK_LAYER_BLE_TRUE@@WEAVE_WITH_PYTHON_TRUE@    WeaveDeviceManager-BlePlatformDelegate.cpp      \
@CONFIG_NETWORK_LAYER_BLE_TRUE@@WEAVE_WITH_PYTHON_TRUE@    WeaveDeviceManager-BleApplicationDelegate.cpp   \
@CONFIG_NETWORK_LAYER_BLE_TRUE@@WEAVE_WITH_PYTHON_TRUE@    $(NULL)

@CONFIG_NETWORK_LAYER_BLE_TRUE@@WEAVE_WITH_PYTHON_TRUE@am__append_3 = \
@CONFIG_NETWORK_LAYER_BLE_TRUE@@WEAVE_WITH_PYTHON_TRUE@    WeaveBleBase.py                                    \
@CONFIG_NETWORK_LAYER_BLE_TRUE@@WEAVE_WITH_PYTHON_TRUE@    WeaveCoreBluetoothMgr.py                        \
@CONFIG_NETWORK_LAYER_BLE_TRUE@@WEAVE_WITH_PYTHON_TRUE@    WeaveBluezMgr.py                                \
@CONFIG_NETWORK_LAYER_BLE_TRUE@@WEAVE_WITH_PYTHON_TRUE@    WeaveBleUtility.py                              \
@CONFIG_NETWORK_LAYER_BLE_TRUE@@WEAVE_WITH_PYTHON_TRUE@    $(NULL)

subdir = src/device-manager/python
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/autoconf/mkinstalldirs \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/autoconf/depcomp \
	$(am__weave_PYTHON_DIST) \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/autoconf/py-compile \
	$(am__noinst_HEADERS_DIST)
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(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/autoconf/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/src/include/BuildConfig.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
    *) f=$$p;; \
  esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
  for p in $$list; do echo "$$p $$p"; done | \
  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
    if (++n[$$2] == $(am__install_max)) \
      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
    END { for (dir in files) print dir, files[dir] }'
am__base_list = \
  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
  test -z "$$files" \
    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
         $(am__cd) "$$dir" && rm -f $$files; }; \
  }
am__installdirs = "$(DESTDIR)$(pyexecdir)" "$(DESTDIR)$(libexecdir)" \
	"$(DESTDIR)$(weavedir)" "$(DESTDIR)$(weavedir)"
LTLIBRARIES = $(pyexec_LTLIBRARIES)
am___WeaveDeviceMgr_la_SOURCES_DIST =  \
	WeaveDeviceManager-ScriptBinding.cpp \
	WeaveDeviceManager-BlePlatformDelegate.cpp \
	WeaveDeviceManager-BleApplicationDelegate.cpp
@CONFIG_NETWORK_LAYER_BLE_TRUE@@WEAVE_WITH_PYTHON_TRUE@am__objects_1 = _WeaveDeviceMgr_la-WeaveDeviceManager-BlePlatformDelegate.lo \
@CONFIG_NETWORK_LAYER_BLE_TRUE@@WEAVE_WITH_PYTHON_TRUE@	_WeaveDeviceMgr_la-WeaveDeviceManager-BleApplicationDelegate.lo
@WEAVE_WITH_PYTHON_TRUE@am__WeaveDeviceMgr_la_OBJECTS = _WeaveDeviceMgr_la-WeaveDeviceManager-ScriptBinding.lo \
@WEAVE_WITH_PYTHON_TRUE@	$(am__objects_1)
_WeaveDeviceMgr_la_OBJECTS = $(am__WeaveDeviceMgr_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 = 
_WeaveDeviceMgr_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
	$(AM_CXXFLAGS) $(CXXFLAGS) $(_WeaveDeviceMgr_la_LDFLAGS) \
	$(LDFLAGS) -o $@
@WEAVE_WITH_PYTHON_TRUE@am__WeaveDeviceMgr_la_rpath = -rpath \
@WEAVE_WITH_PYTHON_TRUE@	$(pyexecdir)
SCRIPTS = $(libexec_SCRIPTS) $(weave_SCRIPTS)
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 = 
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src/include
depcomp = $(SHELL) \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/autoconf/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
	$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
	$(AM_CXXFLAGS) $(CXXFLAGS)
AM_V_CXX = $(am__v_CXX_@AM_V@)
am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
am__v_CXX_0 = @echo "  CXX     " $@;
am__v_CXX_1 = 
CXXLD = $(CXX)
CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
am__v_CXXLD_0 = @echo "  CXXLD   " $@;
am__v_CXXLD_1 = 
SOURCES = $(_WeaveDeviceMgr_la_SOURCES)
DIST_SOURCES = $(am___WeaveDeviceMgr_la_SOURCES_DIST)
am__can_run_installinfo = \
  case $$AM_UPDATE_INFO_DIR in \
    n|no|NO) false;; \
    *) (install-info --version) >/dev/null 2>&1;; \
  esac
am__weave_PYTHON_DIST = WeaveDeviceMgr.py WeaveBleBase.py \
	WeaveCoreBluetoothMgr.py WeaveBluezMgr.py WeaveBleUtility.py
am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
am__pep3147_tweak = \
  sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|'
py_compile = $(top_srcdir)/third_party/nlbuild-autotools/repo/autoconf/py-compile
am__noinst_HEADERS_DIST = WeaveDeviceManager-BleApplicationDelegate.h \
	WeaveDeviceManager-BlePlatformDelegate.h
HEADERS = $(noinst_HEADERS)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates.  Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
  BEGIN { nonempty = 0; } \
  { items[$$0] = 1; nonempty = 1; } \
  END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique.  This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
  list='$(am__tagged_files)'; \
  unique=`for i in $$list; do \
    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
  done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
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_BUILD_DIRECTORY = @BLUEZ_BUILD_DIRECTORY@
BLUEZ_CPPFLAGS = @BLUEZ_CPPFLAGS@
BLUEZ_LDFLAGS = @BLUEZ_LDFLAGS@
BLUEZ_LIBS = @BLUEZ_LIBS@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CMP = @CMP@
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@
NLFAULTINJECTION_CPPFLAGS = @NLFAULTINJECTION_CPPFLAGS@
NLFAULTINJECTION_LDFLAGS = @NLFAULTINJECTION_LDFLAGS@
NLFAULTINJECTION_LIBS = @NLFAULTINJECTION_LIBS@
NLIO_CPPFLAGS = @NLIO_CPPFLAGS@
NLIO_LDFLAGS = @NLIO_LDFLAGS@
NLIO_LIBS = @NLIO_LIBS@
NLUNITTEST_CPPFLAGS = @NLUNITTEST_CPPFLAGS@
NLUNITTEST_LDFLAGS = @NLUNITTEST_LDFLAGS@
NLUNITTEST_LIBS = @NLUNITTEST_LIBS@
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_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@
EXTRA_DIST = \
    weave-device-mgr.py                             \
    $(NULL)

@WEAVE_WITH_PYTHON_TRUE@pyexec_LTLIBRARIES = _WeaveDeviceMgr.la
@WEAVE_WITH_PYTHON_TRUE@noinst_HEADERS = $(NULL) $(am__append_1)
@WEAVE_WITH_PYTHON_TRUE@_WeaveDeviceMgr_la_SOURCES =  \
@WEAVE_WITH_PYTHON_TRUE@	WeaveDeviceManager-ScriptBinding.cpp \
@WEAVE_WITH_PYTHON_TRUE@	$(NULL) $(am__append_2)
@WEAVE_WITH_PYTHON_TRUE@_WeaveDeviceMgr_la_CPPFLAGS = \
@WEAVE_WITH_PYTHON_TRUE@    -I$(srcdir)/..                                  \
@WEAVE_WITH_PYTHON_TRUE@    $(LWIP_CPPFLAGS)                                \
@WEAVE_WITH_PYTHON_TRUE@    $(SOCKETS_CPPFLAGS)                             \
@WEAVE_WITH_PYTHON_TRUE@    $(NULL)

@WEAVE_WITH_PYTHON_TRUE@_WeaveDeviceMgr_la_LIBADD = \
@WEAVE_WITH_PYTHON_TRUE@    ../libWeaveDeviceManager.la                     \
@WEAVE_WITH_PYTHON_TRUE@    -L$(top_builddir)/src/lib -lWeave               \
@WEAVE_WITH_PYTHON_TRUE@    $(NULL)

@WEAVE_WITH_PYTHON_TRUE@_WeaveDeviceMgr_la_DEPENDENCIES = \
@WEAVE_WITH_PYTHON_TRUE@    $(top_builddir)/src/lib/libWeave.a              \
@WEAVE_WITH_PYTHON_TRUE@    $(NULL)

@WEAVE_WITH_PYTHON_TRUE@_WeaveDeviceMgr_la_LDFLAGS = \
@WEAVE_WITH_PYTHON_TRUE@    -avoid-version                                  \
@WEAVE_WITH_PYTHON_TRUE@    -module                                         \
@WEAVE_WITH_PYTHON_TRUE@    -no-undefined                                   \
@WEAVE_WITH_PYTHON_TRUE@    $(NULL)

@WEAVE_WITH_PYTHON_TRUE@weavedir = $(pyexecdir)/weave
@WEAVE_WITH_PYTHON_TRUE@modules = WeaveDeviceMgr.py $(NULL) \
@WEAVE_WITH_PYTHON_TRUE@	$(am__append_3)
@WEAVE_WITH_PYTHON_TRUE@srcmodules = $(addprefix $(srcdir)/,$(modules))
@WEAVE_WITH_PYTHON_TRUE@buildmodules = $(addprefix $(builddir)/,$(modules))
@WEAVE_WITH_PYTHON_TRUE@cleanmodules = $(if $(call IsRealPath,$(buildmodules)),,$(buildmodules))
@WEAVE_WITH_PYTHON_TRUE@weave_SCRIPTS = \
@WEAVE_WITH_PYTHON_TRUE@    $(modules)                                      \
@WEAVE_WITH_PYTHON_TRUE@    $(NULL)

@WEAVE_WITH_PYTHON_TRUE@weave_PYTHON = \
@WEAVE_WITH_PYTHON_TRUE@    $(weave_SCRIPTS)                                \
@WEAVE_WITH_PYTHON_TRUE@    $(NULL)


# Tool scripts that should be installed when the 'install' target is run.
#
# These will be part of the externally-consumable SDK.
#
# These need to go in libexec since they need to be "trampolined"
# through the 'weave-run' script due to runtime dependencies on
# DLLs/DSOs that the runtime linker / loader will need to resolve when
# they invoked.
@WEAVE_WITH_PYTHON_TRUE@libexec_SCRIPTS = \
@WEAVE_WITH_PYTHON_TRUE@    weave-device-mgr                                \
@WEAVE_WITH_PYTHON_TRUE@    $(NULL)


# The bin_LINKS variable enumerates programs that need to be
# "trampolined" through the 'weave-run' script due to runtime
# dependencies on DLLs/DSOs that the runtime linker / loader will need
# to resolve when they invoked.
@WEAVE_WITH_PYTHON_TRUE@bin_LINKS = \
@WEAVE_WITH_PYTHON_TRUE@    $(libexec_SCRIPTS)                              \
@WEAVE_WITH_PYTHON_TRUE@    $(NULL)

@WEAVE_WITH_PYTHON_TRUE@CLEANFILES = \
@WEAVE_WITH_PYTHON_TRUE@    $(libexec_SCRIPTS)                              \
@WEAVE_WITH_PYTHON_TRUE@    _WeaveDeviceMgr.so                              \
@WEAVE_WITH_PYTHON_TRUE@    $(cleanmodule)                                  \
@WEAVE_WITH_PYTHON_TRUE@    $(NULL)

all: all-am

.SUFFIXES:
.SUFFIXES: .cpp .lo .o .obj
$(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 src/device-manager/python/Makefile'; \
	$(am__cd) $(top_srcdir) && \
	  $(AUTOMAKE) --foreign src/device-manager/python/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):

install-pyexecLTLIBRARIES: $(pyexec_LTLIBRARIES)
	@$(NORMAL_INSTALL)
	@list='$(pyexec_LTLIBRARIES)'; test -n "$(pyexecdir)" || list=; \
	list2=; for p in $$list; do \
	  if test -f $$p; then \
	    list2="$$list2 $$p"; \
	  else :; fi; \
	done; \
	test -z "$$list2" || { \
	  echo " $(MKDIR_P) '$(DESTDIR)$(pyexecdir)'"; \
	  $(MKDIR_P) "$(DESTDIR)$(pyexecdir)" || exit 1; \
	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pyexecdir)'"; \
	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pyexecdir)"; \
	}

uninstall-pyexecLTLIBRARIES:
	@$(NORMAL_UNINSTALL)
	@list='$(pyexec_LTLIBRARIES)'; test -n "$(pyexecdir)" || list=; \
	for p in $$list; do \
	  $(am__strip_dir) \
	  echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pyexecdir)/$$f'"; \
	  $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pyexecdir)/$$f"; \
	done

clean-pyexecLTLIBRARIES:
	-test -z "$(pyexec_LTLIBRARIES)" || rm -f $(pyexec_LTLIBRARIES)
	@list='$(pyexec_LTLIBRARIES)'; \
	locs=`for p in $$list; do echo $$p; done | \
	      sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
	      sort -u`; \
	test -z "$$locs" || { \
	  echo rm -f $${locs}; \
	  rm -f $${locs}; \
	}

_WeaveDeviceMgr.la: $(_WeaveDeviceMgr_la_OBJECTS) $(_WeaveDeviceMgr_la_DEPENDENCIES) $(EXTRA__WeaveDeviceMgr_la_DEPENDENCIES) 
	$(AM_V_CXXLD)$(_WeaveDeviceMgr_la_LINK) $(am__WeaveDeviceMgr_la_rpath) $(_WeaveDeviceMgr_la_OBJECTS) $(_WeaveDeviceMgr_la_LIBADD) $(LIBS)
install-libexecSCRIPTS: $(libexec_SCRIPTS)
	@$(NORMAL_INSTALL)
	@list='$(libexec_SCRIPTS)'; test -n "$(libexecdir)" || list=; \
	if test -n "$$list"; then \
	  echo " $(MKDIR_P) '$(DESTDIR)$(libexecdir)'"; \
	  $(MKDIR_P) "$(DESTDIR)$(libexecdir)" || exit 1; \
	fi; \
	for p in $$list; do \
	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
	done | \
	sed -e 'p;s,.*/,,;n' \
	    -e 'h;s|.*|.|' \
	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
	      if (++n[d] == $(am__install_max)) { \
		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
	    else { print "f", d "/" $$4, $$1 } } \
	  END { for (d in files) print "f", d, files[d] }' | \
	while read type dir files; do \
	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
	     test -z "$$files" || { \
	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(libexecdir)$$dir'"; \
	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(libexecdir)$$dir" || exit $$?; \
	     } \
	; done

uninstall-libexecSCRIPTS:
	@$(NORMAL_UNINSTALL)
	@list='$(libexec_SCRIPTS)'; test -n "$(libexecdir)" || exit 0; \
	files=`for p in $$list; do echo "$$p"; done | \
	       sed -e 's,.*/,,;$(transform)'`; \
	dir='$(DESTDIR)$(libexecdir)'; $(am__uninstall_files_from_dir)
install-weaveSCRIPTS: $(weave_SCRIPTS)
	@$(NORMAL_INSTALL)
	@list='$(weave_SCRIPTS)'; test -n "$(weavedir)" || list=; \
	if test -n "$$list"; then \
	  echo " $(MKDIR_P) '$(DESTDIR)$(weavedir)'"; \
	  $(MKDIR_P) "$(DESTDIR)$(weavedir)" || exit 1; \
	fi; \
	for p in $$list; do \
	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
	  if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
	done | \
	sed -e 'p;s,.*/,,;n' \
	    -e 'h;s|.*|.|' \
	    -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
	    if ($$2 == $$4) { files[d] = files[d] " " $$1; \
	      if (++n[d] == $(am__install_max)) { \
		print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
	    else { print "f", d "/" $$4, $$1 } } \
	  END { for (d in files) print "f", d, files[d] }' | \
	while read type dir files; do \
	     if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
	     test -z "$$files" || { \
	       echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(weavedir)$$dir'"; \
	       $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(weavedir)$$dir" || exit $$?; \
	     } \
	; done

uninstall-weaveSCRIPTS:
	@$(NORMAL_UNINSTALL)
	@list='$(weave_SCRIPTS)'; test -n "$(weavedir)" || exit 0; \
	files=`for p in $$list; do echo "$$p"; done | \
	       sed -e 's,.*/,,;$(transform)'`; \
	dir='$(DESTDIR)$(weavedir)'; $(am__uninstall_files_from_dir)

mostlyclean-compile:
	-rm -f *.$(OBJEXT)

distclean-compile:
	-rm -f *.tab.c

@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_WeaveDeviceMgr_la-WeaveDeviceManager-BleApplicationDelegate.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_WeaveDeviceMgr_la-WeaveDeviceManager-BlePlatformDelegate.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_WeaveDeviceMgr_la-WeaveDeviceManager-ScriptBinding.Plo@am__quote@

.cpp.o:
@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<

.cpp.obj:
@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
@am__fastdepCXX_TRUE@	$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`

.cpp.lo:
@am__fastdepCXX_TRUE@	$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
@am__fastdepCXX_TRUE@	$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
@am__fastdepCXX_TRUE@	$(am__mv) $$depbase.Tpo $$depbase.Plo
@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<

_WeaveDeviceMgr_la-WeaveDeviceManager-ScriptBinding.lo: WeaveDeviceManager-ScriptBinding.cpp
@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_WeaveDeviceMgr_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT _WeaveDeviceMgr_la-WeaveDeviceManager-ScriptBinding.lo -MD -MP -MF $(DEPDIR)/_WeaveDeviceMgr_la-WeaveDeviceManager-ScriptBinding.Tpo -c -o _WeaveDeviceMgr_la-WeaveDeviceManager-ScriptBinding.lo `test -f 'WeaveDeviceManager-ScriptBinding.cpp' || echo '$(srcdir)/'`WeaveDeviceManager-ScriptBinding.cpp
@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/_WeaveDeviceMgr_la-WeaveDeviceManager-ScriptBinding.Tpo $(DEPDIR)/_WeaveDeviceMgr_la-WeaveDeviceManager-ScriptBinding.Plo
@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='WeaveDeviceManager-ScriptBinding.cpp' object='_WeaveDeviceMgr_la-WeaveDeviceManager-ScriptBinding.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_WeaveDeviceMgr_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o _WeaveDeviceMgr_la-WeaveDeviceManager-ScriptBinding.lo `test -f 'WeaveDeviceManager-ScriptBinding.cpp' || echo '$(srcdir)/'`WeaveDeviceManager-ScriptBinding.cpp

_WeaveDeviceMgr_la-WeaveDeviceManager-BlePlatformDelegate.lo: WeaveDeviceManager-BlePlatformDelegate.cpp
@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_WeaveDeviceMgr_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT _WeaveDeviceMgr_la-WeaveDeviceManager-BlePlatformDelegate.lo -MD -MP -MF $(DEPDIR)/_WeaveDeviceMgr_la-WeaveDeviceManager-BlePlatformDelegate.Tpo -c -o _WeaveDeviceMgr_la-WeaveDeviceManager-BlePlatformDelegate.lo `test -f 'WeaveDeviceManager-BlePlatformDelegate.cpp' || echo '$(srcdir)/'`WeaveDeviceManager-BlePlatformDelegate.cpp
@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/_WeaveDeviceMgr_la-WeaveDeviceManager-BlePlatformDelegate.Tpo $(DEPDIR)/_WeaveDeviceMgr_la-WeaveDeviceManager-BlePlatformDelegate.Plo
@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='WeaveDeviceManager-BlePlatformDelegate.cpp' object='_WeaveDeviceMgr_la-WeaveDeviceManager-BlePlatformDelegate.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_WeaveDeviceMgr_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o _WeaveDeviceMgr_la-WeaveDeviceManager-BlePlatformDelegate.lo `test -f 'WeaveDeviceManager-BlePlatformDelegate.cpp' || echo '$(srcdir)/'`WeaveDeviceManager-BlePlatformDelegate.cpp

_WeaveDeviceMgr_la-WeaveDeviceManager-BleApplicationDelegate.lo: WeaveDeviceManager-BleApplicationDelegate.cpp
@am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_WeaveDeviceMgr_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT _WeaveDeviceMgr_la-WeaveDeviceManager-BleApplicationDelegate.lo -MD -MP -MF $(DEPDIR)/_WeaveDeviceMgr_la-WeaveDeviceManager-BleApplicationDelegate.Tpo -c -o _WeaveDeviceMgr_la-WeaveDeviceManager-BleApplicationDelegate.lo `test -f 'WeaveDeviceManager-BleApplicationDelegate.cpp' || echo '$(srcdir)/'`WeaveDeviceManager-BleApplicationDelegate.cpp
@am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/_WeaveDeviceMgr_la-WeaveDeviceManager-BleApplicationDelegate.Tpo $(DEPDIR)/_WeaveDeviceMgr_la-WeaveDeviceManager-BleApplicationDelegate.Plo
@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(AM_V_CXX)source='WeaveDeviceManager-BleApplicationDelegate.cpp' object='_WeaveDeviceMgr_la-WeaveDeviceManager-BleApplicationDelegate.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@	$(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_WeaveDeviceMgr_la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o _WeaveDeviceMgr_la-WeaveDeviceManager-BleApplicationDelegate.lo `test -f 'WeaveDeviceManager-BleApplicationDelegate.cpp' || echo '$(srcdir)/'`WeaveDeviceManager-BleApplicationDelegate.cpp

mostlyclean-libtool:
	-rm -f *.lo

clean-libtool:
	-rm -rf .libs _libs
install-weavePYTHON: $(weave_PYTHON)
	@$(NORMAL_INSTALL)
	@list='$(weave_PYTHON)'; dlist=; list2=; test -n "$(weavedir)" || list=; \
	if test -n "$$list"; then \
	  echo " $(MKDIR_P) '$(DESTDIR)$(weavedir)'"; \
	  $(MKDIR_P) "$(DESTDIR)$(weavedir)" || exit 1; \
	fi; \
	for p in $$list; do \
	  if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
	  if test -f $$b$$p; then \
	    $(am__strip_dir) \
	    dlist="$$dlist $$f"; \
	    list2="$$list2 $$b$$p"; \
	  else :; fi; \
	done; \
	for file in $$list2; do echo $$file; done | $(am__base_list) | \
	while read files; do \
	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(weavedir)'"; \
	  $(INSTALL_DATA) $$files "$(DESTDIR)$(weavedir)" || exit $$?; \
	done || exit $$?; \
	if test -n "$$dlist"; then \
	  $(am__py_compile) --destdir "$(DESTDIR)" \
	                    --basedir "$(weavedir)" $$dlist; \
	else :; fi

uninstall-weavePYTHON:
	@$(NORMAL_UNINSTALL)
	@list='$(weave_PYTHON)'; test -n "$(weavedir)" || list=; \
	py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
	test -n "$$py_files" || exit 0; \
	dir='$(DESTDIR)$(weavedir)'; \
	pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \
	pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \
	py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \
	echo "$$py_files_pep3147";\
	pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \
	pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \
	st=0; \
	for files in \
	  "$$py_files" \
	  "$$pyc_files" \
	  "$$pyo_files" \
	  "$$pyc_files_pep3147" \
	  "$$pyo_files_pep3147" \
	; do \
	  $(am__uninstall_files_from_dir) || st=$$?; \
	done; \
	exit $$st

ID: $(am__tagged_files)
	$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tags

tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
	set x; \
	here=`pwd`; \
	$(am__define_uniq_tagged_files); \
	shift; \
	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
	  test -n "$$unique" || unique=$$empty_fix; \
	  if test $$# -gt 0; then \
	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
	      "$$@" $$unique; \
	  else \
	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
	      $$unique; \
	  fi; \
	fi
ctags: ctags-am

CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
	$(am__define_uniq_tagged_files); \
	test -z "$(CTAGS_ARGS)$$unique" \
	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
	     $$unique

GTAGS:
	here=`$(am__cd) $(top_builddir) && pwd` \
	  && $(am__cd) $(top_srcdir) \
	  && gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-am

cscopelist-am: $(am__tagged_files)
	list='$(am__tagged_files)'; \
	case "$(srcdir)" in \
	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
	  *) sdir=$(subdir)/$(srcdir) ;; \
	esac; \
	for i in $$list; do \
	  if test -f "$$i"; then \
	    echo "$(subdir)/$$i"; \
	  else \
	    echo "$$sdir/$$i"; \
	  fi; \
	done >> $(top_builddir)/cscope.files

distclean-tags:
	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags

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_PYTHON_FALSE@all-local:
all-am: Makefile $(LTLIBRARIES) $(SCRIPTS) $(HEADERS) all-local
installdirs:
	for dir in "$(DESTDIR)$(pyexecdir)" "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(weavedir)" "$(DESTDIR)$(weavedir)"; do \
	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
	done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
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:
	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)

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_PYTHON_FALSE@install-exec-local:
@WEAVE_WITH_PYTHON_FALSE@uninstall-local:
@WEAVE_WITH_PYTHON_FALSE@install-exec-hook:
clean: clean-am

clean-am: clean-generic clean-libtool clean-pyexecLTLIBRARIES \
	mostlyclean-am

distclean: distclean-am
	-rm -rf ./$(DEPDIR)
	-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
	distclean-tags

dvi: dvi-am

dvi-am:

html: html-am

html-am:

info: info-am

info-am:

install-data-am: install-weavePYTHON install-weaveSCRIPTS

install-dvi: install-dvi-am

install-dvi-am:

install-exec-am: install-exec-local install-libexecSCRIPTS \
	install-pyexecLTLIBRARIES
	@$(NORMAL_INSTALL)
	$(MAKE) $(AM_MAKEFLAGS) install-exec-hook
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 -rf ./$(DEPDIR)
	-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic

mostlyclean: mostlyclean-am

mostlyclean-am: mostlyclean-compile mostlyclean-generic \
	mostlyclean-libtool

pdf: pdf-am

pdf-am:

ps: ps-am

ps-am:

uninstall-am: uninstall-libexecSCRIPTS uninstall-local \
	uninstall-pyexecLTLIBRARIES uninstall-weavePYTHON \
	uninstall-weaveSCRIPTS

.MAKE: install-am install-exec-am install-strip

.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
	clean-generic clean-libtool clean-pyexecLTLIBRARIES \
	cscopelist-am ctags ctags-am distclean distclean-compile \
	distclean-generic distclean-libtool distclean-tags distdir dvi \
	dvi-am html html-am info info-am install install-am \
	install-data install-data-am install-dvi install-dvi-am \
	install-exec install-exec-am install-exec-hook \
	install-exec-local install-html install-html-am install-info \
	install-info-am install-libexecSCRIPTS install-man install-pdf \
	install-pdf-am install-ps install-ps-am \
	install-pyexecLTLIBRARIES install-strip install-weavePYTHON \
	install-weaveSCRIPTS installcheck installcheck-am installdirs \
	maintainer-clean maintainer-clean-generic mostlyclean \
	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
	uninstall-libexecSCRIPTS uninstall-local \
	uninstall-pyexecLTLIBRARIES uninstall-weavePYTHON \
	uninstall-weaveSCRIPTS


include $(abs_top_nlbuild_autotools_dir)/automake/pre.am

define set-relocation-path
	$(AM_V_at)if [[ "$(target_os)" == darwin* ]]; then \
	    install_name_tool -change `otool -L $(1) | grep -Eo '.*$(2)'` $(call Slashify,$(3))$(2) $(1) ; \
	fi
endef # change-library-paths

# Create a convenience link between the suffixed script and the actual
# name by which the script will be installed for non-co-located build
# and source directories.

@WEAVE_WITH_PYTHON_TRUE@%: %.py
@WEAVE_WITH_PYTHON_TRUE@	$(AM_V_LN_S)$(LN_S) $(<) $(@)

# Create convenience links so that those that are doing Weave Device
# Manager development can run the script right from this directory,
# picking up both the Python module and the DLL/DSO, without having to
# do a 'make install'.
#
# Because of automake's VPATH getting in our way, we need to play a
# "trick" to get the "buildmodule" DLL/DSO link to work.

@WEAVE_WITH_PYTHON_TRUE@all-local: _WeaveDeviceMgr.so $(buildmodule)

@WEAVE_WITH_PYTHON_TRUE@_WeaveDeviceMgr.so: _WeaveDeviceMgr.la
@WEAVE_WITH_PYTHON_TRUE@	$(AM_V_LN_S)$(LN_S) -f .libs/$(@) $(@)
@WEAVE_WITH_PYTHON_TRUE@	$(AM_V_at)if test "${srcmodule}" != "${buildmodule}" && \
@WEAVE_WITH_PYTHON_TRUE@           ! test -L "${buildmodule}"; then \
@WEAVE_WITH_PYTHON_TRUE@	    echo "  LN       ${buildmodule}"; \
@WEAVE_WITH_PYTHON_TRUE@	    $(LN_S) "${srcmodule}" "${buildmodule}"; \
@WEAVE_WITH_PYTHON_TRUE@        fi
@WEAVE_WITH_PYTHON_TRUE@	$(call set-relocation-path,$(@),libWeaveDeviceManager.$(LIBWEAVE_VERSION_CURRENT).dylib,@loader_path/../.libs/)

@WEAVE_WITH_PYTHON_TRUE@install-exec-local: install-exec-binLINKS

@WEAVE_WITH_PYTHON_TRUE@uninstall-local: uninstall-exec-binLINKS

@WEAVE_WITH_PYTHON_TRUE@install-exec-binLINKS: $(bin_LINKS)
@WEAVE_WITH_PYTHON_TRUE@	@$(NORMAL_INSTALL)
@WEAVE_WITH_PYTHON_TRUE@	@list='$(bin_LINKS)'; test -n "$(bindir)" || list=; \
@WEAVE_WITH_PYTHON_TRUE@	if test -n "$$list"; then \
@WEAVE_WITH_PYTHON_TRUE@          echo "  MKDIR    $(DESTDIR)$(bindir)"; \
@WEAVE_WITH_PYTHON_TRUE@	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
@WEAVE_WITH_PYTHON_TRUE@	fi; \
@WEAVE_WITH_PYTHON_TRUE@	for link in $${list}; do \
@WEAVE_WITH_PYTHON_TRUE@            echo "  LN       $${link}"; \
@WEAVE_WITH_PYTHON_TRUE@	    $(LN_S) -f "../`echo ${libexecdir} | sed -e 's,${exec_prefix}/,,g'`/weave-run" "$(DESTDIR)$(bindir)/$${link}"; \
@WEAVE_WITH_PYTHON_TRUE@        done

@WEAVE_WITH_PYTHON_TRUE@uninstall-exec-binLINKS: $(bin_LINKS)
@WEAVE_WITH_PYTHON_TRUE@	@$(NORMAL_UNINSTALL)
@WEAVE_WITH_PYTHON_TRUE@	@list='$(bin_LINKS)'; test -n "$(bindir)" || exit 0; \
@WEAVE_WITH_PYTHON_TRUE@	files=`for p in $$list; do echo "$$p"; done | \
@WEAVE_WITH_PYTHON_TRUE@	       sed -e 's,.*/,,;$(transform)'`; \
@WEAVE_WITH_PYTHON_TRUE@	dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)

@WEAVE_WITH_PYTHON_TRUE@install-exec-hook:
@WEAVE_WITH_PYTHON_TRUE@	$(call set-relocation-path,$(DESTDIR)$(pyexecdir)/_WeaveDeviceMgr.so,libWeaveDeviceManager.$(LIBWEAVE_VERSION_CURRENT).dylib,@loader_path/../)

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:
