changeset 31565:9639ff4a93ae

setup: split "hasfunction" to test arbitrary code The next patch wants to test include files.
author Jun Wu <quark@fb.com>
date Mon, 20 Mar 2017 15:28:08 -0700
parents 13dc00c233b7
children 5a0460219649
files setup.py
diffstat 1 files changed, 9 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/setup.py	Tue Mar 14 17:43:44 2017 -0700
+++ b/setup.py	Mon Mar 20 15:28:08 2017 -0700
@@ -94,17 +94,13 @@
     # We remove hg.bat if we are able to build hg.exe.
     scripts.append('contrib/win32/hg.bat')
 
-# simplified version of distutils.ccompiler.CCompiler.has_function
-# that actually removes its temporary files.
-def hasfunction(cc, funcname):
+def cancompile(cc, code):
     tmpdir = tempfile.mkdtemp(prefix='hg-install-')
     devnull = oldstderr = None
     try:
-        fname = os.path.join(tmpdir, 'funcname.c')
+        fname = os.path.join(tmpdir, 'testcomp.c')
         f = open(fname, 'w')
-        f.write('int main(void) {\n')
-        f.write('    %s();\n' % funcname)
-        f.write('}\n')
+        f.write(code)
         f.close()
         # Redirect stderr to /dev/null to hide any error messages
         # from the compiler.
@@ -125,6 +121,12 @@
             devnull.close()
         shutil.rmtree(tmpdir)
 
+# simplified version of distutils.ccompiler.CCompiler.has_function
+# that actually removes its temporary files.
+def hasfunction(cc, funcname):
+    code = 'int main(void) { %s(); }\n' % funcname
+    return cancompile(cc, code)
+
 # py2exe needs to be installed to work
 try:
     import py2exe