Convert build process to autotools

Replaced the use of a manual Makefile with the use of autotools to
automatically verify and generate the necessary build files. Follow the
steps outlined within the README.md file to build the package.

Change-Id: Ieed870c63b2bef83b3741dd22e413c25916ed408
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
diff --git a/readd.cpp b/readd.cpp
new file mode 100644
index 0000000..35523d9
--- /dev/null
+++ b/readd.cpp
@@ -0,0 +1,79 @@
+#include <iostream>
+#include <memory>
+#include <thread>
+#include "argument.hpp"
+#include "sensorset.hpp"
+#include "sensorcache.hpp"
+#include "hwmon.hpp"
+#include "sysfs.hpp"
+
+static void exit_with_error(const char* err, char** argv)
+{
+    ArgumentParser::usage(argv);
+    std::cerr << std::endl;
+    std::cerr << "ERROR: " << err << std::endl;
+    exit(-1);
+}
+
+int main(int argc, char** argv)
+{
+    // Read arguments.
+    auto options = std::make_unique<ArgumentParser>(argc, argv);
+
+    // Parse out path argument.
+    auto path = (*options)["path"];
+    if (path == ArgumentParser::empty_string)
+    {
+        exit_with_error("Path not specified.", argv);
+    }
+
+    // Finished getting options out, so release the parser.
+    options.release();
+
+    // Check sysfs for available sensors.
+    auto sensors = std::make_unique<SensorSet>(path);
+    auto sensor_cache = std::make_unique<SensorCache>();
+
+    // TODO: Issue#3 - Need to make calls to the dbus sensor cache here to
+    //       ensure the objects all exist?
+
+    // Polling loop.
+    while(true)
+    {
+        // Iterate through all the sensors.
+        for(auto& i : *sensors)
+        {
+            if (i.second.find(hwmon::entry::input) != i.second.end())
+            {
+                // Read value from sensor.
+                int value = 0;
+                read_sysfs(make_sysfs_path(path,
+                                           i.first.first, i.first.second,
+                                           hwmon::entry::input),
+                           value);
+
+                // Update sensor cache.
+                if (sensor_cache->update(i.first, value))
+                {
+                    // TODO: Issue#4 - dbus event here.
+                    std::cout << i.first.first << i.first.second << " = "
+                              << value << std::endl;
+                }
+            }
+        }
+
+        // Sleep until next interval.
+        // TODO: Issue#5 - Make this configurable.
+        // TODO: Issue#6 - Optionally look at polling interval sysfs entry.
+        {
+            using namespace std::literals::chrono_literals;
+            std::this_thread::sleep_for(1s);
+        }
+
+        // TODO: Issue#7 - Should probably periodically check the SensorSet
+        //       for new entries.
+    }
+
+    return 0;
+}
+