# Makefile.in generated by automake 1.14 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@

# "make install" will install these in the install include directory, for example
# /usr/local/ndn-cpp/name.hpp.
# These files are included by the application with, for example
# #include <ndn-cpp/namp.hpp>
# Internal include headers are not put in this public install directory.

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@
subdir = include
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
	$(srcdir)/config.h.in $(nobase_include_HEADERS)
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \
	$(top_srcdir)/m4/ax_lib_sqlite3.m4 \
	$(top_srcdir)/m4/ax_prefix_config_h.m4 \
	$(top_srcdir)/m4/ax_prog_doxygen.m4 \
	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
	$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.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__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)$(includedir)"
HEADERS = $(nobase_include_HEADERS)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
	$(LISP)config.h.in
# 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@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DOXYGEN_PAPER_SIZE = @DOXYGEN_PAPER_SIZE@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
DX_CONFIG = @DX_CONFIG@
DX_DOCDIR = @DX_DOCDIR@
DX_DOT = @DX_DOT@
DX_DOXYGEN = @DX_DOXYGEN@
DX_DVIPS = @DX_DVIPS@
DX_EGREP = @DX_EGREP@
DX_ENV = @DX_ENV@
DX_FLAG_chi = @DX_FLAG_chi@
DX_FLAG_chm = @DX_FLAG_chm@
DX_FLAG_doc = @DX_FLAG_doc@
DX_FLAG_dot = @DX_FLAG_dot@
DX_FLAG_html = @DX_FLAG_html@
DX_FLAG_man = @DX_FLAG_man@
DX_FLAG_pdf = @DX_FLAG_pdf@
DX_FLAG_ps = @DX_FLAG_ps@
DX_FLAG_rtf = @DX_FLAG_rtf@
DX_FLAG_xml = @DX_FLAG_xml@
DX_HHC = @DX_HHC@
DX_LATEX = @DX_LATEX@
DX_MAKEINDEX = @DX_MAKEINDEX@
DX_PDFLATEX = @DX_PDFLATEX@
DX_PERL = @DX_PERL@
DX_PROJECT = @DX_PROJECT@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
HAVE_CXX11 = @HAVE_CXX11@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
NM = @NM@
NMEDIT = @NMEDIT@
OBJCXX = @OBJCXX@
OBJCXXDEPMODE = @OBJCXXDEPMODE@
OBJCXXFLAGS = @OBJCXXFLAGS@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
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@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SQLITE3_CFLAGS = @SQLITE3_CFLAGS@
SQLITE3_LDFLAGS = @SQLITE3_LDFLAGS@
SQLITE3_VERSION = @SQLITE3_VERSION@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
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_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@
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@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@

# Public C headers.
ndn_cpp_c_headers = \
  $(wildcard ndn-cpp/*.h) \
  $(wildcard ndn-cpp/c/*.*) \
  $(wildcard ndn-cpp/c/encoding/*.*)


# Public C++ headers.
# Use ndn-cpp/*.hpp instead of *.* to not overwrite *.h from above.
ndn_cpp_cpp_headers = \
  $(wildcard ndn-cpp/*.hpp) \
  $(wildcard ndn-cpp/encoding/*.*) \
  $(wildcard ndn-cpp/security/*.*) \
  $(wildcard ndn-cpp/security/certificate/*.*) \
  $(wildcard ndn-cpp/security/encryption/*.*) \
  $(wildcard ndn-cpp/security/identity/*.*) \
  $(wildcard ndn-cpp/security/policy/*.*) \
  $(wildcard ndn-cpp/transport/*.*) \
  $(wildcard ndn-cpp/util/*.*)

ndnboost_headers = \
  $(wildcard ndnboost/*.*) \
  $(wildcard ndnboost/utility/*.*) \
  $(wildcard ndnboost/utility/detail/*.*) \
  $(wildcard ndnboost/units/*.*) \
  $(wildcard ndnboost/units/detail/*.*) \
  $(wildcard ndnboost/unordered/*.*) \
  $(wildcard ndnboost/unordered/detail/*.*) \
  $(wildcard ndnboost/range/*.*) \
  $(wildcard ndnboost/range/algorithm/*.*) \
  $(wildcard ndnboost/range/detail/*.*) \
  $(wildcard ndnboost/range/detail/vc6/*.*) \
  $(wildcard ndnboost/smart_ptr/*.*) \
  $(wildcard ndnboost/smart_ptr/detail/*.*) \
  $(wildcard ndnboost/intrusive/*.*) \
  $(wildcard ndnboost/intrusive/detail/*.*) \
  $(wildcard ndnboost/typeof/*.*) \
  $(wildcard ndnboost/typeof/dmc/*.*) \
  $(wildcard ndnboost/typeof/msvc/*.*) \
  $(wildcard ndnboost/config/*.*) \
  $(wildcard ndnboost/config/no_tr1/*.*) \
  $(wildcard ndnboost/config/abi/*.*) \
  $(wildcard ndnboost/config/platform/*.*) \
  $(wildcard ndnboost/config/compiler/*.*) \
  $(wildcard ndnboost/config/stdlib/*.*) \
  $(wildcard ndnboost/test/*.*) \
  $(wildcard ndnboost/test/utils/*.*) \
  $(wildcard ndnboost/test/utils/basic_cstring/*.*) \
  $(wildcard ndnboost/test/utils/iterator/*.*) \
  $(wildcard ndnboost/test/utils/runtime/*.*) \
  $(wildcard ndnboost/test/utils/runtime/cla/*.*) \
  $(wildcard ndnboost/test/utils/runtime/cla/detail/*.*) \
  $(wildcard ndnboost/test/utils/runtime/cla/iface/*.*) \
  $(wildcard ndnboost/test/utils/runtime/env/*.*) \
  $(wildcard ndnboost/test/output/*.*) \
  $(wildcard ndnboost/test/impl/*.*) \
  $(wildcard ndnboost/test/detail/*.*) \
  $(wildcard ndnboost/math/*.*) \
  $(wildcard ndnboost/math/special_functions/*.*) \
  $(wildcard ndnboost/math/special_functions/detail/*.*) \
  $(wildcard ndnboost/math/tools/*.*) \
  $(wildcard ndnboost/math/policies/*.*) \
  $(wildcard ndnboost/bind/*.*) \
  $(wildcard ndnboost/iterator/*.*) \
  $(wildcard ndnboost/iterator/detail/*.*) \
  $(wildcard ndnboost/mpl/*.*) \
  $(wildcard ndnboost/mpl/vector/*.*) \
  $(wildcard ndnboost/mpl/vector/aux_/*.*) \
  $(wildcard ndnboost/mpl/vector/aux_/preprocessed/*.*) \
  $(wildcard ndnboost/mpl/vector/aux_/preprocessed/typeof_based/*.*) \
  $(wildcard ndnboost/mpl/vector/aux_/preprocessed/plain/*.*) \
  $(wildcard ndnboost/mpl/vector/aux_/preprocessed/no_ctps/*.*) \
  $(wildcard ndnboost/mpl/aux_/*.*) \
  $(wildcard ndnboost/mpl/aux_/config/*.*) \
  $(wildcard ndnboost/mpl/aux_/preprocessed/*.*) \
  $(wildcard ndnboost/mpl/aux_/preprocessed/msvc60/*.*) \
  $(wildcard ndnboost/mpl/aux_/preprocessed/dmc/*.*) \
  $(wildcard ndnboost/mpl/aux_/preprocessed/bcc551/*.*) \
  $(wildcard ndnboost/mpl/aux_/preprocessed/msvc70/*.*) \
  $(wildcard ndnboost/mpl/aux_/preprocessed/gcc/*.*) \
  $(wildcard ndnboost/mpl/aux_/preprocessed/plain/*.*) \
  $(wildcard ndnboost/mpl/aux_/preprocessed/mwcw/*.*) \
  $(wildcard ndnboost/mpl/aux_/preprocessed/bcc_pre590/*.*) \
  $(wildcard ndnboost/mpl/aux_/preprocessed/no_ttp/*.*) \
  $(wildcard ndnboost/mpl/aux_/preprocessed/bcc/*.*) \
  $(wildcard ndnboost/mpl/aux_/preprocessed/no_ctps/*.*) \
  $(wildcard ndnboost/mpl/aux_/preprocessor/*.*) \
  $(wildcard ndnboost/mpl/limits/*.*) \
  $(wildcard ndnboost/mpl/list/*.*) \
  $(wildcard ndnboost/mpl/list/aux_/*.*) \
  $(wildcard ndnboost/mpl/list/aux_/preprocessed/*.*) \
  $(wildcard ndnboost/mpl/list/aux_/preprocessed/plain/*.*) \
  $(wildcard ndnboost/regex/*.*) \
  $(wildcard ndnboost/regex/config/*.*) \
  $(wildcard ndnboost/regex/v4/*.*) \
  $(wildcard ndnboost/regex/pending/*.*) \
  $(wildcard ndnboost/filesystem/*.*) \
  $(wildcard ndnboost/filesystem/detail/*.*) \
  $(wildcard ndnboost/iostreams/*.*) \
  $(wildcard ndnboost/iostreams/filter/*.*) \
  $(wildcard ndnboost/iostreams/device/*.*) \
  $(wildcard ndnboost/iostreams/detail/*.*) \
  $(wildcard ndnboost/iostreams/detail/adapter/*.*) \
  $(wildcard ndnboost/iostreams/detail/config/*.*) \
  $(wildcard ndnboost/iostreams/detail/streambuf/*.*) \
  $(wildcard ndnboost/iostreams/detail/vc6/*.*) \
  $(wildcard ndnboost/iostreams/detail/broken_overload_resolution/*.*) \
  $(wildcard ndnboost/integer/*.*) \
  $(wildcard ndnboost/optional/*.*) \
  $(wildcard ndnboost/numeric/*.*) \
  $(wildcard ndnboost/numeric/conversion/*.*) \
  $(wildcard ndnboost/numeric/conversion/detail/*.*) \
  $(wildcard ndnboost/numeric/conversion/detail/preprocessed/*.*) \
  $(wildcard ndnboost/function/*.*) \
  $(wildcard ndnboost/function/detail/*.*) \
  $(wildcard ndnboost/random/*.*) \
  $(wildcard ndnboost/random/detail/*.*) \
  $(wildcard ndnboost/system/*.*) \
  $(wildcard ndnboost/container/*.*) \
  $(wildcard ndnboost/functional/*.*) \
  $(wildcard ndnboost/functional/hash/*.*) \
  $(wildcard ndnboost/functional/hash/detail/*.*) \
  $(wildcard ndnboost/pending/*.*) \
  $(wildcard ndnboost/io/*.*) \
  $(wildcard ndnboost/io/detail/*.*) \
  $(wildcard ndnboost/exception/*.*) \
  $(wildcard ndnboost/exception/detail/*.*) \
  $(wildcard ndnboost/preprocessor/*.*) \
  $(wildcard ndnboost/preprocessor/repetition/*.*) \
  $(wildcard ndnboost/preprocessor/repetition/detail/*.*) \
  $(wildcard ndnboost/preprocessor/repetition/detail/dmc/*.*) \
  $(wildcard ndnboost/preprocessor/repetition/detail/edg/*.*) \
  $(wildcard ndnboost/preprocessor/repetition/detail/msvc/*.*) \
  $(wildcard ndnboost/preprocessor/facilities/*.*) \
  $(wildcard ndnboost/preprocessor/logical/*.*) \
  $(wildcard ndnboost/preprocessor/control/*.*) \
  $(wildcard ndnboost/preprocessor/control/detail/*.*) \
  $(wildcard ndnboost/preprocessor/control/detail/dmc/*.*) \
  $(wildcard ndnboost/preprocessor/control/detail/edg/*.*) \
  $(wildcard ndnboost/preprocessor/control/detail/msvc/*.*) \
  $(wildcard ndnboost/preprocessor/arithmetic/*.*) \
  $(wildcard ndnboost/preprocessor/arithmetic/detail/*.*) \
  $(wildcard ndnboost/preprocessor/array/*.*) \
  $(wildcard ndnboost/preprocessor/config/*.*) \
  $(wildcard ndnboost/preprocessor/slot/*.*) \
  $(wildcard ndnboost/preprocessor/slot/detail/*.*) \
  $(wildcard ndnboost/preprocessor/seq/*.*) \
  $(wildcard ndnboost/preprocessor/seq/detail/*.*) \
  $(wildcard ndnboost/preprocessor/comparison/*.*) \
  $(wildcard ndnboost/preprocessor/punctuation/*.*) \
  $(wildcard ndnboost/preprocessor/iteration/*.*) \
  $(wildcard ndnboost/preprocessor/iteration/detail/*.*) \
  $(wildcard ndnboost/preprocessor/iteration/detail/iter/*.*) \
  $(wildcard ndnboost/preprocessor/iteration/detail/bounds/*.*) \
  $(wildcard ndnboost/preprocessor/debug/*.*) \
  $(wildcard ndnboost/preprocessor/variadic/*.*) \
  $(wildcard ndnboost/preprocessor/tuple/*.*) \
  $(wildcard ndnboost/preprocessor/detail/*.*) \
  $(wildcard ndnboost/preprocessor/detail/dmc/*.*) \
  $(wildcard ndnboost/preprocessor/list/*.*) \
  $(wildcard ndnboost/preprocessor/list/detail/*.*) \
  $(wildcard ndnboost/preprocessor/list/detail/dmc/*.*) \
  $(wildcard ndnboost/preprocessor/list/detail/edg/*.*) \
  $(wildcard ndnboost/move/*.*) \
  $(wildcard ndnboost/move/detail/*.*) \
  $(wildcard ndnboost/algorithm/*.*) \
  $(wildcard ndnboost/algorithm/string/*.*) \
  $(wildcard ndnboost/algorithm/string/detail/*.*) \
  $(wildcard ndnboost/type_traits/*.*) \
  $(wildcard ndnboost/type_traits/msvc/*.*) \
  $(wildcard ndnboost/type_traits/detail/*.*) \
  $(wildcard ndnboost/tuple/*.*) \
  $(wildcard ndnboost/tuple/detail/*.*) \
  $(wildcard ndnboost/detail/*.*) \
  $(wildcard ndnboost/function_types/*.*) \
  $(wildcard ndnboost/function_types/config/*.*) \
  $(wildcard ndnboost/function_types/detail/*.*) \
  $(wildcard ndnboost/function_types/detail/pp_retag_default_cc/*.*) \
  $(wildcard ndnboost/function_types/detail/components_impl/*.*) \
  $(wildcard ndnboost/function_types/detail/pp_variate_loop/*.*) \
  $(wildcard ndnboost/function_types/detail/classifier_impl/*.*) \
  $(wildcard ndnboost/function_types/detail/pp_cc_loop/*.*) \
  $(wildcard ndnboost/function_types/detail/encoding/*.*) \
  $(wildcard ndnboost/function_types/detail/synthesize_impl/*.*) \
  $(wildcard ndnboost/function_types/detail/pp_tags/*.*) \
  $(wildcard ndnboost/concept/*.*) \
  $(wildcard ndnboost/concept/detail/*.*) \
  $(wildcard ndnboost/lambda/*.*) \
  $(wildcard ndnboost/lambda/detail/*.*)

nobase_include_HEADERS = $(ndn_cpp_c_headers) $(ndn_cpp_cpp_headers) $(ndnboost_headers)
all: config.h
	$(MAKE) $(AM_MAKEFLAGS) 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 include/Makefile'; \
	$(am__cd) $(top_srcdir) && \
	  $(AUTOMAKE) --foreign include/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):

config.h: stamp-h1
	@test -f $@ || rm -f stamp-h1
	@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1

stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
	@rm -f stamp-h1
	cd $(top_builddir) && $(SHELL) ./config.status include/config.h
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
	($(am__cd) $(top_srcdir) && $(AUTOHEADER))
	rm -f stamp-h1
	touch $@

distclean-hdr:
	-rm -f config.h stamp-h1

mostlyclean-libtool:
	-rm -f *.lo

clean-libtool:
	-rm -rf .libs _libs
install-nobase_includeHEADERS: $(nobase_include_HEADERS)
	@$(NORMAL_INSTALL)
	@list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \
	if test -n "$$list"; then \
	  echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
	  $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
	fi; \
	$(am__nobase_list) | while read dir files; do \
	  xfiles=; for file in $$files; do \
	    if test -f "$$file"; then xfiles="$$xfiles $$file"; \
	    else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
	  test -z "$$xfiles" || { \
	    test "x$$dir" = x. || { \
	      echo " $(MKDIR_P) '$(DESTDIR)$(includedir)/$$dir'"; \
	      $(MKDIR_P) "$(DESTDIR)$(includedir)/$$dir"; }; \
	    echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(includedir)/$$dir'"; \
	    $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(includedir)/$$dir" || exit $$?; }; \
	done

uninstall-nobase_includeHEADERS:
	@$(NORMAL_UNINSTALL)
	@list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \
	$(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)

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
all-am: Makefile $(HEADERS) config.h
installdirs:
	for dir in "$(DESTDIR)$(includedir)"; 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:

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."
clean: clean-am

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

distclean: distclean-am
	-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-hdr distclean-tags

dvi: dvi-am

dvi-am:

html: html-am

html-am:

info: info-am

info-am:

install-data-am: install-nobase_includeHEADERS

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: uninstall-nobase_includeHEADERS

.MAKE: all install-am install-strip

.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
	clean-libtool cscopelist-am ctags ctags-am distclean \
	distclean-generic distclean-hdr 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-html \
	install-html-am install-info install-info-am install-man \
	install-nobase_includeHEADERS 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 tags-am uninstall \
	uninstall-am uninstall-nobase_includeHEADERS


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