616929b6ed
* lang/python/Makefile.am: Add the toplevel source directory to CFLAGS when compiling the bindings so that we can use private header files. * lang/python/gpgme.i (gpgme_data_t): Rework the object wrapping. Do not create a Python wrapper object, merely a gpgme_data_t object, and keep references to buffer objects, if any. If necessary, update the buffer after the function call. (pygpgme_wrap_gpgme_data_t): New function. * lang/python/helpers.c (object_to_gpgme_data_t): Rework object wrapping. Also wrap objects implementing the buffer protocol. * lang/python/helpers.h (object_to_gpgme_data_t): Update prototype. (pygpgme_wrap_gpgme_data_t): New prototype. * lang/python/tests/t-idiomatic.py: Demonstrate this. Signed-off-by: Justus Winter <justus@g10code.com>
67 lines
2.1 KiB
Makefile
67 lines
2.1 KiB
Makefile
# Makefile.am for the Python bindings.
|
|
# Copyright (C) 2016 g10 Code GmbH
|
|
#
|
|
# This file is part of GPGME.
|
|
#
|
|
# GPGME is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU Lesser General Public License as
|
|
# published by the Free Software Foundation; either version 2.1 of the
|
|
# License, or (at your option) any later version.
|
|
#
|
|
# GPGME is distributed in the hope that it will be useful, but WITHOUT
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
|
|
# Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Lesser General Public
|
|
# License along with this program; if not, see <http://www.gnu.org/licenses/>.
|
|
|
|
EXTRA_DIST = README
|
|
SUBDIRS = tests
|
|
|
|
COPY_FILES = \
|
|
$(srcdir)/README \
|
|
$(srcdir)/pyme \
|
|
$(srcdir)/helpers.c $(srcdir)/helpers.h
|
|
|
|
# Cleanup gpgme.h from deprecated functions and typedefs.
|
|
gpgme.h: ../../src/gpgme.h $(srcdir)/gpgme-h-clean.py
|
|
$(PYTHON) $(srcdir)/gpgme-h-clean.py $< >$@
|
|
|
|
# For VPATH builds we need to copy some files because Python's
|
|
# distutils are not VPATH-aware.
|
|
copystamp: $(COPY_FILES)
|
|
if test "$(srcdir)" != "$(builddir)" ; then cp -r $^ . ; fi
|
|
touch $@
|
|
|
|
errors.i:
|
|
sed -n -e \
|
|
'/GPG_ERR_[^ ]* =/s/ *\(.*\) = .*/%constant long \1 = \1;/p' \
|
|
`$(GPG_ERROR_CONFIG) --prefix`/include/gpg-error.h >$@
|
|
|
|
gpgme_wrap.c pyme/pygpgme.py: gpgme.i errors.i gpgme.h copystamp
|
|
$(SWIG) -python -py3 $(SWIGOPT) \
|
|
-o $(builddir)/gpgme_wrap.c -outdir $(builddir)/pyme \
|
|
$<
|
|
|
|
all-local: gpgme_wrap.c pyme/pygpgme.py copystamp
|
|
CFLAGS="$(CFLAGS) -I$(top_srcdir)" \
|
|
$(PYTHON) setup.py build --verbose
|
|
|
|
clean-local:
|
|
rm -rf -- build gpgme.h errors.i gpgme_wrap.c pyme/pygpgme.py \
|
|
copystamp
|
|
if test "$(srcdir)" != "$(builddir)" ; then \
|
|
rm -rf pyme helpers.c helpers.h ; \
|
|
fi
|
|
|
|
install-exec-local:
|
|
$(PYTHON) setup.py install \
|
|
--prefix $(DESTDIR)$(prefix) \
|
|
--record $(DESTDIR)$(pythondir)/pyme/install_files.txt \
|
|
--verbose
|
|
|
|
uninstall-local:
|
|
xargs <$(DESTDIR)$(pythondir)/pyme/install_files.txt -- rm -rf --
|
|
rm -rf -- $(DESTDIR)$(pythondir)/pyme
|