diff options
Diffstat (limited to 'meson.build')
-rw-r--r-- | meson.build | 45 |
1 files changed, 31 insertions, 14 deletions
diff --git a/meson.build b/meson.build index eb7b477..fb6451a 100644 --- a/meson.build +++ b/meson.build @@ -16,11 +16,22 @@ elif platform == 'cygwin' or platform == 'windows' 'Take a look at http://www.secfs.net/winfsp/ instead') endif +cc = meson.get_compiler('c') + # -# Feature detection +# Feature detection, only available at libfuse compilation time, +# but not for application linking to libfuse. # -cfg = configuration_data() -cc = meson.get_compiler('c') +private_cfg = configuration_data() + +# +# Feature detection, the resulting config file is installed +# with the package. +# Note: Symbols need to be care fully named, to avoid conflicts +# with applications linking to libfuse and including +# this config. +# +public_cfg = configuration_data() # Default includes when checking for presence of functions and # struct members @@ -35,27 +46,27 @@ include_default = ''' ''' args_default = [ '-D_GNU_SOURCE' ] -cfg.set_quoted('PACKAGE_VERSION', meson.project_version()) +private_cfg.set_quoted('PACKAGE_VERSION', meson.project_version()) # Test for presence of some functions test_funcs = [ 'fork', 'fstatat', 'openat', 'readlinkat', 'pipe2', 'splice', 'vmsplice', 'posix_fallocate', 'fdatasync', 'utimensat', 'copy_file_range', 'fallocate' ] foreach func : test_funcs - cfg.set('HAVE_' + func.to_upper(), + private_cfg.set('HAVE_' + func.to_upper(), cc.has_function(func, prefix: include_default, args: args_default)) endforeach -cfg.set('HAVE_SETXATTR', +private_cfg.set('HAVE_SETXATTR', cc.has_function('setxattr', prefix: '#include <sys/xattr.h>')) -cfg.set('HAVE_ICONV', +private_cfg.set('HAVE_ICONV', cc.has_function('iconv', prefix: '#include <iconv.h>')) # Test if structs have specific member -cfg.set('HAVE_STRUCT_STAT_ST_ATIM', +private_cfg.set('HAVE_STRUCT_STAT_ST_ATIM', cc.has_member('struct stat', 'st_atim', prefix: include_default, args: args_default)) -cfg.set('HAVE_STRUCT_STAT_ST_ATIMESPEC', +private_cfg.set('HAVE_STRUCT_STAT_ST_ATIMESPEC', cc.has_member('struct stat', 'st_atimespec', prefix: include_default, args: args_default)) @@ -63,7 +74,7 @@ cfg.set('HAVE_STRUCT_STAT_ST_ATIMESPEC', # # Compiler configuration # -add_project_arguments('-D_REENTRANT', '-DHAVE_CONFIG_H', '-Wno-sign-compare', +add_project_arguments('-D_REENTRANT', '-DHAVE_LIBFUSE_PRIVATE_CONFIG_H', '-Wno-sign-compare', '-Wstrict-prototypes', '-Wmissing-declarations', '-Wwrite-strings', '-fno-strict-aliasing', language: 'c') add_project_arguments('-D_REENTRANT', '-DHAVE_CONFIG_H', '-D_GNU_SOURCE', @@ -111,7 +122,7 @@ endif if versioned_symbols == 1 message('Enabling versioned libc symbols') - cfg.set('HAVE_LIBC_VERSIONED_SYMBOLS', 1) + public_cfg.set('LIBFUSE_BUILT_WITH_VERSIONED_SYMBOLS', 1) # gcc-10 and newer support the symver attribute which we need to use if we # want to support LTO @@ -140,9 +151,15 @@ else message('Disabling versioned libc symbols') endif -# Write the test results into config.h (stored in build directory) -configure_file(output: 'fuse_config.h', - configuration : cfg, install: true, install_dir: 'include/fuse3') +# Write private test results into fuse_config.h (stored in build directory) +configure_file(output: 'fuse_config.h', configuration : private_cfg) + +# Write the test results, installed with the package, +# symbols need to be properly prefixed to avoid +# symbol (define) conflicts +configure_file(output: 'libfuse_config.h', + configuration : public_cfg, + install: true, install_dir: 'include/fuse3') # '.' will refer to current build directory, which contains config.h include_dirs = include_directories('include', 'lib', '.') |