From cd5b018d8299bad9e358cae484420e3b456ca55c Mon Sep 17 00:00:00 2001 From: Lucas De Marchi Date: Tue, 12 Sep 2017 11:25:20 -0700 Subject: [PATCH] ArduCopter: move version to a static member We should never include version.h or ap_version.h headers directly on a header since this will trigger a complete rebuild of the codebase when we commit to the repository. The ap_version.h header is auto-generated containing information from the current commit. If we include it in a header, every other file that ends up including that header (directly or indirectly) will need to be rebuilt. No ccache's cache beats having to do nothing when the header is just not included. version.h contains information that is kept on a struct inside each vehicle. Rather than using the macros from each vehicle, the getter should be preferred, which returns an AP_FWVersion referente. --- ArduCopter/Copter.cpp | 3 +++ ArduCopter/Copter.h | 14 +------------- ArduCopter/version.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 13 deletions(-) create mode 100644 ArduCopter/version.cpp diff --git a/ArduCopter/Copter.cpp b/ArduCopter/Copter.cpp index 4d32eb7a18..8697c8e2df 100644 --- a/ArduCopter/Copter.cpp +++ b/ArduCopter/Copter.cpp @@ -13,7 +13,10 @@ along with this program. If not, see . */ #include "Copter.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/ArduCopter/Copter.h b/ArduCopter/Copter.h index 8e7cac478b..c65e4fd9f6 100644 --- a/ArduCopter/Copter.h +++ b/ArduCopter/Copter.h @@ -128,7 +128,6 @@ // Local modules #include "Parameters.h" #include "avoidance_adsb.h" -#include "version.h" #if CONFIG_HAL_BOARD == HAL_BOARD_SITL #include @@ -165,18 +164,7 @@ public: }; 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/ArduCopter/version.cpp b/ArduCopter/version.cpp new file mode 100644 index 0000000000..0182690ab3 --- /dev/null +++ b/ArduCopter/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 "Copter.h" + +#define FORCE_VERSION_H_INCLUDE +#include "version.h" +#undef FORCE_VERSION_H_INCLUDE + +#include + +const AP_FWVersion Copter::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 +};