fw-update: Break circular dependency

```
In file included from ../pldmd/pldmd.cpp:2:
In file included from ../common/flight_recorder.hpp:3:
In file included from ../common/utils.hpp:15:
In file included from ../subprojects/nlohmann_json/single_include/nlohmann/json.hpp:29:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/memory:78:
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/unique_ptr.h:91:16: error: invalid application of 'sizeof' to an incomplete type 'pldm::fw_update::Activation'
   91 |         static_assert(sizeof(_Tp)>0,
      |                       ^~~~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/unique_ptr.h:398:4: note: in instantiation of member function 'std::default_delete<pldm::fw_update::Activation>::opera
tor()' requested here
  398 |           get_deleter()(std::move(__ptr));
      |           ^
../fw-update/update_manager.hpp:46:14: note: in instantiation of member function 'std::unique_ptr<pldm::fw_update::Activation>::~unique_ptr' requested here
   46 |     explicit UpdateManager(
      |              ^
../fw-update/update_manager.hpp:33:7: note: forward declaration of 'pldm::fw_update::Activation'
   33 | class Activation;
      |       ^
In file included from ../pldmd/pldmd.cpp:2:
In file included from ../common/flight_recorder.hpp:3:
In file included from ../common/utils.hpp:15:
In file included from ../subprojects/nlohmann_json/single_include/nlohmann/json.hpp:29:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/memory:78:
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/unique_ptr.h:91:16: error: invalid application of 'sizeof' to an incomplete type 'pldm::fw_update::ActivationProgress'
   91 |         static_assert(sizeof(_Tp)>0,
      |                       ^~~~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/unique_ptr.h:398:4: note: in instantiation of member function 'std::default_delete<pldm::fw_update::ActivationProgress
>::operator()' requested here
  398 |           get_deleter()(std::move(__ptr));
      |           ^
../fw-update/update_manager.hpp:46:14: note: in instantiation of member function 'std::unique_ptr<pldm::fw_update::ActivationProgress>::~unique_ptr' requested here
   46 |     explicit UpdateManager(
      |              ^
../fw-update/update_manager.hpp:34:7: note: forward declaration of 'pldm::fw_update::ActivationProgress'
   34 | class ActivationProgress;
      |       ^
```

Change-Id: I2820cbe134d1f37a43e6a5056eed87dde6e63b08
Signed-off-by: Andrew Jeffery <andrew@codeconstruct.com.au>
diff --git a/fw-update/activation.cpp b/fw-update/activation.cpp
new file mode 100644
index 0000000..d39cf9f
--- /dev/null
+++ b/fw-update/activation.cpp
@@ -0,0 +1,35 @@
+#include "fw-update/activation.hpp"
+
+#include "fw-update/update_manager.hpp"
+
+namespace pldm
+{
+namespace fw_update
+{
+
+ActivationIntf::Activations
+    Activation::activation(ActivationIntf::Activations value)
+{
+    if (value == ActivationIntf::Activations::Activating)
+    {
+        deleteImpl.reset();
+        updateManager->activatePackage();
+    }
+    else if (value == ActivationIntf::Activations::Active ||
+             value == ActivationIntf::Activations::Failed)
+    {
+        if (!deleteImpl)
+        {
+            deleteImpl = std::make_unique<Delete>(bus, objPath, updateManager);
+        }
+    }
+
+    return ActivationIntf::activation(value);
+}
+
+void Delete::delete_()
+{
+    updateManager->clearActivationInfo();
+}
+} // namespace fw_update
+} // namespace pldm
diff --git a/fw-update/activation.hpp b/fw-update/activation.hpp
index 50a6dbb..4af7c44 100644
--- a/fw-update/activation.hpp
+++ b/fw-update/activation.hpp
@@ -1,7 +1,5 @@
 #pragma once
 
-#include "fw-update/update_manager.hpp"
-
 #include <sdbusplus/bus.hpp>
 #include <xyz/openbmc_project/Object/Delete/server.hpp>
 #include <xyz/openbmc_project/Software/Activation/server.hpp>
@@ -15,6 +13,8 @@
 namespace fw_update
 {
 
+class UpdateManager;
+
 using ActivationIntf = sdbusplus::server::object_t<
     sdbusplus::xyz::openbmc_project::Software::server::Activation>;
 using ActivationProgressIntf = sdbusplus::server::object_t<
@@ -63,10 +63,7 @@
     {}
 
     /** @brief Delete the Activation D-Bus object for the FW update package */
-    void delete_() override
-    {
-        updateManager->clearActivationInfo();
-    }
+    void delete_() override;
 
   private:
     UpdateManager* updateManager;
@@ -104,24 +101,7 @@
 
     /** @brief Overriding Activation property setter function
      */
-    Activations activation(Activations value) override
-    {
-        if (value == Activations::Activating)
-        {
-            deleteImpl.reset();
-            updateManager->activatePackage();
-        }
-        else if (value == Activations::Active || value == Activations::Failed)
-        {
-            if (!deleteImpl)
-            {
-                deleteImpl = std::make_unique<Delete>(bus, objPath,
-                                                      updateManager);
-            }
-        }
-
-        return ActivationIntf::activation(value);
-    }
+    Activations activation(Activations value) override;
 
     /** @brief Overriding RequestedActivations property setter function
      */
diff --git a/fw-update/test/meson.build b/fw-update/test/meson.build
index 5749e14..5af5dc9 100644
--- a/fw-update/test/meson.build
+++ b/fw-update/test/meson.build
@@ -1,5 +1,6 @@
 fw_update_test_src = declare_dependency(
           sources: [
+            '../activation.cpp',
             '../inventory_manager.cpp',
             '../package_parser.cpp',
             '../device_updater.cpp',
diff --git a/fw-update/update_manager.hpp b/fw-update/update_manager.hpp
index 780ce49..26a1de9 100644
--- a/fw-update/update_manager.hpp
+++ b/fw-update/update_manager.hpp
@@ -3,6 +3,7 @@
 #include "common/instance_id.hpp"
 #include "common/types.hpp"
 #include "device_updater.hpp"
+#include "fw-update/activation.hpp"
 #include "package_parser.hpp"
 #include "requester/handler.hpp"
 #include "watch.hpp"
@@ -30,9 +31,6 @@
 using DeviceUpdaterInfos = std::vector<DeviceUpdaterInfo>;
 using TotalComponentUpdates = size_t;
 
-class Activation;
-class ActivationProgress;
-
 class UpdateManager
 {
   public:
diff --git a/meson.build b/meson.build
index 100c0f9..bfbf63e 100644
--- a/meson.build
+++ b/meson.build
@@ -164,6 +164,7 @@
   'pldmd',
   'pldmd/pldmd.cpp',
   'pldmd/dbus_impl_pdr.cpp',
+  'fw-update/activation.cpp',
   'fw-update/inventory_manager.cpp',
   'fw-update/package_parser.cpp',
   'fw-update/device_updater.cpp',