VCL-LDPRELOAD: statically link VPP objects into libvcl_ldpreload.so

Change-Id: If8fb5484b64a5b1c04e34573490fedcf63feabc9
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
diff --git a/src/vcl.am b/src/vcl.am
index de8b4da..763efc2 100644
--- a/src/vcl.am
+++ b/src/vcl.am
@@ -18,15 +18,11 @@
 libvppcom_la_DEPENDENCIES = 	\
 	libvppinfra.la		\
 	libvlib.la		\
-	libsvmdb.la		\
 	libsvm.la 		\
-	libvlibmemory.la 	\
 	libvlibmemoryclient.la
 
-libvcl_ldpreload_la_DEPENDENCIES = $(libvppcom_la_DEPENDENCIES)
-
-libvppcom_la_LIBADD = $(libvppcom_la_DEPENDENCIES) -lpthread
-libvcl_ldpreload_la_LIBADD = $(libvcl_ldpreload_la_DEPENDENCIES) -lpthread
+libvppcom_la_LIBADD = $(libvppcom_la_DEPENDENCIES) -lpthread -lrt
+libvcl_ldpreload_la_LIBADD = -lpthread -lrt -ldl
 
 libvppcom_la_SOURCES +=				\
   vcl/vppcom.c
@@ -38,7 +34,11 @@
   vcl/vcom_socket_wrapper.c			\
   vcl/vcom.c					\
   vcl/vcom_socket.c				\
-  vcl/vppcom.c
+  $(libvppcom_la_SOURCES)			\
+  $(libvppinfra_la_SOURCES)			\
+  $(libvlib_la_SOURCES)				\
+  $(libsvm_la_SOURCES)				\
+  $(libvlibmemoryclient_la_SOURCES)
 
 nobase_include_HEADERS +=			\
   vcl/vcom_socket_wrapper.h			\
@@ -56,7 +56,15 @@
 vcl_test_server_LDADD = libvppcom.la
 
 vcl_test_client_SOURCES = vcl/vcl_test_client.c
-vcl_test_client_LDADD = libvppcom.la
+
+# Link libvcl_ldpreload.la instead of vppcom.la
+# to validate that all symbols are included in
+# libvcl_ldpreload.la at build time.
+#
+# Not recommended for production VCL apps as
+# it includes extraneous code which will never
+# be executed.
+vcl_test_client_LDADD = libvcl_ldpreload.la
 
 sock_test_server_SOURCES = vcl/sock_test_server.c
 sock_test_client_SOURCES = vcl/sock_test_client.c