]> sigrok.org Git - libsigrok.git/commitdiff
Add SWIG interface file and build script for Python bindings.
authorMartin Ling <redacted>
Mon, 15 Apr 2013 19:01:07 +0000 (20:01 +0100)
committerUwe Hermann <redacted>
Mon, 15 Apr 2013 22:41:11 +0000 (00:41 +0200)
.gitignore
bindings/python/libsigrok_python.i [new file with mode: 0644]
bindings/python/setup.py [new file with mode: 0644]
bindings/swig/libsigrok.i [new file with mode: 0644]

index f2d4a5e88a50892d6037d1f3831e7f44a33931c2..5e6015bdfb0b8762b4e9fa9dfd5b64560d48778b 100644 (file)
@@ -41,3 +41,8 @@ Makefile.in
 
 # KDevelop project files
 *.kdev4
+
+# Files generated by building Python bindings
+bindings/python/build
+bindings/python/libsigrok.py
+bindings/python/libsigrok_python_wrap.c
diff --git a/bindings/python/libsigrok_python.i b/bindings/python/libsigrok_python.i
new file mode 100644 (file)
index 0000000..b389872
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * This file is part of the sigrok project.
+ *
+ * Copyright (C) 2013 Martin Ling <martin-sigrok@earth.li>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+%include "../swig/libsigrok.i"
diff --git a/bindings/python/setup.py b/bindings/python/setup.py
new file mode 100644 (file)
index 0000000..0d854af
--- /dev/null
@@ -0,0 +1,45 @@
+#
+# This file is part of the sigrok project.
+#
+# Copyright (C) 2013 Martin Ling <martin-sigrok@earth.li>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+from distutils.core import setup, Extension
+import subprocess
+
+sr_includes = subprocess.check_output(
+    ["pkg-config", "--cflags", "libsigrok"]).rstrip().split(' ')
+
+sr_libs = subprocess.check_output(
+    ["pkg-config", "--libs", "libsigrok"]).rstrip().split(' ')
+
+sr_version = subprocess.check_output(
+    ["pkg-config", "--version", "libsigrok"]).rstrip()
+
+setup(
+    name = 'libsigrok',
+    version = sr_version,
+    description = "libsigrok API wrapper",
+    py_modules = ['libsigrok'],
+    ext_modules = [
+        Extension('_libsigrok',
+            sources = ['libsigrok_python.i'],
+            swig_opts = sr_includes,
+            include_dirs = [i[2:] for i in sr_includes if i.startswith('-I')],
+            library_dirs = [l[2:] for l in sr_libs if l.startswith('-L')],
+            libraries = [l[2:] for l in sr_libs if l.startswith('-l')]
+        )
+    ],
+)
diff --git a/bindings/swig/libsigrok.i b/bindings/swig/libsigrok.i
new file mode 100644 (file)
index 0000000..73591a1
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * This file is part of the sigrok project.
+ *
+ * Copyright (C) 2013 Martin Ling <martin-sigrok@earth.li>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+%module libsigrok
+%include "cpointer.i"
+%include "carrays.i"
+
+%{
+#include "libsigrok/libsigrok.h"
+%}
+
+typedef struct _GSList GSList;
+
+struct _GSList
+{
+  gpointer data;
+  GSList *next;
+};
+
+void g_slist_free(GSList *list);
+
+%include "libsigrok/libsigrok.h"
+#undef SR_API
+#define SR_API
+%ignore sr_config_info_name_get;
+%include "libsigrok/proto.h"
+%include "libsigrok/version.h"
+
+%pointer_functions(struct sr_context *, sr_context_ptr_ptr);
+%array_functions(struct sr_dev_driver *, sr_dev_driver_ptr_array);
+%pointer_cast(gpointer, struct sr_dev_inst *, gpointer_to_sr_dev_inst_ptr);