Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CMake/FindNumPy.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ FIND_PACKAGE(PythonInterp REQUIRED)

# Look for the include path
# WARNING: The variable PYTHON_EXECUTABLE is defined by the script FindPythonInterp.cmake
EXECUTE_PROCESS(COMMAND "${PYTHON_EXECUTABLE}" -c "import numpy; print numpy.get_include(); print numpy.version.version"
EXECUTE_PROCESS(COMMAND "${PYTHON_EXECUTABLE}" -c "from __future__ import print_function; import numpy; print(numpy.get_include()); print(numpy.version.version)"
OUTPUT_VARIABLE NUMPY_OUTPUT
ERROR_VARIABLE NUMPY_ERROR)

Expand All @@ -30,4 +30,4 @@ INCLUDE(FindPackageHandleStandardArgs)

FIND_PACKAGE_HANDLE_STANDARD_ARGS(NumPy DEFAULT_MSG NUMPY_VERSION NUMPY_INCLUDE_DIR)

MARK_AS_ADVANCED(NUMPY_INCLUDE_DIR)
MARK_AS_ADVANCED(NUMPY_INCLUDE_DIR)
5 changes: 4 additions & 1 deletion Packaging/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,8 @@ IF(BTK_WRAP_PYTHON)
GET_TARGET_PROPERTY(BTK_SWIG_PYTHON_MODULE_LOCATION "_btk" LOCATION)
ADD_CUSTOM_TARGET(Package_Python
COMMAND ${CMAKE_COMMAND} -D BTK_SWIG_PYTHON_MODULE_LOCATION:STRING=${BTK_SWIG_PYTHON_MODULE_LOCATION} -D ARCH_64_BIT:BOOL=${HAVE_64_BIT} -D BTK_VERSION_STRING:STRING=${BTK_VERSION_STRING} -D BTK_BINARY_DIR:STRING=${BTK_BINARY_DIR} -D BTK_SOURCE_DIR:STRING=${BTK_SOURCE_DIR} -P "${BTK_SOURCE_DIR}/Packaging/Python/btkPackagePythonBinding.cmake")
ADD_DEPENDENCIES(package Package_Python)
ADD_DEPENDENCIES(package Package_Python)
ADD_CUSTOM_TARGET(python-wheel
COMMAND ${CMAKE_COMMAND} -D BTK_VERSION_STRING=${BTK_VERSION_STRING} -D BTK_SOURCE_DIR:STRING=${BTK_SOURCE_DIR} -D BTK_BINARY_DIR:STRING=${BTK_BINARY_DIR} -P "${BTK_SOURCE_DIR}/Packaging/Python/btkPackagePythonWheel.cmake")
ADD_DEPENDENCIES(package python-wheel)
ENDIF(BTK_WRAP_PYTHON)
44 changes: 44 additions & 0 deletions Packaging/Python/btkPackagePythonWheel.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
SET(CMAKE_MODULE_PATH "${BTK_SOURCE_DIR}/CMake")
FIND_PACKAGE(PythonInterp REQUIRED QUIET)
FIND_PACKAGE(SWIG 2.0 REQUIRED)
FIND_PACKAGE(PythonLibs REQUIRED)
FIND_PACKAGE(NumPy REQUIRED)

SET(BTK_PYTHON_WRAPPING_SOURCE_DIR "${BTK_SOURCE_DIR}/Wrapping/Python")
SET(BTK_PYTHON_WHEEL_SOURCE_DIR "${BTK_SOURCE_DIR}/Packaging/Python/wheel")
SET(BTK_PYTHON_WHEEL_BINARY_DIR "${BTK_BINARY_DIR}/Packaging/Python/wheel")

MESSAGE(STATUS "---------------------------")
MESSAGE(STATUS "Packaging Python Wheel ...")
MESSAGE(STATUS "---------------------------")

FILE(MAKE_DIRECTORY "${BTK_PYTHON_WHEEL_BINARY_DIR}")

MESSAGE(STATUS "Preparing sources in ${BTK_PYTHON_WHEEL_BINARY_DIR}")

# btk.py file
FILE(MAKE_DIRECTORY "${BTK_PYTHON_WHEEL_BINARY_DIR}/btk")
FILE(COPY "${BTK_BINARY_DIR}/bin/btk.py" DESTINATION "${BTK_PYTHON_WHEEL_BINARY_DIR}/btk")
FILE(RENAME "${BTK_PYTHON_WHEEL_BINARY_DIR}/btk/btk.py" "${BTK_PYTHON_WHEEL_BINARY_DIR}/btk/__init__.py")

SET(BTKSWIG_SOURCES
libBTKBasicFilters.a
libBTKCommon.a
libBTKIO.a
btkSwigPYTHON_wrap.cxx)

# .a files and cxx file
FOREACH(dep IN LISTS BTKSWIG_SOURCES)
MESSAGE(STATUS " - ${dep}")
FILE(COPY "${BTK_BINARY_DIR}/bin/${dep}" DESTINATION "${BTK_PYTHON_WHEEL_BINARY_DIR}")
ENDFOREACH(dep)


MESSAGE(STATUS "Creating setup.py for build")
CONFIGURE_FILE(${BTK_PYTHON_WHEEL_SOURCE_DIR}/setup.py.in
${BTK_PYTHON_WHEEL_BINARY_DIR}/setup.py @ONLY IMMEDIATE)

# Package files
MESSAGE(STATUS "Creating Python wheel using setup.py bdist_wheel in ${BTK_PYTHON_WHEEL_BINARY_DIR}")
EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} setup.py bdist_wheel
WORKING_DIRECTORY "${BTK_PYTHON_WHEEL_BINARY_DIR}/")
50 changes: 50 additions & 0 deletions Packaging/Python/wheel/setup.py.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# coding=utf-8
from setuptools import setup, Extension
import glob
import os.path

version = '@BTK_VERSION_STRING@'

WRAPPER_SOURCES = '@BTK_PYTHON_WRAPPING_SOURCE_DIR@'
WRAPPER_OBJECTS = '@BTK_PYTHON_WHEEL_BINARY_DIR@'


def get_wrapper_sources():
sources = [
'btkBasicFiltersSwig.cpp',
'btkCommonSwig.cpp',
'btkIOSwig.cpp'
]
return [os.path.join(WRAPPER_SOURCES, s) for s in sources]


_btk = Extension('_btk',
include_dirs=[
'.',
'..',
'@CMAKE_CURRENT_SOURCE_DIR@',
'@BTK_BINARY_DIR@',
'@BTK_SOURCE_DIR@/Wrapping/Python/',
'@BTK_SOURCE_DIR@/Code/BasicFilters',
'@BTK_SOURCE_DIR@/Code/Common',
'@BTK_SOURCE_DIR@/Code/IO',
'@BTK_SOURCE_DIR@/Utilities/boost',
'@BTK_SOURCE_DIR@/Utilities/eigen3',
'@BTK_SOURCE_DIR@/Utilities/SWIG',
'@NUMPY_INCLUDE_DIR@'
],
sources=get_wrapper_sources() + ['btkSwigPYTHON_wrap.cxx'],
extra_objects=['libBTKBasicFilters.a', 'libBTKCommon.a', 'libBTKIO.a'])


setup(name='btk',
version=version,
description='BTK Python bindings',
long_description='''@BTK_PYTHON_PACKAGE_LONG_DESCRIPTION@''',
author='Arnaud Barré',
author_email='arnaud.barre@gmail.com',
url='https://code.google.com/p/b-tk/',
license='New BSD License',
packages=['btk'],
setup_requires=['wheel'],
ext_modules=[_btk])