#!/usr/bin/python # vim: set fileencoding=latin-1: import re import sys from distutils.core import setup, Extension # We pick up configure's stuff here. Sadly distutils needs this broken out # into separate includes, libs and defines, argh configure_flags = '@VIPS_CFLAGS@ @VIPS_INCLUDES@ @VIPS_LIBS@ -I@top_srcdir@/libvips/include -I@top_srcdir@/libvipsCC/include' # Parse compiler flags into these categories, yuk! configure_macros = [] configure_include_dirs = [] configure_library_dirs = [] configure_libs = [] configure_options = [] for flag in configure_flags.split(): match = re.match ('-D(.*)(=(.*))?', flag) if match: key = match.group (1) if match.group (2): value = match.group (2) else: value = 1 configure_macros += [(key, value)] continue match = re.match ('-I(.*)', flag) if match: configure_include_dirs += [match.group (1)] continue match = re.match ('-L(.*)', flag) if match: configure_library_dirs += [match.group (1)] continue match = re.match ('-l(.*)', flag) if match: configure_libs += [match.group (1)] continue match = re.match ('-(.*)', flag) if match: configure_options += [flag] continue print '%s: unknown configure option!' % flag sys.exit (1) def make_extension (name, source): return Extension (name, sources = [source], define_macros = configure_macros, include_dirs = configure_include_dirs, libraries = configure_libs, library_dirs = configure_library_dirs, extra_compile_args = configure_options, extra_link_args = configure_options, runtime_library_dirs= ['@IM_LIBDIR@']) module1 = make_extension ('vimagemodule', 'vimagemodule.cpp') module2 = make_extension ('vmaskmodule', 'vmaskmodule.cpp') module3 = make_extension ('verrormodule', 'verrormodule.cpp') module4 = make_extension ('vdisplaymodule', 'vdisplaymodule.cpp') setup (name = 'vipsCC', version = '7.20.7', description = 'vips-7.x image processing library', author = 'José María García Pérez, John Cupitt', author_email = 'jcupitt@gmail.com', url = 'http://www.vips.ecs.soton.ac.uk', packages = ['vipsCC'], ext_package = 'vipsCC', ext_modules = [module1, module2, module3, module4])