summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2021-10-16 00:45:25 +0200
committerAki <please@ignore.pl>2021-10-16 00:45:25 +0200
commit71165bdec129a2f52b9fc20e5a18338dfc413f11 (patch)
tree6fafe8d5e50209a149265d159e52a9b93162a745
downloadhwd-python-71165bdec129a2f52b9fc20e5a18338dfc413f11.zip
hwd-python-71165bdec129a2f52b9fc20e5a18338dfc413f11.tar.gz
hwd-python-71165bdec129a2f52b9fc20e5a18338dfc413f11.tar.bz2
Created stub python module for hwd communication library
-rw-r--r--.gitignore3
-rw-r--r--CMakeLists.txt15
-rw-r--r--setup.py40
-rw-r--r--src/hwdmodule.cpp32
4 files changed, 90 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..02bbf52
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+build/
+dist/
+*.egg-info
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..a7c821f
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 3.18)
+project(hwd_python CXX)
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_EXTENSIONS No)
+find_package(Hwd REQUIRED)
+find_package(Python COMPONENTS Development.Module)
+Python_add_library(${PROJECT_NAME} MODULE
+ src/hwdmodule.cpp
+ )
+target_link_libraries(${PROJECT_NAME}
+ PRIVATE Hwd::library
+ )
+set_target_properties(${PROJECT_NAME}
+ PROPERTIES OUTPUT_NAME hwd
+ )
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..b6e3626
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,40 @@
+import os
+import pathlib
+
+from setuptools import setup
+from setuptools import Extension
+from setuptools.command.build_ext import build_ext
+
+
+class CMakeExtension(Extension):
+ def __init__(self, name):
+ super().__init__(name, sources=[])
+
+
+class CMakeBuild(build_ext):
+ def run(self):
+ for ext in self.extensions:
+ self.build_cmake(ext)
+ super().run()
+
+ def build_cmake(self, ext):
+ cwd = pathlib.Path().absolute()
+ build_temp = pathlib.Path(self.build_temp)
+ extdir = pathlib.Path(self.get_ext_fullpath(ext.name))
+ for dir in (build_temp, extdir):
+ dir.mkdir(parents=True, exist_ok=True)
+ cmake_args = [
+ f"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY={extdir.parent.absolute()}",
+ ]
+ os.chdir(str(build_temp))
+ self.spawn(["cmake", str(cwd)] + cmake_args)
+ if not self.dry_run:
+ self.spawn(["cmake", "--build", "."])
+ os.chdir(str(cwd))
+
+
+setup(
+ name="hwd",
+ ext_modules=[CMakeExtension("hwd")],
+ cmdclass={"build_ext": CMakeBuild},
+)
diff --git a/src/hwdmodule.cpp b/src/hwdmodule.cpp
new file mode 100644
index 0000000..d0565df
--- /dev/null
+++ b/src/hwdmodule.cpp
@@ -0,0 +1,32 @@
+#define PY_SSIZE_T_CLEAN
+#include <Python.h>
+
+#include <hwd.h>
+
+
+static PyObject * hwd_stop_server(PyObject * self, PyObject * args)
+{
+ hwd::stop_server();
+ Py_RETURN_NONE;
+}
+
+
+static PyMethodDef HwdMethods[] = {
+ {"stop_server", hwd_stop_server, METH_VARARGS, "Shutdown daemon instance"},
+ {NULL, NULL, 0, NULL}
+};
+
+
+static struct PyModuleDef hwdmodule = {
+ PyModuleDef_HEAD_INIT,
+ "hwd",
+ NULL,
+ -1,
+ HwdMethods
+};
+
+
+PyMODINIT_FUNC PyInit_hwd(void)
+{
+ return PyModule_Create(&hwdmodule);
+}