build: use a common library for shared pieces

Signed-off-by: Patrick Venture <venture@google.com>
Change-Id: Ic4b645091c71f270ba3b2f290f7206ebe3222f1d
diff --git a/Makefile.am b/Makefile.am
index 8743f70..42cdcbf 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -35,8 +35,19 @@
 endif
 
 ACLOCAL_AMFLAGS = -I m4
+AM_DEFAULT_SOURCE_EXT = .cpp
 
-SUBDIRS =
+noinst_LTLIBRARIES = libfirmware_common.la
+libfirmware_common_la_SOURCES = \
+	util.cpp \
+	internal/sys.cpp
+libfirmware_common_la_CXXFLAGS = \
+	$(CODE_COVERAGE_CXXFLAGS) \
+	-flto
+libfirmware_common_la_LDFLAGS = \
+	$(CODE_COVERAGE_LIBS)
+
+SUBDIRS = .
 
 if BUILD_BMC_HANDLER
 SUBDIRS += bmc
diff --git a/bmc/Makefile.am b/bmc/Makefile.am
index c46a8cd..be3346c 100644
--- a/bmc/Makefile.am
+++ b/bmc/Makefile.am
@@ -2,10 +2,8 @@
 
 noinst_LTLIBRARIES = libfirmwareblob_common.la
 libfirmwareblob_common_la_SOURCES = \
-	$(top_srcdir)/util.cpp \
 	firmware_handler.cpp \
 	file_handler.cpp \
-	$(top_srcdir)/internal/sys.cpp \
 	prepare_systemd.cpp \
 	verify_systemd.cpp \
 	update_systemd.cpp
@@ -37,6 +35,7 @@
         $(PHOSPHOR_LOGGING_LIBS) \
         $(CODE_COVERAGE_LIBS) \
         -lstdc++fs
+libfirmwareblob_common_la_LIBADD = $(top_builddir)/libfirmware_common.la
 
 libfirmwareblobdir = ${libdir}/ipmid-providers
 libfirmwareblob_LTLIBRARIES = libfirmwareblob.la
diff --git a/tools/Makefile.am b/tools/Makefile.am
index e54b301..2762ece 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -14,7 +14,6 @@
 	$(IPMIBLOB_CFLAGS) \
 	$(PCILIB_CFLAGS)
 libupdater_la_SOURCES = \
-	$(top_srcdir)/util.cpp \
 	updater.cpp \
 	handler.cpp \
 	helper.cpp \
@@ -22,7 +21,7 @@
 	lpc.cpp \
 	io.cpp \
 	pci.cpp \
-	p2a.cpp \
-	$(top_srcdir)/internal/sys.cpp
+	p2a.cpp
+libupdater_la_LIBADD = $(top_builddir)/libfirmware_common.la
 
 SUBDIRS = . test