if( HAVE_PYTHON ) configure_file( setup.py.in setup.py ) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/../src/common/magics_api.h magics_api.h COPYONLY ) configure_file( numpy.i numpy.i COPYONLY ) configure_file( Magics_interface.cc Magics_interface.cc COPYONLY ) configure_file( Magics.i.in Magics/Magics.i ) # Copy python modules to build area # configure_file ensures the copy is triggered if the file changes configure_file( Magics/__init__.py Magics/__init__.py COPYONLY ) configure_file( Magics/macro.py Magics/macro.py COPYONLY ) configure_file( Magics/toolbox.py Magics/toolbox.py COPYONLY ) configure_file( Magics/metgram.py Magics/metgram.py COPYONLY ) set( _magics_swig "_Magics${CMAKE_SHARED_LIBRARY_SUFFIX}" ) # Build the extension module for use in build tree with RPATH pointing to the build tree add_custom_command( OUTPUT ${_magics_swig} COMMAND ${PYTHON_EXECUTABLE} setup.py build_ext --inplace --rpath ${CMAKE_BINARY_DIR}/lib DEPENDS Magics_interface.cc Magics.i.in numpy.i setup.py.in MagPlus ) add_custom_target(build_swig_wrapper ALL DEPENDS ${_magics_swig}) # Build the extension module for use in install tree with RPATH pointing to install tree install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} setup.py build_ext --rpath ${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})") # Library installation directory override if( NOT INSTALL_LIB_DIR STREQUAL lib ) execute_process( COMMAND ${PYTHON_EXECUTABLE} -c "from __future__ import print_function; import sys; print(sys.version[:3], end='')" OUTPUT_VARIABLE PYVER ) set( __install_lib "--install-lib=${MAGICS_FULL_INSTALL_LIB_DIR}/python${PYVER}/site-packages" ) endif() # Call distutils for installation install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} setup.py install ${__install_lib} --root \$ENV{DESTDIR}/ --prefix ${CMAKE_INSTALL_PREFIX} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})") endif()