API refactoring : gre
[vpp.git] / vpp / Makefile.am
index 640c844..9ae0605 100644 (file)
@@ -13,7 +13,7 @@
 
 AUTOMAKE_OPTIONS = foreign subdir-objects
 
-AM_CFLAGS = -Wall @DPDK@ @IPSEC@ @VCGN@ @IPV6SR@
+AM_CFLAGS = -Wall @DPDK@ @DPDK_CRYPTO@ @IPSEC@ @VCGN@ @IPV6SR@
 
 noinst_PROGRAMS = 
 BUILT_SOURCES =
@@ -30,25 +30,25 @@ vpp_SOURCES =                                       \
   stats/stats.c
 
 vpp_SOURCES +=                                 \
-  api/api.c                                    \
-  api/custom_dump.c
+  vpp-api/api.c                                        \
+  vpp-api/custom_dump.c
 
 # comment out to disable stats upload to gmond 
 
 vpp_SOURCES +=                                 \
-  api/gmon.c   
+  vpp-api/gmon.c       
 
 nobase_include_HEADERS =                       \
-  api/vpe_all_api_h.h                          \
-  api/vpe_msg_enum.h                           \
-  api/vpe.api.h
+  vpp-api/vpe_all_api_h.h                      \
+  vpp-api/vpe_msg_enum.h                       \
+  vpp-api/vpe.api.h
 
 # install the API definition, so we can produce java bindings, etc.
 
-apidir = $(prefix)/api
-api_DATA = api/vpe.api
+apidir = $(prefix)/vpp-api
+api_DATA = vpp-api/vpe.api.json
 
-BUILT_SOURCES += api/vpe.api.h app/version.h
+BUILT_SOURCES += vpp-api/vpe.api.h app/version.h vpp-api/vpe.api.json
 
 app/version.o: app/version.h
 
@@ -62,6 +62,38 @@ app/version.h:
        @echo "#define VPP_BUILD_TOPDIR \"$$(git rev-parse --show-toplevel)\""  >> $@
        @echo "#define VPP_BUILD_VER \"$$(../../scripts/version)\"" >> $@
 
+# Generate a plugin configuration script. Misconfiguring a
+# plugin can cause very subtle problems.
+
+bin_SCRIPTS = vpp_plugin_configure
+
+BUILT_SOURCES += vpp_plugin_configure
+
+.PHONY: vpp_plugin_configure
+
+if WITH_DPDK
+PLUGIN_DPDK_ARG="--with-dpdk"
+else
+PLUGIN_DPDK_ARG=""
+endif
+
+vpp_plugin_configure:
+       @echo "PLUGIN CONFIGURE " $@ 
+       @echo "#!/bin/bash" > $@
+       @echo " " >> $@
+       @echo "set +eu" >> $@
+       @echo " " >> $@
+       @echo "if [ -f ./configure ] ; then" >> $@
+       @echo "    CFLAGS='$(CFLAGS) $(AM_CFLAGS) -I/usr/include/vpp-dpdk' ./configure --with-plugin-toolkit $(PLUGIN_DPDK_ARG)" >> $@
+       @echo "else" >> $@
+       @echo "    if [ -f ../configure ] ; then" >> $@
+       @echo "        CFLAGS='$(CFLAGS) $(AM_CFLAGS) -I/usr/include/vpp-dpdk' ../configure --with-plugin-toolkit $(PLUGIN_DPDK_ARG)" >> $@
+       @echo "    else" >> $@
+       @echo "        echo Couldnt find ./configure or ../configure " >> $@
+       @echo "        exit 1" >> $@
+       @echo "    fi" >> $@
+       @echo "fi" >> $@
+
 vpp_LDADD = -lvlibapi -lvlibmemory  -lvlib_unix -lvlib
 
 vpp_LDADD += -lvnet
@@ -71,10 +103,15 @@ vpp_LDADD += -lsvm -lsvmdb -lrt
 vpp_LDADD += -lvnetplugin
 
 if WITH_DPDK
+vpp_LDFLAGS = -Wl,--whole-archive
 if ENABLE_DPDK_SHARED
-vpp_LDADD += -ldpdk
+vpp_LDFLAGS += -ldpdk
 else
-vpp_LDADD += -l:libdpdk.a
+vpp_LDFLAGS += -l:libdpdk.a
+endif
+vpp_LDFLAGS += -Wl,--no-whole-archive
+if WITH_DPDK_CRYPTO
+vpp_LDADD += -L$(AESNI_MULTI_BUFFER_LIB_PATH) -lIPSec_MB
 endif
 endif
 
@@ -84,31 +121,35 @@ if WITH_IPV6SR
   vpp_LDADD += -lcrypto
 endif
 
-SUFFIXES = .api.h .api
+# Set the suffix list
+SUFFIXES = .api.h .api .api.json
 
-%.api.h: %.api
-       @echo "  APIGEN  " $@ ;                                 \
-       mkdir -p `dirname $@` ;                                 \
-       $(CC) $(CPPFLAGS) -E -P -C -x c $^                      \
-       | vppapigen --input - --output $@ --show-name $@
+# The actual %.api.h rule is in .../build-data/packages/suffix-rules.mk
+# and requires a symbolic link at the top of the vpp source tree
 
+include $(top_srcdir)/suffix-rules.mk
 
 noinst_PROGRAMS += test_client
 
-test_client_SOURCES = api/test_client.c
+test_client_SOURCES = vpp-api/test_client.c
 test_client_LDADD = -lvlibmemoryclient -lvlibapi -lsvm -lvppinfra \
        -lpthread -lm -lrt
 
 noinst_PROGRAMS += test_client test_ha
 
-test_ha_SOURCES = api/test_ha.c
+test_ha_SOURCES = vpp-api/test_ha.c
 test_ha_LDADD = -lvlibmemoryclient -lvlibapi -lsvmdb -lsvm -lvppinfra \
                -lpthread -lm -lrt
 
 
-
 noinst_PROGRAMS += summary_stats_client
 
-summary_stats_client_SOURCES = api/summary_stats_client.c
+summary_stats_client_SOURCES = vpp-api/summary_stats_client.c
 summary_stats_client_LDADD = -lvlibmemoryclient -lvlibapi -lsvm -lvppinfra \
        -lpthread -lm -lrt
+
+bin_PROGRAMS += vpp_get_metrics
+
+vpp_get_metrics_SOURCES = vpp-api/vpp_get_metrics.c
+vpp_get_metrics_LDADD = -lsvmdb -lsvm -lvppinfra \
+               -lpthread -lm -lrt