Make libpeci dependency optional

This option is disabled by default as libpeci uses the old out-of-tree
PECI driver's API and is thus incompatible with current OpenBMC kernels.

Signed-off-by: Zev Weiss <zev@bewilderbeest.net>
Change-Id: I3516b6937a4da3d64e700eb727d67bdb4b8e8fee
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b8457ce..781209b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,8 +10,9 @@
         OFF)
 
 option (YOCTO "Enable Building in Yocto" OFF)
+option (LIBPECI "Enable use of old peci driver API via libpeci" OFF)
 
-if (NOT YOCTO)
+if (LIBPECI AND NOT YOCTO)
     add_dependencies (host-error-monitor libpeci)
     externalproject_add (libpeci PREFIX ${CMAKE_BINARY_DIR}/libpeci
                          GIT_REPOSITORY https://github.com/openbmc/libpeci.git
@@ -34,7 +35,7 @@
 
 target_include_directories (host-error-monitor PRIVATE ${CMAKE_SOURCE_DIR})
 
-target_link_libraries (host-error-monitor sdbusplus -lsystemd gpiodcxx peci)
+target_link_libraries (host-error-monitor sdbusplus -lsystemd gpiodcxx)
 
 include_directories (${CMAKE_CURRENT_SOURCE_DIR}/include)
 
@@ -53,6 +54,11 @@
 add_definitions (-DBOOST_NO_TYPEID)
 add_definitions (-DBOOST_ASIO_DISABLE_THREADS)
 
+if (LIBPECI)
+    add_definitions (-DLIBPECI)
+    target_link_libraries (host-error-monitor peci)
+endif ()
+
 set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-rtti")
 
diff --git a/include/error_monitors/ierr_monitor.hpp b/include/error_monitors/ierr_monitor.hpp
index 213eb2e..7fda1af 100644
--- a/include/error_monitors/ierr_monitor.hpp
+++ b/include/error_monitors/ierr_monitor.hpp
@@ -82,6 +82,7 @@
     bool checkIERRCPUs()
     {
         bool cpuIERRFound = false;
+#ifdef LIBPECI
         for (size_t cpu = 0, addr = MIN_CLIENT_ADDR; addr <= MAX_CLIENT_ADDR;
              cpu++, addr++)
         {
@@ -300,6 +301,7 @@
                 }
             }
         }
+#endif
         return cpuIERRFound;
     }
 
diff --git a/include/host_error_monitor.hpp b/include/host_error_monitor.hpp
index d13202c..c28576f 100644
--- a/include/host_error_monitor.hpp
+++ b/include/host_error_monitor.hpp
@@ -14,7 +14,11 @@
 // limitations under the License.
 */
 #pragma once
+#ifdef LIBPECI
 #include <peci.h>
+#else
+#define MAX_CPUS 8
+#endif
 
 #include <sdbusplus/asio/object_server.hpp>
 
@@ -97,6 +101,7 @@
         "com.intel.crashdump.Stored", "GenerateStoredLog", triggerType);
 }
 
+#ifdef LIBPECI
 static inline bool peciError(EPECIStatus peciStatus, uint8_t cc)
 {
     return (
@@ -111,6 +116,7 @@
               << addr << ". Error: " << peciStatus << ": cc: 0x" << std::hex
               << cc << "\n";
 }
+#endif
 
 static void beep(std::shared_ptr<sdbusplus::asio::connection> conn,
                  const uint8_t& beepPriority)
@@ -133,6 +139,7 @@
                             std::bitset<MAX_CPUS>& errPinCPUs)
 {
     errPinCPUs.reset();
+#ifdef LIBPECI
     for (size_t cpu = 0, addr = MIN_CLIENT_ADDR; addr <= MAX_CLIENT_ADDR;
          cpu++, addr++)
     {
@@ -194,6 +201,7 @@
             }
         }
     }
+#endif
 }
 
 } // namespace host_error_monitor