gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

setup.py (5532B)


      1 import sys
      2 import os
      3 import logging
      4 
      5 from distutils.core import setup, Command
      6 from distutils.extension import Extension
      7 try:
      8     from Cython.Distutils import build_ext
      9 except ImportError:
     10     logging.warn("Cython is preferred over pyrex for python3 compatibility.")
     11     from Pyrex.Distutils import build_ext
     12 
     13 
     14 
     15 
     16 
     17 DESCRIPTION = open('README_PYTHON.txt').read()
     18 CHANGES = open('CHANGES.txt').read()
     19 TODO = open('TODO.txt').read()
     20 
     21 EXTRAS = {}
     22 
     23 long_description = DESCRIPTION + CHANGES + TODO
     24 #import sys
     25 #if "checkdocs" in sys.argv:
     26 #    print long_description
     27 
     28 
     29 METADATA = {
     30     'name':             'pyportmidi',
     31     'version':          '0.0.7',
     32     'license':          'MIT License',
     33     'url':              'http://pypi.python.org/pyportmidi/',
     34     'author':           'John Harrison, Roger B. Dannenberg, Rene Dudfield, others...',
     35     'author_email':     'renesd@gmail.com',
     36     'maintainer':       'Rene Dudfield',
     37     'maintainer_email': 'renesd@gmail.com',
     38     'description':      'Python Wrappings for PortMidi #python.  CHANGES: new package layout.',
     39     'long_description': long_description,
     40     'classifiers':      [
     41             'Development Status :: 2 - Pre-Alpha',
     42             'Intended Audience :: Developers',
     43             'Intended Audience :: Information Technology',
     44             'License :: OSI Approved :: BSD License',
     45             'Operating System :: MacOS :: MacOS X',
     46             'Operating System :: Microsoft :: Windows',
     47             'Operating System :: POSIX :: Linux',
     48             'Programming Language :: Cython',
     49             'Programming Language :: C',
     50             'Programming Language :: Python :: 2',
     51             'Programming Language :: Python :: 2.5',
     52             'Programming Language :: Python :: 2.6',
     53             'Programming Language :: Python :: 2.7',
     54             'Programming Language :: Python :: 3',
     55             'Programming Language :: Python :: 3.0',
     56             'Programming Language :: Python :: 3.1',
     57             'Programming Language :: Python :: 3.2',
     58             'Topic :: Multimedia :: Sound/Audio :: MIDI',
     59             'Topic :: Software Development :: Libraries',
     60     ],
     61 }
     62 
     63 
     64 if "bdist_msi" in sys.argv:
     65     # hack the version name to a format msi doesn't have trouble with
     66     METADATA["version"] = METADATA["version"].replace("pre", "a0")
     67     METADATA["version"] = METADATA["version"].replace("rc", "b0")
     68     METADATA["version"] = METADATA["version"].replace("release", "")
     69 
     70 
     71 
     72 
     73 
     74 # allow optionally using setuptools for bdist_egg.
     75 using_setuptools = False
     76 
     77 if "-setuptools" in sys.argv:
     78     using_setuptools = True
     79 
     80     from setuptools import setup, Command
     81     sys.argv.remove ("-setuptools")
     82 
     83     EXTRAS.update({'include_package_data': True,
     84                    'install_requires': [],
     85                    'zip_safe': False,
     86                    'test_suite' : 'pyportmidi.tests',
     87                    }
     88     )
     89 
     90 
     91 # test command.  For doing 'python setup.py test'
     92 class TestCommand(Command):
     93     user_options = [ ]
     94 
     95     def initialize_options(self):
     96         self._dir = os.getcwd()
     97 
     98     def finalize_options(self):
     99         pass
    100 
    101     def run(self):
    102         '''
    103         runs the tests with default options.
    104         '''
    105         import pyportmidi.tests
    106         pyportmidi.tests.main()
    107 
    108         #import subprocess
    109         #return subprocess.call([sys.executable, "run_tests.py"])
    110 
    111 
    112 cmdclass = {'build_ext': build_ext}
    113 
    114 # we use our test command.
    115 if not using_setuptools:
    116     import os
    117     cmdclass['test'] = TestCommand
    118 
    119 
    120 
    121 scripts = []
    122 
    123 PACKAGEDATA = {
    124     'cmdclass':    cmdclass,
    125 
    126     'package_dir': {'pyportmidi': 'pyportmidi',
    127                     #'pyportmidi.tests': 'test',
    128                     #'pyportmidi.docs': 'docs',
    129                     #'pyportmidi.examples': 'examples',
    130 
    131                    },
    132     'packages': ['pyportmidi',
    133                  'pyportmidi.tests', 
    134                 ],
    135     'scripts': scripts,
    136 }
    137 
    138 
    139 PACKAGEDATA.update(METADATA)
    140 PACKAGEDATA.update(EXTRAS)
    141 
    142 
    143 
    144 if sys.platform == 'win32':
    145     print "Found Win32 platform"
    146     EXTENSION = dict(
    147         ext_modules=[ 
    148             Extension("pyportmidi._pyportmidi", [os.path.join("pyportmidi", "_pyportmidi.pyx")],
    149                       library_dirs = ["../Release"],
    150                       libraries = ["portmidi", "winmm"],
    151                       include_dirs = ["../porttime"],
    152 #                  define_macros = [("_WIN32_", None)]) # needed by portmidi.h
    153                       extra_compile_args = ["/DWIN32"]) # needed by portmidi.h
    154         ]
    155     )
    156 elif sys.platform == 'darwin':
    157     print "Found darwin (OS X) platform"
    158     library_dirs = ["/usr/local/lib"]
    159     include_dirs = ["/usr/local/include"]
    160     EXTENSION = dict(
    161         ext_modules=[ 
    162             Extension("pyportmidi._pyportmidi", [os.path.join("pyportmidi", "_pyportmidi.pyx")],
    163                       library_dirs = library_dirs,
    164                       include_dirs = include_dirs,
    165                       libraries = ["portmidi"],
    166                       extra_link_args=["-framework", "CoreFoundation",
    167                                        "-framework", "CoreMIDI",
    168                                        "-framework", "CoreAudio"])
    169         ]
    170     )
    171 else:
    172     print "Assuming Linux platform"
    173     EXTENSION = dict(
    174         ext_modules=[ 
    175             Extension("pyportmidi._pyportmidi", [os.path.join("pyportmidi", "_pyportmidi.pyx")],
    176                       library_dirs=["./linux"],
    177                       libraries = ["portmidi", "asound", "pthread"]
    178                       )
    179         ]
    180        
    181     )
    182 
    183 PACKAGEDATA.update(EXTENSION)
    184 
    185 setup(**PACKAGEDATA)