# Copyright (c) 2018 Cisco Systems, Inc.
# 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.

vppplugins_LTLIBRARIES += marvell_plugin.la

marvell_plugin_la_SOURCES = \
	marvell/plugin.c			\
	marvell/pp2/cli.c			\
	marvell/pp2/format.c			\
	marvell/pp2/input.c			\
	marvell/pp2/output.c			\
	marvell/pp2/pp2.c

marvell_plugin_la_LDFLAGS = $(AM_LDFLAGS) -Wl,-l:libmusdk.a

noinst_HEADERS += marvell/pp2/pp2.h

#AUTOMAKE_OPTIONS = foreign subdir-objects

#AM_CFLAGS = -Wall
#AM_LDFLAGS = -module -shared -avoid-version

#vpppluginsdir = ${libdir}/vpp_plugins

#vppplugins_LTLIBRARIES = mrvl_device_plugin.la


#mrvl_device_plugin_la_LDFLAGS = $(AM_LDFLAGS) -Wl,-lmusdk
#-Wl,--whole-archive,-l:libdpdk.a,--no-whole-archive

# Remove *.la files
#install-data-hook:
#	@(cd $(vpppluginsdir) && $(RM) $(vppplugins_LTLIBRARIES))

#CLEANFILES = $(BUILT_SOURCES)

# vi:syntax=automake
