diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2024-05-29 11:51:10 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2024-05-29 11:53:18 -0400 |
commit | 377b427491bcbf00e97fe02f69ef253e5ea3a53b (patch) | |
tree | 80e2514977694451ae6fe629c875053691ab5d1e | |
parent | 26ac7e36c0710284d18d95eb0e58e21178396ffd (diff) | |
download | bfs-377b427491bcbf00e97fe02f69ef253e5ea3a53b.tar.xz |
bit: Use <stdbit.h> if it exists, even without -std=c23
glibc added an implementation in 2.39.
-rw-r--r-- | src/bit.h | 6 | ||||
-rw-r--r-- | src/prelude.h | 4 |
2 files changed, 7 insertions, 3 deletions
@@ -12,7 +12,7 @@ #include <limits.h> #include <stdint.h> -#if __STDC_VERSION__ >= C23 +#if BFS_HAS_STDBIT_H # include <stdbit.h> #endif @@ -226,7 +226,7 @@ static inline uint8_t bswap_u8(uint8_t n) { // C23 polyfill: bit utilities -#if __STDC_VERSION__ >= C23 +#if __STDC_VERSION_STDBIT_H__ >= C23 # define count_ones stdc_count_ones # define count_zeros stdc_count_zeros # define leading_zeros stdc_leading_zeros @@ -374,7 +374,7 @@ UINT_OVERLOADS(BIT_CEIL) #define bit_floor(n) UINT_SELECT(n, bit_floor)(n) #define bit_ceil(n) UINT_SELECT(n, bit_ceil)(n) -#endif // __STDC_VERSION__ < C23 +#endif // __STDC_VERSION_STDBIT_H__ < C23 #define ROTATE_LEFT(type, suffix, width) \ static inline type rotate_left##suffix(type n, int c) { \ diff --git a/src/prelude.h b/src/prelude.h index 3521fe8..c4edcb2 100644 --- a/src/prelude.h +++ b/src/prelude.h @@ -50,6 +50,9 @@ extern const char bfs_version[]; #if __has_include(<paths.h>) # define BFS_HAS_PATHS_H true #endif +#if __has_include(<stdbit.h>) +# define BFS_HAS_STDBIT_H true +#endif #if __has_include(<sys/extattr.h>) # define BFS_HAS_SYS_EXTATTR_H true #endif @@ -76,6 +79,7 @@ extern const char bfs_version[]; #define BFS_HAS_MNTENT_H __GLIBC__ #define BFS_HAS_PATHS_H true +#define BFS_HAS_STDBIT_H (__STDC_VERSION__ >= C23) #define BFS_HAS_SYS_EXTATTR_H __FreeBSD__ #define BFS_HAS_SYS_MKDEV_H false #define BFS_HAS_SYS_PARAM_H true |