db7cc01
Revision: 523
db7cc01
          http://rpy.svn.sourceforge.net/rpy/?rev=523&view=rev
db7cc01
Author:   warnes
db7cc01
Date:     2008-05-14 11:31:21 -0700 (Wed, 14 May 2008)
db7cc01
db7cc01
Log Message:
db7cc01
-----------
db7cc01
Use the 'R CMD config LAPACK_LIBS' command to determin the appropriate link flags for lapack, instead of blindly assuming that '-L<RHOME>/lib -lRlapack' is the correct magic incantation.
db7cc01
db7cc01
Modified Paths:
db7cc01
--------------
db7cc01
    trunk/rpy/rpy_tools.py
db7cc01
    trunk/rpy/setup.py
db7cc01
db7cc01
Modified: trunk/rpy/rpy_tools.py
db7cc01
===================================================================
db7cc01
--- trunk/rpy/rpy_tools.py	2008-05-14 17:51:40 UTC (rev 522)
db7cc01
+++ trunk/rpy/rpy_tools.py	2008-05-14 18:31:21 UTC (rev 523)
db7cc01
@@ -143,3 +143,20 @@
db7cc01
                        % PYTHON_DIR )
db7cc01
     
db7cc01
   return PYTHON_DIR
db7cc01
+
db7cc01
+def get_R_LAPACK_LIB_FLAGS(RHOME=get_R_HOME()):
db7cc01
+  """
db7cc01
+  Determine the necessary link arguments for lapack 
db7cc01
+  """
db7cc01
+  rexec = os.path.join(RHOME, 'bin', 'R')
db7cc01
+  stat, output = getstatusoutput('"%s" CMD config LAPACK_LIBS' % rexec )
db7cc01
+  if stat or len(output)<=0:
db7cc01
+    raise RuntimeError("Couldn't execute the R interpreter" +
db7cc01
+                       " `%s'.\n" % rexec )
db7cc01
+  
db7cc01
+  LAPACK_LIB_FLAGS = output.strip()
db7cc01
+  if not LAPACK_LIB_FLAGS:
db7cc01
+    raise RuntimeError("Couldn't obtain LAPACK_LIBS information from output\n"
db7cc01
+                       "of `R CMD config LAPACK_LIBS'.\n")
db7cc01
+  
db7cc01
+  return LAPACK_LIB_FLAGS
db7cc01
db7cc01
Modified: trunk/rpy/setup.py
db7cc01
===================================================================
db7cc01
--- trunk/rpy/setup.py	2008-05-14 17:51:40 UTC (rev 522)
db7cc01
+++ trunk/rpy/setup.py	2008-05-14 18:31:21 UTC (rev 523)
db7cc01
@@ -150,23 +150,20 @@
db7cc01
         library_dirs= r_libs
db7cc01
         runtime_libs = r_libs
db7cc01
         extra_compile_args=[]
db7cc01
-    elif sys.platform=='osf1V5':
db7cc01
-        include_dirs = [ os.path.join(RHOME.strip(), 'include'), 
db7cc01
-                         'src' ]
db7cc01
-        libraries=['R','Rlapack']
db7cc01
-        library_dirs = r_libs
db7cc01
-        runtime_libs = r_libs
db7cc01
-        extra_compile_args=["-shared"]
db7cc01
-        source_files = source_files + ["src/setenv.c"]
db7cc01
+
db7cc01
     else: # unix-like systems, this is known to work for Linux and Solaris
db7cc01
         include_dirs = [ os.path.join(RHOME.strip(), 'include'),
db7cc01
                          'src', '/usr/share/R/include', "/usr/include/R"]
db7cc01
-        libraries=['R','Rlapack']
db7cc01
         library_dirs = r_libs
db7cc01
         runtime_libs = r_libs
db7cc01
         extra_compile_args=["-shared"]
db7cc01
         source_files = source_files + ["src/setenv.c"]
db7cc01
 
db7cc01
+        libraries=['R']
db7cc01
+
db7cc01
+        # Ask R to tell us how to properly link against lapack
db7cc01
+        extra_compile_args += [ rpy_tools.get_R_LAPACK_LIB_FLAGS( RHOME ) ]
db7cc01
+
db7cc01
     # Discover which array packages are present
db7cc01
     try: 
db7cc01
         import numpy