From 4eca761d9bfb82e751f5e52a776843aea7496d44 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Keck <Jean-Baptiste.Keck@imag.fr> Date: Wed, 11 Jan 2017 16:59:41 +0100 Subject: [PATCH] tryfix build fortran --- CMakeLists.txt | 4 ++-- setup.py.in | 44 ++++++++++++++++++++++---------------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3a16ffe9c..4db57300a 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -195,7 +195,7 @@ if(WITH_FFTW) add_definitions(${FFTW_DEFINES}) endif() -if(WITH_LIB_CXX) +if(USE_CXX) compile_with(Boost REQUIRED) endif() @@ -388,7 +388,7 @@ if(USE_CXX OR USE_FORTRAN) add_subdirectory(src) get_directory_property(FORTRAN_INCLUDE_DIRS DIRECTORY ${CMAKE_SOURCE_DIR}/src - DEFINITION FORTRAN_INCLUDE_DIRS) + DEFINITION INCLUDE_DIRECTORIES) endif() if(USE_CXX) diff --git a/setup.py.in b/setup.py.in index 9fa5158b7..6d2e7472f 100644 --- a/setup.py.in +++ b/setup.py.in @@ -53,8 +53,9 @@ def parseCMakeDefines(var): # --> res = [('VAR', 'VAL1'), ('VAR2', 'VAL2'), ('VAR3', 'VAL3')] """ defines = parseCMakeVar(var) - if defines is None: + 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*') @@ -65,7 +66,7 @@ def parseCMakeDefines(var): if m: res.append(m.group(1,2)) else: - print "\tWarning: Could extract cmake define from '", d, "'." + print "\tWarning: Could not extract cmake define from '", d, "'." return res # --- external libraries to be linked with --- @@ -76,20 +77,18 @@ extra_flags = [] for lib in hysop_link_libraries: res = lib.find('framework') if res >= 0: - index = hysop_link_libraries.index(lib) + index = hysop_link_libraries.index(lib) filename = os.path.basename(lib) hysop_link_libraries.pop(index) filename = filename.split('.')[0] extra_flags.append('-framework ' + filename) hysop_link_libraries += extra_flags -#hysop_link_libraries_names = set([]) -#hysop_link_libraries_dirs = set([]) -# use set to avoid dupl. -#link_list = "" + +# hysop_link_libraries_names = set() +# hysop_link_libraries_dirs = set() # for lib in hysop_link_libraries: -# hysop_link_libraries_names.add(os.path.basename(lib)) -# hysop_link_libraries_dirs.add(os.path.dirname(lib)) -# link_list += lib + " " + # hysop_link_libraries_names.add(os.path.basename(lib)) + # hysop_link_libraries_dirs.add(os.path.dirname(lib)) # hysop_link_libraries_names = list(hysop_link_libraries_names) # hysop_link_libraries_dirs = list(hysop_link_libraries_dirs) @@ -134,6 +133,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. @@ -143,24 +143,25 @@ def create_fortran_extension(name, pyf_file=None, src_dirs=None, sources=None, # --- set f2py options --- f2py_options = ['--no-lower', '--no-wrap-functions'] options = [] - if debug_mode == 0: + 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("@MPI_Fortran_INCLUDE_PATH@") - inc_dir.append('@CMAKE_Fortran_MODULE_DIRECTORY@') + inc_dir = parseCMakeVar("@FORTRAN_INCLUDE_DIRS@") + inc_dir += parseCMakeVar("@MPI_Fortran_INCLUDE_PATH@") + inc_dir += parseCMakeVar('@CMAKE_Fortran_MODULE_DIRECTORY@') # --- set compilation flags --- fortran_flags = ['@Fortran_FLAGS@'] - #includes = parseCMakeVar("@FORTRAN_INCLUDE_DIRS@") - #if(includes != None): - # for exti in includes: - #i nc_dir.append(exti) - #libs += hysop_link_libraries_names - #libdir += hysop_link_libraries_dirs + + # --- set include dir --- + # inc_dir += hysop_link_libraries_dirs + # --- set external libraries --- + # libs += hysop_link_libraries_names # 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, @@ -228,9 +229,8 @@ def create_swig_extension(name, inc_dirs, src_dirs=None, sources=None): '-c++', '-extranative', '-safecstrings'] extern_includes = parseCMakeVar("@CXX_EXT_INCLUDES@") - if(extern_includes is not None): - for exti in extern_includes: - include_dirs.append(exti) + for exti in extern_includes: + include_dirs.append(exti) libraries = parseCMakeVar("@CXX_EXT_LIBS@") library_dirs = parseCMakeVar("@CXX_EXT_LIB_DIRS@") -- GitLab