python: do not rely only on LIBRARY_PATH for old compilers

The cross-compilation improvements integrated in Python rely on the
compiler exposing a line starting with LIBRARY_PATH when called with
-E -v. This is used by Python setup.py to find the installation
locations of libraries.

However, this LIBRARY_PATH line is not shown by very old compilers,
such as the gcc 4.2.x compiler used on the AVR32 architecture. This
causes libraries installed in the sysroot, such as libffi, to not be
detected by the setup.py script.

To fix this problem, this patch adds addtional logic to setup.py,
which consists in deriving the library paths from the sysroot
location, if no LIBRARY_PATH field was found.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

Index: b/setup.py
===================================================================
--- a/setup.py
+++ b/setup.py
@@ -418,6 +418,7 @@
         in_incdirs = False
         inc_dirs = []
         lib_dirs = []
+        compiler_has_library_path = False
         try:
             if ret >> 8 == 0:
                 with open(tmpfile) as fp:
@@ -429,6 +430,7 @@
                         elif line.startswith("End of search list"):
                             in_incdirs = False
                         elif is_gcc and line.startswith("LIBRARY_PATH"):
+                            compiler_has_library_path = True
                             for d in line.strip().split("=")[1].split(":"):
                                 d = os.path.normpath(d)
                                 if '/gcc/' not in d:
@@ -440,6 +442,15 @@
         finally:
             os.unlink(tmpfile)
 
+        if not compiler_has_library_path:
+            ret = os.system("%s -print-file-name=libc.a | sed -r -e 's:(usr/)?lib(32|64)?/([^/]*/)?libc\.a::' >%s" % (gcc, tmpfile))
+            with open(tmpfile) as fp:
+                line = fp.readline().strip()
+                add_dir_to_list(self.compiler.library_dirs,
+                                os.path.join(line, "usr", "lib"))
+                add_dir_to_list(self.compiler.library_dirs,
+                                os.path.join(line, "lib"))
+
     def detect_modules(self):
         # Ensure that /usr/local is always used
         if not cross_compiling:
