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

lib_LTLIBRARIES += libvppcom.la libvcl_ldpreload.la

libvppcom_la_SOURCES =
libvcl_ldpreload_la_SOURCES =
libvppcom_la_DEPENDENCIES =			\
	libsvm.la				\
	libvlibmemoryclient.la

libvppcom_la_LIBADD = $(libvppcom_la_DEPENDENCIES) -lpthread -lrt -ldl

libvppcom_la_SOURCES +=				\
  vcl/vppcom.c					\
  vcl/vcl_bapi.c				\
  vcl/vcl_cfg.c					\
  vcl/vcl_debug.h				\
  vcl/vcl_event.c				\
  vcl/vcl_private.h				\
  vcl/vcl_private.c				\
  $(libvppinfra_la_SOURCES)			\
  $(libsvm_la_SOURCES)				\
  $(libvlibmemoryclient_la_SOURCES)

nobase_include_HEADERS +=			\
  vcl/vcl_event.h				\
  vcl/vppcom.h

libvcl_ldpreload_la_LIBADD =  $(libvppcom_la_DEPENDENCIES) -lpthread -lrt -ldl

libvcl_ldpreload_la_SOURCES +=			\
  vcl/ldp_socket_wrapper.c			\
  vcl/ldp.c					\
  $(libvppcom_la_SOURCES)

nobase_include_HEADERS +=			\
  vcl/ldp_socket_wrapper.h			\
  vcl/ldp_glibc_socket.h			\
  vcl/ldp.h

noinst_PROGRAMS +=				\
	vcl_test_server				\
	vcl_test_client				\
	sock_test_server			\
	sock_test_client			\
	test_vcl_listener_server		\
	test_vcl_listener_client


test_vcl_listener_server_SOURCES = vcl/test_vcl_listener_server.c
test_vcl_listener_server_LDADD = libvppcom.la

test_vcl_listener_client_SOURCES = vcl/test_vcl_listener_client.c
test_vcl_listener_client_LDADD = libvppcom.la

vcl_test_server_SOURCES = vcl/vcl_test_server.c
vcl_test_server_LDADD = libvppcom.la


vcl_test_client_SOURCES = vcl/vcl_test_client.c
vcl_test_client_LDADD = libvppcom.la

sock_test_server_SOURCES = vcl/sock_test_server.c
sock_test_client_SOURCES = vcl/sock_test_client.c

nobase_include_HEADERS +=			\
  vcl/sock_test_common.h			\
  vcl/sock_test.h				\
  vcl/vcl_test.h

# vi:syntax=automake
