Salome HOME
Ensure cmake_build_type is used in SALOME 9.12.0
[tools/sat_salome.git] / products / env_scripts / openmpi.py
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3
4 import os.path
5
6 def set_env(env, prereq_dir, version):
7     env.set('OPENMPIDIR', prereq_dir)
8     env.set('OPAL_PREFIX', prereq_dir) # be able to move openmpi install (packages)
9     env.set('MPI_ROOT_DIR', prereq_dir)  # update for cmake  
10     env.set('MPI_ROOT', prereq_dir)
11     env.set('MPI_INCLUDE_DIR', os.path.join(prereq_dir, 'include'))
12     env.set('MPI_C_COMPILER', os.path.join(prereq_dir, 'bin', 'mpicc'))
13     env.set('MPI_CXX_COMPILER', os.path.join(prereq_dir, 'bin', 'mpicxx'))
14     env.set('MPI_Fortran_COMPILER', os.path.join(prereq_dir, 'bin', 'mpifort'))
15     env.set('MPIEXEC_EXECUTABLE', os.path.join(prereq_dir, 'bin', 'mpiexec'))
16     env.set('MPI_C_FOUND', os.path.join(prereq_dir,'lib','libmpi.so'))
17     env.prepend('PATH', os.path.join(prereq_dir, 'bin'))
18     env.prepend('PATH', os.path.join(prereq_dir, 'include'))
19     env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir, 'lib'))
20     env.prepend('C_INCLUDE_PATH', os.path.join(prereq_dir, 'include'))  # needed for parallel h5py
21     if version in ['4.1.5'] :
22         env.set('PMIX_MCA_gds', 'hash')
23
24 def set_nativ_env(env):
25     prereq_dir='/usr'
26     prereq_bin='/usr/bin'
27     prereq_inc='/usr/include/openmpi'
28     try:
29         import distro
30         if any(distribution in distro.name().lower() for distribution in ["rocky", "centos", "fedora"]) :
31             prereq_dir='/usr/lib64/openmpi'
32             prereq_bin='/usr/lib64/openmpi/bin'
33             prereq_inc='/usr/include/openmpi-x86_64'
34         elif any(distribution in distro.name().lower() for distribution in ["debian", "ubuntu"]) :
35             prereq_dir='/usr/lib/x86_64-linux-gnu/openmpi'
36             prereq_inc= '/usr/lib/x86_64-linux-gnu/openmpi/include'
37     except:
38         import platform
39         if any(distribution in platform.linux_distribution()[0].lower() for distribution in ["rocky", "centos", "fedora"]) :
40             prereq_dir='/usr/lib64/openmpi'
41             prereq_bin='/usr/lib64/openmpi/bin'
42             prereq_inc='/usr/include/openmpi-x86_64'
43
44     env.set('MPI_ROOT_DIR', prereq_dir)
45     env.set('OPENMPIDIR', prereq_dir)
46     env.set('MPI_ROOT', prereq_dir)
47     env.set('MPI_C_COMPILER', os.path.join(prereq_bin,'mpicc'))
48     env.set('MPI_CXX_COMPILER', os.path.join(prereq_bin,'mpicxx'))
49     env.set('MPI_C_FOUND', os.path.join(prereq_dir,'lib','libmpi.so'))
50     env.set('MPI_INCLUDE_DIR', prereq_inc)
51     if prereq_bin != "/usr/bin":
52         env.prepend('PATH', prereq_bin)
53     env.prepend('LD_LIBRARY_PATH', os.path.join(prereq_dir,'lib'))