Backlash linker error workaround

Fix #14045
This commit is contained in:
Scott Lahteine 2019-05-20 21:34:23 -05:00
parent aeec9ef76b
commit cfca07852a
2 changed files with 16 additions and 9 deletions

View file

@ -29,11 +29,16 @@
#include "../module/motion.h" #include "../module/motion.h"
#include "../module/planner.h" #include "../module/planner.h"
#ifdef BACKLASH_DISTANCE_MM
#if ENABLED(BACKLASH_GCODE)
float Backlash::distance_mm[XYZ] = BACKLASH_DISTANCE_MM;
#else
const float Backlash::distance_mm[XYZ] = BACKLASH_DISTANCE_MM;
#endif
#endif
#if ENABLED(BACKLASH_GCODE) #if ENABLED(BACKLASH_GCODE)
uint8_t Backlash::correction = (BACKLASH_CORRECTION) * 0xFF; uint8_t Backlash::correction = (BACKLASH_CORRECTION) * 0xFF;
#ifdef BACKLASH_DISTANCE_MM
float Backlash::distance_mm[XYZ] = BACKLASH_DISTANCE_MM;
#endif
#ifdef BACKLASH_SMOOTHING_MM #ifdef BACKLASH_SMOOTHING_MM
float Backlash::smoothing_mm = BACKLASH_SMOOTHING_MM; float Backlash::smoothing_mm = BACKLASH_SMOOTHING_MM;
#endif #endif

View file

@ -26,11 +26,16 @@
class Backlash { class Backlash {
public: public:
#ifdef BACKLASH_DISTANCE_MM
#if ENABLED(BACKLASH_GCODE)
static float distance_mm[XYZ];
#else
static const float distance_mm[XYZ];
//static constexpr float distance_mm[XYZ] = BACKLASH_DISTANCE_MM; // compiler barks at this
#endif
#endif
#if ENABLED(BACKLASH_GCODE) #if ENABLED(BACKLASH_GCODE)
static uint8_t correction; static uint8_t correction;
#ifdef BACKLASH_DISTANCE_MM
static float distance_mm[XYZ];
#endif
#ifdef BACKLASH_SMOOTHING_MM #ifdef BACKLASH_SMOOTHING_MM
static float smoothing_mm; static float smoothing_mm;
#endif #endif
@ -38,9 +43,6 @@ public:
static inline float get_correction() { return float(ui8_to_percent(correction)) / 100.0f; } static inline float get_correction() { return float(ui8_to_percent(correction)) / 100.0f; }
#else #else
static constexpr uint8_t correction = (BACKLASH_CORRECTION) * 0xFF; static constexpr uint8_t correction = (BACKLASH_CORRECTION) * 0xFF;
#ifdef BACKLASH_DISTANCE_MM
static constexpr float distance_mm[XYZ] = BACKLASH_DISTANCE_MM;
#endif
#ifdef BACKLASH_SMOOTHING_MM #ifdef BACKLASH_SMOOTHING_MM
static constexpr float smoothing_mm = BACKLASH_SMOOTHING_MM; static constexpr float smoothing_mm = BACKLASH_SMOOTHING_MM;
#endif #endif