build: Add targets for generated files
Add a target for generated.cpp.
Add targets for extra interfaces.
Remove example configure option - this is now driven
by the input yaml filesystem.
Add YAML_PATH autoconf variable.
Change-Id: Ieff734948088d3252e346a8dcc0e1dd6caf83333
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/Makefile.am b/Makefile.am
index 30353a7..21b8f38 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,3 +1,8 @@
+EXTRAIFACES_C=@EXTRAIFACES_C@
+EXTRAIFACES_LO=@EXTRAIFACES_LO@
+BUILT_SOURCES=generated.cpp
+CLEANFILES=$(BUILT_SOURCES) $(EXTRAIFACES_C) libextra.la
+
sbin_PROGRAMS = phosphor-inventory
phosphor_inventory_SOURCES = app.cpp
@@ -8,14 +13,21 @@
xyz.openbmc_project.Inventory.Manager.cpp \
generated.cpp \
manager.cpp
+libmanager_la_LIBADD = libextra.la
-if EXAMPLE
-noinst_LTLIBRARIES += libexample.la
-libexample_la_SOURCES = \
- xyz.openbmc_project.Example.Iface1.cpp \
- xyz.openbmc_project.Example.Iface2.cpp
-libmanager_la_LIBADD = libexample.la
-endif
+# Automake does not allow autoconf substituted variables
+# in _SOURCES variables. Work around this by providing
+# our own target.
+#
+# Typically the recommendation is conditional compilation
+# but here the generated source files are completely
+# arbitrary and not known making that approach difficult.
+libextra.la: $(EXTRAIFACES_LO)
+ $(AM_V_CXXLD)$(CXXLINK) $(EXTRAIFACES_LO)
+
+$(EXTRAIFACES_C) generated.cpp:
+ $(AM_V_GEN)@PIMGEN@ -o $(top_builddir) generate-cpp
+
phosphor_inventory_LDFLAGS = $(SYSTEMD_LIBS)
phosphor_inventory_CFLAGS = $(SYSTEMD_CFLAGS)
diff --git a/configure.ac b/configure.ac
index b23d799..2076777 100644
--- a/configure.ac
+++ b/configure.ac
@@ -11,6 +11,10 @@
AM_PROG_AR
AC_PROG_INSTALL
AC_PROG_MAKE_SET
+AC_PROG_AWK
+AM_PATH_PYTHON([2.7],
+ [AC_SUBST([PYTHON], [echo "$PYTHON"])],
+ [AC_MSG_ERROR([Could not find python-2.7 installed...python-2.7 is required])])
# Checks for libraries.
PKG_CHECK_MODULES([SYSTEMD], [libsystemd >= 221])
@@ -50,15 +54,20 @@
AC_ARG_VAR(BUSNAME, [The DBus busname to own.])
AC_ARG_VAR(INVENTORY_ROOT, [The DBus inventory namespace root.])
AC_ARG_VAR(IFACE, [The manager DBus interface.])
+AC_ARG_VAR(YAML_PATH, [The path to the yaml config files.])
AS_IF([test "x$BUSNAME" == "x"], [BUSNAME="xyz.openbmc_project.Inventory.Manager"])
AS_IF([test "x$INVENTORY_ROOT" == "x"], [INVENTORY_ROOT="/xyz/openbmc_project/Inventory"])
AS_IF([test "x$IFACE" == "x"], [IFACE="xyz.openbmc_project.Inventory.Manager"])
+AS_IF([test "x$YAML_PATH" == "x"], [YAML_PATH="$srcdir/example"])
AC_DEFINE_UNQUOTED([BUSNAME], ["$BUSNAME"], [The DBus busname to own.])
AC_DEFINE_UNQUOTED([INVENTORY_ROOT], ["$INVENTORY_ROOT"], [The DBus inventory namespace root.])
AC_DEFINE_UNQUOTED([IFACE], ["$IFACE"], [The manager DBus interface.])
-AC_ARG_ENABLE([example],
- AS_HELP_STRING([--enable-example], [Enable example configuration.]))
-AM_CONDITIONAL([EXAMPLE], [test x$enable_example = xyes])
+PIMGEN="$PYTHON $srcdir/pimgen.py -d $YAML_PATH"
+EXTRAIFACES_LO="`$PIMGEN list-interfaces|awk '{ for(i=1;i<=NF;i++){printf $i".lo ";}}'`"
+EXTRAIFACES_C="`$PIMGEN list-interfaces|awk '{ for(i=1;i<=NF;i++){printf $i".cpp ";}}'`"
+AC_SUBST(EXTRAIFACES_LO)
+AC_SUBST(EXTRAIFACES_C)
+AC_SUBST(PIMGEN)
# Create configured output
AC_CONFIG_FILES([Makefile test/Makefile])