s3:modules: fix the build of vfs_notify_fam (bug #9545)
authorStefan Metzmacher <metze@samba.org>
Fri, 22 Mar 2013 08:30:05 +0000 (09:30 +0100)
committerVolker Lendecke <vl@samba.org>
Wed, 3 Apr 2013 07:53:08 +0000 (09:53 +0200)
This adds the --with-fam option and configure checks.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
source3/modules/wscript_build
source3/wscript

index 8f08d52c03374a17c894e675fd315d9399e919ee..6726ac309b7f17a58394560b62e89e8b2b2d3cc3 100644 (file)
@@ -316,9 +316,13 @@ bld.SAMBA3_MODULE('vfs_gpfs',
                  internal_module=bld.SAMBA3_IS_STATIC_MODULE('vfs_gpfs'),
                  enabled=bld.SAMBA3_IS_ENABLED_MODULE('vfs_gpfs'))
 
+vfs_notify_fam_deps='samba-util '
+if bld.CONFIG_SET('SAMBA_FAM_LIBS'):
+   vfs_notify_fam_deps += bld.CONFIG_GET('SAMBA_FAM_LIBS')
 bld.SAMBA3_MODULE('vfs_notify_fam',
                  subsystem='vfs',
                  source=VFS_NOTIFY_FAM_SRC,
+                 deps=vfs_notify_fam_deps,
                  init_function='',
                  internal_module=bld.SAMBA3_IS_STATIC_MODULE('vfs_notify_fam'),
                  enabled=bld.SAMBA3_IS_ENABLED_MODULE('vfs_notify_fam'))
index 2cf71f0068c5b58ca7cfb36745b8f057b042534e..d66415e89ac9b8a89914cc7dedec3eafcda3b645 100644 (file)
@@ -42,6 +42,7 @@ def set_options(opt):
     opt.SAMBA3_ADD_OPTION('automount')
     opt.SAMBA3_ADD_OPTION('aio-support')
     opt.SAMBA3_ADD_OPTION('dmapi', default=False, help="build with DMAPI support")
+    opt.SAMBA3_ADD_OPTION('fam', default=None) # None means autodetection
     opt.SAMBA3_ADD_OPTION('profiling-data', default=False)
 
     opt.SAMBA3_ADD_OPTION('cluster-support', default=None)
@@ -163,6 +164,32 @@ main() {
 }''', 'HAVE_KERNEL_SHARE_MODES', addmain=False, execute=True,
         msg="Checking for kernel share modes")
 
+    # check for fam libs
+    samba_fam_libs=None
+    check_for_fam=False
+    if Options.options.with_fam is None:
+        check_for_fam=True
+    elif Options.options.with_fam == True:
+        check_for_fam=True
+
+    if check_for_fam and conf.CHECK_HEADERS('fam.h'):
+        if conf.CHECK_FUNCS_IN('FAMOpen2', 'fam'):
+            samba_fam_libs='fam'
+        elif conf.CHECK_FUNCS_IN('FAMOpen2', 'fam C'):
+            samba_fam_libs='fam C'
+        conf.CHECK_TYPE('enum FAMCodes', headers='fam.h',
+            define='HAVE_FAM_H_FAMCODES_TYPEDEF',
+            msg='Checking whether enum FAMCodes is available')
+        conf.CHECK_FUNCS_IN('FAMNoExists', 'fam')
+
+    if samba_fam_libs is not None:
+        conf.DEFINE('SAMBA_FAM_LIBS', samba_fam_libs)
+    else:
+        if Options.options.with_fam == True:
+            conf.fatal('FAM support requested, but no suitable FAM library found')
+        elif check_for_fam:
+            Logs.warn('no suitable FAM library found')
+
     # check for DMAPI libs
     Logs.info("Checking for DMAPI library existence")
     conf.env['dmapi_lib'] = ''
@@ -1736,6 +1763,9 @@ main() {
     if conf.CONFIG_SET('HAVE_LINUX_IOCTL'):
        default_shared_modules.extend(TO_LIST('vfs_btrfs'))
 
+    if conf.CONFIG_SET('SAMBA_FAM_LIBS'):
+        default_shared_modules.extend(TO_LIST('vfs_notify_fam'))
+
     explicit_shared_modules = TO_LIST(Options.options.shared_modules, delimiter=',')
     explicit_static_modules = TO_LIST(Options.options.static_modules, delimiter=',')