From: xantares Date: Fri, 20 Feb 2015 20:07:27 +0000 (+0100) Subject: build swig bindings with cmake X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=25bcedb611e6c1fe7da734e592c55bb0682ecfed;p=nlopt.git build swig bindings with cmake --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c5d9c5..1fa13a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -172,5 +172,4 @@ INSTALL ( TARGETS nlopt ARCHIVE DESTINATION lib${LIB_SUFFIX} ) - - +add_subdirectory (swig) diff --git a/swig/CMakeLists.txt b/swig/CMakeLists.txt new file mode 100644 index 0000000..3dd1f5e --- /dev/null +++ b/swig/CMakeLists.txt @@ -0,0 +1,29 @@ +option (BUILD_PYTHON "build python bindings" ON) + +find_package (PythonInterp) +find_package (PythonLibs) +find_package (SWIG) + +if (BUILD_PYTHON AND PYTHONINTERP_FOUND AND PYTHONLIBS_FOUND AND SWIG_FOUND AND BUILD_SHARED_LIBS) + include (UseSWIG) + include_directories (${CMAKE_SOURCE_DIR}/api) + include_directories (${PYTHON_INCLUDE_DIRS}) + + set_source_files_properties (nlopt.i PROPERTIES CPLUSPLUS ON) + set (SWIG_MODULE_nlopt_EXTRA_DEPS nlopt-python.i numpy.i ${CMAKE_SOURCE_DIR}/api/nlopt.hpp) + + swig_add_module (nlopt python nlopt.i) + swig_link_libraries (nlopt nlopt) + + execute_process ( COMMAND ${PYTHON_EXECUTABLE} -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 _REL_PYTHON_MODULE_PATH ${CMAKE_INSTALL_PREFIX} ${_ABS_PYTHON_MODULE_PATH}) + + set (PYTHON_MODULE_PATH ${_REL_PYTHON_MODULE_PATH}) + + install ( FILES ${CMAKE_CURRENT_BINARY_DIR}/nlopt.py DESTINATION ${PYTHON_MODULE_PATH} ) + install ( TARGETS ${SWIG_MODULE_nlopt_REAL_NAME} LIBRARY DESTINATION ${PYTHON_MODULE_PATH} ) +endif ()