diff options
-rw-r--r-- | src/config.h | 7 | ||||
-rw-r--r-- | src/trie.c | 2 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/config.h b/src/config.h index 5bd49de..0822e3c 100644 --- a/src/config.h +++ b/src/config.h @@ -186,4 +186,11 @@ # define BFS_FORMATTER(fmt, args) #endif +/** + * Check if function multiversioning via GNU indirect functions (ifunc) is supported. + */ +#if !defined(BFS_TARGET_CLONES) && __has_attribute(target_clones) && (__GLIBC__ || __FreeBSD__ || __NetBSD__) +# define BFS_TARGET_CLONES true +#endif + #endif // BFS_CONFIG_H @@ -107,7 +107,7 @@ # error "This trie implementation assumes 8-bit bytes." #endif -#if __GLIBC__ && __has_attribute(target_clones) && (__i386__ || __x86_64__) +#if BFS_TARGET_CLONES && (__i386__ || __x86_64__) # define TARGET_CLONES_POPCNT __attribute__((target_clones("popcnt", "default"))) #else # define TARGET_CLONES_POPCNT |