From 4c4a148edc7e790d3d6ababccd1cdc49b14cb19f Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Keck <jean-baptiste.keck@imag.fr> Date: Wed, 18 Sep 2019 11:22:41 +0200 Subject: [PATCH] build option fix for cpp and fortran --- setup.py.in | 40 ++++++++++++++++++---------------------- 1 file changed, 18 insertions(+), 22 deletions(-) mode change 100755 => 100644 setup.py.in diff --git a/setup.py.in b/setup.py.in old mode 100755 new mode 100644 index 370ff9bda..0af718ed2 --- a/setup.py.in +++ b/setup.py.in @@ -24,22 +24,18 @@ if enable_cpp: swig_executable = find_executable("@SWIG_EXECUTABLE@") -def parseCMakeVar(var): +def parseCMakeVar(var, sep=';'): """ Post-process cmake list-like variables. Example:: - - a = parseCMakeVar("var1;var2;var3;") + a = parseCMakeVar("var1;var2 ; var3;") # --> a = ['var', 'var2', 'var3'] """ if var != "": - res = list(set(var.split(';'))) - # list/set stuff to avoid duplicates - # remove empty strings to avoid '-I -I' things leading to bugs - if res.count(''): - res.remove('') - return res + # split and remove empty strings + res = list(var.split(sep)) + return list(filter(len, map(str.strip, res))) else: return [] @@ -57,7 +53,7 @@ def parseCMakeDefines(var): defines = parseCMakeVar(var) if len(defines)==0: return None - + # regex to match compiler defines like -DMACRO_NAME or # -DMACRO_NAME = MACRO_VALUE p = re.compile('\s*(?:-D)?\s*(\w+)(?:\s*=\s*(\w+))?\s*') @@ -126,7 +122,7 @@ def create_fortran_extension(name, pyf_file=None, src_dirs=None, sources=None, for sdir in src_dirs: sources += glob.glob(os.path.join(sdir, '*.f95')) sources += glob.glob(os.path.join(sdir, '*.f90')) - + # Reorder source list with fortran modules # dependencies. It seems that this is not taken into # account in f2py or distutils. @@ -136,9 +132,10 @@ def create_fortran_extension(name, pyf_file=None, src_dirs=None, sources=None, # --- set f2py options --- f2py_options = ['--no-lower', '--no-wrap-functions'] options = [] - options.append(('F2PY_REPORT_ON_ARRAY_COPY', '1')) - if debug_mode and (os.uname()[0] == 'Linux'): - options.append(('F2PY_REPORT_ATEXIT', '1')) + if debug_mode == 1: + options.append(('F2PY_REPORT_ON_ARRAY_COPY', '1')) + if os.uname()[0] == 'Linux': + options.append(('F2PY_REPORT_ATEXIT', '1')) # --- set include dir --- inc_dir = parseCMakeVar("@FORTRAN_INCLUDE_DIRS@") @@ -146,13 +143,12 @@ def create_fortran_extension(name, pyf_file=None, src_dirs=None, sources=None, inc_dir += parseCMakeVar('@CMAKE_Fortran_MODULE_DIRECTORY@') # --- set compilation flags --- - fortran_flags = ['@Fortran_FLAGS@'] - fortran_flags = list(set([_ for _ in fortran_flags[0].split(' ') if _ != ''])) + fortran_flags = parseCMakeVar('@Fortran_FLAGS@', sep=' ') # we trust cmake for external libraries and # add them to linker, without using libraries option extra_link_args = hysop_link_libraries - + ext_fort = Extension(name=name, sources=sources, f2py_options=f2py_options, @@ -223,8 +219,8 @@ def create_swig_extension(name, inc_dirs, src_dirs=None, sources=None): libraries = parseCMakeVar("@CXX_EXT_LIBS@") library_dirs = parseCMakeVar("@CXX_EXT_LIB_DIRS@") - extra_compile_args = parseCMakeVar("@CXX_FLAGS@") - extra_link_args = parseCMakeVar("@CXX_LINKER_FLAGS@") + extra_compile_args = parseCMakeVar("@CXX_FLAGS@", sep=' ') + extra_link_args = parseCMakeVar("@CXX_LINKER_FLAGS@", sep=' ') define_macros = parseCMakeDefines("@CXX_EXTRA_DEFINES@") swig_ext = Extension(name, sources=sources, language='c++', swig_opts=swig_opts, @@ -309,7 +305,7 @@ if enable_fortran is "ON": num_dirs = [] for sd in subdirs: num_dirs.append(os.path.join(fortran_root, sd)) - + hysop_libdir = [ld.strip() for ld in hysop_libdir] # hysop_libdir = ' '.join([ '-L{}'.format(ld) if ld[1]!='L' else hysop_libdir]) num_dirs.append('@GENERATED_FORTRAN_FILES_DIR@') @@ -367,8 +363,8 @@ config = Configuration( description=descr, author=authors, author_email='hysop-members@lists.forge.imag.fr', - url='https://gricad-gitlab.univ-grenoble-alpes.fr/particle_methods/hysop', - license='Apache Licence, Version 2.0 (APLv2)', + url='https://forge.imag.fr/projects/hysop/', + license='GNU General Public License (GPLv3)', package_dir={'': '@CMAKE_SOURCE_DIR@'}, ext_modules=ext_modules, packages=packages, -- GitLab