diff options
| -rw-r--r-- | include/ouroboros/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | include/ouroboros/wrap/CMakeLists.txt | 42 | ||||
| -rw-r--r-- | include/ouroboros/wrap/ouroboros.i | 44 | ||||
| -rw-r--r-- | src/ipcpd/shim-udp/CMakeLists.txt | 45 | 
4 files changed, 105 insertions, 28 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" diff --git a/src/ipcpd/shim-udp/CMakeLists.txt b/src/ipcpd/shim-udp/CMakeLists.txt index 71f9e1d1..c63bd29c 100644 --- a/src/ipcpd/shim-udp/CMakeLists.txt +++ b/src/ipcpd/shim-udp/CMakeLists.txt @@ -31,32 +31,6 @@ IF(NOT CMAKE_HAVE_GETHOSTBYNAME)    ENDIF (CMAKE_LIB_NSL_HAS_GETHOSTBYNAME)  ENDIF(NOT CMAKE_HAVE_GETHOSTBYNAME) -# Enable DNS by default -if (NOT DISABLE_DNS MATCHES True) -  # Find the nsupdate executable -  find_program(NSUPDATE_EXECUTABLE -    NAMES nsupdate -    DOC "The nsupdate tool that enables DDNS") - -  if (${NSUPDATE_EXECUTABLE} STREQUAL "NSUPDATE_EXECUTABLE-NOTFOUND") -    message(FATAL_ERROR "Could not find nsupdate, which is needed for DDNS") -  else() -    message("-- Found nsupdate: ${NSUPDATE_EXECUTABLE}") -  endif() - -  # Find the nslookup executable -  find_program(NSLOOKUP_EXECUTABLE -    NAMES nslookup -    DOC "The nslookup tool that resolves DNS names") - -  if (${NSLOOKUP_EXECUTABLE} STREQUAL "NSLOOKUP_EXECUTABLE-NOTFOUND") -    message(FATAL_ERROR -      "Could not find nslookup, which is needed for DNS resolution") -  else() -    message("-- Found nslookup: ${NSLOOKUP_EXECUTABLE}") -  endif() -endif() -  configure_file(    "${CMAKE_CURRENT_SOURCE_DIR}/shim_udp_config.h.in"    "${CMAKE_CURRENT_BINARY_DIR}/shim_udp_config.h") @@ -72,8 +46,23 @@ add_executable (ipcpd-shim-udp ${SHIM_UDP_SOURCES} ${IPCP_SOURCES}  target_link_libraries (ipcpd-shim-udp LINK_PUBLIC ouroboros    ${PROTOBUF_C_LIBRARY}) -# Enable DNS by default -if (NOT DISABLE_DNS MATCHES True) +# Find the nsupdate executable +find_program(NSUPDATE_EXECUTABLE +  NAMES nsupdate +  DOC "The nsupdate tool that enables DDNS") + +# Find the nslookup executable +find_program(NSLOOKUP_EXECUTABLE +  NAMES nslookup +  DOC "The nslookup tool that resolves DNS names") + +if (${NSUPDATE_EXECUTABLE} STREQUAL "NSUPDATE_EXECUTABLE-NOTFOUND") +  message("-- Could not find nsupdate. Disabling DDNS functionality.") +elseif (${NSLOOKUP_EXECUTABLE} STREQUAL "NSLOOKUP_EXECUTABLE-NOTFOUND") +  message("-- Could not find nslookup. Disabling DNS lookups.") +else () +  message("-- Found nsupdate: ${NSUPDATE_EXECUTABLE}") +  message("-- Found nslookup: ${NSLOOKUP_EXECUTABLE}")    MACRO_ADD_COMPILE_FLAGS(ipcpd-shim-udp -DCONFIG_OUROBOROS_ENABLE_DNS)  endif()  | 
