# Copyright (c) 2015 Cisco and/or its affiliates.
# 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.

libvatplugin_la_LIBADD = libvppinfra.la
libvatplugin_la_DEPENDENCIES = libvppinfra.la
libvatplugin_la_SOURCES = \
  vat/plugin_api.c

lib_LTLIBRARIES += libvatplugin.la

bin_PROGRAMS += vpp_api_test vpp_json_test vpp_restart

vpp_api_test_SOURCES = \
  vat/api_format.c 	\
  vat/main.c		\
  vat/plugin.c		\
  vat/vat.h		\
  vat/json_format.h	\
  vat/json_format.c

vpp_json_test_SOURCES = \
  vat/json_format.h	\
  vat/json_format.c	\
  vat/json_test.c

vpp_api_test_LDADD = \
  libvlib.la				\
  libvlibmemoryclient.la		\
  libsvm.la				\
  libvatplugin.la			\
  libvppinfra.la 			\
  libvlibapi.la				\
  libvlibmemory.la			\
  libvnet.la				\
  -lpthread -lm -lrt -ldl -lcrypto

vpp_api_test_LDFLAGS = -Wl,--export-dynamic

vpp_json_test_LDADD = libvppinfra.la -lm
vpp_json_test_LDFLAGS = -Wl,--export-dynamic

nobase_include_HEADERS += \
  vat/vat.h 		\
  vat/json_format.h

vpp_restart_SOURCES =  \
  vat/restart.c
vpp_restart_LDADD = \
  libsvmdb.la				\
  libsvm.la				\
  libvppinfra.la			\
  -lpthread -lrt

dist_bin_SCRIPTS += scripts/vppctl

# vi:syntax=automake
