Overhaul mpi detection logic, add -Wl,-rpath option for Fedora
authorGustavo J. A. M. Carneiro <gjc@inescporto.pt>
Sun, 25 Sep 2011 15:43:30 +0100
changeset 7564 98a60a822ae5
parent 7563 fd2a26e455b3
child 7565 8f7dbc2acba9
Overhaul mpi detection logic, add -Wl,-rpath option for Fedora
src/mpi/wscript
--- a/src/mpi/wscript	Sat Sep 24 18:37:22 2011 +0100
+++ b/src/mpi/wscript	Sun Sep 25 15:43:30 2011 +0100
@@ -5,30 +5,19 @@
 from waflib.Errors import WafError
 
 def configure(conf):
-    env = conf.env
-    try:
-        conf.find_program('mpic++', var='MPI')
-    except WafError:
-        return
-    if Options.options.enable_mpi and conf.env['MPI']:
-        p = subprocess.Popen([conf.env['MPI'], '-showme:compile'], stdout=subprocess.PIPE)
-        flags = p.stdout.read().rstrip().split()
-        p.wait()
-        env.append_value("CXXFLAGS_MPI", flags)
-
-        p = subprocess.Popen([conf.env['MPI'], '-showme:link'], stdout=subprocess.PIPE)
-        flags = p.stdout.read().rstrip().split()
-        p.wait()
-        env.append_value("LINKFLAGS_MPI", flags)
-
-        env.append_value('CXXDEFINES', 'NS3_MPI')
-        conf.report_optional_feature("mpi", "MPI Support", True, '')
-        conf.env['ENABLE_MPI'] = True
+    if Options.options.enable_mpi:
+        if conf.check_cfg(path='mpic++', args='-showme',
+                          package='', uselib_store='MPI', mandatory=False):
+            conf.env.append_value('DEFINES_MPI', 'NS3_MPI')
+            conf.env['ENABLE_MPI'] = True
+            for libpath in conf.env.LIBPATH_MPI:
+                if 'mpi' in libpath:
+                    conf.env.append_value('LINKFLAGS_MPI', '-Wl,-rpath='+libpath)
+            conf.report_optional_feature("mpi", "MPI Support", True, '')            
+        else:
+            conf.report_optional_feature("mpi", "MPI Support", False, 'mpic++ not found')
     else:
-        if Options.options.enable_mpi:
-            conf.report_optional_feature("mpi", "MPI Support", False, 'mpic++ not found')
-        else:
-            conf.report_optional_feature("mpi", "MPI Support", False, 'option --enable-mpi not selected')
+        conf.report_optional_feature("mpi", "MPI Support", False, 'option --enable-mpi not selected')
 
 
 def build(bld):