mame/3rdparty/portmidi/pm_python/setup.py
2015-01-10 16:58:11 +01:00

185 lines
5.4 KiB
Python

import sys
import os
import logging
from distutils.core import setup, Command
from distutils.extension import Extension
try:
from Cython.Distutils import build_ext
except ImportError:
logging.warn("Cython is preferred over pyrex for python3 compatibility.")
from Pyrex.Distutils import build_ext
DESCRIPTION = open('README_PYTHON.txt').read()
CHANGES = open('CHANGES.txt').read()
TODO = open('TODO.txt').read()
EXTRAS = {}
long_description = DESCRIPTION + CHANGES + TODO
#import sys
#if "checkdocs" in sys.argv:
# print long_description
METADATA = {
'name': 'pyportmidi',
'version': '0.0.7',
'license': 'MIT License',
'url': 'http://pypi.python.org/pyportmidi/',
'author': 'John Harrison, Roger B. Dannenberg, Rene Dudfield, others...',
'author_email': 'renesd@gmail.com',
'maintainer': 'Rene Dudfield',
'maintainer_email': 'renesd@gmail.com',
'description': 'Python Wrappings for PortMidi #python. CHANGES: new package layout.',
'long_description': long_description,
'classifiers': [
'Development Status :: 2 - Pre-Alpha',
'Intended Audience :: Developers',
'Intended Audience :: Information Technology',
'License :: OSI Approved :: BSD License',
'Operating System :: MacOS :: MacOS X',
'Operating System :: Microsoft :: Windows',
'Operating System :: POSIX :: Linux',
'Programming Language :: Cython',
'Programming Language :: C',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.5',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.0',
'Programming Language :: Python :: 3.1',
'Programming Language :: Python :: 3.2',
'Topic :: Multimedia :: Sound/Audio :: MIDI',
'Topic :: Software Development :: Libraries',
],
}
if "bdist_msi" in sys.argv:
# hack the version name to a format msi doesn't have trouble with
METADATA["version"] = METADATA["version"].replace("pre", "a0")
METADATA["version"] = METADATA["version"].replace("rc", "b0")
METADATA["version"] = METADATA["version"].replace("release", "")
# allow optionally using setuptools for bdist_egg.
using_setuptools = False
if "-setuptools" in sys.argv:
using_setuptools = True
from setuptools import setup, Command
sys.argv.remove ("-setuptools")
EXTRAS.update({'include_package_data': True,
'install_requires': [],
'zip_safe': False,
'test_suite' : 'pyportmidi.tests',
}
)
# test command. For doing 'python setup.py test'
class TestCommand(Command):
user_options = [ ]
def initialize_options(self):
self._dir = os.getcwd()
def finalize_options(self):
pass
def run(self):
'''
runs the tests with default options.
'''
import pyportmidi.tests
pyportmidi.tests.main()
#import subprocess
#return subprocess.call([sys.executable, "run_tests.py"])
cmdclass = {'build_ext': build_ext}
# we use our test command.
if not using_setuptools:
import os
cmdclass['test'] = TestCommand
scripts = []
PACKAGEDATA = {
'cmdclass': cmdclass,
'package_dir': {'pyportmidi': 'pyportmidi',
#'pyportmidi.tests': 'test',
#'pyportmidi.docs': 'docs',
#'pyportmidi.examples': 'examples',
},
'packages': ['pyportmidi',
'pyportmidi.tests',
],
'scripts': scripts,
}
PACKAGEDATA.update(METADATA)
PACKAGEDATA.update(EXTRAS)
if sys.platform == 'win32':
print "Found Win32 platform"
EXTENSION = dict(
ext_modules=[
Extension("pyportmidi._pyportmidi", [os.path.join("pyportmidi", "_pyportmidi.pyx")],
library_dirs = ["../Release"],
libraries = ["portmidi", "winmm"],
include_dirs = ["../porttime"],
# define_macros = [("_WIN32_", None)]) # needed by portmidi.h
extra_compile_args = ["/DWIN32"]) # needed by portmidi.h
]
)
elif sys.platform == 'darwin':
print "Found darwin (OS X) platform"
library_dirs = ["/usr/local/lib"]
include_dirs = ["/usr/local/include"]
EXTENSION = dict(
ext_modules=[
Extension("pyportmidi._pyportmidi", [os.path.join("pyportmidi", "_pyportmidi.pyx")],
library_dirs = library_dirs,
include_dirs = include_dirs,
libraries = ["portmidi"],
extra_link_args=["-framework", "CoreFoundation",
"-framework", "CoreMIDI",
"-framework", "CoreAudio"])
]
)
else:
print "Assuming Linux platform"
EXTENSION = dict(
ext_modules=[
Extension("pyportmidi._pyportmidi", [os.path.join("pyportmidi", "_pyportmidi.pyx")],
library_dirs=["./linux"],
libraries = ["portmidi", "asound", "pthread"]
)
]
)
PACKAGEDATA.update(EXTENSION)
setup(**PACKAGEDATA)