Scott Tsai committed 198f114 use pkg-config for libffi include dir

Some Linux distros don't install ffi.h in the default header search path.
This patch tries to use pkg-config(1) to find the correct include dir and
does nothing if either pkg-config or libffi.pc isn't available.
Distros that need this include Fedora, Red Hat and apparently Archlinux.
Should fix cffi bitbucket issue#2.

Tested on Fedora 17, Ubuntu 10.04 and Ubuntu 12.04.

Comments (0)

Files changed (1)

 import sys, os
+import subprocess
+import errno
 sources = ['c/_ffi_backend.c']
     sources.extend(os.path.join(COMPILE_LIBFFI, filename)
                    for filename in os.listdir(COMPILE_LIBFFI)
                    if filename.lower().endswith('.c'))
+    try:
+        p = subprocess.Popen(['pkg-config', '--cflags-only-I', 'libffi'],
+                             stdout=subprocess.PIPE, stderr=open('/dev/null', 'w'))
+    except OSError, e:
+        if e.errno != errno.ENOENT:
+            raise
+    else:
+        t =
+        if p.wait() == 0 and t:
+            # '-I/usr/...' -> '/usr/...'
+            include_dirs.append(t[2:])
 if __name__ == '__main__':