Newer
Older
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
setup.py file for @PYPACKAGE_NAME@
"""
from numpy.distutils.core import setup, Extension
from numpy.distutils.misc_util import Configuration
Jean-Matthieu Etancelin
committed
import os
import glob
# List of all directories for sources
#os.listdir(os.path.join('ParMePy','New_ParmePy'))
# Full package name
name = '@PYPACKAGE_NAME@'
# List of modules (directories) to be included
packages = ['parmepy',
'parmepy.domain',
'parmepy.fields',
Jean-Matthieu Etancelin
committed
'parmepy.operator',
'parmepy.problem',
'parmepy.particular_solvers.integrator',
'parmepy.tools',
'parmepy.test',
'parmepy.test.test_domain',
'parmepy.test.test_field',
'parmepy.test.test_operator',
'parmepy.test.test_particular_solvers']
# 'examples']
# Enable this to get debug info
# DISTUTILS_DEBUG=1
while inc_dir.count('') >0:
inc_dir.remove('') # To avoid -I -I in compiler call. Result in a bug.
parmes_dir = '@CMAKE_BINARY_DIR@/Modules'
inc_dir.append(parmes_dir)
Jean-Matthieu Etancelin
committed
parmes_libdir = ['@CMAKE_BINARY_DIR@/src']
parmeslib = ['@PARMES_LIBRARY_NAME@']
f2py_options = ['--no-lower']
## scales_src = glob.glob('@CMAKE_SOURCE_DIR@/parmepy/scales2py/*.f90')
## scalesModule = Extension(name='parmepy.scales2py',
## f2py_options=f2py_options,
## sources=scales_src,
## include_dirs=inc_dir,
## library_dirs=parmes_libdir,
## libraries=parmeslib,
## define_macros=[('F2PY_REPORT_ON_ARRAY_COPY', '1')])
fortran_dir = '@CMAKE_SOURCE_DIR@/parmepy/f2py/'
enable_fortran = False
#fortran_src = glob.glob('@CMAKE_SOURCE_DIR@/parmepy/f2py/*.f90')
fortran_src = [fortran_dir+'parameters.f90',fortran_dir+'fftw2py.f90']
enable_fortran = True
fftwdir = '@FFTWLIB@'
fftwdir = os.path.split(fftwdir)[0]
parmeslib.append('fftw3')
parmeslib.append('fftw3_mpi')
parmes_libdir.append(fftwdir)
#fftwdir_incdir = fftwdir+"/../include"
#inc_dir.append(fftwdir_incdir)
withscales = '@WITH_SCALES@'
if(withscales is "ON"):
fortran_src.append(fortran_dir+'scales2py.f90')
enable_fortran = True
if(enable_fortran):
# rep = '@CMAKE_SOURCE_DIR@/parmepy/f2py/'
# fortran_src.insert(0,rep+'/parameters.f90')
Jean-Matthieu Etancelin
committed
f2py_options=f2py_options,
sources=fortran_src,
Jean-Matthieu Etancelin
committed
library_dirs=parmes_libdir,
libraries=parmeslib,
define_macros=[('F2PY_REPORT_ON_ARRAY_COPY', '1'),('F2PY_REPORT_ATEXIT','1')])
config = Configuration(name=name,
version='@PYPACKAGE_VERSION@',
description='Particular Methods implementation in Python',
author='Jean-Matthieu Etancelin, Franck Pérignon, Christophe Picard',
author_email='parmes-devel@lists.forge.imag.fr',
url='https://forge.imag.fr/projects/parmes/',
license='GNU public license',
Jean-Matthieu Etancelin
committed
package_dir={'': '@CMAKE_SOURCE_DIR@'},
Jean-Matthieu Etancelin
committed
packages=packages,
data_files=[('./parmepy/particular_solvers/gpu_src',
['@CMAKE_SOURCE_DIR@/parmepy/particular_solvers/gpu_src/' + cl_file
for cl_file in os.listdir('@CMAKE_SOURCE_DIR@/parmepy/particular_solvers/gpu_src/')
if cl_file[0]!='.' and cl_file[-3:]=='.cl'])]
setup(**config.todict())
# In case of cmake WITH_TESTS=ON
if('@WITH_TESTS@' is "ON"):
cTestFile = open('@CMAKE_CURRENT_BINARY_DIR@/CTestTestfile.cmake','r')
cTestStr = ""
for line in cTestFile:
cTestStr += line.replace('BUILD_MAIN_PYTEST', config.get_build_temp_dir().replace('temp','lib')+'/parmepy/test/main_unit_tests.py')
cTestFile.close()
cTestFile = open('@CMAKE_CURRENT_BINARY_DIR@/CTestTestfile.cmake','w')
cTestFile.write(cTestStr)
cTestFile.close()