summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/ouroboros/CMakeLists.txt2
-rw-r--r--include/ouroboros/wrap/CMakeLists.txt42
-rw-r--r--include/ouroboros/wrap/ouroboros.i44
3 files changed, 88 insertions, 0 deletions
diff --git a/include/ouroboros/CMakeLists.txt b/include/ouroboros/CMakeLists.txt
index eb5297d2..ae922b89 100644
--- a/include/ouroboros/CMakeLists.txt
+++ b/include/ouroboros/CMakeLists.txt
@@ -13,3 +13,5 @@ set(HEADER_FILES
qos.h)
install(FILES ${HEADER_FILES} DESTINATION usr/include/ouroboros)
+
+add_subdirectory(wrap)
diff --git a/include/ouroboros/wrap/CMakeLists.txt b/include/ouroboros/wrap/CMakeLists.txt
new file mode 100644
index 00000000..39737bbc
--- /dev/null
+++ b/include/ouroboros/wrap/CMakeLists.txt
@@ -0,0 +1,42 @@
+find_package(SWIG)
+
+if (NOT SWIG_FOUND)
+ message("-- SWIG not found: Bindings for other languages disabled.")
+else ()
+ include(${SWIG_USE_FILE})
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+ set(CMAKE_SWIG_FLAGS "")
+
+ find_package(PythonLibs)
+ if (NOT PYTHONLIBS_FOUND)
+ message("-- Python not found: Python bindings will not be built.")
+ else ()
+ include_directories(${PYTHON_INCLUDE_PATH})
+
+ swig_add_module(ouroboros python ouroboros.i)
+ swig_link_libraries(ouroboros ${PYTHON_LIBRARIES} ouroboros)
+
+ # Installation directives
+ if (CMAKE_INSTALL_PREFIX STREQUAL "")
+ execute_process(
+ COMMAND python -c "from distutils import sysconfig; print(sysconfig.get_python_lib())"
+ OUTPUT_VARIABLE PYTHON_MODULE_PATH
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ else ()
+ execute_process(
+ COMMAND python -c "from distutils import sysconfig; print(sysconfig.get_python_lib(plat_specific=True, prefix='${CMAKE_INSTALL_PREFIX}'))"
+ OUTPUT_VARIABLE _ABS_PYTHON_MODULE_PATH
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ get_filename_component(_ABS_PYTHON_MODULE_PATH
+ ${_ABS_PYTHON_MODULE_PATH} ABSOLUTE)
+ file(RELATIVE_PATH PYTHON_MODULE_PATH
+ ${CMAKE_INSTALL_PREFIX} ${_ABS_PYTHON_MODULE_PATH})
+ endif ()
+
+ install(FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/${SWIG_MODULE_ouroboros_REAL_NAME}.so
+ DESTINATION ${PYTHON_MODULE_PATH})
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ouroboros.py
+ DESTINATION ${PYTHON_MODULE_PATH})
+ endif ()
+endif ()
diff --git a/include/ouroboros/wrap/ouroboros.i b/include/ouroboros/wrap/ouroboros.i
new file mode 100644
index 00000000..386c21cc
--- /dev/null
+++ b/include/ouroboros/wrap/ouroboros.i
@@ -0,0 +1,44 @@
+/*
+ * Ouroboros - Copyright (C) 2016
+ *
+ * SWIG wrapper file
+ *
+ * Sander Vrijders <sander.vrijders@intec.ugent.be>
+ *
+ * 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 2 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, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+%module ouroboros
+%{
+#include "ouroboros/cdap.h"
+#include "ouroboros/dev.h"
+#include "ouroboros/errno.h"
+#include "ouroboros/flow.h"
+#include "ouroboros/irm.h"
+#include "ouroboros/irm_config.h"
+#include "ouroboros/nsm.h"
+#include "ouroboros/qos.h"
+%}
+
+typedef int pid_t;
+
+%include "ouroboros/cdap.h"
+%include "ouroboros/dev.h"
+%include "ouroboros/errno.h"
+%include "ouroboros/flow.h"
+%include "ouroboros/irm.h"
+%include "ouroboros/irm_config.h"
+%include "ouroboros/nsm.h"
+%include "ouroboros/qos.h"