# -*- coding: utf-8 -*- import os import site from distutils.sysconfig import get_python_inc, get_python_lib import SCons.Util env = Environment() # Take environment variables into account # (see https://bugs.launchpad.net/pyexiv2/+bug/249835) if os.environ.has_key('CXX'): env['CXX'] = os.environ['CXX'] if os.environ.has_key('CXXFLAGS'): env['CXXFLAGS'] += SCons.Util.CLVar(os.environ['CXXFLAGS']) if os.environ.has_key('LDFLAGS'): env['LINKFLAGS'] += SCons.Util.CLVar(os.environ['LDFLAGS']) # Include directories to look for 'Python.h' in env.Append(CPPPATH=[get_python_inc(plat_specific=True)]) # Libraries to link against # On some systems, boost_python is actually called boost_python-mt. # Use the BOOSTLIB argument to override the default value. # See https://bugs.launchpad.net/pyexiv2/+bug/523858. libs = [ARGUMENTS.get('BOOSTLIB', 'boost_python'), 'exiv2'] env.Append(LIBS=libs) # Build shared library libpyexiv2 cpp_sources = ['exiv2wrapper.cpp', 'exiv2wrapper_python.cpp'] libpyexiv2 = env.SharedLibrary('exiv2python', cpp_sources) env.Alias('lib', libpyexiv2) # Install the shared library and the Python modules, invoked with # 'scons install'. try: user_site = GetOption('user') except AttributeError: user_site = False if user_site: # Install in the current user site directory. # See http://www.python.org/dev/peps/pep-0370/ for reference. install_dir = site.USER_SITE else: python_lib_path = get_python_lib(plat_specific=True) # If DESTDIR is specified on the command line when invoking # scons, its value will be prepended to each installed target file. See # http://www.gnu.org/prep/standards/html_node/DESTDIR.html for reference. dest_dir = ARGUMENTS.get('DESTDIR') if dest_dir is None or not os.path.isabs(dest_dir): install_dir = python_lib_path else: install_dir = os.path.join(dest_dir, python_lib_path[1:]) env.Install(install_dir, [libpyexiv2]) modules = ['__init__', 'metadata', 'exif', 'iptc', 'xmp', 'preview', 'utils'] env.Install(os.path.join(install_dir, 'pyexiv2'), ['pyexiv2/%s.py' % module for module in modules]) env.Alias('install', install_dir)