build: tweak the strategy for finding functions
authorAndrew Tridgell <tridge@samba.org>
Tue, 30 Mar 2010 01:47:54 +0000 (12:47 +1100)
committerAndrew Tridgell <tridge@samba.org>
Tue, 6 Apr 2010 10:27:17 +0000 (20:27 +1000)
Based on a problem with res_ndestroy() on sunx in the build farm, I've
changed the default strategy for finding functions with
CHECK_FUNC(). It now accepts either a macro of a linked function, but
won't accept a declaration only unless you set link=False.

buildtools/wafsamba/samba_autoconf.py

index 539564b0dc56388d99492ef577b85074171395bc..c7c04f636415376326c32e3075296aefb397e1f2 100644 (file)
@@ -187,7 +187,7 @@ def CHECK_DECLS(conf, vars, reverse=False, headers=None):
     return ret
 
 
-def CHECK_FUNC(conf, f, link=None, lib=None, headers=None):
+def CHECK_FUNC(conf, f, link=True, lib=None, headers=None):
     '''check for a function'''
     define='HAVE_%s' % f.upper()
 
@@ -206,7 +206,12 @@ def CHECK_FUNC(conf, f, link=None, lib=None, headers=None):
 
     if link is None or link == True:
         ret = CHECK_CODE(conf,
-                         'int main(void) { extern void %s(void); %s(); return 0; }' % (f, f),
+                         '''int main(void) {
+                         #ifndef %s
+                         extern void %s(void); %s();
+                         #endif
+                         return 0;
+                         }''' % (f, f, f),
                          execute=False,
                          link=True,
                          addmain=False,
@@ -226,7 +231,7 @@ def CHECK_FUNC(conf, f, link=None, lib=None, headers=None):
 
 
 @conf
-def CHECK_FUNCS(conf, list, link=None, lib=None, headers=None):
+def CHECK_FUNCS(conf, list, link=True, lib=None, headers=None):
     '''check for a list of functions'''
     ret = True
     for f in TO_LIST(list):
@@ -416,7 +421,7 @@ def CHECK_LIB(conf, libs, mandatory=False, empty_decl=True):
 
 @conf
 def CHECK_FUNCS_IN(conf, list, library, mandatory=False, checklibc=False,
-                   headers=None, link=None, empty_decl=True):
+                   headers=None, link=True, empty_decl=True):
     """
     check that the functions in 'list' are available in 'library'
     if they are, then make that library available as a dependency