Multiple Autotools improvements 90/4590/2
authorDamjan Marion <damarion@cisco.com>
Sun, 8 Jan 2017 14:34:50 +0000 (15:34 +0100)
committerDamjan Marion <damarion@cisco.com>
Sun, 8 Jan 2017 15:50:19 +0000 (16:50 +0100)
- Defines some dependencies between shared libraries
- updates version.h only when version changes

Updating version.h on each "make" and "make install" was causing issues with
parallel builds. "make install" was re-linking vpp binary due to "updated"
version.h and in parallel it was re-linking shared libraries as part of
installation process. That was resulting on sporadic build failures.

Change-Id: I2a27ae1aea6a7a4100822018e095a60dd48d39ca
Signed-off-by: Damjan Marion <damarion@cisco.com>
src/svm.am
src/vlib-api.am
src/vnet.am
src/vpp-api-test.am
src/vpp.am

index d91eaa2..2cd385b 100644 (file)
@@ -15,14 +15,17 @@ bin_PROGRAMS += svmtool svmdbtool
 
 nobase_include_HEADERS += svm/svm.h svm/ssvm.h svm/svmdb.h
 
-libsvmdir = ${libdir}
-libsvm_LTLIBRARIES = libsvm.la libsvmdb.la
+lib_LTLIBRARIES += libsvm.la libsvmdb.la
 
+libsvm_la_LIBADD = libvppinfra.la -lrt -lpthread
+libsvm_la_DEPENDENCIES = libvppinfra.la
 libsvm_la_SOURCES = svm/svm.c svm/ssvm.c
 
 svmtool_SOURCES = svm/svmtool.c
 svmtool_LDADD = libsvm.la libvppinfra.la -lpthread -lrt
 
+libsvmdb_la_LIBADD = libvppinfra.la libsvm.la
+libsvmdb_la_DEPENDENCIES = libvppinfra.la libsvm.la
 libsvmdb_la_SOURCES = svm/svmdb.c
 
 svmdbtool_SOURCES = svm/svmdbtool.c
index 80eb760..128cc07 100644 (file)
@@ -14,6 +14,8 @@
 lib_LTLIBRARIES += libvlibapi.la libvlibmemory.la libvlibmemoryclient.la \
                   libvlibsocket.la
 
+libvlibapi_la_LIBADD = libvppinfra.la
+libvlibapi_la_DEPENDENCIES = libvppinfra.la libvlib.la
 libvlibapi_la_SOURCES =                        \
        vlibapi/api.h                           \
         vlibapi/api_helper_macros.h            \
@@ -22,6 +24,8 @@ libvlibapi_la_SOURCES =                       \
 
 nobase_include_HEADERS += vlibapi/api.h vlibapi/api_helper_macros.h
 
+libvlibmemory_la_LIBADD = libvppinfra.la libsvm.la -lpthread
+libvlibmemory_la_DEPENDENCIES = libvppinfra.la libsvm.la libvlib.la
 libvlibmemory_la_SOURCES =                     \
        vlibmemory/api.h                        \
        vlibmemory/memclnt.api                  \
@@ -32,6 +36,8 @@ libvlibmemory_la_SOURCES =                    \
        vlibmemory/unix_shared_memory_queue.c   \
        vlibmemory/unix_shared_memory_queue.h
 
+libvlibmemoryclient_la_LIBADD = libvppinfra.la libsvm.la -lpthread
+libvlibmemoryclient_la_DEPENDENCIES = libvppinfra.la libsvm.la libvlib.la
 libvlibmemoryclient_la_SOURCES =               \
        vlibmemory/api.h                        \
        vlibmemory/memclnt.api                  \
@@ -49,6 +55,8 @@ nobase_include_HEADERS +=                     \
        vlibmemory/unix_shared_memory_queue.h   \
        vlibmemory/memclnt.api.h
 
+libvlibsocket_la_LIBADD = libvppinfra.la
+libvlibsocket_la_DEPENDENCIES = libvppinfra.la
 libvlibsocket_la_SOURCES =                     \
        vlibsocket/api.h                        \
        vlibsocket/sockclnt.api                 \
index 1baa1d2..16ade4d 100644 (file)
 libvnet_la_SOURCES =
 libvnetplugin_la_SOURCES =
 
-libvnet_la_LIBAD = libvppinfra.la libvlib.la libsvm.la
+libvnet_la_LIBADD = libvppinfra.la libsvm.la
+libvnet_la_DEPENDENCIES = libvppinfra.la libvlib.la libsvmdb.la libsvm.la libvlibapi.la libvlibmemory.la libvlibmemoryclient.la
+
+if WITH_IPV6SR
+libvnet_la_LIBADD += -lcrypto
+endif
 
 ########################################
 # Generic stuff
index 66d223c..c788666 100644 (file)
@@ -11,6 +11,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+libvatplugin_la_LIBADD = libvppinfra.la
+libvatplugin_la_DEPENDENCIES = libvppinfra.la
 libvatplugin_la_SOURCES = \
   vat/plugin_api.c
 
index 77010e1..3bb2c1b 100644 (file)
@@ -44,19 +44,30 @@ nobase_include_HEADERS +=                   \
 
 API_FILES += vpp/api/vpe.api
 
-BUILT_SOURCES += vpp/app/version.h
+BUILT_SOURCES += .version
 
 vpp/app/version.o:     vpp/app/version.h
 
-.PHONY:        vpp/app/version.h
+.PHONY:        .version
+
+VPP_VERSION = $(shell $(srcdir)/scripts/version)
+
+# update version.h only when version changes, to avoid
+# unnecessary re-linking of vpp binary
+
+.version:
+       @if [ "$$(cat .version 2> /dev/null)" != "$(VPP_VERSION)" ] ; then              \
+         f="vpp/app/version.h"                                                         ;\
+         echo "  VERSION  $$f ($(VPP_VERSION))"                                        ;\
+         echo $(VPP_VERSION) > .version                                                ;\
+         echo "#define VPP_BUILD_DATE \"$$(date)\"" > $$f                              ;\
+         echo "#define VPP_BUILD_USER \"$$(whoami)\"" >> $$f                           ;\
+         echo "#define VPP_BUILD_HOST \"$$(hostname)\"" >> $$f                         ;\
+         echo -n "#define VPP_BUILD_TOPDIR " >> $$f                                    ;\
+         echo "\"$$(cd $(srcdir) && git rev-parse --show-toplevel)\"" >> $$f           ;\
+         echo "#define VPP_BUILD_VER \"$(VPP_VERSION)\"" >> $$f                        ;\
+       fi
 
-vpp/app/version.h:
-       @echo "  VERSION " $@
-       @echo "#define VPP_BUILD_DATE \"$$(date)\"" > $@
-       @echo "#define VPP_BUILD_USER \"$$(whoami)\"" >> $@
-       @echo "#define VPP_BUILD_HOST \"$$(hostname)\"" >> $@
-       @echo "#define VPP_BUILD_TOPDIR \"$$(cd $(srcdir) && git rev-parse --show-toplevel)\""  >> $@
-       @echo "#define VPP_BUILD_VER \"$$($(srcdir)/scripts/version)\"" >> $@
 
 # Generate a plugin configuration script. Misconfiguring a
 # plugin can cause very subtle problems.
@@ -103,10 +114,6 @@ bin_vpp_LDADD = \
 bin_vpp_LDFLAGS = $(DPDK_LD_FLAGS)
 bin_vpp_LDADD += libvppinfra.la -lm -lpthread -ldl $(DPDK_LD_ADD)
 
-if WITH_IPV6SR
-  bin_vpp_LDADD += -lcrypto
-endif
-
 noinst_PROGRAMS += bin/test_client
 
 bin_test_client_SOURCES = \