Mentions légales du service

Skip to content
Snippets Groups Projects
Commit cdf824f6 authored by hhakim's avatar hhakim
Browse files

Update py wrapper cmake script and setup.py.in to compile the wrapper with...

Update py wrapper cmake script and setup.py.in to compile the wrapper with VisualStudio (instead of MinGW).

We need it because python3 on windows is compiled with msvc also (we want ABI compatibility with our wrapper).
parent 657c6a75
Branches
Tags
No related merge requests found
set(FAUST_PYTHON_LIB_DIR "'${FAUST_BIN_DIR}'") set(FAUST_PYTHON_LIB_DIR "'${FAUST_BIN_DIR}'")
if(${USE_MATIO_STATIC_LIBS}) # set the variable for cython extension sources
set(PY_EXT_SOURCES "['${FAUST_PYTHON_BIN_DIR}/FaustCorePy.pyx']")
set(PYTHON_EXT_EXTRA_OBJECTS "[ '${MATIO_STATIC_LIB_PATH}', '${HDF5_STATIC_LIB_PATH}', '${Z_STATIC_LIB_PATH}']") # the order matters for compilation set(FAUST_PYTHON_LIBS "'faust'")
else()
if(${USE_MATIO_STATIC_LIBS})
if(NOT WIN32)
set(PYTHON_EXT_EXTRA_OBJECTS "[ '${MATIO_STATIC_LIB_PATH}', '${HDF5_STATIC_LIB_PATH}', '${Z_STATIC_LIB_PATH}']") # the order matters for compilation
else() # WIN32 # intended for Visual Studio!
# compile the pyx and all faust .cpp needed (instead to link to faust.lib)
set(PY_EXT_SOURCES "${PY_EXT_SOURCES}+glob('${FAUST_LINEAR_OPERATOR_CPU_SRC_DIR}/*.cpp')+glob('${FAUST_SRC_LINEAR_OPERATOR_DIR}/*.cpp')+glob('${FAUST_ALGORITHM_CONSTRAINT_SRC_DIR}/*.cpp')")
# extract the name (without .lib suffix) and the path of each libs:
# 1/ matio
get_filename_component(MATIO_LIB_DIR ${MATIO_STATIC_LIB_PATH} DIRECTORY)
get_filename_component(MATIO_LIB_NAME ${MATIO_STATIC_LIB_PATH} NAME_WE)
set(FAUST_PYTHON_LIBS "'${MATIO_LIB_NAME}'") # override variable (ignoring faust lib., recompiling from code)
set(FAUST_PYTHON_LIB_DIR "${FAUST_PYTHON_LIB_DIR},'${MATIO_LIB_DIR}'")
# 2/ zlib
get_filename_component(Z_LIB_DIR ${Z_STATIC_LIB_PATH} DIRECTORY)
get_filename_component(Z_LIB_NAME ${Z_STATIC_LIB_PATH} NAME_WE)
set(FAUST_PYTHON_LIBS "${FAUST_PYTHON_LIBS},'${Z_LIB_NAME}'")
set(FAUST_PYTHON_LIB_DIR "${FAUST_PYTHON_LIB_DIR},'${Z_LIB_DIR}'")
# 3/ for HDF5 we get directly objects files (not the static lib because of linking errors) # temporary solution
# the paths must be set in environment
# SZIP is a dependency of HDF5
set(PYTHON_EXT_EXTRA_OBJECTS "glob('$ENV{WIN_HDF5_OBJS_DIR}/*.obj')+glob('$ENV{WIN_SZIP_OBJS_DIR}/*.obj')")
endif()
else() # in fact this is only for WIN32 MINGW
set(PYTHON_EXT_EXTRA_OBJECTS "None") set(PYTHON_EXT_EXTRA_OBJECTS "None")
get_filename_component(MATIO_LIB_DIR ${MATIO_LIB_FILE} DIRECTORY) get_filename_component(MATIO_LIB_DIR ${MATIO_LIB_FILE} DIRECTORY)
get_filename_component(MATIO_LIB_NAME ${MATIO_LIB_FILE} NAME_WE) get_filename_component(MATIO_LIB_NAME ${MATIO_LIB_FILE} NAME_WE)
string(REGEX REPLACE "^lib" "" MATIO_LIB_NAME ${MATIO_LIB_NAME}) string(REGEX REPLACE "^lib" "" MATIO_LIB_NAME ${MATIO_LIB_NAME})
set(FAUST_PYTHON_LIBS ",'${MATIO_LIB_NAME}'") set(FAUST_PYTHON_LIBS "${FAUST_PYTHON_LIBS},'${MATIO_LIB_NAME}'")
set(FAUST_PYTHON_LIB_DIR "${FAUST_PYTHON_LIB_DIR},'${MATIO_LIB_DIR}'") set(FAUST_PYTHON_LIB_DIR "${FAUST_PYTHON_LIB_DIR},'${MATIO_LIB_DIR}'")
endif() endif()
...@@ -59,9 +83,9 @@ endforeach() ...@@ -59,9 +83,9 @@ endforeach()
# copy license files which setup.py will need to package # copy license files which setup.py will need to package
configure_file(${PROJECT_SOURCE_DIR}/license.txt ${FAUST_PYTHON_BIN_DIR}/pyfaust/license.txt COPYONLY) configure_file(${PROJECT_SOURCE_DIR}/license.txt ${FAUST_PYTHON_BIN_DIR}/pyfaust/license.txt COPYONLY)
configure_file(${PROJECT_SOURCE_DIR}/license.txt ${FAUST_PYTHON_BIN_DIR}/pyfaust/license_matio.txt COPYONLY) configure_file(${PROJECT_SOURCE_DIR}/license_matio.txt ${FAUST_PYTHON_BIN_DIR}/pyfaust/license_matio.txt COPYONLY)
configure_file(${PROJECT_SOURCE_DIR}/license.txt ${FAUST_PYTHON_BIN_DIR}/pyfaust/license_hdf5.txt COPYONLY) configure_file(${PROJECT_SOURCE_DIR}/license_hdf5.txt ${FAUST_PYTHON_BIN_DIR}/pyfaust/license_hdf5.txt COPYONLY)
configure_file(${PROJECT_SOURCE_DIR}/license.txt ${FAUST_PYTHON_BIN_DIR}/pyfaust/license_zlib.txt COPYONLY) configure_file(${PROJECT_SOURCE_DIR}/license_zlib.txt ${FAUST_PYTHON_BIN_DIR}/pyfaust/license_zlib.txt COPYONLY)
message(STATUS "Installing pyfaust.py as pyfaust/__init__.py") message(STATUS "Installing pyfaust.py as pyfaust/__init__.py")
configure_file(${FAUST_PYTHON_SRC_DIR}/pyfaust.py ${FAUST_PYTHON_BIN_DIR}/pyfaust/__init__.py @ONLY) configure_file(${FAUST_PYTHON_SRC_DIR}/pyfaust.py ${FAUST_PYTHON_BIN_DIR}/pyfaust/__init__.py @ONLY)
...@@ -86,7 +110,6 @@ if(UNIX) ...@@ -86,7 +110,6 @@ if(UNIX)
string(REGEX REPLACE "Python ([0-9]\\.[0-9]).*$" "\\1" PY_VER_WITH_POINTS ${PY_VER}) string(REGEX REPLACE "Python ([0-9]\\.[0-9]).*$" "\\1" PY_VER_WITH_POINTS ${PY_VER})
string(REGEX REPLACE "Python ([0-9])\\.([0-9]).*$" "\\1\\2" PY_VER ${PY_VER}) string(REGEX REPLACE "Python ([0-9])\\.([0-9]).*$" "\\1\\2" PY_VER ${PY_VER})
if(PY_VER MATCHES 3) if(PY_VER MATCHES 3)
set(PY_DYNLIB "FaustCorePy.cp${PY_VER}-win_amd64.pyd")
set(PY3_VER ${PY_VER_WITH_POINTS} PARENT_SCOPE) set(PY3_VER ${PY_VER_WITH_POINTS} PARENT_SCOPE)
endif() endif()
add_custom_command(TARGET ${FAUST_PYTHON_TARGET} add_custom_command(TARGET ${FAUST_PYTHON_TARGET}
...@@ -94,69 +117,87 @@ if(UNIX) ...@@ -94,69 +117,87 @@ if(UNIX)
ARGS "${FAUST_PYTHON_BIN_DIR}/setup.py" "build_ext" "--inplace" ARGS "${FAUST_PYTHON_BIN_DIR}/setup.py" "build_ext" "--inplace"
COMMENT "Creating pyfaust${PY_VER}") COMMENT "Creating pyfaust${PY_VER}")
endforeach() endforeach()
elseif(WIN32 AND ${CMAKE_GENERATOR} MATCHES "MinGW Makefiles") elseif(WIN32)
# manually compiling cython extension instead of using setup.py in order to avoid visual studio to meddle in the compilation (we use mingw gcc here) if(NOT ${CMAKE_GENERATOR} MATCHES "MinGW Makefiles")
if(CYTHON_EXES_LEN) # TODO: replace by MATCHES Visual Studio ?
foreach(INDEX RANGE 0 ${CYTHON_EXES_LEN} 1) foreach(PYTHON_EXE IN LISTS PYTHON_EXES)
#message(STATUS "INDEX=${INDEX}") exec_program("${PYTHON_EXE}" ARGS "--version" OUTPUT_VARIABLE PY_VER RETURN_VALUE PY_RES)
if(${INDEX} LESS ${CYTHON_EXES_LEN}) #message(STATUS "PY_VER=${PY_VER}")
list(GET CYTHON_EXES ${INDEX} CYTHON_EXE) string(REGEX REPLACE "Python ([0-9]\\.[0-9]).*$" "\\1" PY_VER_WITH_POINTS ${PY_VER})
#list(GET PYTH0N_EXES ${INDEX} PYTHON_EXE) string(REGEX REPLACE "Python ([0-9])\\.([0-9]).*$" "\\1\\2" PY_VER ${PY_VER})
# workaround to the previous command which fails to retrieve PYTHON_EXES item # ONLY Python 3 for Faust built with Visual Studio
if(${INDEX} EQUAL 0) if(PY_VER MATCHES 3)
string(REGEX REPLACE "(.*);.*$" "\\1" PYTHON_EXE "${PYTHON_EXES}") set(PY3_VER ${PY_VER_WITH_POINTS} PARENT_SCOPE)
else()
string(REGEX REPLACE ".*;(.*)$" "\\1" PYTHON_EXE "${PYTHON_EXES}")
endif()
string(REGEX REPLACE "(.*)(/|\\\\).*" "\\1" PYTHON_PARENT_PATH ${PYTHON_EXE})
#message(STATUS "PYTHON_PARENT_PATH=${PYTHON_PARENT_PATH}")
#message(STATUS "PYTHON_EXE=${PYTHON_EXE}, PYTHON_EXES=${PYTHON_EXES}, INDEX=${INDEX}")
# get abbreviated python version
exec_program("${PYTHON_EXE}" ARGS "--version" OUTPUT_VARIABLE PY_VER RETURN_VALUE PY_RES)
#message(STATUS "PY_VER=${PY_VER}")
string(REGEX REPLACE "Python ([0-9]\\.[0-9]).*$" "\\1." PY_VER_WITH_POINTS ${PY_VER})
string(REGEX REPLACE "Python ([0-9])\\.([0-9]).*$" "\\1\\2" PY_VER ${PY_VER})
#message(STATUS "PY_VER=${PY_VER}")
# set header inclusion flags
string(REGEX REPLACE "," ";-I" FAUST_PY_CFLAGS ${FAUST_PYTHON_INCLUDE_DIR})
string(REGEX REPLACE "'" "" FAUST_PY_CFLAGS ${FAUST_PY_CFLAGS})
set(FAUST_PY_CFLAGS "${FAUST_PY_CFLAGS};-I${PYTHON_PARENT_PATH}\\include")
# get numpy header dir
execute_process(COMMAND "${PYTHON_EXE}" "-c" "import numpy;print(numpy.get_include())" OUTPUT_VARIABLE NUMPY_INCLUDE ERROR_VARIABLE PY_ERR RESULT_VARIABLE PY_RES)
#message(STATUS "NUMPY_INCLUDE=${NUMPY_INCLUDE}")
set(FAUST_PY_CFLAGS "-I${FAUST_PY_CFLAGS};-I${NUMPY_INCLUDE}")
string(REGEX REPLACE "\n" "" FAUST_PY_CFLAGS ${FAUST_PY_CFLAGS})
string(REGEX REPLACE ";?-I" ";-I" FAUST_PY_CFLAGS ${FAUST_PY_CFLAGS})
# find libfaust.a to statically link it into the python wrapper lib
#find_library(FAUST_LIB_PATH libfaust.a PATHS ${PROJECT_BINARY_DIR}/lib PATH_SUFFIXES release debug NO_DEFAULT_PATH)
# use rather generated expression to point to faust target file below ("$<TARGET_FILE:${FAUST_TARGET}>")
#message(STATUS "FAUST_LIB_PATH=${FAUST_LIB_PATH}")
find_library(MATIO_STATIC_LIB_PATH libmatio.a PATHS ${MATIO_LIB_DIR} NO_DEFAULT_PATH)
set(PYTHON_STATIC_LIB_PATH PYTHON_STATIC_LIB_PATH-NOTFOUND) # forcing search of lib (otherwise could be stuck to the previous iteration python)
find_library(PYTHON_STATIC_LIB_PATH libpython${PY_VER}.a PATHS ${PYTHON_PARENT_PATH} PATH_SUFFIXES libs NO_DEFAULT_PATH)
#message(STATUS "PYTHON_STATIC_LIB_PATH=${PYTHON_STATIC_LIB_PATH}")
if(PY_VER MATCHES 3)
set(PY_DYNLIB "FaustCorePy.cp${PY_VER}-win_amd64.pyd")
set(PY3_VER ${PY_VER_WITH_POINTS})
else() #py 2.7.x
set(PY_DYNLIB "FaustCorePy.pyd")
endif()
set(PY_STATIC_LIBS "$<TARGET_FILE:${FAUST_TARGET}>;${MATIO_STATIC_LIB_PATH};${PYTHON_STATIC_LIB_PATH}")
string(REGEX REPLACE "\n" ";" PY_STATIC_LIBS "${PY_STATIC_LIBS}")
add_custom_command(TARGET ${FAUST_PYTHON_TARGET} add_custom_command(TARGET ${FAUST_PYTHON_TARGET}
COMMAND ${CYTHON_EXE} COMMAND ${PYTHON_EXE}
ARGS "--cplus" "-o" "${FAUST_PYTHON_BIN_DIR}/FaustCorePy.cpp" "${FAUST_PYTHON_BIN_DIR}/FaustCorePy.pyx" ARGS "${FAUST_PYTHON_BIN_DIR}/setup.py" "build_ext" "--inplace"
# patch the weird bug: missing cmath include in cython generated cpp code
COMMAND echo \#include ^<cmath^> ">" "FAUST_CORE_TMP_FILE"
COMMAND type
ARGS "FAUST_CORE_TMP_FILE" "FaustCorePy.cpp" ">" "FaustCorePy.cpp2" 2>NUL
COMMAND type
ARGS "FaustCorePy.cpp2" ">" "FaustCorePy.cpp" 2>NUL
COMMAND ${CMAKE_CXX_COMPILER}
ARGS "-std=c++11" "-shared" "-DMS_WIN64" "-s" "-O2" "-o" "${PY_DYNLIB}" "${FAUST_PYTHON_BIN_DIR}/FaustCorePy.cpp" ${FAUST_PY_CFLAGS} ${PY_STATIC_LIBS}
COMMENT "Creating pyfaust${PY_VER}") COMMENT "Creating pyfaust${PY_VER}")
endif() endif()
endforeach() endforeach()
else() # ${CMAKE_GENERATOR} MATCHES "MinGW Makefiles"
# manually compiling cython extension instead of using setup.py in order to avoid visual studio to meddle in the compilation (we use mingw gcc here)
if(CYTHON_EXES_LEN)
foreach(INDEX RANGE 0 ${CYTHON_EXES_LEN} 1)
#message(STATUS "INDEX=${INDEX}")
if(${INDEX} LESS ${CYTHON_EXES_LEN})
list(GET CYTHON_EXES ${INDEX} CYTHON_EXE)
#list(GET PYTH0N_EXES ${INDEX} PYTHON_EXE)
# workaround to the previous command which fails to retrieve PYTHON_EXES item
if(${INDEX} EQUAL 0)
string(REGEX REPLACE "(.*);.*$" "\\1" PYTHON_EXE "${PYTHON_EXES}")
else()
string(REGEX REPLACE ".*;(.*)$" "\\1" PYTHON_EXE "${PYTHON_EXES}")
endif()
string(REGEX REPLACE "(.*)(/|\\\\).*" "\\1" PYTHON_PARENT_PATH ${PYTHON_EXE})
#message(STATUS "PYTHON_PARENT_PATH=${PYTHON_PARENT_PATH}")
#message(STATUS "PYTHON_EXE=${PYTHON_EXE}, PYTHON_EXES=${PYTHON_EXES}, INDEX=${INDEX}")
# get abbreviated python version
exec_program("${PYTHON_EXE}" ARGS "--version" OUTPUT_VARIABLE PY_VER RETURN_VALUE PY_RES)
#message(STATUS "PY_VER=${PY_VER}")
string(REGEX REPLACE "Python ([0-9]\\.[0-9]).*$" "\\1." PY_VER_WITH_POINTS ${PY_VER})
string(REGEX REPLACE "Python ([0-9])\\.([0-9]).*$" "\\1\\2" PY_VER ${PY_VER})
#message(STATUS "PY_VER=${PY_VER}")
# set header inclusion flags
string(REGEX REPLACE "," ";-I" FAUST_PY_CFLAGS ${FAUST_PYTHON_INCLUDE_DIR})
string(REGEX REPLACE "'" "" FAUST_PY_CFLAGS ${FAUST_PY_CFLAGS})
set(FAUST_PY_CFLAGS "${FAUST_PY_CFLAGS};-I${PYTHON_PARENT_PATH}\\include")
# get numpy header dir
execute_process(COMMAND "${PYTHON_EXE}" "-c" "import numpy;print(numpy.get_include())" OUTPUT_VARIABLE NUMPY_INCLUDE ERROR_VARIABLE PY_ERR RESULT_VARIABLE PY_RES)
#message(STATUS "NUMPY_INCLUDE=${NUMPY_INCLUDE}")
set(FAUST_PY_CFLAGS "-I${FAUST_PY_CFLAGS};-I${NUMPY_INCLUDE}")
string(REGEX REPLACE "\n" "" FAUST_PY_CFLAGS ${FAUST_PY_CFLAGS})
string(REGEX REPLACE ";?-I" ";-I" FAUST_PY_CFLAGS ${FAUST_PY_CFLAGS})
# find libfaust.a to statically link it into the python wrapper lib
#find_library(FAUST_LIB_PATH libfaust.a PATHS ${PROJECT_BINARY_DIR}/lib PATH_SUFFIXES release debug NO_DEFAULT_PATH)
# use rather generated expression to point to faust target file below ("$<TARGET_FILE:${FAUST_TARGET}>")
#message(STATUS "FAUST_LIB_PATH=${FAUST_LIB_PATH}")
find_library(MATIO_STATIC_LIB_PATH libmatio.a PATHS ${MATIO_LIB_DIR} NO_DEFAULT_PATH)
set(PYTHON_STATIC_LIB_PATH PYTHON_STATIC_LIB_PATH-NOTFOUND) # forcing search of lib (otherwise could be stuck to the previous iteration python)
find_library(PYTHON_STATIC_LIB_PATH libpython${PY_VER}.a PATHS ${PYTHON_PARENT_PATH} PATH_SUFFIXES libs NO_DEFAULT_PATH)
#message(STATUS "PYTHON_STATIC_LIB_PATH=${PYTHON_STATIC_LIB_PATH}")
if(PY_VER MATCHES 3)
set(PY_DYNLIB "FaustCorePy.cp${PY_VER}-win_amd64.pyd")
set(PY3_VER ${PY_VER_WITH_POINTS})
else() #py 2.7.x
set(PY_DYNLIB "FaustCorePy.pyd")
endif()
set(PY_STATIC_LIBS "$<TARGET_FILE:${FAUST_TARGET}>;${MATIO_STATIC_LIB_PATH};${PYTHON_STATIC_LIB_PATH}")
string(REGEX REPLACE "\n" ";" PY_STATIC_LIBS "${PY_STATIC_LIBS}")
add_custom_command(TARGET ${FAUST_PYTHON_TARGET}
COMMAND ${CYTHON_EXE}
ARGS "--cplus" "-o" "${FAUST_PYTHON_BIN_DIR}/FaustCorePy.cpp" "${FAUST_PYTHON_BIN_DIR}/FaustCorePy.pyx"
# patch the weird bug: missing cmath include in cython generated cpp code
COMMAND echo \#include ^<cmath^> ">" "FAUST_CORE_TMP_FILE"
COMMAND type
ARGS "FAUST_CORE_TMP_FILE" "FaustCorePy.cpp" ">" "FaustCorePy.cpp2" 2>NUL
COMMAND type
ARGS "FaustCorePy.cpp2" ">" "FaustCorePy.cpp" 2>NUL
COMMAND ${CMAKE_CXX_COMPILER}
ARGS "-std=c++11" "-shared" "-DMS_WIN64" "-s" "-O2" "-o" "${PY_DYNLIB}" "${FAUST_PYTHON_BIN_DIR}/FaustCorePy.cpp" ${FAUST_PY_CFLAGS} ${PY_STATIC_LIBS}
COMMENT "Creating pyfaust${PY_VER}")
endif()
endforeach()
endif()
endif() endif()
else() else()
message(FATAL_ERROR "Win32 python Faust version is supported only when compiling with MinGW") message(FATAL_ERROR "Win32 python Faust version is supported only when compiling with MinGW")
......
...@@ -15,64 +15,45 @@ if(version == ''): ...@@ -15,64 +15,45 @@ if(version == ''):
# it avoids error PEP440 # it avoids error PEP440
if sys.platform == 'win32': if sys.platform == 'win32':
# binary libs are compiled manually from cython and then integrated in
# wheel/egg pkgs here
from setuptools.dist import Distribution
from glob import glob
from shutil import copyfile
from os import sep from os import sep
class BinaryDistribution(Distribution): from glob import glob
"""Distribution which always forces a binary package with platform
name""" PyFaust = Extension('FaustCorePy',
def has_ext_modules(foo): sources = @PY_EXT_SOURCES@,
return True language = 'c++',
if sys.version_info > (3,0): include_dirs=[@FAUST_PYTHON_INCLUDE_DIR@, numpy.get_include()],
lib = glob('FaustCorePy.cp3*-win_amd64.pyd')[0] library_dirs=[@FAUST_PYTHON_LIB_DIR@],
else: libraries=[ @FAUST_PYTHON_LIBS@],
lib = 'FaustCorePy.pyd' extra_compile_args = [ "/w", "/EHsc" ],
# we need to copy the dyn. lib in pyfaust pkg #extra_link_args = [ "-s" ],
copyfile(lib, 'pyfaust'+sep+lib) extra_objects = @PYTHON_EXT_EXTRA_OBJECTS@
setup( )
name = 'pyfaust',
version = version, # cf. header
#ext_modules = cythonize(PyFaust),
distclass = BinaryDistribution, # forces setup-tools to set the arch in
# pkg name
packages = [ 'pyfaust' ],
url = 'http://faust.inria.fr',
description = 'TODO',
long_description = 'TODO',
classifiers = [ 'TODO' ],
install_requires = [ 'scipy', 'numpy', 'matplotlib>=2.0.0' ],
license = "GNU AFFERO GPL",
package_data = {
'pyfaust': [ 'data/*.mat', lib, 'license*.txt' ]
}
)
else: # linux and mac else: # linux and mac
PyFaust = Extension('FaustCorePy', PyFaust = Extension('FaustCorePy',
sources = ['@FAUST_PYTHON_BIN_DIR@/FaustCorePy.pyx'], sources = @PY_EXT_SOURCES@,
language = 'c++', language = 'c++',
include_dirs=[@FAUST_PYTHON_INCLUDE_DIR@, numpy.get_include()], include_dirs=[@FAUST_PYTHON_INCLUDE_DIR@, numpy.get_include()],
library_dirs=[@FAUST_PYTHON_LIB_DIR@], library_dirs=[@FAUST_PYTHON_LIB_DIR@],
libraries=['faust'@FAUST_PYTHON_LIBS@], libraries=[@FAUST_PYTHON_LIBS@],
extra_compile_args = [ "-std=c++11", "-O2"], extra_compile_args = [ "-std=c++11", "-O2"],
extra_link_args = [ "-s" ], extra_link_args = [ "-s" ],
extra_objects = @PYTHON_EXT_EXTRA_OBJECTS@ extra_objects = @PYTHON_EXT_EXTRA_OBJECTS@
) )
setup( setup(
name = 'pyfaust', name = 'pyfaust',
version = version, # cf. header version = version, # cf. header
ext_modules = cythonize(PyFaust), ext_modules = cythonize(PyFaust),
packages = [ 'pyfaust' ], packages = [ 'pyfaust' ],
url = 'http://faust.inria.fr', url = 'http://faust.inria.fr',
description = 'TODO', description = 'TODO',
long_description = 'TODO', long_description = 'TODO',
classifiers = [ 'TODO' ], classifiers = [ 'TODO' ],
install_requires = [ 'scipy', 'numpy', 'matplotlib>=2.0.0' ], #ENOTE: order matters (last pkg installed first) install_requires = [ 'scipy', 'numpy', 'matplotlib>=2.0.0' ], #ENOTE: order matters (last pkg installed first)
license = "GNU AFFERO GPL", license = "GNU AFFERO GPL",
package_data = { package_data = {
'pyfaust': [ 'data/*.mat', 'license*.txt' ] 'pyfaust': [ 'data/*.mat', 'license*.txt' ]
} }
) )
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment