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

AUTOMAKE_OPTIONS = foreign
ACLOCAL_AMFLAGS = -I m4
AM_LIBTOOLFLAGS = --quiet

AM_CFLAGS = @CPU_FLAGS@ -Wall -I${top_srcdir} -I${top_builddir} \
  -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux \
  -I@top_srcdir@/plugins -I@top_builddir@/plugins

AM_LDFLAGS = -shared -avoid-version -rpath /none -no-undefined

BUILT_SOURCES =
bin_PROGRAMS =
noinst_LTLIBRARIES =
JAR_FILES =
CLEANDIRS =

#
# jvpp-common
#

nobase_include_HEADERS =                \
  jvpp-common/jvpp_common.h

lib_LTLIBRARIES = libjvpp_common.la
libjvpp_common_la_SOURCES = jvpp-common/jvpp_common.c
libjvpp_common_la_LDFLAGS = shared -rpath /none -no-undefined

JVPP_LIBS = \
  libjvpp_common.la \
  $(top_builddir)/libvppinfra.la \
  $(top_builddir)/libvlibmemoryclient.la \
  $(top_builddir)/libsvm.la \
  -lpthread -lm -lrt

#
# jvpp-registry (connection management + plugin registry)
#

noinst_LTLIBRARIES += libjvpp_registry.la

libjvpp_registry_la_SOURCES = jvpp-registry/jvpp_registry.c
libjvpp_registry_la_CPPFLAGS = -Ijvpp-registry
libjvpp_registry_la_LIBADD = $(JVPP_LIBS)
libjvpp_registry_la_DEPENDENCIES = libjvpp_common.la

packagedir_jvpp_registry = io/fd/vpp/jvpp
jvpp_registry_src_files := \
  $(wildcard @srcdir@/jvpp-registry/$(packagedir_jvpp_registry)/*.java) \
  $(wildcard @srcdir@/jvpp-registry/$(packagedir_jvpp_registry)/**/*.java)

BUILT_SOURCES += jvpp-registry/io_fd_vpp_jvpp_VppJNIConnection.h
CLEANDIRS += jvpp-registry/target
JAR_FILES += jvpp-registry-$(PACKAGE_VERSION).jar

jvpp_registry_ok = jvpp-registry/io_fd_vpp_jvpp_VppJNIConnection.h

jvpp-registry/io_fd_vpp_jvpp_VppJNIConnection.h: $(jvpp_registry_src_files)
	@echo "  JVPP GEN  $@"
	@rm -rf jvpp-registry/target
	@mkdir -p jvpp-registry/target
	@$(JAVAC) -source 8 -target 8 -d jvpp-registry/target -h jvpp-registry $^
	@touch jvpp-registry.ok

define japigen
	@echo "  JVPP GEN  $@"
	@rm -rf jvpp-$(1)/target
	@ @srcdir@/jvpp/gen/jvpp_gen.py --plugin_name $(1) --root_dir jvpp-$(1) \
	  -i $(jvpp_$(1)_json_files)
	@find jvpp-$(1)/target -name \*.java > jvpp-$(1).generated.files
	@find @srcdir@/jvpp-$(1) -name \*.java > jvpp-$(1).static.files
	@$(JAVAC) -source 8 -target 8 -classpath jvpp-registry/target \
	  -d jvpp-$(1)/target -h jvpp-$(1) @jvpp-$(1).generated.files @jvpp-$(1).static.files
endef

#
# jvpp-core (Java wrapper for vpe.api)
#
noinst_LTLIBRARIES += libjvpp_core.la
libjvpp_core_la_SOURCES = jvpp-core/jvpp_core.c jvpp-core/jvpp_core_gen.h
libjvpp_core_la_CPPFLAGS = -Ijvpp-registry -Ijvpp-core
libjvpp_core_la_LIBADD = $(JVPP_LIBS)
libjvpp_core_la_DEPENDENCIES = libjvpp_common.la

BUILT_SOURCES += jvpp-core/io_fd_vpp_jvpp_core_JVppCoreImpl.h
JAR_FILES += jvpp-core-$(PACKAGE_VERSION).jar
CLEANDIRS += jvpp-core/target

# Include all VPP API files
jvpp_core_json_files = $(shell find @top_builddir@/vnet/ -type f -name '*.api.json')
jvpp_core_json_files += $(shell find @top_builddir@/vpp/ -type f -name '*.api.json')
# except for plugins and unsupported ones:
# jvpp_core_json_files += @top_builddir@/vlibmemory/memclnt.api.json

jvpp-core/io_fd_vpp_jvpp_core_JVppCoreImpl.h: $(jvpp_registry_ok) $(jvpp_core_json_files)
	$(call japigen,core,JVppCoreImpl)

#
# ACL Plugin
#
if ENABLE_ACL_PLUGIN
noinst_LTLIBRARIES += libjvpp_acl.la
libjvpp_acl_la_SOURCES = jvpp-acl/jvpp_acl.c
libjvpp_acl_la_CPPFLAGS = -Ijvpp-acl
libjvpp_acl_la_LIBADD = $(JVPP_LIBS)
libjvpp_acl_la_DEPENDENCIES = libjvpp_common.la

BUILT_SOURCES += jvpp-acl/io_fd_vpp_jvpp_acl_JVppAclImpl.h
JAR_FILES += jvpp-acl-$(PACKAGE_VERSION).jar
CLEANDIRS += jvpp-acl/target

jvpp_acl_json_files = @top_builddir@/plugins/acl/acl.api.json

jvpp-acl/io_fd_vpp_jvpp_acl_JVppAclImpl.h: $(jvpp_registry_ok) $(jvpp_acl_json_files)
	$(call japigen,acl,JVppAclImpl)
endif

#
# GTPU Plugin
#
if ENABLE_GTPU_PLUGIN
noinst_LTLIBRARIES += libjvpp_gtpu.la
libjvpp_gtpu_la_SOURCES = jvpp-gtpu/jvpp_gtpu.c
libjvpp_gtpu_la_CPPFLAGS = -Ijvpp-gtpu
libjvpp_gtpu_la_LIBADD = $(JVPP_LIBS)
libjvpp_gtpu_la_DEPENDENCIES = libjvpp_common.la

BUILT_SOURCES += jvpp-gtpu/io_fd_vpp_jvpp_gtpu_JVppGtpuImpl.h
JAR_FILES += jvpp-gtpu-$(PACKAGE_VERSION).jar
CLEANDIRS += jvpp-gtpu/target

jvpp_gtpu_json_files = @top_builddir@/plugins/gtpu/gtpu.api.json

jvpp-gtpu/io_fd_vpp_jvpp_gtpu_JVppGtpuImpl.h: $(jvpp_registry_ok) $(jvpp_gtpu_json_files)
	$(call japigen,gtpu,JVppGtpuImpl)
endif

#
# PPPOE Plugin
#
if ENABLE_PPPOE_PLUGIN
noinst_LTLIBRARIES += libjvpp_pppoe.la
libjvpp_pppoe_la_SOURCES = jvpp-pppoe/jvpp_pppoe.c
libjvpp_pppoe_la_CPPFLAGS = -Ijvpp-pppoe
libjvpp_pppoe_la_LIBADD = $(JVPP_LIBS)
libjvpp_pppoe_la_DEPENDENCIES = libjvpp_common.la

BUILT_SOURCES += jvpp-pppoe/io_fd_vpp_jvpp_pppoe_JVppPppoeImpl.h
JAR_FILES += jvpp-pppoe-$(PACKAGE_VERSION).jar
CLEANDIRS += jvpp-pppoe/target

jvpp_pppoe_json_files = @top_builddir@/plugins/pppoe/pppoe.api.json

jvpp-pppoe/io_fd_vpp_jvpp_pppoe_JVppPppoeImpl.h: $(jvpp_registry_ok) $(jvpp_pppoe_json_files)
	$(call japigen,pppoe,JVppPppoeImpl)
endif

#
# NAT Plugin
#
if ENABLE_NAT_PLUGIN
noinst_LTLIBRARIES += libjvpp_nat.la
libjvpp_nat_la_SOURCES = jvpp-nat/jvpp_nat.c
libjvpp_nat_la_CPPFLAGS = -Ijvpp-nat
libjvpp_nat_la_LIBADD = $(JVPP_LIBS)
libjvpp_nat_la_DEPENDENCIES = libjvpp_common.la

BUILT_SOURCES += jvpp-nat/io_fd_vpp_jvpp_nat_JVppNatImpl.h
JAR_FILES += jvpp-nat-$(PACKAGE_VERSION).jar
CLEANDIRS += jvpp-nat/target

jvpp_nat_json_files = @top_builddir@/plugins/nat/nat.api.json

jvpp-nat/io_fd_vpp_jvpp_nat_JVppNatImpl.h: $(jvpp_registry_ok) $(jvpp_nat_json_files)
	$(call japigen,nat,JVppNatImpl)
endif

#
# iOAM Trace Plugin
#
if ENABLE_IOAM_PLUGIN
noinst_LTLIBRARIES += libjvpp_ioamtrace.la
libjvpp_ioamtrace_la_SOURCES = jvpp-ioamtrace/jvpp_ioam_trace.c
libjvpp_ioamtrace_la_LIBADD = $(JVPP_LIBS)
libjvpp_ioamtrace_la_DEPENDENCIES = libjvpp_common.la

BUILT_SOURCES += jvpp-ioamtrace/io_fd_vpp_jvpp_ioamtrace_JVppIoamtraceImpl.h
JAR_FILES += jvpp-ioamtrace-$(PACKAGE_VERSION).jar
CLEANDIRS += jvpp-ioamtrace/target

jvpp_ioamtrace_json_files = @top_builddir@/plugins/ioam/lib-trace/trace.api.json

jvpp-ioamtrace/io_fd_vpp_jvpp_ioamtrace_JVppIoamtraceImpl.h: $(jvpp_registry_ok) $(jvpp_ioamtrace_json_files)
	$(call japigen,ioamtrace,JVppIoamtraceImpl)

#
# iOAM POT Plugin
#
noinst_LTLIBRARIES += libjvpp_ioampot.la
libjvpp_ioampot_la_SOURCES = jvpp-ioampot/jvpp_ioam_pot.c
libjvpp_ioampot_la_LIBADD = $(JVPP_LIBS)
libjvpp_ioampot_la_DEPENDENCIES = libjvpp_common.la

BUILT_SOURCES += jvpp-ioampot/io_fd_vpp_jvpp_ioampot_JVppIoampotImpl.h
JAR_FILES += jvpp-ioampot-$(PACKAGE_VERSION).jar
CLEANDIRS += jvpp-ioampot/target

jvpp_ioampot_json_files = @top_builddir@/plugins/ioam/lib-pot/pot.api.json

jvpp-ioampot/io_fd_vpp_jvpp_ioampot_JVppIoampotImpl.h: $(jvpp_registry_ok) $(jvpp_ioampot_json_files)
	$(call japigen,ioampot,JVppIoampotImpl)

#
# iOAM Export Plugin
#
noinst_LTLIBRARIES += libjvpp_ioamexport.la
libjvpp_ioamexport_la_SOURCES = jvpp-ioamexport/jvpp_ioam_export.c
libjvpp_ioamexport_la_LIBADD = $(JVPP_LIBS)
libjvpp_ioamexport_la_DEPENDENCIES = libjvpp_common.la

BUILT_SOURCES += jvpp-ioamexport/io_fd_vpp_jvpp_ioamexport_JVppIoamexportImpl.h
JAR_FILES += jvpp-ioamexport-$(PACKAGE_VERSION).jar
CLEANDIRS += jvpp-ioamexport/target

jvpp_ioamexport_json_files = @top_builddir@/plugins/ioam/export/ioam_export.api.json

jvpp-ioamexport/io_fd_vpp_jvpp_ioamexport_JVppIoamexportImpl.h: $(jvpp_registry_ok) $(jvpp_ioamexport_json_files)
	$(call japigen,ioamexport,JVppIoamexportImpl)
endif

#
# JAR creation
#
jvpp-%-$(PACKAGE_VERSION).jar: libjvpp_%.la
	@echo "  JAR      $@"
	@cp .libs/libjvpp_$*.so jvpp-$*/target
	@$(JAR) cf $(JARFLAGS) $@ -C jvpp-$*/target .

jardir = $(prefix)/share/java
jar_DATA = $(JAR_FILES)

all-local: $(JAR_FILES)

#
# Cleanup
#
CLEANFILES = jvpp-registry.ok $(JAR_FILES) $(BUILT_SOURCES) *.files */*.h

clean-local:
	rm -rf $(CLEANDIRS)
