diff --git a/bob/io/image/__init__.py b/bob/io/image/__init__.py index ca09ae114312e8b206a58713b966c99056e2f7ec..07fe8cb72095498a4cc1b81b65beef6f3d677768 100644 --- a/bob/io/image/__init__.py +++ b/bob/io/image/__init__.py @@ -9,11 +9,46 @@ from . import _library from . import version from .version import module as __version__ +import os + def get_config(): """Returns a string containing the configuration information. """ import bob.extension return bob.extension.get_config(__name__, version.externals) + +def get_include_directories(): + """get_include_directories() -> includes + + Returns a list of include directories for dependent libraries, such as libjpeg, libtiff, ... + This function is automatically used by :py:func:`bob.extension.get_bob_libraries` to retrieve the non-standard include directories that are required to use the C bindings of this library in dependent classes. + You shouldn't normally need to call this function by hand. + + **Returns:** + + ``includes`` : [str] + The list of non-standard include directories required to use the C bindings of this class. + For now, only the directory for the HDF5 headers are returned. + """ + # try to use pkg_config first + from bob.extension.utils import find_header, uniq_paths + from bob.extension import pkgconfig + import logging + logger = logging.getLogger("bob.io.image") + directories = [] + for name, header in (('libjpeg', 'jpeglib.h'), ('libtiff', 'tiff.h'), ('giflib', 'gif_lib.h')): + # locate pkg-config on our own + candidates = find_header(header) + if not candidates: + logger.warn("could not find %s's `%s' - have you installed %s on this machine?" % (name, header, name)) + + directories.append(os.path.dirname(candidates[0])) + for name in ("libpng",): + pkg = pkgconfig(name) + directories.extend(pkg.include_directories()) + return uniq_paths(directories) + + # gets sphinx autodoc done right - don't remove it __all__ = [_ for _ in dir() if not _.startswith('_')] diff --git a/setup.py b/setup.py index fdbaf6ca83a036509072a4af532f093031264f07..d614f0c6160d45f57325ae2d98bdef4737011253 100644 --- a/setup.py +++ b/setup.py @@ -111,7 +111,7 @@ class jpeg: candidates = find_library(module, version=self.version, prefixes=[prefix], only_static=only_static) if not candidates: - raise RuntimeError("cannot find required %s binary module `%s' - make sure libsvm is installed on `%s'" % (self.name, module, prefix)) + raise RuntimeError("cannot find required %s binary module `%s' - make sure `%s' is installed on `%s'" % (self.name, module, self.name, prefix)) # libraries self.libraries = [] @@ -207,7 +207,7 @@ class tiff: candidates = find_library(module, version=self.version, prefixes=[prefix], only_static=only_static) if not candidates: - raise RuntimeError("cannot find required %s binary module `%s' - make sure libsvm is installed on `%s'" % (self.name, module, prefix)) + raise RuntimeError("cannot find required %s binary module `%s' - make sure `%s' is installed on `%s'" % (self.name, module, self.name, prefix)) # libraries self.libraries = [] @@ -309,7 +309,7 @@ class gif: candidates = find_library(module, version=self.version, prefixes=[prefix], only_static=only_static) if not candidates: - raise RuntimeError("cannot find required %s binary module `%s' - make sure libsvm is installed on `%s'" % (self.name, module, prefix)) + raise RuntimeError("cannot find required %s binary module `%s' - make sure `%s' is installed on `%s'" % (self.name, module, self.name, prefix)) # libraries self.libraries = []