From ac071d9c0d69e4330a06f171e3bddc713ecd97d6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Damir=20Jeli=C4=87?= <poljar@termina.org.uk>
Date: Sun, 8 Jul 2018 12:19:17 +0200
Subject: [PATCH] python: Enable build with the local build of the Olm C
 library.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This patch adds the ability to build the bindings without having a
globally installed Olm C library.

Provided that the C library is already built, the tests can be run now
with make test.

Signed-off-by: Damir Jelić <poljar@termina.org.uk>
---
 Makefile            |  1 +
 python/Makefile     |  8 +++++---
 python/olm_build.py | 14 +++++++++++++-
 3 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index 154954c..be50a8f 100644
--- a/Makefile
+++ b/Makefile
@@ -125,6 +125,7 @@ $(RELEASE_TARGET): $(RELEASE_OBJECTS)
             -Wl,--version-script,version_script.ver \
             $(OUTPUT_OPTION) $(RELEASE_OBJECTS)
 	ln -sf libolm.so.$(VERSION) $(BUILD_DIR)/libolm.so.$(MAJOR)
+	ln -sf libolm.so.$(VERSION) $(BUILD_DIR)/libolm.so
 
 debug: $(DEBUG_TARGET)
 .PHONY: debug
diff --git a/python/Makefile b/python/Makefile
index 998d307..2ab839c 100644
--- a/python/Makefile
+++ b/python/Makefile
@@ -3,7 +3,7 @@ PYTHON   ?= python
 all: olm
 
 olm:
-	$(PYTHON) setup.py build
+	DEVELOP=$(DEVELOP) $(PYTHON) setup.py build
 
 install: olm
 	$(PYTHON) setup.py install --skip-build -O1 --root=$(DESTDIR)
@@ -24,12 +24,14 @@ clean:
 develop: _libolm.o
 py2develop: _libolm.so
 
+_libolm.so: DEVELOP ?= 1
 _libolm.so: include/olm/olm.h olm_build.py
-	python2 olm_build.py
+	DEVELOP=$(DEVELOP) python2 olm_build.py
 	-rm _libolm.c
 
+_libolm.o: DEVELOP ?= 1
 _libolm.o: include/olm/olm.h olm_build.py
-	python3 olm_build.py
+	DEVELOP=$(DEVELOP) python3 olm_build.py
 	-rm _libolm.c
 
 .PHONY: all olm install clean test develop
diff --git a/python/olm_build.py b/python/olm_build.py
index 5ffefc2..281a571 100644
--- a/python/olm_build.py
+++ b/python/olm_build.py
@@ -24,6 +24,15 @@ from cffi import FFI
 ffibuilder = FFI()
 PATH = os.path.dirname(__file__)
 
+DEVELOP = os.environ.get("DEVELOP")
+
+compile_args = []
+link_args = []
+
+if DEVELOP and DEVELOP.lower() in ["yes", "true", "1"]:
+    compile_args = ["-I../include"]
+    link_args = ['-Wl,-L=../build,-rpath=../build']
+
 
 ffibuilder.set_source(
     "_libolm",
@@ -31,7 +40,10 @@ ffibuilder.set_source(
         #include <olm/olm.h>
         #include <olm/inbound_group_session.h>
         #include <olm/outbound_group_session.h>
-    """, libraries=["olm"])
+    """,
+    libraries=["olm"],
+    extra_compile_args=compile_args,
+    extra_link_args=link_args)
 
 with open(os.path.join(PATH, "include/olm/olm.h")) as f:
     ffibuilder.cdef(f.read(), override=True)
-- 
GitLab