From 352e103f1a62fc3d7a7b02012371fd996487ca9b Mon Sep 17 00:00:00 2001 From: Lucas De Marchi Date: Thu, 5 May 2016 19:10:08 -0300 Subject: [PATCH] ArduCopter: use separate header for version macro Having the version macro in the config.h and consequently in the main vehicle header means that whenever the version changes we need to compiler the whole vehicle again. This would not be so bad if we weren't also appending the git hash in the version. In this case, whenever we commit to the repository we would need to recompile everything. Move to a separate header that is include only by its users. Then instead of compiling everything we will compile just a few files. --- ArduCopter/Copter.cpp | 10 ++++++---- ArduCopter/Copter.h | 8 ++------ ArduCopter/GCS_Mavlink.cpp | 1 + ArduCopter/Log.cpp | 1 + ArduCopter/config.h | 10 ---------- ArduCopter/system.cpp | 1 + ArduCopter/version.h | 10 ++++++++++ 7 files changed, 21 insertions(+), 20 deletions(-) create mode 100644 ArduCopter/version.h diff --git a/ArduCopter/Copter.cpp b/ArduCopter/Copter.cpp index 8cf95a5628..133c215831 100644 --- a/ArduCopter/Copter.cpp +++ b/ArduCopter/Copter.cpp @@ -1,6 +1,5 @@ /// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- -#include "Copter.h" /* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,13 +14,16 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -/* - constructor for main Copter class - */ +#include "Copter.h" +#include "version.h" const AP_HAL::HAL& hal = AP_HAL::get_HAL(); +/* + constructor for main Copter class + */ Copter::Copter(void) : + DataFlash{FIRMWARE_STRING}, flight_modes(&g.flight_mode1), sonar_enabled(true), mission(ahrs, diff --git a/ArduCopter/Copter.h b/ArduCopter/Copter.h index c7c7ea85a3..dac20a897a 100644 --- a/ArduCopter/Copter.h +++ b/ArduCopter/Copter.h @@ -1,9 +1,4 @@ /// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- -#pragma once - -#define THISFIRMWARE "APM:Copter V3.4-dev" -#define FIRMWARE_VERSION 3,4,0,FIRMWARE_VERSION_TYPE_DEV - /* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,6 +13,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ +#pragma once /* This is the main Copter class */ @@ -162,7 +158,7 @@ private: RC_Channel *channel_yaw; // Dataflash - DataFlash_Class DataFlash{FIRMWARE_STRING}; + DataFlash_Class DataFlash; AP_GPS gps; diff --git a/ArduCopter/GCS_Mavlink.cpp b/ArduCopter/GCS_Mavlink.cpp index de5bf0bc32..be5e7bd2f9 100644 --- a/ArduCopter/GCS_Mavlink.cpp +++ b/ArduCopter/GCS_Mavlink.cpp @@ -1,6 +1,7 @@ // -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- #include "Copter.h" +#include "version.h" // default sensors are present and healthy: gyro, accelerometer, barometer, rate_control, attitude_stabilization, yaw_position, altitude control, x/y position control, motor_control #define MAVLINK_SENSOR_PRESENT_DEFAULT (MAV_SYS_STATUS_SENSOR_3D_GYRO | MAV_SYS_STATUS_SENSOR_3D_ACCEL | MAV_SYS_STATUS_SENSOR_ABSOLUTE_PRESSURE | MAV_SYS_STATUS_SENSOR_ANGULAR_RATE_CONTROL | MAV_SYS_STATUS_SENSOR_ATTITUDE_STABILIZATION | MAV_SYS_STATUS_SENSOR_YAW_POSITION | MAV_SYS_STATUS_SENSOR_Z_ALTITUDE_CONTROL | MAV_SYS_STATUS_SENSOR_XY_POSITION_CONTROL | MAV_SYS_STATUS_SENSOR_MOTOR_OUTPUTS | MAV_SYS_STATUS_AHRS) diff --git a/ArduCopter/Log.cpp b/ArduCopter/Log.cpp index 9547c2fa63..28ce6078aa 100644 --- a/ArduCopter/Log.cpp +++ b/ArduCopter/Log.cpp @@ -1,6 +1,7 @@ // -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- #include "Copter.h" +#include "version.h" #if LOGGING_ENABLED == ENABLED diff --git a/ArduCopter/config.h b/ArduCopter/config.h index 4c2753ec2d..5c7c4329ac 100644 --- a/ArduCopter/config.h +++ b/ArduCopter/config.h @@ -671,13 +671,3 @@ #ifndef FRSKY_TELEM_ENABLED # define FRSKY_TELEM_ENABLED ENABLED #endif - -/* - build a firmware version string. - GIT_VERSION comes from Makefile builds -*/ -#ifndef GIT_VERSION -#define FIRMWARE_STRING THISFIRMWARE -#else -#define FIRMWARE_STRING THISFIRMWARE " (" GIT_VERSION ")" -#endif diff --git a/ArduCopter/system.cpp b/ArduCopter/system.cpp index c181140da2..dca8e6a8f4 100644 --- a/ArduCopter/system.cpp +++ b/ArduCopter/system.cpp @@ -1,6 +1,7 @@ // -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*- #include "Copter.h" +#include "version.h" /***************************************************************************** * The init_ardupilot function processes everything we need for an in - air restart diff --git a/ArduCopter/version.h b/ArduCopter/version.h new file mode 100644 index 0000000000..d5b95b6c7a --- /dev/null +++ b/ArduCopter/version.h @@ -0,0 +1,10 @@ +#pragma once + +#define THISFIRMWARE "APM:Copter V3.4-dev" +#define FIRMWARE_VERSION 3,4,0,FIRMWARE_VERSION_TYPE_DEV + +#ifndef GIT_VERSION +#define FIRMWARE_STRING THISFIRMWARE +#else +#define FIRMWARE_STRING THISFIRMWARE " (" GIT_VERSION ")" +#endif