1*55a74a43SLisandro Dalcin#!/usr/bin/env python 2*55a74a43SLisandro Dalcin 3*55a74a43SLisandro Dalcin#$ python setup.py build_ext --inplace 4*55a74a43SLisandro Dalcin 5*55a74a43SLisandro Dalcin# a bit of monkeypatching ... 6*55a74a43SLisandro Dalcintry: 7*55a74a43SLisandro Dalcin from numpy.distutils.fcompiler import FCompiler 8*55a74a43SLisandro Dalcin def runtime_library_dir_option(self, dir): 9*55a74a43SLisandro Dalcin return self.c_compiler.runtime_library_dir_option(dir) 10*55a74a43SLisandro Dalcin FCompiler.runtime_library_dir_option = \ 11*55a74a43SLisandro Dalcin runtime_library_dir_option 12*55a74a43SLisandro Dalcinexcept Exception: 13*55a74a43SLisandro Dalcin pass 14*55a74a43SLisandro Dalcin 15*55a74a43SLisandro Dalcin 16*55a74a43SLisandro Dalcindef configuration(parent_package='',top_path=None): 17*55a74a43SLisandro Dalcin INCLUDE_DIRS = [] 18*55a74a43SLisandro Dalcin LIBRARY_DIRS = [] 19*55a74a43SLisandro Dalcin LIBRARIES = [] 20*55a74a43SLisandro Dalcin 21*55a74a43SLisandro Dalcin # PETSc 22*55a74a43SLisandro Dalcin import os 23*55a74a43SLisandro Dalcin PETSC_DIR = os.environ['PETSC_DIR'] 24*55a74a43SLisandro Dalcin PETSC_ARCH = os.environ.get('PETSC_ARCH', '') 25*55a74a43SLisandro Dalcin from os.path import join, isdir 26*55a74a43SLisandro Dalcin if PETSC_ARCH and isdir(join(PETSC_DIR, PETSC_ARCH)): 27*55a74a43SLisandro Dalcin INCLUDE_DIRS += [join(PETSC_DIR, PETSC_ARCH, 'include'), 28*55a74a43SLisandro Dalcin join(PETSC_DIR, 'include')] 29*55a74a43SLisandro Dalcin LIBRARY_DIRS += [join(PETSC_DIR, PETSC_ARCH, 'lib')] 30*55a74a43SLisandro Dalcin else: 31*55a74a43SLisandro Dalcin if PETSC_ARCH: pass # XXX should warn ... 32*55a74a43SLisandro Dalcin INCLUDE_DIRS += [join(PETSC_DIR, 'include')] 33*55a74a43SLisandro Dalcin LIBRARY_DIRS += [join(PETSC_DIR, 'lib')] 34*55a74a43SLisandro Dalcin LIBRARIES += [#'petscts', 'petscsnes', 'petscksp', 35*55a74a43SLisandro Dalcin #'petscdm', 'petscmat', 'petscvec', 36*55a74a43SLisandro Dalcin 'petsc'] 37*55a74a43SLisandro Dalcin 38*55a74a43SLisandro Dalcin # PETSc for Python 39*55a74a43SLisandro Dalcin import petsc4py 40*55a74a43SLisandro Dalcin INCLUDE_DIRS += [petsc4py.get_include()] 41*55a74a43SLisandro Dalcin 42*55a74a43SLisandro Dalcin # Configuration 43*55a74a43SLisandro Dalcin from numpy.distutils.misc_util import Configuration 44*55a74a43SLisandro Dalcin config = Configuration('', parent_package, top_path) 45*55a74a43SLisandro Dalcin config.add_extension('Bratu2D', 46*55a74a43SLisandro Dalcin sources = ['Bratu2D.pyf', 47*55a74a43SLisandro Dalcin 'Bratu2D.F90'], 48*55a74a43SLisandro Dalcin depends = ['Bratu2Dmodule.h'], 49*55a74a43SLisandro Dalcin f2py_options=['--quiet'], 50*55a74a43SLisandro Dalcin define_macros=[('F2PY_REPORT_ON_ARRAY_COPY',1)], 51*55a74a43SLisandro Dalcin include_dirs=INCLUDE_DIRS + [os.curdir], 52*55a74a43SLisandro Dalcin libraries=LIBRARIES, 53*55a74a43SLisandro Dalcin library_dirs=LIBRARY_DIRS, 54*55a74a43SLisandro Dalcin runtime_library_dirs=LIBRARY_DIRS) 55*55a74a43SLisandro Dalcin return config 56*55a74a43SLisandro Dalcin 57*55a74a43SLisandro Dalcinif __name__ == "__main__": 58*55a74a43SLisandro Dalcin from numpy.distutils.core import setup 59*55a74a43SLisandro Dalcin setup(**configuration(top_path='').todict()) 60