Ver código fonte

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.
Christopher Haster 7 anos atrás
pai
commit
1476181bd1
2 arquivos alterados com 20 adições e 0 exclusões
  1. 6 0
      lfs_util.c
  2. 14 0
      lfs_util.h

+ 6 - 0
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

+ 14 - 0
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 <stdint.h>
 #include <stdbool.h>
 #include <string.h>
@@ -169,3 +182,4 @@ static inline void lfs_free(void *p) {
 
 
 #endif
+#endif