#! /usr/bin/env python

import os, sys
from distutils.core import setup, Extension
from distutils.command.build_ext import build_ext

try:
	# load py2exe distutils extension, if available
	import py2exe
except ImportError:
	pass

try:
	import numpy
except ImportError:
	print "*** Warning: FontTools needs the numpy library, see:"
	print "        http://numpy.scipy.org/"

try:
	import xml.parsers.expat
except ImportError:
	print "*** Warning: FontTools needs PyXML, see:"
	print "        http://sourceforge.net/projects/pyxml/"


class build_ext_optional(build_ext):
	"""build_ext command which doesn't abort when it fails."""
	def build_extension(self, ext):
		# Skip extensions which cannot be built
		try:
			build_ext.build_extension(self, ext)
		except:
			self.announce(
				'*** WARNING: Building of extension "%s" '
				'failed: %s' %
				(ext.name, sys.exc_info()[1]))


if sys.version_info > (2, 3, 0, 'alpha', 1):
	# Trove classifiers for PyPI
	classifiers = {"classifiers": [
		"Development Status :: 4 - Beta",
		"Environment :: Console",
		"Environment :: Other Environment",
		"Intended Audience :: Developers",
		"Intended Audience :: End Users/Desktop",
		"License :: OSI Approved :: BSD License",
		"Natural Language :: English",
		"Operating System :: OS Independent",
		"Programming Language :: Python",
		"Topic :: Multimedia :: Graphics",
		"Topic :: Multimedia :: Graphics :: Graphics Conversion",
	]}
else:
	classifiers = {}

long_description = """\
FontTools/TTX is a library to manipulate font files from Python.
It supports reading and writing of TrueType/OpenType fonts, reading
and writing of AFM files, reading (and partially writing) of PS Type 1
fonts. The package also contains a tool called "TTX" which converts
TrueType/OpenType fonts to and from an XML-based format.
"""

setup(
		name = "fonttools",
		version = "2.3",
		description = "Tools to manipulate font files",
		author = "Just van Rossum",
		author_email = "just@letterror.com",
		maintainer = "Just van Rossum",
		maintainer_email = "just@letterror.com",
		url = "http://fonttools.sourceforge.net/",
		license = "OpenSource, BSD-style",
		platforms = ["Any"],
		long_description = long_description,
		
		packages = [
			"",
			"fontTools",
			"fontTools.encodings",
			"fontTools.misc",
			"fontTools.pens",
			"fontTools.ttLib",
			"fontTools.ttLib.tables",
			"fontTools.ttLib.test",
		],
		package_dir = {'': 'Lib'},
		extra_path = 'FontTools',
		ext_modules = [
			Extension(
				"fontTools.misc.eexecOp",
				["Src/eexecOp/eexecOpmodule.c"],
				include_dirs=[],
				define_macros=[],
				library_dirs=[],
				libraries=[],
			)
		],
		scripts = ["Tools/ttx"],
		console = ["Tools/ttx"],
		cmdclass = {"build_ext": build_ext_optional},
		data_files = [('share/man/man1', ["Doc/ttx.1"])],
		**classifiers
	)
