1include ../../Makefile.include
2DEPS= ../../Makefile.include Makefile pillow-crosscompile.patch
3
4VERSION.TXT := $(CMAKE_SOURCE_DIR)/version.txt
5APP_NAME=$(shell awk '/APP_NAME/ {print tolower($$2)}' $(VERSION.TXT))
6
7# lib name, version
8LIBNAME=Pillow
9VERSION=7.1.2
10SOURCE=$(LIBNAME)-$(VERSION)
11ARCHIVE=$(SOURCE).tar.gz
12
13PYTHONPATH=$(PREFIX)/lib/python3.8/site-packages/
14PILPATH=$(PYTHONPATH)
15LDSHARED=$(CC) -shared
16
17# Clear pkg-config data, as it will pull from Native pkg-config incorrectly
18ifeq ($(CROSS_COMPILING), yes)
19export PKG_CONFIG_PATH=
20export PKG_CONFIG_LIBDIR=${PREFIX}/lib/pkgconfig
21export PKG_CONFIG_SYSROOT_DIR=${SDKROOT}
22endif
23
24ifeq ($(OS),android)
25PILPATH=$(PREFIX)/share/$(APP_NAME)/addons/script.module.pil
26PILPATHLIB=$(PILPATH)/lib
27PYTHONPATH=$(PILPATH):$(PREFIX)/lib/python3.8/site-packages/
28EXTRALDFLAGS=-L$(PREFIX)/lib/dummy-lib$(APP_NAME)/ -l$(APP_NAME) -lm
29else ifeq ($(OS),darwin_embedded)
30PILPATH=$(PREFIX)/share/$(APP_NAME)/addons/script.module.pil
31PILPATHLIB=$(PILPATH)/lib
32PYTHONPATH=$(PILPATH):$(PREFIX)/lib/python3.8/site-packages/
33endif
34
35ifeq (darwin, $(findstring darwin, $(HOST)))
36#ensure that only our target ldflags are passed to the python build
37LDSHARED=$(CC) -bundle -undefined dynamic_lookup
38ZLIB_ROOT=ZLIB_ROOT="$(SDKROOT)/usr"
39endif
40
41BUILD_OPTS=--plat-name $(OS)-$(CPU) --disable-jpeg2000 --disable-webp --disable-imagequant --disable-tiff --disable-webp --disable-webpmux --disable-xcb --disable-lcms --disable-platform-guessing
42CROSSFLAGS=$(ZLIB_ROOT) PYTHONXCPREFIX="$(PREFIX)" CC="$(CC) $(CFLAGS)" LDSHARED="$(LDSHARED)" LDFLAGS="$(LDFLAGS) $(EXTRALDFLAGS)" PYTHONPATH="$(PYTHONPATH)"
43
44all: .installed-$(PLATFORM)
45
46$(TARBALLS_LOCATION)/$(ARCHIVE):
47	cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE)
48
49$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS)
50	rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM)
51	cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE)
52	cd $(PLATFORM); patch -p1 -i ../pillow-crosscompile.patch
53
54$(PILPATHLIB):
55ifeq ($(OS),android)
56	mkdir -p $(PILPATHLIB)
57else ifeq ($(OS),darwin_embedded)
58	mkdir -p $(PILPATHLIB)
59endif
60
61.installed-$(PLATFORM): $(PLATFORM) $(PILPATHLIB)
62	cd $(PLATFORM); $(CROSSFLAGS) $(NATIVEPREFIX)/bin/python3 setup.py build_ext $(BUILD_OPTS) install --install-lib $(PILPATH)
63ifeq ($(OS),android)
64	cd $(PILPATHLIB) && unzip -o ../Pillow-*.egg
65	cd $(PILPATHLIB)/PIL && \
66          sed -i -e 's/import sys/import os, sys /' \
67                 -e '/__file__/ s/_imaging/lib_imaging/g' \
68                 -e 's/pkg_resources.resource_filename(__name__,/os.path.join(os.environ["KODI_ANDROID_LIBS"], /'  _imaging*.py
69	cd $(PILPATH) && rm -rf Pillow-*.egg
70else ifeq ($(OS),darwin_embedded)
71	cd $(PILPATHLIB) && unzip -o ../Pillow-*.egg
72	cd $(PILPATH) && rm -rf Pillow-*.egg
73endif
74	touch $@
75
76clean:
77	$(MAKE) -C $(PLATFORM) clean
78	rm -f .installed-$(PLATFORM)
79
80distclean::
81	rm -rf $(PLATFORM) .installed-$(PLATFORM)
82