diff --git a/core/lib/settings.c b/core/lib/settings.c index 88101fb9d..b085f7219 100644 --- a/core/lib/settings.c +++ b/core/lib/settings.c @@ -30,6 +30,12 @@ * */ +#ifdef SETTINGS_CONF_SKIP_CONVENIENCE_FUNCS +#undef SETTINGS_CONF_SKIP_CONVENIENCE_FUNCS +#endif + +#define SETTINGS_CONF_SKIP_CONVENIENCE_FUNCS 1 + #include "contiki.h" #include "settings.h" #include "dev/eeprom.h" diff --git a/core/lib/settings.h b/core/lib/settings.h index 7dc1ce4f5..d2ac05e1d 100644 --- a/core/lib/settings.h +++ b/core/lib/settings.h @@ -228,6 +228,12 @@ extern settings_status_t settings_iter_delete(settings_iter_t item); /*****************************************************************************/ // MARK: - inline convenience functions +/* Unfortunately, some platforms don't properly drop unreferenced functions, + * so on these broken platforms we can save a significant amount + * of space by skipping the definition of the convenience functions. + */ +#if !SETTINGS_CONF_SKIP_CONVENIENCE_FUNCS + static CC_INLINE const char * settings_get_cstr(settings_key_t key, uint8_t index, char *c_str, settings_length_t c_str_size) @@ -357,4 +363,6 @@ settings_set_uint64(settings_key_t key, uint64_t value) } #endif /* __int64_t_defined */ +#endif /* !SETTINGS_CONF_SKIP_CONVENIENCE_FUNCS */ + #endif /* !defined(__CONTIKI_SETTINGS_H__) */