# Copyright (c) 2017 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.

#
# VPP API C wrapper extension
#
lib_LTLIBRARIES += libvppapiclient.la
libvppapiclient_la_SOURCES =			\
  vpp-api/client/client.c			\
  vpp-api/client/stat_client.c			\
  vpp-api/client/libvppapiclient.map

libvppapiclient_la_LIBADD = \
  -lpthread -lm -lrt

libvppapiclient_la_LDFLAGS = \
  -Wl,-L$(top_builddir)/.libs,--whole-archive,-l:libsvm.a,-l:libvppinfra.a,-l:libvlibmemoryclient.a,--no-whole-archive \
  -Wl,--version-script=$(srcdir)/vpp-api/client/libvppapiclient.map,-lrt

libvppapiclient_la_DEPENDENCIES = libvppinfra.la libvlibmemoryclient.la libsvm.la

libvppapiclient_la_CPPFLAGS =

nobase_include_HEADERS += vpp-api/client/vppapiclient.h

#
# Test client
#
if ENABLE_TESTS
noinst_PROGRAMS += vac_test
vac_test_SOURCES = vpp-api/client/test.c
vac_test_LDADD = \
  $(builddir)/libvppapiclient.la \
  -lpthread -lm -lrt
endif

# vi:syntax=automake
