Blob Blame History Raw
From 5c86f76a143523398823766a918bd5a64c0b325e Mon Sep 17 00:00:00 2001
From: "Travis F. Collins" <travis.collins@analog.com>
Date: Mon, 8 Jun 2020 09:22:44 -0700
Subject: [PATCH] Add support for DESTDIR for python builds

This fixes #545 when running `make DESTDIR=./some/folder install`. If
DESTDIR is set we will try to find the library in that path.

Signed-off-by: Travis F. Collins <travis.collins@analog.com>
---
 bindings/python/setup.py.cmakein | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/bindings/python/setup.py.cmakein b/bindings/python/setup.py.cmakein
index 26ba8aed..dd40c11c 100644
--- a/bindings/python/setup.py.cmakein
+++ b/bindings/python/setup.py.cmakein
@@ -35,6 +35,15 @@ except:
     long_description = description
 
 
+def find_recursive(folder, filename):
+    import os
+
+    for root, dirs, files in os.walk(folder):
+        for file in files:
+            if file == filename:
+                return os.path.join(root, file)
+
+
 class InstallWrapper(install):
     """Before installing we check if the
     libiio library is actually installed"""
@@ -55,7 +64,15 @@ class InstallWrapper(install):
             # Non-windows, possibly Posix system
             _iiolib = "iio"
         try:
-            _lib = _cdll(find_library(_iiolib), use_errno=True, use_last_error=True)
+            import os
+
+            destdir = os.getenv("DESTDIR", "")
+            if destdir:
+                destdir = os.path.join("${CMAKE_BINARY_DIR}", destdir)
+                out = find_recursive(destdir, "libiio.so")
+                _lib = _cdll(out, use_errno=True, use_last_error=True)
+            else:
+                _lib = _cdll(find_library(_iiolib), use_errno=True, use_last_error=True)
             if not _lib._name:
                 raise OSError
         except OSError: