diff --git a/ArduSub/Sub.cpp b/ArduSub/Sub.cpp
index 9a5057a0f5..c16204d76a 100644
--- a/ArduSub/Sub.cpp
+++ b/ArduSub/Sub.cpp
@@ -13,7 +13,10 @@
along with this program. If not, see .
*/
#include "Sub.h"
+
+#define FORCE_VERSION_H_INCLUDE
#include "version.h"
+#undef FORCE_VERSION_H_INCLUDE
const AP_HAL::HAL& hal = AP_HAL::get_HAL();
diff --git a/ArduSub/Sub.h b/ArduSub/Sub.h
index 53eedd6858..94691c53ed 100644
--- a/ArduSub/Sub.h
+++ b/ArduSub/Sub.h
@@ -82,7 +82,6 @@
#include "Parameters.h"
#include "AP_Arming_Sub.h"
#include "GCS_Sub.h"
-#include "version.h"
// libraries which are dependent on #defines in defines.h and/or config.h
#if OPTFLOW == ENABLED
@@ -136,18 +135,7 @@ public:
void loop() override;
private:
-
- const AP_FWVersion fwver {
- major: FW_MAJOR,
- minor: FW_MINOR,
- patch: FW_PATCH,
- fw_type: FW_TYPE,
-#ifndef GIT_VERSION
- fw_string: THISFIRMWARE
-#else
- fw_string: THISFIRMWARE " (" GIT_VERSION ")"
-#endif
- };
+ static const AP_FWVersion fwver;
// key aircraft parameters passed to multiple libraries
AP_Vehicle::MultiCopter aparm;
diff --git a/ArduSub/version.cpp b/ArduSub/version.cpp
new file mode 100644
index 0000000000..48bc1e6026
--- /dev/null
+++ b/ArduSub/version.cpp
@@ -0,0 +1,41 @@
+/*
+ * This file is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This file is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see .
+ */
+
+#include "Sub.h"
+
+#define FORCE_VERSION_H_INCLUDE
+#include "version.h"
+#undef FORCE_VERSION_H_INCLUDE
+
+#include
+
+const AP_FWVersion Sub::fwver{
+ .major = FW_MAJOR,
+ .minor = FW_MINOR,
+ .patch = FW_PATCH,
+ .fw_type = FW_TYPE,
+#ifndef GIT_VERSION
+ .fw_string = THISFIRMWARE,
+#else
+ .fw_string = THISFIRMWARE " (" GIT_VERSION ")",
+ .fw_hash_str = GIT_VERSION,
+#endif
+#ifdef PX4_GIT_VERSION
+ .middleware_hash_str = PX4_GIT_VERSION,
+#endif
+#ifdef NUTTX_GIT_VERSION
+ .os_hash_str = NUTTX_GIT_VERSION,
+#endif
+};