|
|
|
#!/usr/bin/env python3
|
|
|
|
|
|
|
|
from distutils.core import setup, Extension
|
|
|
|
import glob
|
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
|
|
|
|
support_ext_module = False
|
|
|
|
|
|
|
|
ext_modules = []
|
|
|
|
if support_ext_module:
|
|
|
|
if sys.version_info[0] < 3:
|
|
|
|
raise Exception("Python 3 required.")
|
|
|
|
|
|
|
|
packages = ['glib-2.0', 'sndfile']
|
|
|
|
|
|
|
|
if '#define USE_FLUIDSYNTH 1' in open('config.h').read():
|
|
|
|
packages.append('fluidsynth')
|
|
|
|
if '#define USE_JACK 1' in open('config.h').read():
|
|
|
|
packages.append('jack')
|
|
|
|
if '#define USE_LIBUSB 1' in open('config.h').read():
|
|
|
|
packages.append('libusb-1.0')
|
|
|
|
if '#define USE_LIBSMF 1' in open('config.h').read():
|
|
|
|
packages.append('smf')
|
|
|
|
|
|
|
|
eargs = os.popen("pkg-config --cflags %s" % (" ".join(packages)), "r").read().split()
|
|
|
|
eargs.append("-std=c99")
|
|
|
|
# Workaround for Python3.4 headers
|
|
|
|
eargs.append("-Wno-error=declaration-after-statement")
|
|
|
|
|
|
|
|
libs = os.popen("pkg-config --libs %s" % (" ".join(packages)), "r").read().split()
|
|
|
|
libs.append("-luuid")
|
|
|
|
|
|
|
|
csources = [
|
|
|
|
"app.c",
|
|
|
|
"auxbus.c",
|
|
|
|
"blob.c",
|
|
|
|
"@chorus.c",
|
|
|
|
"cmd.c",
|
|
|
|
"@compressor.c",
|
|
|
|
"config-api.c",
|
|
|
|
"@delay.c",
|
|
|
|
"@distortion.c",
|
|
|
|
"dom.c",
|
|
|
|
"eq.c",
|
|
|
|
"engine.c",
|
|
|
|
"errors.c",
|
|
|
|
"@fbr.c",
|
|
|
|
"fifo.c",
|
|
|
|
"@fluid.c",
|
|
|
|
"@fuzz.c",
|
|
|
|
"@fxchain.c",
|
|
|
|
"@gate.c",
|
|
|
|
"hwcfg.c",
|
|
|
|
"instr.c",
|
|
|
|
"io.c",
|
|
|
|
"@jackinput.c",
|
|
|
|
"@jackio.c",
|
|
|
|
"layer.c",
|
|
|
|
"@limiter.c",
|
|
|
|
"master.c",
|
|
|
|
"meter.c",
|
|
|
|
"midi.c",
|
|
|
|
"mididest.c",
|
|
|
|
"module.c",
|
|
|
|
"pattern.c",
|
|
|
|
"pattern-maker.c",
|
|
|
|
"@phaser.c",
|
|
|
|
"prefetch_pipe.c",
|
|
|
|
"recsrc.c",
|
|
|
|
"@reverb.c",
|
|
|
|
"rt.c",
|
|
|
|
"sampler.c",
|
|
|
|
"@sampler_channel.c",
|
|
|
|
"@sampler_gen.c",
|
|
|
|
"sampler_layer.c",
|
|
|
|
"@sampler_nif.c",
|
|
|
|
"@sampler_prevoice.c",
|
|
|
|
"sampler_prg.c",
|
|
|
|
"@sampler_rll.c",
|
|
|
|
"@sampler_voice.c",
|
|
|
|
"scene.c",
|
|
|
|
"scripting.c",
|
|
|
|
"seq.c",
|
|
|
|
"@seq-adhoc.c",
|
|
|
|
"sfzloader.c",
|
|
|
|
"sfzparser.c",
|
|
|
|
"song.c",
|
|
|
|
"@streamplay.c",
|
|
|
|
"@streamrec.c",
|
|
|
|
"tarfile.c",
|
|
|
|
"@tonectl.c",
|
|
|
|
"@tonewheel.c",
|
|
|
|
"track.c",
|
|
|
|
"@usbaudio.c",
|
|
|
|
"@usbio.c",
|
|
|
|
"@usbmidi.c",
|
|
|
|
"@usbprobe.c",
|
|
|
|
"wavebank.c",
|
|
|
|
]
|
|
|
|
|
|
|
|
headers = [
|
|
|
|
"biquad-float.h",
|
|
|
|
"config.h",
|
|
|
|
"dspmath.h",
|
|
|
|
"envelope.h",
|
|
|
|
"ioenv.h",
|
|
|
|
"onepole-float.h",
|
|
|
|
"onepole-int.h",
|
|
|
|
"sampler_impl.h",
|
|
|
|
"stm.h",
|
|
|
|
"usbio_impl.h",
|
|
|
|
]
|
|
|
|
|
|
|
|
headers += [fn[:-2] + ".h" for fn in csources if fn.endswith(".c") and not fn.startswith("@")]
|
|
|
|
csources = [fn.lstrip("@") for fn in csources]
|
|
|
|
|
|
|
|
if '#define USE_SSE 1' in open('config.h').read():
|
|
|
|
eargs.append('-msse')
|
|
|
|
eargs.append('-ffast-math')
|
|
|
|
if '#define USE_NEON 1' in open('config.h').read():
|
|
|
|
eargs.append('-mfloat-abi=hard')
|
|
|
|
eargs.append('-mfpu=neon')
|
|
|
|
eargs.append('-ffast-math')
|
|
|
|
|
|
|
|
ext_modules.append(
|
|
|
|
Extension('_cbox', csources,
|
|
|
|
extra_compile_args = eargs,
|
|
|
|
include_dirs=['.'],
|
|
|
|
extra_link_args=libs,
|
|
|
|
define_macros=[("_GNU_SOURCE","1"),("_POSIX_C_SOURCE", "199309L"),("USE_PYTHON","1"),("CALFBOX_AS_MODULE", "1")],
|
|
|
|
undef_macros=['NDEBUG'],
|
|
|
|
depends = ['setup.py'] + headers
|
|
|
|
)
|
|
|
|
)
|
|
|
|
setup(name="CalfBox",
|
|
|
|
version="0.0.0.2", description="Assorted music-related code",
|
|
|
|
author="Krzysztof Foltman", author_email="wdev@foltman.com",
|
|
|
|
url="https://github.com/kfoltman/calfbox",
|
|
|
|
packages=["calfbox"],
|
|
|
|
package_dir={'calfbox':'py'},
|
|
|
|
ext_modules=ext_modules,
|
|
|
|
)
|