Add base support for PNOR code management
This is the starting code needed to build the application.
Change-Id: Ie2937ed6246b8646b9e5b4d09318bc4aa7b31c35
Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
diff --git a/.gitignore b/.gitignore
index 08fb35b..43f2f95 100644
--- a/.gitignore
+++ b/.gitignore
@@ -41,6 +41,7 @@
/config.h.in~
/config.log
/config.status
+/openpower-version-host-software-manager
Makefile
.deps
*-libtool
diff --git a/Makefile.am b/Makefile.am
new file mode 100755
index 0000000..7d8aa90
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,21 @@
+AM_DEFAULT_SOURCE_EXT = .cpp
+
+sbin_PROGRAMS = \
+ openpower-version-host-software-manager
+
+openpower_version_host_software_manager_SOURCES = \
+ version_host_software_manager.cpp \
+ version_host_software_manager_main.cpp
+
+generic_cxxflags = \
+ $(SYSTEMD_CFLAGS) \
+ $(PHOSPHOR_DBUS_INTERFACES_CFLAGS) \
+ $(SDBUSPLUS_CFLAGS)
+generic_ldflags = \
+ $(SYSTEMD_LIBS) \
+ $(PHOSPHOR_DBUS_INTERFACES_LIBS) \
+ $(SDBUSPLUS_LIBS)
+
+openpower_version_host_software_manager_CXXFLAGS = $(generic_cxxflags)
+openpower_version_host_software_manager_LDFLAGS = $(generic_ldflags)
+
diff --git a/bootstrap.sh b/bootstrap.sh
new file mode 100755
index 0000000..f861496
--- /dev/null
+++ b/bootstrap.sh
@@ -0,0 +1,18 @@
+#!/bin/sh -xe
+
+AUTOCONF_FILES="Makefile.in aclocal.m4 ar-lib autom4te.cache compile \
+ config.guess config.h.in config.sub configure depcomp install-sh \
+ ltmain.sh missing *libtool test-driver"
+
+case $1 in
+ clean)
+ test -f Makefile && make maintainer-clean
+ for file in ${AUTOCONF_FILES}; do
+ find -name "$file" | xargs -r rm -rf
+ done
+ exit 0
+ ;;
+esac
+
+autoreconf -i
+echo 'Run "./configure ${CONFIGURE_FLAGS} && make"'
diff --git a/configure.ac b/configure.ac
new file mode 100755
index 0000000..eaf171f
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,37 @@
+AC_PREREQ([2.69])
+AC_INIT([openpower-pnor-code-mgmt], [1.0], [https://github.com/openbmc/openpower-pnor-code-mgmt/issues])
+AC_LANG([C++])
+AC_CONFIG_HEADERS([config.h])
+AM_INIT_AUTOMAKE([subdir-objects -Wall -Werror foreign dist-xz])
+AM_SILENT_RULES([yes])
+
+# Checks for programs
+AC_PROG_CXX
+AC_PROG_INSTALL #Checks/sets the install variable to be used
+AC_PROG_MAKE_SET
+
+# Check for libraries
+PKG_CHECK_MODULES([PHOSPHOR_DBUS_INTERFACES], [phosphor-dbus-interfaces],,\
+ AC_MSG_ERROR(["Requires phosphor-dbus-interfaces package."]))
+PKG_CHECK_MODULES([SDBUSPLUS], [sdbusplus],,
+ AC_MSG_ERROR(["Requires sdbusplus package."]))
+
+# Checks for library functions
+LT_INIT # Required for systemd linking
+
+# Checks for typedefs, structures, and compiler characteristics.
+AX_CXX_COMPILE_STDCXX_14([noext])
+AX_APPEND_COMPILE_FLAGS([-Wall -Werror], [CXXFLAGS])
+
+AC_ARG_VAR(VERSION_BUSNAME, [The Dbus busname to own])
+AS_IF([test "x$VERSION_BUSNAME" == "x"],
+ [VERSION_BUSNAME="org.open_power.Software.Host.Version"])
+AC_DEFINE_UNQUOTED([VERSION_BUSNAME], ["$VERSION_BUSNAME"], [The DBus busname to own])
+
+AC_ARG_VAR(SOFTWARE_OBJPATH, [The software manager Dbus root])
+AS_IF([test "x$SOFTWARE_OBJPATH" == "x"], [SOFTWARE_OBJPATH="/xyz/openbmc_project/software"])
+AC_DEFINE_UNQUOTED([SOFTWARE_OBJPATH], ["$SOFTWARE_OBJPATH"], [The software manager Dbus root])
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
+
diff --git a/version_host_software_manager.cpp b/version_host_software_manager.cpp
new file mode 100755
index 0000000..1fc562e
--- /dev/null
+++ b/version_host_software_manager.cpp
@@ -0,0 +1,13 @@
+#include "version_host_software_manager.hpp"
+
+namespace openpower
+{
+namespace software
+{
+namespace manager
+{
+
+} // namespace manager
+} // namespace software
+} // namepsace openpower
+
diff --git a/version_host_software_manager.hpp b/version_host_software_manager.hpp
new file mode 100755
index 0000000..d674f9c
--- /dev/null
+++ b/version_host_software_manager.hpp
@@ -0,0 +1,37 @@
+#pragma once
+
+#include <sdbusplus/bus.hpp>
+#include "xyz/openbmc_project/Software/Version/server.hpp"
+
+namespace openpower
+{
+namespace software
+{
+namespace manager
+{
+
+using VersionInherit = sdbusplus::server::object::object<
+ sdbusplus::xyz::openbmc_project::Software::server::Version>;
+
+/** @class Version
+ * @brief OpenBMC version software management implementation.
+ * @details A concrete implementation for xyz.openbmc_project.Software.Version
+ * DBus API.
+ */
+class Version : public VersionInherit
+{
+ public:
+ /** @brief Constructs Version Software Manager
+ *
+ * @param[in] bus - The Dbus bus object
+ * @param[in] objPath - The Dbus object path
+ */
+ Version(sdbusplus::bus::bus& bus,
+ const char* objPath) : VersionInherit(
+ bus, objPath) {};
+};
+
+} // namespace manager
+} // namespace software
+} // namespace openpower
+
diff --git a/version_host_software_manager_main.cpp b/version_host_software_manager_main.cpp
new file mode 100755
index 0000000..5b77904
--- /dev/null
+++ b/version_host_software_manager_main.cpp
@@ -0,0 +1,21 @@
+#include <sdbusplus/bus.hpp>
+#include "config.h"
+#include "version_host_software_manager.hpp"
+
+int main(int argc, char* argv[])
+{
+ auto bus = sdbusplus::bus::new_default();
+
+ // Add sdbusplus ObjectManager.
+ sdbusplus::server::manager::manager objManager(bus,
+ SOFTWARE_OBJPATH);
+
+ bus.request_name(VERSION_BUSNAME);
+
+ while (true)
+ {
+ bus.process_discard();
+ bus.wait();
+ }
+ return 0;
+}