python: Link 'data.h' and 'config.h' into the builddir.
[gpgme.git] / lang / python / Makefile.am
1 # Makefile.am for the Python bindings.
2 # Copyright (C) 2016 g10 Code GmbH
3 #
4 # This file is part of GPGME.
5 #
6 # GPGME is free software; you can redistribute it and/or modify it
7 # under the terms of the GNU Lesser General Public License as
8 # published by the Free Software Foundation; either version 2.1 of the
9 # License, or (at your option) any later version.
10 #
11 # GPGME is distributed in the hope that it will be useful, but WITHOUT
12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General
14 # Public License for more details.
15 #
16 # You should have received a copy of the GNU Lesser General Public
17 # License along with this program; if not, see <http://www.gnu.org/licenses/>.
18
19 EXTRA_DIST = \
20         README \
21         MANIFEST.in \
22         gpgme.i \
23         helpers.c helpers.h private.h \
24         gpgme-h-clean.py \
25         examples \
26         pyme
27
28 SUBDIRS = . tests
29
30 COPY_FILES = \
31         $(srcdir)/gpgme.i \
32         $(srcdir)/README \
33         $(srcdir)/MANIFEST.in \
34         $(srcdir)/gpgme-h-clean.py \
35         $(srcdir)/examples \
36         $(srcdir)/helpers.c $(srcdir)/helpers.h $(srcdir)/private.h
37
38 COPY_FILES_PYME = \
39         $(srcdir)/pyme/callbacks.py \
40         $(srcdir)/pyme/constants \
41         $(srcdir)/pyme/core.py \
42         $(srcdir)/pyme/errors.py \
43         $(srcdir)/pyme/__init__.py \
44         $(srcdir)/pyme/results.py \
45         $(srcdir)/pyme/util.py
46
47 # For VPATH builds we need to copy some files because Python's
48 # distutils are not VPATH-aware.
49 copystamp: $(COPY_FILES) $(COPY_FILES_PYME) data.h config.h
50         if test "$(srcdir)" != "$(builddir)" ; then \
51           cp -R $(COPY_FILES) . ; \
52           cp -R $(COPY_FILES_PYME) pyme ; \
53         fi
54         touch $@
55
56 data.h:
57         ln -s "$(top_srcdir)/src/data.h"
58
59 config.h:
60         ln -s "$(top_builddir)/config.h"
61
62 all-local: copystamp
63         for PYTHON in $(PYTHONS); do \
64           CFLAGS="$(CFLAGS)" \
65             $$PYTHON setup.py build --verbose ; \
66         done
67
68 dist/pyme3-$(VERSION).tar.gz dist/pyme3-$(VERSION).tar.gz.asc: copystamp
69         CFLAGS="$(CFLAGS)" \
70           $(PYTHON) setup.py sdist --verbose
71         gpg2 --detach-sign --armor dist/pyme3-$(VERSION).tar.gz
72
73 .PHONY: prepare
74 prepare: copystamp
75
76 .PHONY: sdist
77 sdist: dist/pyme3-$(VERSION).tar.gz dist/pyme3-$(VERSION).tar.gz.asc
78
79 .PHONY: upload
80 upload: dist/pyme3-$(VERSION).tar.gz dist/pyme3-$(VERSION).tar.gz.asc
81         twine upload $^
82
83 CLEANFILES = gpgme.h errors.i gpgme_wrap.c pyme/gpgme.py \
84           data.h config.h copystamp
85
86 # Remove the rest.
87 #
88 # 'make distclean' clears the write bit, breaking rm -rf.  Fix the
89 # permissions.
90 clean-local:
91         rm -rf -- build
92         if test "$(srcdir)" != "$(builddir)" ; then \
93           find . -type d ! -perm -200 -exec chmod u+w {} ';' ; \
94           for F in $(COPY_FILES); do rm -rf -- `basename $$F` ; done ; \
95           for F in $(COPY_FILES_PYME); do \
96               rm -rf -- pyme/`basename $$F` ; \
97           done ; \
98         fi
99
100 install-exec-local:
101         rm -f install_files.txt
102         for PYTHON in $(PYTHONS); do \
103           $$PYTHON setup.py install \
104           --prefix $(DESTDIR)$(prefix) \
105           --record files.txt \
106           --verbose ; \
107           cat files.txt >> install_files.txt ; \
108           rm files.txt ; \
109         done
110         $(MKDIR_P) $(DESTDIR)$(pythondir)/pyme
111         mv install_files.txt $(DESTDIR)$(pythondir)/pyme
112
113 uninstall-local:
114         xargs <$(DESTDIR)$(pythondir)/pyme/install_files.txt -- rm -rf --
115         rm -rf -- $(DESTDIR)$(pythondir)/pyme