diff options
| author | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
|---|---|---|
| committer | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
| commit | 7dfcc480ba1e19bd3232349fc733caef94034292 (patch) | |
| tree | 03ee104eb8846d5cc1a981d267687a729185d3f3 /PyGan/src/setup_cle2000.py | |
Initial commit from Polytechnique Montreal
Diffstat (limited to 'PyGan/src/setup_cle2000.py')
| -rw-r--r-- | PyGan/src/setup_cle2000.py | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/PyGan/src/setup_cle2000.py b/PyGan/src/setup_cle2000.py new file mode 100644 index 0000000..d416245 --- /dev/null +++ b/PyGan/src/setup_cle2000.py @@ -0,0 +1,166 @@ +# +# python3 setup_cle2000.py install --home=. +# +from sys import version_info +if version_info[0] == 3 and version_info[1] >= 12: + from setuptools import setup, Extension +elif version_info[0] > 3: + from setuptools import setup, Extension +else: + from distutils.core import setup, Extension +import sysconfig + +def main(): + import os + from sysconfig import get_config_var + mach = os.path.basename(os.getcwd()) + Code = os.environ.get("CODE_EMBEDDED", None) # Code selection + Compiler = os.environ.get("COMPILER", None) # Compiler selection + FortranLib = os.environ.get(Compiler, None) # directory with libfortran.a + HDF5Lib = os.environ.get("HDF5_API", None) # directory with libhdf5.a + pylib = os.path.basename(get_config_var("LIBDIR")) # get lib or lib64 + print("install Cle2000 binding to", Code, "on directory",mach, "pylib=",pylib, "Compiler=",Compiler) + if Compiler == "NVTOOLS": + libdir="../../lib/"+mach+"_nvidia" + libUtl="../../../Utilib/lib/"+mach+"_nvidia" + libTri="../../../Trivac/lib/"+mach+"_nvidia" + libDra="../../../Dragon/lib/"+mach+"_nvidia" + libDon="../../../Donjon/lib/"+mach+"_nvidia" + extralink=["-lnvcpumath","-lnvf","-lnvc"] + elif Compiler == "LLVMTOOLS": + libdir="../../lib/"+mach+"_llvm" + libUtl="../../../Utilib/lib/"+mach+"_llvm" + libTri="../../../Trivac/lib/"+mach+"_llvm" + libDra="../../../Dragon/lib/"+mach+"_llvm" + libDon="../../../Donjon/lib/"+mach+"_llvm" + extralink=["-lFortranRuntime", "-lFortranDecimal", "-lclang_rt.osx"] + elif Compiler == "INTELTOOLS": + libdir="../../lib/"+mach+"_intel" + libUtl="../../../Utilib/lib/"+mach+"_intel" + libTri="../../../Trivac/lib/"+mach+"_intel" + libDra="../../../Dragon/lib/"+mach+"_intel" + libDon="../../../Donjon/lib/"+mach+"_intel" + extralink=[ ] + else: + libdir="../../lib/"+mach + libUtl="../../../Utilib/lib/"+mach + libTri="../../../Trivac/lib/"+mach + libDra="../../../Dragon/lib/"+mach + libDon="../../../Donjon/lib/"+mach + extralink=["-lgfortran", ] + print("debug Compiler=",Compiler,"libdir=",libdir,"Code=",Code) + + if Code == "GANLIB": + setup (name="Cle2000", + version="5.0", + description="Python bindings for Cle-2000 with GANLIB", + author="Alain Hebert", + author_email="alain.hebert@polymtl.ca", + license="LGPL", + ext_modules=[Extension('cle2000',sources=['cle2000module.c'], + extra_link_args = extralink, + include_dirs=["../../../Ganlib/src"], + library_dirs=[libdir,FortranLib,HDF5Lib], + runtime_library_dirs=[FortranLib,HDF5Lib], + libraries=["Ganlib","hdf5"] ) ]) + elif Code == "TRIVAC": + setup (name="Cle2000", + version="5.0", + description="Python bindings for Cle-2000 with TRIVAC", + author="Alain Hebert", + author_email="alain.hebert@polymtl.ca", + license="LGPL", + ext_modules=[Extension('cle2000',sources=['cle2000module.c'], + define_macros=[('__trivac__', None)], + extra_link_args = extralink, + include_dirs=["../../../Ganlib/src"], + library_dirs=[libdir,FortranLib,HDF5Lib,libUtl,libTri], + runtime_library_dirs=[FortranLib,HDF5Lib], + libraries=["Trivac","Utilib","Ganlib","hdf5"] ) ]) + elif Code == "DRAGON": + setup (name="Cle2000", + version="5.0", + description="Python bindings for Cle-2000 with DRAGON", + author="Alain Hebert", + author_email="alain.hebert@polymtl.ca", + license="LGPL", + ext_modules=[Extension('cle2000',sources=['cle2000module.c'], + define_macros=[('__dragon__', None)], + extra_link_args = extralink, + include_dirs=["../../../Ganlib/src"], + library_dirs=[libdir,FortranLib,HDF5Lib,libUtl,libTri,libDra], + runtime_library_dirs=[FortranLib,HDF5Lib], + libraries=["Dragon","Trivac","Utilib","Ganlib","hdf5"] ) ]) + elif Code == "DONJON": + setup (name="Cle2000", + version="5.0", + description="Python bindings for Cle-2000 with DONJON", + author="Alain Hebert", + author_email="alain.hebert@polymtl.ca", + license="LGPL", + ext_modules=[Extension('cle2000',sources=['cle2000module.c'], + define_macros=[('__donjon__', None)], + extra_link_args = extralink, + include_dirs=["../../../Ganlib/src"], + library_dirs=[libdir,FortranLib,HDF5Lib,libUtl,libTri,libDra,libDon], + runtime_library_dirs=[FortranLib,HDF5Lib], + libraries=["Donjon","Dragon","Trivac","Utilib","Ganlib","hdf5"] ) ]) + elif Code == "GANLIB_OMP": + setup (name="Cle2000", + version="5.0", + description="Python bindings for Cle-2000 with GANLIB_OMP", + author="Alain Hebert", + author_email="alain.hebert@polymtl.ca", + license="LGPL", + ext_modules=[Extension('cle2000',sources=['cle2000module.c'], + extra_link_args = ["-lgomp"]+extralink, + include_dirs=["../../../Ganlib/src"], + library_dirs=[libdir,FortranLib,HDF5Lib], + runtime_library_dirs=[FortranLib,HDF5Lib], + libraries=["Ganlib","hdf5"] ) ]) + elif Code == "TRIVAC_OMP": + setup (name="Cle2000", + version="5.0", + description="Python bindings for Cle-2000 with TRIVAC_OMP", + author="Alain Hebert", + author_email="alain.hebert@polymtl.ca", + license="LGPL", + ext_modules=[Extension('cle2000',sources=['cle2000module.c'], + define_macros=[('__trivac__', None)], + extra_link_args = ["-lgomp"]+extralink, + include_dirs=["../../../Ganlib/src"], + library_dirs=[libdir,FortranLib,HDF5Lib,libUtl,libTri], + runtime_library_dirs=[FortranLib,HDF5Lib], + libraries=["Trivac","Utilib","Ganlib","hdf5"] ) ]) + elif Code == "DRAGON_OMP": + setup (name="Cle2000", + version="5.0", + description="Python bindings for Cle-2000 with DRAGON_OMP", + author="Alain Hebert", + author_email="alain.hebert@polymtl.ca", + license="LGPL", + ext_modules=[Extension('cle2000',sources=['cle2000module.c'], + define_macros=[('__dragon__', None)], + extra_link_args = ["-lgomp"]+extralink, + include_dirs=["../../../Ganlib/src"], + library_dirs=[libdir,FortranLib,HDF5Lib,libUtl,libTri,libDra], + runtime_library_dirs=[FortranLib,HDF5Lib], + libraries=["Dragon","Trivac","Utilib","Ganlib","hdf5"] ) ]) + elif Code == "DONJON_OMP": + setup (name="Cle2000", + version="5.0", + description="Python bindings for Cle-2000 with DONJON_OMP", + author="Alain Hebert", + author_email="alain.hebert@polymtl.ca", + license="LGPL", + ext_modules=[Extension('cle2000',sources=['cle2000module.c'], + define_macros=[('__donjon__', None)], + extra_link_args = ["-lgomp"]+extralink, + include_dirs=["../../../Ganlib/src"], + library_dirs=[libdir,FortranLib,HDF5Lib,libUtl,libTri,libDra,libDon], + runtime_library_dirs=[FortranLib,HDF5Lib], + libraries=["Donjon","Dragon","Trivac","Utilib","Ganlib","hdf5"] ) ]) + else: + raise ValueError(Code+" is not implemented for setup.py bindings") +if __name__ == "__main__": + main() |
