From 1476181bd17b4d9998b618f115fe64f3b86af0a5 Mon Sep 17 00:00:00 2001 From: Christopher Haster Date: Thu, 22 Feb 2018 13:34:10 -0600 Subject: [PATCH] Added LFS_CONFIG for user provided configuration of the utils Suggested by sn00pster, LFS_CONFIG is an opt-in user provided configuration file that will override the util implementation in lfs_util.h. This is useful for allowing system-specific overrides without needing to rely on git merges or other forms of patching for updates. --- lfs_util.c | 6 ++++++ lfs_util.h | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/lfs_util.c b/lfs_util.c index 567977b..3a2a351 100644 --- a/lfs_util.c +++ b/lfs_util.c @@ -17,7 +17,11 @@ */ #include "lfs_util.h" +// Only compile if user does not provide custom config +#ifndef LFS_CONFIG + +// Software CRC implementation with small lookup table void lfs_crc(uint32_t *restrict crc, const void *buffer, size_t size) { static const uint32_t rtable[16] = { 0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac, @@ -34,3 +38,5 @@ void lfs_crc(uint32_t *restrict crc, const void *buffer, size_t size) { } } + +#endif diff --git a/lfs_util.h b/lfs_util.h index 0b7ccae..3527ce6 100644 --- a/lfs_util.h +++ b/lfs_util.h @@ -18,6 +18,19 @@ #ifndef LFS_UTIL_H #define LFS_UTIL_H +// Users can override lfs_util.h with their own configuration by defining +// LFS_CONFIG as a header file to include (-DLFS_CONFIG=lfs_config.h). +// +// If LFS_CONFIG is used, none of the default utils will be emitted and must be +// provided by the config file. To start I would suggest copying lfs_util.h and +// modifying as needed. +#ifdef LFS_CONFIG +#define LFS_STRINGIZE(x) LFS_STRINGIZE2(x) +#define LFS_STRINGIZE2(x) #x +#include LFS_STRINGIZE(LFS_CONFIG) +#else + +// System includes #include #include #include @@ -169,3 +182,4 @@ static inline void lfs_free(void *p) { #endif +#endif