include aminclude.am

## Place generated object files (.o) into the same directory as their source
## files, in order to avoid collisions when non-recursive make is used.
AUTOMAKE_OPTIONS = subdir-objects

## Additional flags to pass to aclocal when it is invoked automatically at
## make time. The ${ACLOCAL_FLAGS} variable is picked up from the environment
## to provide a way for the user to supply additional arguments.
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS}

lib_LTLIBRARIES = libndn-c.la libndn-cpp.la

bin_PROGRAMS = bin/test-encode-decode-forwarding-entry bin/test-encode-decode-interest bin/test-encode-decode-data \
  bin/test-get-async bin/test-publish-async

# Just the C code.
libndn_c_la_SOURCES = \
  ndn-cpp/ndn-cpp-config.h \
  ndn-cpp/c/common.h \
  ndn-cpp/c/data.h \
  ndn-cpp/c/errors.c ndn-cpp/c/errors.h \
  ndn-cpp/c/forwarding-entry.h \
  ndn-cpp/c/forwarding-flags.c ndn-cpp/c/forwarding-flags.h \
  ndn-cpp/c/interest.c ndn-cpp/c/interest.h \
  ndn-cpp/c/key.h \
  ndn-cpp/c/name.c ndn-cpp/c/name.h \
  ndn-cpp/c/publisher-public-key-digest.h \
  ndn-cpp/c/encoding/binary-xml.h \
  ndn-cpp/c/encoding/binary-xml-data.c ndn-cpp/c/encoding/binary-xml-data.h \
  ndn-cpp/c/encoding/binary-xml-decoder.c ndn-cpp/c/encoding/binary-xml-decoder.h \
  ndn-cpp/c/encoding/binary-xml-element-reader.c ndn-cpp/c/encoding/binary-xml-element-reader.h \
  ndn-cpp/c/encoding/binary-xml-encoder.c ndn-cpp/c/encoding/binary-xml-encoder.h \
  ndn-cpp/c/encoding/binary-xml-forwarding-entry.c ndn-cpp/c/encoding/binary-xml-forwarding-entry.h \
  ndn-cpp/c/encoding/binary-xml-interest.c ndn-cpp/c/encoding/binary-xml-interest.h \
  ndn-cpp/c/encoding/binary-xml-key.c ndn-cpp/c/encoding/binary-xml-key.h \
  ndn-cpp/c/encoding/binary-xml-name.c ndn-cpp/c/encoding/binary-xml-name.h \
  ndn-cpp/c/encoding/binary-xml-publisher-public-key-digest.c ndn-cpp/c/encoding/binary-xml-publisher-public-key-digest.h \
  ndn-cpp/c/encoding/binary-xml-structure-decoder.c ndn-cpp/c/encoding/binary-xml-structure-decoder.h \
  ndn-cpp/c/transport/socket-transport.c ndn-cpp/c/transport/socket-transport.h \
  ndn-cpp/c/transport/tcp-transport.h \
  ndn-cpp/c/transport/udp-transport.h \
  ndn-cpp/c/util/blob.h \
  ndn-cpp/c/util/crypto.c ndn-cpp/c/util/crypto.h \
  ndn-cpp/c/util/dynamic-uint8-array.c ndn-cpp/c/util/dynamic-uint8-array.h \
  ndn-cpp/c/util/ndn_memory.c ndn-cpp/c/util/ndn_memory.h \
  ndn-cpp/c/util/ndn_realloc.c ndn-cpp/c/util/ndn_realloc.h

# C++ code and also the C code.
libndn_cpp_la_SOURCES = \
  $(libndn_c_la_SOURCES) \
  ndn-cpp/ndn-cpp-config.h \
  ndn-cpp/c/common.h \
  ndn-cpp/common.hpp ndn-cpp/common.cpp \
  ndn-cpp/data.cpp ndn-cpp/c/data.h ndn-cpp/data.hpp \
  ndn-cpp/face.cpp ndn-cpp/face.hpp \
  ndn-cpp/forwarding-entry.cpp ndn-cpp/c/forwarding-entry.h ndn-cpp/forwarding-entry.hpp \
  ndn-cpp/c/forwarding-entry.h ndn-cpp/forwarding-entry.hpp \
  ndn-cpp/interest.cpp ndn-cpp/c/interest.h ndn-cpp/interest.hpp \
  ndn-cpp/key.cpp ndn-cpp/c/key.h ndn-cpp/key.hpp \
  ndn-cpp/name.cpp ndn-cpp/c/name.h ndn-cpp/name.hpp \
  ndn-cpp/node.cpp ndn-cpp/node.hpp \
  ndn-cpp/publisher-public-key-digest.hpp \
  ndn-cpp/sha256-with-rsa-signature.cpp ndn-cpp/sha256-with-rsa-signature.hpp \
  ndn-cpp/c/encoding/binary-xml.h \
  ndn-cpp/c/encoding/binary-xml-decoder.h ndn-cpp/encoding/binary-xml-decoder.hpp \
  ndn-cpp/c/encoding/binary-xml-element-reader.h ndn-cpp/encoding/binary-xml-element-reader.cpp ndn-cpp/encoding/binary-xml-element-reader.hpp \
  ndn-cpp/c/encoding/binary-xml-encoder.h ndn-cpp/encoding/binary-xml-encoder.hpp ndn-cpp/c/util/dynamic-uint8-array.h \
  ndn-cpp/c/encoding/binary-xml-structure-decoder.h ndn-cpp/encoding/binary-xml-structure-decoder.hpp \
  ndn-cpp/encoding/binary-xml-wire-format.cpp ndn-cpp/c/encoding/binary-xml-name.h ndn-cpp/encoding/binary-xml-wire-format.hpp \
  ndn-cpp/encoding/wire-format.cpp ndn-cpp/encoding/wire-format.hpp \
  ndn-cpp/security/security-common.hpp \
  ndn-cpp/security/key-chain.cpp ndn-cpp/security/key-chain.hpp \
  ndn-cpp/security/security-exception.cpp ndn-cpp/security/security-exception.hpp \
  ndn-cpp/security/certificate/oid.cpp ndn-cpp/security/certificate/oid.hpp \
  ndn-cpp/security/certificate/public-key.cpp ndn-cpp/security/certificate/public-key.hpp \
  ndn-cpp/security/encryption/encryption-manager.hpp \
  ndn-cpp/security/identity/basic-identity-storage.cpp ndn-cpp/security/identity/basic-identity-storage.hpp \
  ndn-cpp/security/identity/identity-manager.cpp ndn-cpp/security/identity/identity-manager.hpp \
  ndn-cpp/security/identity/identity-storage.hpp \
  ndn-cpp/security/identity/memory-identity-storage.cpp ndn-cpp/security/identity/memory-identity-storage.hpp \
  ndn-cpp/security/identity/memory-private-key-storage.cpp ndn-cpp/security/identity/memory-private-key-storage.hpp \
  ndn-cpp/security/identity/osx-private-key-storage.cpp ndn-cpp/security/identity/osx-private-key-storage.hpp \
  ndn-cpp/security/identity/private-key-storage.hpp \
  ndn-cpp/security/policy/no-verify-policy-manager.cpp ndn-cpp/security/policy/no-verify-policy-manager.hpp \
  ndn-cpp/security/policy/policy-manager.hpp \
  ndn-cpp/c/transport/socket-transport.h ndn-cpp/c/transport/tcp-transport.h ndn-cpp/transport/tcp-transport.cpp ndn-cpp/transport/tcp-transport.hpp \
  ndn-cpp/transport/transport.cpp ndn-cpp/transport/transport.hpp \
  ndn-cpp/c/transport/socket-transport.h ndn-cpp/c/transport/udp-transport.h ndn-cpp/transport/udp-transport.cpp ndn-cpp/transport/udp-transport.hpp \
  ndn-cpp/util/blob.hpp \
  ndn-cpp/util/changed-event.cpp ndn-cpp/util/changed-event.hpp \
  ndn-cpp/util/dynamic-uint8-vector.cpp ndn-cpp/util/dynamic-uint8-vector.hpp \
  ndn-cpp/util/logging.cpp ndn-cpp/util/logging.hpp \
  ndn-cpp/util/signed-blob.hpp

bin_test_encode_decode_forwarding_entry_SOURCES = tests/test-encode-decode-forwarding-entry.cpp
bin_test_encode_decode_forwarding_entry_LDADD = libndn-cpp.la

bin_test_encode_decode_interest_SOURCES = tests/test-encode-decode-interest.cpp
bin_test_encode_decode_interest_LDADD = libndn-cpp.la

bin_test_encode_decode_data_SOURCES = tests/test-encode-decode-data.cpp
bin_test_encode_decode_data_LDADD = libndn-cpp.la

bin_test_get_async_SOURCES = tests/test-get-async.cpp
bin_test_get_async_LDADD = libndn-cpp.la

bin_test_publish_async_SOURCES = tests/test-publish-async.cpp
bin_test_publish_async_LDADD = libndn-cpp.la

dist_noinst_SCRIPTS = autogen.sh
