# 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
#      API and stack documentation.
#
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 = doc
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
	$(top_srcdir)/third_party/nlbuild-autotools/repo/autoconf/mkinstalldirs
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_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_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@

#
# Override autotool's default notion of the package version variables.
# This ensures that when we create a doc distribution that the
# version is always the current version, not the version when the
# package was bootstrapped.
#
PACKAGE_VERSION = $(shell cat $(top_builddir)/.local-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 = $(PACKAGE_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 = \
    $(srcdir)/Doxyfile.in                         \
    $(srcdir)/namespaces.dox                      \
    images/Works-w-Nest-Logo_Gray_Vert_CMYK.png   \
    images/Works-w-Nest-Logo_Gray_Vert_CMYK-icon.png   \
    $(NULL)

EXTRA_DOCS = \
    $(top_srcdir)/CHANGELOG                       \
    $(top_srcdir)/LICENSE                         \
    $(NULL)

weave_docdist_alias = \
    $(PACKAGE_TARNAME)-docs

weave_docdist_name = \
    $(weave_docdist_alias)-$(VERSION)

weave_docdist_archive = \
    $(docdistdir)/$(weave_docdist_name).tar.gz

CLEANFILES = \
    Doxyfile                                      \
    $(weave_docdist_archive)                      \
    $(NULL)

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 doc/Makefile'; \
	$(am__cd) $(top_srcdir) && \
	  $(AUTOMAKE) --foreign doc/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_BUILD_DOCS_FALSE@all-local:
all-am: Makefile all-local
installdirs:
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_BUILD_DOCS_FALSE@clean-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

dvi: dvi-am

dvi-am:

html: html-am

html-am:

info: info-am

info-am:

install-data-am:

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 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-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

docdistdir                                     ?= .

@WEAVE_BUILD_DOCS_TRUE@all-local: html/index.html

#
# We choose to manually transform Doxyfile.in into Doxyfile here in
# the makefile rather than in the configure script so that we can take
# advantage of live, at build time (rather than at configure time),
# updating of the package version number.
#

@WEAVE_BUILD_DOCS_TRUE@Doxyfile: $(srcdir)/Doxyfile.in Makefile
@WEAVE_BUILD_DOCS_TRUE@	$(AM_V_GEN)$(SED)                                     \
@WEAVE_BUILD_DOCS_TRUE@	    -e "s,\@DOXYGEN_USE_DOT\@,$(DOXYGEN_USE_DOT),g"   \
@WEAVE_BUILD_DOCS_TRUE@	    -e "s,\@PACKAGE_NAME\@,$(PACKAGE_NAME),g"         \
@WEAVE_BUILD_DOCS_TRUE@	    -e "s,\@PACKAGE_VERSION\@,$(PACKAGE_VERSION),g"   \
@WEAVE_BUILD_DOCS_TRUE@	    -e "s,\@PERL\@,$(PERL),g"                         \
@WEAVE_BUILD_DOCS_TRUE@	    -e "s,\@abs_builddir\@,$(abs_builddir),g"         \
@WEAVE_BUILD_DOCS_TRUE@	    -e "s,\@abs_srcdir\@,$(abs_srcdir),g"             \
@WEAVE_BUILD_DOCS_TRUE@	    -e "s,\@abs_top_builddir\@,$(abs_top_builddir),g" \
@WEAVE_BUILD_DOCS_TRUE@	    -e "s,\@abs_top_srcdir\@,$(abs_top_srcdir),g"     \
@WEAVE_BUILD_DOCS_TRUE@	    < "$(srcdir)/Doxyfile.in" > "$(@)"

@WEAVE_BUILD_DOCS_TRUE@html/index.html: Doxyfile
@WEAVE_BUILD_DOCS_TRUE@	$(AM_V_GEN)$(DOXYGEN) $(<)

#
# Addition rules and commands to create a documentation-only
# distribution of Weave
#

@WEAVE_BUILD_DOCS_TRUE@$(weave_docdist_name): $(EXTRA_DOCS) html/index.html
@WEAVE_BUILD_DOCS_TRUE@	$(AM_V_at)rm -f -r $(@)
@WEAVE_BUILD_DOCS_TRUE@	$(call create-directory)
@WEAVE_BUILD_DOCS_TRUE@	$(AM_V_at)cp $(EXTRA_DOCS) $(@)
@WEAVE_BUILD_DOCS_TRUE@	$(AM_V_at)cp -R html $(@)

@WEAVE_BUILD_DOCS_TRUE@$(weave_docdist_archive): $(weave_docdist_name)
@WEAVE_BUILD_DOCS_TRUE@	$(AM_V_at)echo "  TAR      $(@)"
@WEAVE_BUILD_DOCS_TRUE@	$(AM_V_at)tardir="$(<)" && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c > "$(@)" && rm -rf $(<)

@WEAVE_BUILD_DOCS_TRUE@docdist $(weave_docdist_alias): $(weave_docdist_archive)

@WEAVE_BUILD_DOCS_TRUE@clean-local:
@WEAVE_BUILD_DOCS_TRUE@	$(AM_V_at)rm -f -r html

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:
