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