pldmtool: oem: ibm: untangle header dependencies
With the oem-ibm meson option enabled, pldm_platform_command.cpp has the
following header dependency chain:
requester/handler.hpp
host-bmc/dbus_to_event_handler.hpp
libpldmresponder/platform.hpp
oem/ibm/libpldmresponder/inband_code_update.hpp
oem/ibm/libpldmresponder/oem_ibm_handler.hpp
pldmtool/oem/ibm/oem_ibm_state_set.hpp
pldmtool/pldm_platform_cmd.cpp
requester/handler.hpp has a dependency on sd_event. Since sd_event is
not listed as a dependency of pldmtool, this results in a compile
failure when building in subproject mode.
Clearly it isn't appropriate to add sd_event as a pldmtool dependency.
To fix the compile failure, break the include dependency chain between
oem_ibm_state_set.hpp and oem_ibm_handler.hpp. This is likely an
intra-pldm domain violation anyway (pldmtool <-> libpldmresponder).
oem_ibm_state_set.hpp includes oem_ibm_handler.hpp to make use of a
single constant: PLDM_OEM_IBM_ENTITY_FIRMWARE_UPDATE. To break the
dependency chain, PLDM_OEM_IBM_ENTITY_FIRMWARE_UPDATE is moved to an oem
version of entity.h.
Change-Id: I2b54ad9a7559ecf5fbe01c6a52a24428e56df77e
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/libpldm/meson.build b/libpldm/meson.build
index edd0727..eed73b0 100644
--- a/libpldm/meson.build
+++ b/libpldm/meson.build
@@ -28,6 +28,7 @@
if get_option('oem-ibm').enabled()
headers += [
+ '../oem/ibm/libpldm/entity_oem_ibm.h',
'../oem/ibm/libpldm/file_io.h',
'../oem/ibm/libpldm/host.h',
'../oem/ibm/libpldm/platform_oem_ibm.h',
diff --git a/oem/ibm/libpldm/entity_oem_ibm.h b/oem/ibm/libpldm/entity_oem_ibm.h
new file mode 100644
index 0000000..636167b
--- /dev/null
+++ b/oem/ibm/libpldm/entity_oem_ibm.h
@@ -0,0 +1,16 @@
+#ifndef OEM_IBM_ENTITY_H
+#define OEM_IBM_ENTITY_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum pldm_oem_ibm_entity_id_codes {
+ PLDM_OEM_IBM_ENTITY_FIRMWARE_UPDATE = 24577,
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* OEM_IBM_ENTITY_H */
diff --git a/oem/ibm/libpldmresponder/oem_ibm_handler.cpp b/oem/ibm/libpldmresponder/oem_ibm_handler.cpp
index 138ef01..efa4790 100644
--- a/oem/ibm/libpldmresponder/oem_ibm_handler.cpp
+++ b/oem/ibm/libpldmresponder/oem_ibm_handler.cpp
@@ -7,6 +7,8 @@
#include "libpldmresponder/file_io.hpp"
#include "libpldmresponder/pdr_utils.hpp"
+#include <libpldm/entity_oem_ibm.h>
+
using namespace pldm::pdr;
using namespace pldm::utils;
diff --git a/oem/ibm/libpldmresponder/oem_ibm_handler.hpp b/oem/ibm/libpldmresponder/oem_ibm_handler.hpp
index e097b3a..ce69cf1 100644
--- a/oem/ibm/libpldmresponder/oem_ibm_handler.hpp
+++ b/oem/ibm/libpldmresponder/oem_ibm_handler.hpp
@@ -17,7 +17,6 @@
{
namespace oem_ibm_platform
{
-static constexpr auto PLDM_OEM_IBM_ENTITY_FIRMWARE_UPDATE = 24577;
constexpr uint16_t ENTITY_INSTANCE_0 = 0;
constexpr uint16_t ENTITY_INSTANCE_1 = 1;
diff --git a/oem/ibm/test/libpldmresponder_oem_platform_test.cpp b/oem/ibm/test/libpldmresponder_oem_platform_test.cpp
index d124a39..e9d02aa 100644
--- a/oem/ibm/test/libpldmresponder_oem_platform_test.cpp
+++ b/oem/ibm/test/libpldmresponder_oem_platform_test.cpp
@@ -9,6 +9,8 @@
#include "oem/ibm/libpldmresponder/inband_code_update.hpp"
#include "oem/ibm/libpldmresponder/oem_ibm_handler.hpp"
+#include <libpldm/entity_oem_ibm.h>
+
#include <sdeventplus/event.hpp>
#include <iostream>
diff --git a/pldmtool/oem/ibm/oem_ibm_state_set.hpp b/pldmtool/oem/ibm/oem_ibm_state_set.hpp
index 6f9468f..25045b5 100644
--- a/pldmtool/oem/ibm/oem_ibm_state_set.hpp
+++ b/pldmtool/oem/ibm/oem_ibm_state_set.hpp
@@ -1,8 +1,7 @@
#include "oem/ibm/libpldm/state_set_oem_ibm.h"
-#include "oem/ibm/libpldmresponder/oem_ibm_handler.hpp"
-
#include <libpldm/entity.h>
+#include <libpldm/entity_oem_ibm.h>
/** @brief PLDM OEM State Set range as per DSP0249_1.1.0 specification
*/
@@ -53,8 +52,7 @@
/** @brief Map for PLDM OEM IBM Entity Types
*/
extern const std::map<uint8_t, std::string> OemIBMEntityType{
- {pldm::responder::oem_ibm_platform::PLDM_OEM_IBM_ENTITY_FIRMWARE_UPDATE,
- "OEM IBM Firmware Update"},
+ {PLDM_OEM_IBM_ENTITY_FIRMWARE_UPDATE, "OEM IBM Firmware Update"},
{PLDM_OEM_ENTITY_TYPE_START, "OEM IBM Entity Type Start"},
{PLDM_OEM_ENTITY_TYPE_END, "OEM IBM Entity Type End"},
};