| @@ -120,7 +120,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
| #endif /* __APPLE__ || __linux__ || __sun__ || sun */ | #endif /* __APPLE__ || __linux__ || __sun__ || sun */ | ||||
| #if defined(__arm__) | |||||
| #if defined(__arm__) || defined(__ARM__) | |||||
| #undef POST_PACKED_STRUCTURE | #undef POST_PACKED_STRUCTURE | ||||
| #define POST_PACKED_STRUCTURE | #define POST_PACKED_STRUCTURE | ||||
| #endif /* __arm__ */ | #endif /* __arm__ */ | ||||
| @@ -0,0 +1,233 @@ | |||||
| /* | |||||
| Copyright (C) 2013 Matt Flax <flatmax@> | |||||
| This program is free software; you can redistribute it and/or modify | |||||
| it under the terms of the GNU General Public License as published by | |||||
| the Free Software Foundation; either version 2 of the License, or | |||||
| (at your option) any later version. | |||||
| This program is distributed in the hope that it will be useful, | |||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
| GNU General Public License for more details. | |||||
| You should have received a copy of the GNU General Public License | |||||
| along with this program; if not, write to the Free Software | |||||
| Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
| */ | |||||
| #include "JackIIODriver.h" | |||||
| #include "driver_interface.h" | |||||
| #include "JackEngineControl.h" | |||||
| #include "JackGraphManager.h" | |||||
| #include <values.h> | |||||
| #define IIO_DEFAULT_CHIP "AD7476A" ///< The default IIO recording chip to look for. | |||||
| #define IIO_DEFAULT_READ_FS 1.e6 ///< The default IIO sample rate for the default chip. | |||||
| #define IIO_DEFAULT_PERIOD_SIZE 2048 ///< The default period size is in the ms range | |||||
| #define IIO_DEFAULT_PERIOD_COUNT 2 ///< The default number of periods | |||||
| #define IIO_DEFAULT_CAPUTURE_PORT_COUNT MAXINT ///< The default number of capture ports is exceedingly big, trimmed down to a realistic size in driver_initialize | |||||
| //#define IIO_SAFETY_FACTOR 2./3. ///< The default safety factor, allow consumption of this fraction of the available DMA buffer before we don't allow the driver to continue. | |||||
| #define IIO_SAFETY_FACTOR 1. ///< The default safety factor, allow consumption of this fraction of the available DMA buffer before we don't allow the driver to continue. | |||||
| namespace Jack { | |||||
| int JackIIODriver::Attach() { | |||||
| //cout<<"JackIIODriver::Attach\n"; | |||||
| JackAudioDriver::SetSampleRate((jack_nframes_t)IIO_DEFAULT_READ_FS); | |||||
| int ret; | |||||
| if ((ret=iio.enable(true))!=NO_ERROR) { // start the DMA | |||||
| iio.close(); | |||||
| return ret; | |||||
| } | |||||
| return JackAudioDriver::Attach(); | |||||
| } | |||||
| int JackIIODriver::Detach() { | |||||
| //cout<<"JackIIODriver::Detach\n"; | |||||
| iio.enable(false); // stop the DMA | |||||
| return JackAudioDriver::Detach(); | |||||
| } | |||||
| int JackIIODriver::Read() { | |||||
| //cout<<"JackIIODriver::Read\n"; | |||||
| if (iio.getDeviceCnt()<1) { | |||||
| jack_error("JackIIODriver:: No IIO devices are present "); | |||||
| return -1; | |||||
| } | |||||
| uint devChCnt=iio[0].getChCnt(); // the number of channels per device | |||||
| jack_nframes_t nframes=data.rows()/devChCnt; | |||||
| if (nframes != fEngineControl->fBufferSize) | |||||
| jack_error("JackIIODriver::Read warning : Jack period size = %ld IIO period size = %ld", fEngineControl->fBufferSize, nframes); | |||||
| // cout<<"processing buffer size : "<<fEngineControl->fBufferSize<<endl; | |||||
| // cout<<"processing channel count : "<<fCaptureChannels<<endl; | |||||
| int ret=iio.read(nframes, data); // read the data from the IIO subsystem | |||||
| if (ret!=NO_ERROR) | |||||
| return -1; | |||||
| // Keep begin cycle time | |||||
| JackDriver::CycleTakeBeginTime(); // is this necessary ? | |||||
| int maxAvailChCnt=data.cols()*devChCnt; | |||||
| jack_default_audio_sample_t scaleFactor=1./32768.; | |||||
| if (fCaptureChannels>maxAvailChCnt) | |||||
| jack_error("JackIIODriver::Read warning : Jack period size = %ld IIO period size = %ld", fEngineControl->fBufferSize, nframes); | |||||
| for (int i = 0; i < fCaptureChannels; i++) { | |||||
| int col=i/devChCnt; // find the column and offset to read from | |||||
| int rowOffset=i%devChCnt; | |||||
| if (fGraphManager->GetConnectionsNum(fCapturePortList[i]) > 0) { | |||||
| jack_default_audio_sample_t *dest=GetInputBuffer(i); | |||||
| for (jack_nframes_t j=0; j<nframes; j++){ | |||||
| // dest[j]=(float)j/(float)nframes; | |||||
| dest[j]=(jack_default_audio_sample_t)(data(j*devChCnt+rowOffset, col))*scaleFactor; | |||||
| // cout<<dest[j]<<'\t'<<data(j*devChCnt+rowOffset, col)<<"\t\t"; | |||||
| } | |||||
| } | |||||
| } | |||||
| return 0; | |||||
| } | |||||
| int JackIIODriver::Write() { | |||||
| // cout<<"JackIIODriver::Write\n"; | |||||
| JackDriver::CycleTakeEndTime(); // is this necessary ? | |||||
| return 0; | |||||
| } | |||||
| } // end namespace Jack | |||||
| #ifdef __cplusplus | |||||
| extern "C" | |||||
| { | |||||
| #endif | |||||
| SERVER_EXPORT const jack_driver_desc_t * | |||||
| driver_get_descriptor () { | |||||
| jack_driver_desc_t * desc; | |||||
| jack_driver_desc_filler_t filler; | |||||
| jack_driver_param_value_t value; | |||||
| desc = jack_driver_descriptor_construct("iio", JackDriverMaster, "Linux Industrial IO backend", &filler); | |||||
| strcpy(value.str, IIO_DEFAULT_CHIP); | |||||
| jack_driver_descriptor_add_parameter(desc, &filler, "chip", 'C', JackDriverParamString, &value, NULL, "The name of the chip to search for in the IIO devices", NULL); | |||||
| value.ui = IIO_DEFAULT_CAPUTURE_PORT_COUNT; | |||||
| jack_driver_descriptor_add_parameter(desc, &filler, "capture", 'i', JackDriverParamUInt, &value, NULL, "Provide capture count (block size).", NULL); | |||||
| value.ui = IIO_DEFAULT_PERIOD_SIZE; | |||||
| jack_driver_descriptor_add_parameter(desc, &filler, "period", 'p', JackDriverParamUInt, &value, NULL, "Frames (samples per channel) per period", NULL); | |||||
| value.ui = IIO_DEFAULT_PERIOD_COUNT; | |||||
| jack_driver_descriptor_add_parameter(desc, &filler, "nperiods", 'n', JackDriverParamUInt, &value, NULL, "Number of available periods (block count)", NULL); | |||||
| return desc; | |||||
| } | |||||
| SERVER_EXPORT Jack::JackDriverClientInterface* driver_initialize(Jack::JackLockedEngine* engine, Jack::JackSynchro* table, const JSList* params) { | |||||
| // As of this implementation the IIO driver is only capture... to be expanded. | |||||
| string chipName(IIO_DEFAULT_CHIP); // the default chip name to search for in the IIO devices. | |||||
| float fs = IIO_DEFAULT_READ_FS; // IIO sample rate is fixed. | |||||
| jack_nframes_t periodSize = IIO_DEFAULT_PERIOD_SIZE; // default block size | |||||
| jack_nframes_t periodCount = IIO_DEFAULT_PERIOD_COUNT; // default block count | |||||
| uint inChCnt = IIO_DEFAULT_CAPUTURE_PORT_COUNT; // The default number of physical input channels - a very large number, to be reduced. | |||||
| for (const JSList *node = params; node; node = jack_slist_next (node)) { | |||||
| jack_driver_param_t *param = (jack_driver_param_t *) node->data; | |||||
| switch (param->character) { | |||||
| case 'C': // we are specifying a new chip name | |||||
| chipName = param->value.str; | |||||
| break; | |||||
| case 'i': // we are specifying the number of capture channels | |||||
| inChCnt = param->value.ui; | |||||
| break; | |||||
| case 'p': | |||||
| periodSize = param->value.ui; | |||||
| break; | |||||
| case 'n': | |||||
| periodCount = param->value.ui; | |||||
| break; | |||||
| } | |||||
| } | |||||
| // create the driver which contains the IIO class | |||||
| Jack::JackIIODriver* iio_driver = new Jack::JackIIODriver("system", "iio_pcm", engine, table); | |||||
| if (!iio_driver) { | |||||
| jack_error("\nHave you run out of memory ? I tried to create the IIO driver in memory but failed!\n"); | |||||
| return NULL; | |||||
| } | |||||
| // interrogate the available iio devices searching for the chip name | |||||
| if (iio_driver->iio.findDevicesByChipName(chipName)!=NO_ERROR) { // find all devices with a particular chip which are present. | |||||
| jack_error("\nThe iio driver found no devices by the name %s\n", chipName.c_str()); | |||||
| delete iio_driver; | |||||
| return NULL; | |||||
| } | |||||
| if (iio_driver->iio.getDeviceCnt()<1) { // If there are no devices found by that chip name, then indicate. | |||||
| jack_error("\nThe iio driver found no devices by the name %s\n", chipName.c_str()); | |||||
| delete iio_driver; | |||||
| return NULL; | |||||
| } | |||||
| iio_driver->iio.printInfo(); // print out detail about the devices which were found ... | |||||
| // if the available number of ports is less then the requested number, then restrict to the number of physical ports. | |||||
| if (iio_driver->iio.getChCnt()<inChCnt) | |||||
| inChCnt=iio_driver->iio.getChCnt(); | |||||
| // resize the data buffer column count to match the device count | |||||
| int colCnt=(int)ceil((float)inChCnt/(float)iio_driver->iio[0].getChCnt()); // check whether we require less then the available number of channels | |||||
| int ret=iio_driver->iio.getReadArray(periodSize, iio_driver->data); // resize the array to be able to read enough memory | |||||
| if (ret!=NO_ERROR) { | |||||
| jack_error("iio::getReadArray couldn't create the data buffer, indicating the problem."); | |||||
| delete iio_driver; | |||||
| return NULL; | |||||
| } | |||||
| if (iio_driver->data.cols()>colCnt) // resize the data columns to match the specified number of columns (channels / channels per device) | |||||
| iio_driver->data.resize(iio_driver->data.rows(), colCnt); | |||||
| ret=iio_driver->iio.open(periodCount, periodSize); // try to open all IIO devices | |||||
| if (ret!=NO_ERROR) | |||||
| delete iio_driver; | |||||
| return NULL; | |||||
| Jack::JackDriverClientInterface* threaded_driver = new Jack::JackThreadedDriver(iio_driver); | |||||
| if (threaded_driver) { | |||||
| bool capture=true, playback=false, monitor=false; | |||||
| int outChCnt=0; | |||||
| jack_nframes_t inputLatency = periodSize*periodCount, outputLatency=0; | |||||
| // Special open for OSS driver... | |||||
| if (iio_driver->Open(periodSize, periodCount, capture, playback, inChCnt, outChCnt, monitor, "iio:device", "iio:device", inputLatency, outputLatency)!=0) { | |||||
| delete threaded_driver; | |||||
| threaded_driver=NULL; | |||||
| } | |||||
| } else | |||||
| jack_error("\nHave you run out of memory ? I tried to create Jack's standard threaded driver in memory but failed! The good news is that you had enough memory to create the IIO driver.\n"); | |||||
| if (!threaded_driver) { // handle the case that the threaded_driver was not created succ. | |||||
| delete iio_driver; | |||||
| iio_driver=NULL; | |||||
| } | |||||
| return threaded_driver; | |||||
| } | |||||
| #ifdef __cplusplus | |||||
| } | |||||
| #endif | |||||
| @@ -0,0 +1,69 @@ | |||||
| /* | |||||
| Copyright (C) 2013 Matt Flax <flatmax@> | |||||
| This program is free software; you can redistribute it and/or modify | |||||
| it under the terms of the GNU General Public License as published by | |||||
| the Free Software Foundation; either version 2 of the License, or | |||||
| (at your option) any later version. | |||||
| This program is distributed in the hope that it will be useful, | |||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
| GNU General Public License for more details. | |||||
| You should have received a copy of the GNU General Public License | |||||
| along with this program; if not, write to the Free Software | |||||
| Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
| */ | |||||
| #ifndef JACKIIODRIVER_H | |||||
| #define JACKIIODRIVER_H | |||||
| #include "JackAudioDriver.h" | |||||
| #include "JackThreadedDriver.h" | |||||
| #include <IIO/IIOMMap.H> | |||||
| namespace Jack { | |||||
| /** The Linux Industrial IO (IIO) subsystem driver for Jack. | |||||
| Currently this driver only supports capture. | |||||
| */ | |||||
| class JackIIODriver : public JackAudioDriver { | |||||
| public: | |||||
| IIOMMap iio; ///< The actual IIO devices | |||||
| Eigen::Array<unsigned short int, Eigen::Dynamic, Eigen::Dynamic> data; ///< When we grab a mmapped buffer, store it here. | |||||
| /** Constructor | |||||
| */ | |||||
| JackIIODriver(const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table) : JackAudioDriver(name, alias, engine, table) { | |||||
| } | |||||
| /** Destructor | |||||
| */ | |||||
| virtual ~JackIIODriver() { | |||||
| } | |||||
| // virtual int Process(){ | |||||
| //// cout<<"JackIIODriver::Process\n"; | |||||
| // return JackAudioDriver::Process(); | |||||
| // } | |||||
| // | |||||
| virtual int Attach(); ///< Enables the IIO system. | |||||
| virtual int Detach(); ///< Disables the IIO system. | |||||
| virtual int Read(); ///< Read from the IIO sysetm and load the jack buffers | |||||
| virtual int Write(); ///< Not implemented. | |||||
| virtual int SetBufferSize(jack_nframes_t buffer_size){ | |||||
| cout<<"JackIIODriver::SetBufferSize("<<buffer_size<<")\n"; | |||||
| return JackAudioDriver::SetBufferSize(buffer_size); | |||||
| } | |||||
| }; | |||||
| } // end of Jack namespace | |||||
| #endif // JACKIIODRIVER_H | |||||
| @@ -1,6 +1,8 @@ | |||||
| #! /usr/bin/env python | #! /usr/bin/env python | ||||
| # encoding: utf-8 | # encoding: utf-8 | ||||
| from waflib import Context | |||||
| def configure(conf): | def configure(conf): | ||||
| conf.check_cfg(package='alsa', atleast_version='1.0.18', args='--cflags --libs', mandatory=False) | conf.check_cfg(package='alsa', atleast_version='1.0.18', args='--cflags --libs', mandatory=False) | ||||
| conf.env['BUILD_DRIVER_ALSA'] = conf.is_defined('HAVE_ALSA') | conf.env['BUILD_DRIVER_ALSA'] = conf.is_defined('HAVE_ALSA') | ||||
| @@ -11,7 +13,13 @@ def configure(conf): | |||||
| conf. check_cfg(package='libffado', atleast_version='1.999.17', args='--cflags --libs', mandatory=False) | conf. check_cfg(package='libffado', atleast_version='1.999.17', args='--cflags --libs', mandatory=False) | ||||
| conf.env['BUILD_DRIVER_FFADO'] = conf.is_defined('HAVE_LIBFFADO') | conf.env['BUILD_DRIVER_FFADO'] = conf.is_defined('HAVE_LIBFFADO') | ||||
| conf.define('HAVE_PPOLL', 1 ) | |||||
| conf.check_cfg(package='gtkIOStream', atleast_version='1.4.0', args='--cflags --libs', mandatory=False) | |||||
| conf.env['BUILD_DRIVER_IIO'] = conf.is_defined('HAVE_GTKIOSTREAM') | |||||
| conf.check_cfg(package='eigen3', atleast_version='3.1.2', args='--cflags --libs', mandatory=False) | |||||
| conf.env['BUILD_DRIVER_IIO'] += conf.is_defined('HAVE_EIGEN3') | |||||
| conf.check_cfg(package='sox', atleast_version='14.4.0', args='--cflags --libs', mandatory=False) | |||||
| conf.env['BUILD_DRIVER_IIO'] += conf.is_defined('HAVE_SOX') | |||||
| def create_jack_driver_obj(bld, target, sources, uselib = None): | def create_jack_driver_obj(bld, target, sources, uselib = None): | ||||
| driver = bld(features = ['c', 'cxx', 'cxxshlib', 'cshlib']) | driver = bld(features = ['c', 'cxx', 'cxxshlib', 'cshlib']) | ||||
| @@ -36,15 +44,15 @@ def build(bld): | |||||
| jackd.defines = ['HAVE_CONFIG_H','SERVER_SIDE'] | jackd.defines = ['HAVE_CONFIG_H','SERVER_SIDE'] | ||||
| jackd.source = ['../common/Jackdmp.cpp'] | jackd.source = ['../common/Jackdmp.cpp'] | ||||
| jackd.use = ['serverlib'] | jackd.use = ['serverlib'] | ||||
| if bld.env['IS_LINUX'] and bld.env['BUILD_JACKDBUS']: | |||||
| jackd.source += ['../dbus/reserve.c', '../dbus/audio_reserve.c'] | |||||
| if bld.env['IS_LINUX'] and bld.env['BUILD_JACKDBUS']: | |||||
| jackd.source += ['../dbus/reserve.c', '../dbus/audio_reserve.c'] | |||||
| jackd.use += ['PTHREAD', 'DL', 'RT', 'M', 'STDC++', 'DBUS-1'] | jackd.use += ['PTHREAD', 'DL', 'RT', 'M', 'STDC++', 'DBUS-1'] | ||||
| else: | else: | ||||
| jackd.use += ['PTHREAD', 'DL', 'RT', 'M', 'STDC++'] | jackd.use += ['PTHREAD', 'DL', 'RT', 'M', 'STDC++'] | ||||
| jackd.target = 'jackd' | jackd.target = 'jackd' | ||||
| create_jack_driver_obj(bld, 'dummy', '../common/JackDummyDriver.cpp') | create_jack_driver_obj(bld, 'dummy', '../common/JackDummyDriver.cpp') | ||||
| alsa_driver_src = [ | alsa_driver_src = [ | ||||
| 'alsa/JackAlsaDriver.cpp', | 'alsa/JackAlsaDriver.cpp', | ||||
| 'alsa/alsa_rawmidi.c', | 'alsa/alsa_rawmidi.c', | ||||
| @@ -74,6 +82,8 @@ def build(bld): | |||||
| 'firewire/JackFFADOMidiSendQueue.cpp' | 'firewire/JackFFADOMidiSendQueue.cpp' | ||||
| ] | ] | ||||
| iio_driver_src = ['iio/JackIIODriver.cpp'] | |||||
| if bld.env['BUILD_DRIVER_ALSA'] == True: | if bld.env['BUILD_DRIVER_ALSA'] == True: | ||||
| create_jack_driver_obj(bld, 'alsa', alsa_driver_src, ["ALSA"]) | create_jack_driver_obj(bld, 'alsa', alsa_driver_src, ["ALSA"]) | ||||
| create_jack_driver_obj(bld, 'alsarawmidi', alsarawmidi_driver_src, | create_jack_driver_obj(bld, 'alsarawmidi', alsarawmidi_driver_src, | ||||
| @@ -85,6 +95,9 @@ def build(bld): | |||||
| if bld.env['BUILD_DRIVER_FFADO'] == True: | if bld.env['BUILD_DRIVER_FFADO'] == True: | ||||
| create_jack_driver_obj(bld, 'firewire', ffado_driver_src, ["LIBFFADO"]) | create_jack_driver_obj(bld, 'firewire', ffado_driver_src, ["LIBFFADO"]) | ||||
| if bld.env['BUILD_DRIVER_IIO'] == True: | |||||
| create_jack_driver_obj(bld, 'iio', iio_driver_src, ["GTKIOSTREAM", "EIGEN3"]) | |||||
| create_jack_driver_obj(bld, 'net', '../common/JackNetDriver.cpp') | create_jack_driver_obj(bld, 'net', '../common/JackNetDriver.cpp') | ||||
| create_jack_driver_obj(bld, 'loopback', '../common/JackLoopbackDriver.cpp') | create_jack_driver_obj(bld, 'loopback', '../common/JackLoopbackDriver.cpp') | ||||
| @@ -83,6 +83,7 @@ def options(opt): | |||||
| opt.add_option('--firewire', action='store_true', default=False, help='Enable FireWire driver (FFADO)') | opt.add_option('--firewire', action='store_true', default=False, help='Enable FireWire driver (FFADO)') | ||||
| opt.add_option('--freebob', action='store_true', default=False, help='Enable FreeBob driver') | opt.add_option('--freebob', action='store_true', default=False, help='Enable FreeBob driver') | ||||
| opt.add_option('--alsa', action='store_true', default=False, help='Enable ALSA driver') | opt.add_option('--alsa', action='store_true', default=False, help='Enable ALSA driver') | ||||
| opt.add_option('--iio', action='store_true', default=False, help='Enable IIO driver') | |||||
| opt.add_option('--autostart', type='string', default="default", help='Autostart method. Possible values: "default", "classic", "dbus", "none"') | opt.add_option('--autostart', type='string', default="default", help='Autostart method. Possible values: "default", "classic", "dbus", "none"') | ||||
| opt.add_option('--portaudio', action='store_true', default=False, help='Enable Portaudio driver') | opt.add_option('--portaudio', action='store_true', default=False, help='Enable Portaudio driver') | ||||
| opt.add_option('--winmme', action='store_true', default=False, help='Enable WinMME driver') | opt.add_option('--winmme', action='store_true', default=False, help='Enable WinMME driver') | ||||
| @@ -136,7 +137,7 @@ def configure(conf): | |||||
| conf.check_tool('compiler_cc') | conf.check_tool('compiler_cc') | ||||
| conf.env.append_unique('CCDEFINES', '_POSIX') | conf.env.append_unique('CCDEFINES', '_POSIX') | ||||
| conf.env.append_unique('CXXDEFINES', '_POSIX') | conf.env.append_unique('CXXDEFINES', '_POSIX') | ||||
| conf.env.append_unique('CXXFLAGS', '-Wall') | conf.env.append_unique('CXXFLAGS', '-Wall') | ||||
| conf.env.append_unique('CFLAGS', '-Wall') | conf.env.append_unique('CFLAGS', '-Wall') | ||||
| @@ -149,9 +150,12 @@ def configure(conf): | |||||
| conf.fatal('FreeBob driver was explicitly requested but cannot be built') | conf.fatal('FreeBob driver was explicitly requested but cannot be built') | ||||
| if Options.options.firewire and not conf.env['BUILD_DRIVER_FFADO']: | if Options.options.firewire and not conf.env['BUILD_DRIVER_FFADO']: | ||||
| conf.fatal('FFADO driver was explicitly requested but cannot be built') | conf.fatal('FFADO driver was explicitly requested but cannot be built') | ||||
| if Options.options.iio and not conf.env['BUILD_DRIVER_IIO']: | |||||
| conf.fatal('IIO driver was explicitly requested but cannot be built') | |||||
| conf.env['BUILD_DRIVER_ALSA'] = Options.options.alsa | conf.env['BUILD_DRIVER_ALSA'] = Options.options.alsa | ||||
| conf.env['BUILD_DRIVER_FFADO'] = Options.options.firewire | conf.env['BUILD_DRIVER_FFADO'] = Options.options.firewire | ||||
| conf.env['BUILD_DRIVER_FREEBOB'] = Options.options.freebob | conf.env['BUILD_DRIVER_FREEBOB'] = Options.options.freebob | ||||
| conf.env['BUILD_DRIVER_IIO'] = Options.options.iio | |||||
| if conf.env['IS_WINDOWS']: | if conf.env['IS_WINDOWS']: | ||||
| conf.sub_config('windows') | conf.sub_config('windows') | ||||
| if Options.options.portaudio and not conf.env['BUILD_DRIVER_PORTAUDIO']: | if Options.options.portaudio and not conf.env['BUILD_DRIVER_PORTAUDIO']: | ||||
| @@ -319,7 +323,7 @@ def configure(conf): | |||||
| print("Build with a maximum of %d JACK clients" % Options.options.clients) | print("Build with a maximum of %d JACK clients" % Options.options.clients) | ||||
| print("Build with a maximum of %d ports per application" % Options.options.application_ports) | print("Build with a maximum of %d ports per application" % Options.options.application_ports) | ||||
| display_msg("Install prefix", conf.env['PREFIX'], 'CYAN') | display_msg("Install prefix", conf.env['PREFIX'], 'CYAN') | ||||
| display_msg("Library directory", conf.all_envs[""]['LIBDIR'], 'CYAN') | display_msg("Library directory", conf.all_envs[""]['LIBDIR'], 'CYAN') | ||||
| if conf.env['BUILD_WITH_32_64'] == True: | if conf.env['BUILD_WITH_32_64'] == True: | ||||
| @@ -350,11 +354,12 @@ def configure(conf): | |||||
| display_feature('Build with ALSA support', conf.env['BUILD_DRIVER_ALSA'] == True) | display_feature('Build with ALSA support', conf.env['BUILD_DRIVER_ALSA'] == True) | ||||
| display_feature('Build with FireWire (FreeBob) support', conf.env['BUILD_DRIVER_FREEBOB'] == True) | display_feature('Build with FireWire (FreeBob) support', conf.env['BUILD_DRIVER_FREEBOB'] == True) | ||||
| display_feature('Build with FireWire (FFADO) support', conf.env['BUILD_DRIVER_FFADO'] == True) | display_feature('Build with FireWire (FFADO) support', conf.env['BUILD_DRIVER_FFADO'] == True) | ||||
| display_feature('Build with IIO support', conf.env['BUILD_DRIVER_IIO'] == True) | |||||
| if conf.env['IS_WINDOWS']: | if conf.env['IS_WINDOWS']: | ||||
| display_feature('Build with WinMME support', conf.env['BUILD_DRIVER_WINMME'] == True) | display_feature('Build with WinMME support', conf.env['BUILD_DRIVER_WINMME'] == True) | ||||
| display_feature('Build with Portaudio support', conf.env['BUILD_DRIVER_PORTAUDIO'] == True) | display_feature('Build with Portaudio support', conf.env['BUILD_DRIVER_PORTAUDIO'] == True) | ||||
| if conf.env['BUILD_JACKDBUS'] == True: | if conf.env['BUILD_JACKDBUS'] == True: | ||||
| display_msg('D-Bus service install directory', conf.env['DBUS_SERVICES_DIR'], 'CYAN') | display_msg('D-Bus service install directory', conf.env['DBUS_SERVICES_DIR'], 'CYAN') | ||||
| #display_msg('Settings persistence', xxx) | #display_msg('Settings persistence', xxx) | ||||
| @@ -407,7 +412,7 @@ def build(bld): | |||||
| bld.add_subdirs('man') | bld.add_subdirs('man') | ||||
| if bld.env['BUILD_JACKDBUS'] == True: | if bld.env['BUILD_JACKDBUS'] == True: | ||||
| bld.add_subdirs('dbus') | bld.add_subdirs('dbus') | ||||
| if bld.env['IS_MACOSX']: | if bld.env['IS_MACOSX']: | ||||
| bld.add_subdirs('macosx') | bld.add_subdirs('macosx') | ||||
| bld.add_subdirs('example-clients') | bld.add_subdirs('example-clients') | ||||