From 477aa3ed12545571d0e226ca527e9f472579d2e7 Mon Sep 17 00:00:00 2001
From: Fabian Pedregosa <fabian.pedregosa@inria.fr>
Date: Thu, 29 Apr 2010 09:52:30 +0000
Subject: [PATCH] Add the option to link against system-wide libsvm by editing
 site.cfg

This should make packager's life easier: linking against system-wide libsvm
should be a matter of uncommenting relevant lines in file site.cfg.

Something similar should be done with liblinear.

git-svn-id: https://scikit-learn.svn.sourceforge.net/svnroot/scikit-learn/trunk@713 22fbfee3-77ab-4535-9bad-27d1bd3bc7d8
---
 .../compression/cost_function/setup.py        |  2 +-
 .../manifold/regression/cluster/setup.py      |  2 +-
 scikits/learn/setup.py                        | 28 +++++++++++++++----
 site.cfg                                      | 11 ++++++--
 4 files changed, 33 insertions(+), 10 deletions(-)

diff --git a/scikits/learn/manifold/compression/cost_function/setup.py b/scikits/learn/manifold/compression/cost_function/setup.py
index 41c4894b6e..39d588f49a 100644
--- a/scikits/learn/manifold/compression/cost_function/setup.py
+++ b/scikits/learn/manifold/compression/cost_function/setup.py
@@ -10,7 +10,7 @@ def configuration(parent_package='', top_path=None):
     site_cfg = ConfigParser()
     site_cfg.read(get_standard_file('site.cfg'))
 
-    if site_cfg.has_section('scikit-learn') and site_cfg.getboolean('scikit-learn', 'use_boost'):
+    if site_cfg.has_section('boost') and site_cfg.getboolean('boost', 'use_boost'):
         # build this extension if enabled in site.cfg
         include_dirs=['../../src', '.', numpy.get_include()]
         config.add_extension('_cost_function',
diff --git a/scikits/learn/manifold/regression/cluster/setup.py b/scikits/learn/manifold/regression/cluster/setup.py
index aaeb3e9dbb..8229eca076 100644
--- a/scikits/learn/manifold/regression/cluster/setup.py
+++ b/scikits/learn/manifold/regression/cluster/setup.py
@@ -9,7 +9,7 @@ def configuration(parent_package='', top_path=None):
 
     site_cfg = ConfigParser()
     site_cfg.read(get_standard_file('site.cfg'))
-    if site_cfg.has_section('scikit-learn') and site_cfg.getboolean('scikit-learn', 'use_boost'):
+    if site_cfg.has_section('boost') and site_cfg.getboolean('boost', 'use_boost'):
         # build this extension if enabled in site.cfg
         include_dirs=['../../src', '.', numpy.get_include()]
         config.add_extension('_modified_general_clustering',
diff --git a/scikits/learn/setup.py b/scikits/learn/setup.py
index d0d9044947..f527d14881 100644
--- a/scikits/learn/setup.py
+++ b/scikits/learn/setup.py
@@ -1,23 +1,41 @@
 from os.path import join
 import warnings
 import numpy
+from ConfigParser import ConfigParser
 
 def configuration(parent_package='',top_path=None):
     from numpy.distutils.misc_util import Configuration
-    from numpy.distutils.system_info import get_info, BlasNotFoundError
+    from numpy.distutils.system_info import get_info, get_standard_file, BlasNotFoundError
     config = Configuration('learn',parent_package,top_path)
 
+    site_cfg  = ConfigParser()
+    site_cfg.read(get_standard_file('site.cfg'))
+
     config.add_subpackage('em')
     config.add_subpackage('datasets')
     config.add_subpackage('feature_selection')
     config.add_subpackage('glm')
     config.add_subpackage('manifold')
     config.add_subpackage('utils')
+
+    # libsvm
+    libsvm_includes = [numpy.get_include()]
+    libsvm_libraries = []
+    libsvm_library_dirs = []
+    libsvm_sources = [join('src', 'libsvm.c')]
+
+    if site_cfg.has_section('libsvm'):
+        libsvm_includes.append(site_cfg.get('libsvm', 'include_dirs'))
+        libsvm_libraries.append(site_cfg.get('libsvm', 'libraries'))
+        libsvm_library_dirs.append(site_cfg.get('libsvm', 'library_dirs'))
+    else:
+        libsvm_sources.append(join('src', 'svm.cpp'))
+
     config.add_extension('libsvm',
-                         sources=[join('src', 'svm.cpp'), 
-                                  join('src', 'libsvm.c'),
-                                  ],
-                         include_dirs=[numpy.get_include()],
+                         sources=libsvm_sources,
+                         include_dirs=libsvm_includes,
+                         libraries=libsvm_libraries,
+                         library_dirs=libsvm_library_dirs,
                          depends=[join('src', 'svm.h'),
                                  join('src', 'libsvm_helper.c'),
                                   ])
diff --git a/site.cfg b/site.cfg
index 541fdae454..66f867b3e1 100644
--- a/site.cfg
+++ b/site.cfg
@@ -1,3 +1,8 @@
-[scikit-learn]
-#compile libraries that depend on boost
-use_boost=0
+# uncomment this to compile libraries that depend on boost
+# [boost]
+# use_boost=True
+
+# [libsvm]
+# libraries=svm
+# library_dirs=/usr/lib
+# include_dirs=/usr/include/libsvm-2.0/libsvm
\ No newline at end of file
-- 
GitLab