--- setup.py +++ setup.py @@ -29,6 +30,16 @@ print pipe.stderr.read() raise SystemExit('Error: %s >= %s not found' % (pkg, version)) +def pkg_config_svg_check(): + if os.environ.get('PYCAIRO_DISABLE_SVG', None) is None: + pipe = call('pkg-config --exists cairo-svg') + if pipe.returncode == 0: + return [('PYCAIRO_ENABLE_SVG', None)] + else: + return [] + else: + return [] + def pkg_config_parse(opt, pkg): pipe = call("pkg-config %s %s" % (opt, pkg)) output = pipe.stdout.read() @@ -94,6 +105,7 @@ 'src/pattern.c', 'src/surface.c', ], + define_macros = pkg_config_svg_check(), include_dirs = pkg_config_parse('--cflags-only-I', 'cairo'), library_dirs = pkg_config_parse('--libs-only-L', 'cairo'), libraries = pkg_config_parse('--libs-only-l', 'cairo'), --- src/cairomodule.c +++ src/cairomodule.c @@ -122,7 +122,7 @@ #else 0, #endif -#ifdef CAIRO_HAS_SVG_SURFACE +#ifdef PYCAIRO_ENABLE_SVG &PycairoSVGSurface_Type, #else 0, @@ -209,7 +209,7 @@ if (PyType_Ready(&PycairoPSSurface_Type) < 0) return; #endif -#ifdef CAIRO_HAS_SVG_SURFACE +#ifdef PYCAIRO_ENABLE_SVG if (PyType_Ready(&PycairoSVGSurface_Type) < 0) return; #endif @@ -285,7 +285,7 @@ PyModule_AddObject(m, "PSSurface", (PyObject *)&PycairoPSSurface_Type); #endif -#ifdef CAIRO_HAS_SVG_SURFACE +#ifdef PYCAIRO_ENABLE_SVG Py_INCREF(&PycairoSVGSurface_Type); PyModule_AddObject(m, "SVGSurface", (PyObject *)&PycairoSVGSurface_Type); #endif @@ -350,7 +350,7 @@ #else PyModule_AddIntConstant(m, "HAS_PS_SURFACE", 0); #endif -#if CAIRO_HAS_SVG_SURFACE +#if PYCAIRO_ENABLE_SVG PyModule_AddIntConstant(m, "HAS_SVG_SURFACE", 1); #else PyModule_AddIntConstant(m, "HAS_SVG_SURFACE", 0); --- src/private.h +++ src/private.h @@ -86,7 +86,7 @@ extern PyTypeObject PycairoPSSurface_Type; #endif -#if CAIRO_HAS_SVG_SURFACE +#if PYCAIRO_ENABLE_SVG extern PyTypeObject PycairoSVGSurface_Type; #endif --- src/pycairo.h +++ src/pycairo.h @@ -178,7 +178,7 @@ #define PycairoPSSurface_Type *(Pycairo_CAPI->PSSurface_Type) #endif -#if CAIRO_HAS_SVG_SURFACE +#if PYCAIRO_ENABLE_SVG #define PycairoSVGSurface_Type *(Pycairo_CAPI->SVGSurface_Type) #endif --- src/surface.c +++ src/surface.c @@ -80,7 +80,7 @@ type = &PycairoPSSurface_Type; break; #endif -#if CAIRO_HAS_SVG_SURFACE +#if PYCAIRO_ENABLE_SVG case CAIRO_SURFACE_TYPE_SVG: type = &PycairoSVGSurface_Type; break; @@ -965,7 +965,7 @@ /* Class SVGSurface(Surface) ----------------------------------------------- */ -#ifdef CAIRO_HAS_SVG_SURFACE +#ifdef PYCAIRO_ENABLE_SVG #include static PyObject * @@ -1067,7 +1067,7 @@ 0, /* tp_is_gc */ 0, /* tp_bases */ }; -#endif /* CAIRO_HAS_SVG_SURFACE */ +#endif /* PYCAIRO_ENABLE_SVG */ /* Class Win32Surface(Surface) -------------------------------------------- */