From 18e2b14c1dd2d5d0c17898d2dfc19c4097260cfc Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 28 Dec 2017 18:32:45 +0000 Subject: [PATCH] Start a Python module Signed-off-by: Michael Tremer --- Makefile.am | 26 ++++++++++++++++++++++++- configure.ac | 4 ++++ src/python/locationmodule.c | 39 +++++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 src/python/locationmodule.c diff --git a/Makefile.am b/Makefile.am index 00763a8..4a6aacf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -9,7 +9,6 @@ AM_CPPFLAGS = \ -I${top_srcdir}/src AM_CFLAGS = ${my_CFLAGS} \ - -fvisibility=hidden \ -ffunction-sections \ -fdata-sections @@ -30,6 +29,7 @@ SED_PROCESS = \ -e 's,@includedir\@,$(includedir),g' \ < $< > $@ || rm $@ +pythondir = $(pyexecdir) pkgconfigdir = $(libdir)/pkgconfig %.pc: %.pc.in Makefile @@ -57,6 +57,10 @@ src_libloc_la_SOURCES =\ EXTRA_DIST += src/libloc.sym +src_libloc_la_CFLAGS = \ + $(AM_CFLAGS) \ + -fvisibility=hidden + src_libloc_la_LDFLAGS = \ $(AM_LDFLAGS) \ -version-info $(LIBLOC_CURRENT):$(LIBLOC_REVISION):$(LIBLOC_AGE) \ @@ -74,6 +78,26 @@ EXTRA_DIST += \ CLEANFILES += \ src/libloc.pc +pkgpyexec_LTLIBRARIES = \ + src/python/location.la + +src_python_location_la_SOURCES = \ + src/python/locationmodule.c + +src_python_location_la_CFLAGS = \ + $(AM_CFLAGS) \ + $(PYTHON_CFLAGS) + +src_python_location_la_LDFLAGS = \ + $(AM_LDFLAGS) \ + -shared \ + -module \ + -avoid-version + +src_python_location_la_LIBADD = \ + src/libloc.la \ + $(PYTHON_LIBS) + TESTS = \ src/test-libloc \ src/test-stringpool \ diff --git a/configure.ac b/configure.ac index b27e11b..79ae5e6 100644 --- a/configure.ac +++ b/configure.ac @@ -68,6 +68,10 @@ my_CFLAGS="\ " AC_SUBST([my_CFLAGS]) +# Python +AM_PATH_PYTHON([3.4]) +PKG_CHECK_MODULES([PYTHON], [python-${PYTHON_VERSION}]) + AC_CONFIG_HEADERS(config.h) AC_CONFIG_FILES([ Makefile diff --git a/src/python/locationmodule.c b/src/python/locationmodule.c new file mode 100644 index 0000000..dfd951d --- /dev/null +++ b/src/python/locationmodule.c @@ -0,0 +1,39 @@ +/* + libloc - A library to determine the location of someone on the Internet + + Copyright (C) 2017 IPFire Development Team + + This library 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. + + This library 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. +*/ + +#include + +PyMODINIT_FUNC PyInit_location(void); + +static PyMethodDef location_module_methods[] = { + { NULL }, +}; + +static struct PyModuleDef location_module = { + .m_base = PyModuleDef_HEAD_INIT, + .m_name = "location", + .m_size = -1, + .m_doc = "Python module for libloc", + .m_methods = location_module_methods, +}; + +PyMODINIT_FUNC PyInit_location(void) { + PyObject* m = PyModule_Create(&location_module); + if (!m) + return NULL; + + return m; +} -- 2.39.2