diff options
author | Kito Danya Dietrich <kito@gentoo.org> | 2005-09-11 00:57:39 +0000 |
---|---|---|
committer | Kito Danya Dietrich <kito@gentoo.org> | 2005-09-11 00:57:39 +0000 |
commit | 98479043be98d53ee77dbee9cdde40c691b86717 (patch) | |
tree | e7b0a9cfac7dc763185c92913c9cb5236b4edebd /media-sound/jack-audio-connection-kit | |
parent | Mark 0.12.0 stable on alpha (diff) | |
download | gentoo-2-98479043be98d53ee77dbee9cdde40c691b86717.tar.gz gentoo-2-98479043be98d53ee77dbee9cdde40c691b86717.tar.bz2 gentoo-2-98479043be98d53ee77dbee9cdde40c691b86717.zip |
Updated coreaudio patch to allow for >32 character devicenames. Make jackstart a symlink on >=2.6 kernels.
(Portage version: 2.0.52-r1)
Diffstat (limited to 'media-sound/jack-audio-connection-kit')
6 files changed, 554 insertions, 4 deletions
diff --git a/media-sound/jack-audio-connection-kit/ChangeLog b/media-sound/jack-audio-connection-kit/ChangeLog index 7dcb1ba00c2d..da29d04f1f50 100644 --- a/media-sound/jack-audio-connection-kit/ChangeLog +++ b/media-sound/jack-audio-connection-kit/ChangeLog @@ -1,6 +1,15 @@ # ChangeLog for media-sound/jack-audio-connection-kit # Copyright 2002-2005 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/media-sound/jack-audio-connection-kit/ChangeLog,v 1.58 2005/08/05 20:25:22 kito Exp $ +# $Header: /var/cvsroot/gentoo-x86/media-sound/jack-audio-connection-kit/ChangeLog,v 1.59 2005/09/11 00:57:39 kito Exp $ + +*jack-audio-connection-kit-0.100.0-r1 (11 Sep 2005) + + 11 Sep 2005; Kito <kito@gentoo.org> + files/jack-audio-connection-kit-0.100.0-coreaudio.patch, + +files/jack-audio-connection-kit-0.100.0-driver_interface.patch, + +jack-audio-connection-kit-0.100.0-r1.ebuild: + Updated coreaudio patch to allow for >32 character devicenames. + Make jackstart a symlink on >=2.6 kernels. *jack-audio-connection-kit-0.100.0 (05 Aug 2005) diff --git a/media-sound/jack-audio-connection-kit/Manifest b/media-sound/jack-audio-connection-kit/Manifest index 953c8a27e85a..94cc94b07413 100644 --- a/media-sound/jack-audio-connection-kit/Manifest +++ b/media-sound/jack-audio-connection-kit/Manifest @@ -1,11 +1,12 @@ -MD5 12ba9bdc06c4aa396ac90a7ebb9400e7 ChangeLog 12096 -MD5 de43c85f549fb9f68102ff44ba2d3476 jack-audio-connection-kit-0.100.0.ebuild 2948 +MD5 a0965dc93a6417c2742e4fd4f2542912 ChangeLog 12474 +MD5 a338eb8033d8a9eaefe4455594f50c17 jack-audio-connection-kit-0.100.0-r1.ebuild 3486 MD5 0d56eae2a04a15dbe5e7ca024a87a097 jack-audio-connection-kit-0.80.0.ebuild 1771 MD5 4ee3c27feb88ab9f33c934e0262fbc45 jack-audio-connection-kit-0.98.1-r1.ebuild 2116 MD5 e908ec8467eb0ced024bbb594cabebaa jack-audio-connection-kit-0.99.0-r1.ebuild 2404 MD5 d2217ed2dffecb4ea7852365588ec3cb jack-audio-connection-kit-0.99.0-r2.ebuild 2286 MD5 79cfb94890d2d1d32fb0331bc01cc022 jack-audio-connection-kit-0.99.0-r3.ebuild 2318 MD5 e9914343b13388692a7ed11361d53724 metadata.xml 218 +MD5 de43c85f549fb9f68102ff44ba2d3476 jack-audio-connection-kit-0.100.0.ebuild 2948 MD5 176e3d4dbee7533b6a08863ed1f74079 files/digest-jack-audio-connection-kit-0.100.0 85 MD5 9068d5fd09d15355ad0ff859b82f5038 files/digest-jack-audio-connection-kit-0.80.0 84 MD5 1081e2f37f20874fb10b5a9c183df0b4 files/digest-jack-audio-connection-kit-0.98.1-r1 84 @@ -17,4 +18,6 @@ MD5 b5dc5c728b1bdc6c5ebf5e54dc3ca246 files/jack-audio-connection-kit-0.98.1-conf MD5 cb8756e396d8d311dbcd4440fd483fc9 files/jack-audio-connection-kit-0.99.0-jackstart.patch 515 MD5 0ad8a4c606e807460bce497d044044ef files/jack-audio-connection-kit-doc-option.patch 1103 MD5 8e9c72734364a9d7e4a6d781e13beec8 files/jack-audio-connection-kit-transport.patch 309 -MD5 d41d8cd98f00b204e9800998ecf8427e files/jack-audio-connection-kit-0.100.0-coreaudio.patch 0 +MD5 464df562168e8de76000186ea43932b7 files/jack-audio-connection-kit-0.100.0-coreaudio.patch 13398 +MD5 176e3d4dbee7533b6a08863ed1f74079 files/digest-jack-audio-connection-kit-0.100.0-r1 85 +MD5 a3265365ae4f49605813783bb1b87306 files/jack-audio-connection-kit-0.100.0-driver_interface.patch 374 diff --git a/media-sound/jack-audio-connection-kit/files/digest-jack-audio-connection-kit-0.100.0-r1 b/media-sound/jack-audio-connection-kit/files/digest-jack-audio-connection-kit-0.100.0-r1 new file mode 100644 index 000000000000..0c2a3c52a9f0 --- /dev/null +++ b/media-sound/jack-audio-connection-kit/files/digest-jack-audio-connection-kit-0.100.0-r1 @@ -0,0 +1 @@ +MD5 dc28b3e8a663c090227e83be6fc1f2d4 jack-audio-connection-kit-0.100.0.tar.gz 682799 diff --git a/media-sound/jack-audio-connection-kit/files/jack-audio-connection-kit-0.100.0-coreaudio.patch b/media-sound/jack-audio-connection-kit/files/jack-audio-connection-kit-0.100.0-coreaudio.patch index e69de29bb2d1..0a77c8e42726 100644 --- a/media-sound/jack-audio-connection-kit/files/jack-audio-connection-kit-0.100.0-coreaudio.patch +++ b/media-sound/jack-audio-connection-kit/files/jack-audio-connection-kit-0.100.0-coreaudio.patch @@ -0,0 +1,389 @@ +--- jack-audio-connection-kit-0.100.0/drivers/coreaudio/coreaudio_driver.c 2005-06-09 13:14:45 -0500 ++++ jack-cvs/drivers/coreaudio/coreaudio_driver.c 2005-09-10 18:47:27 -0500 +@@ -37,10 +37,10 @@ + May 20, 2005: S.Letz: Add "systemic" latencies management. + Jun 06, 2005: S.Letz: Remove the "-I" parameter, change the semantic of "-n" parameter : -n (driver name) now correctly uses the PropertyDeviceUID + (persistent accross reboot...) as the identifier for the used coreaudio driver. ++ Jun 14, 2005: S.Letz: Since the "-I" parameter is not used anymore, rename the "systemic" latencies management parametes "-I" and "-O" like for the ALSA driver. ++ Aug 16, 2005: S.Letz: Remove get_device_id_from_num, use get_default_device instead. If the -n option is not used or the device name cannot ++ be found, the default device is used. Note: the default device can be used only if both default input and default output are the same. + +- TODO: +- - fix cpu load behavior. +- - multiple-device processing. + */ + + #include <stdio.h> +@@ -98,15 +98,15 @@ + JCALog("error code : kAudioDevicePermissionsError\n"); + break; + default: +- JCALog("error code : unknown\n"); ++ JCALog("error code : unknown %ld\n", err); + break; + } + #endif + } + +-static OSStatus get_device_name_from_id(AudioDeviceID id, char name[60]) ++static OSStatus get_device_name_from_id(AudioDeviceID id, char name[256]) + { +- UInt32 size = sizeof(char) * 60; ++ UInt32 size = sizeof(char) * 256; + OSStatus res = AudioDeviceGetProperty(id, 0, false, + kAudioDevicePropertyDeviceName, + &size, +@@ -124,27 +124,35 @@ + } else { + OSStatus res = AudioHardwareGetProperty(kAudioHardwarePropertyDeviceForUID, &size, &value); + CFRelease(inIUD); +- return res; ++ JCALog("get_device_id_from_uid %s %ld \n", UID, *id); ++ return (*id == kAudioDeviceUnknown) ? kAudioHardwareBadDeviceError : res; + } + } + +-static OSStatus get_device_id_from_num(int i, AudioDeviceID * id) ++static OSStatus get_default_device(AudioDeviceID * id) + { +- OSStatus theStatus; +- UInt32 theSize; +- int nDevices; +- AudioDeviceID* theDeviceList; +- +- theStatus = AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDevices, +- &theSize, NULL); +- nDevices = theSize / sizeof(AudioDeviceID); +- theDeviceList = +- (AudioDeviceID*) malloc(nDevices * sizeof(AudioDeviceID)); +- theStatus = AudioHardwareGetProperty(kAudioHardwarePropertyDevices, +- &theSize, theDeviceList); +- +- *id = theDeviceList[i]; +- return theStatus; ++ OSStatus res; ++ UInt32 theSize = sizeof(UInt32); ++ AudioDeviceID inDefault; ++ AudioDeviceID outDefault; ++ ++ if ((res = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultInputDevice, ++ &theSize, &inDefault)) != noErr) ++ return res; ++ ++ if ((res = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice, ++ &theSize, &outDefault)) != noErr) ++ return res; ++ ++ JCALog("get_default_device: input %ld output %ld\n", inDefault, outDefault); ++ ++ // Get the device only if default input and ouput are the same ++ if (inDefault == outDefault) { ++ *id = inDefault; ++ return noErr; ++ } else { ++ return kAudioHardwareBadDeviceError; ++ } + } + + static OSStatus render(void *inRefCon, +@@ -257,8 +265,6 @@ + */ + + for (chn = 0; chn < driver->capture_nchannels; chn++) { +- //snprintf (buf, sizeof(buf) - 1, "capture_%lu", chn+1); +- + err = AudioDeviceGetPropertyInfo(driver->device_id, chn + 1, true, kAudioDevicePropertyChannelName, &size, &isWritable); + if (err == noErr && size > 0) { + err = AudioDeviceGetProperty(driver->device_id, chn + 1, true, kAudioDevicePropertyChannelName, &size, channel_name); +@@ -293,8 +299,6 @@ + port_flags = JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal; + + for (chn = 0; chn < driver->playback_nchannels; chn++) { +- //snprintf (buf, sizeof(buf) - 1, "playback_%lu", chn+1); +- + err = AudioDeviceGetPropertyInfo(driver->device_id, chn + 1, false, kAudioDevicePropertyChannelName, &size, &isWritable); + if (err == noErr && size > 0) { + err = AudioDeviceGetProperty(driver->device_id, chn + 1, false, kAudioDevicePropertyChannelName, &size, channel_name); +@@ -428,8 +432,9 @@ + ComponentResult err1; + UInt32 outSize; + Boolean isWritable; +- AudioStreamBasicDescription srcFormat, dstFormat, sampleRate; ++ AudioStreamBasicDescription srcFormat, dstFormat; + int in_nChannels, out_nChannels, i; ++ Float64 nominalSampleRate; + + driver = (coreaudio_driver_t *) calloc(1, sizeof(coreaudio_driver_t)); + jack_driver_init((jack_driver_t *) driver); +@@ -459,14 +464,17 @@ + driver->playback_frame_latency = playback_latency; + + if (driver_uid) { +- if (get_device_id_from_uid(driver_uid, &driver->device_id) != noErr) +- return NULL; ++ if (get_device_id_from_uid(driver_uid, &driver->device_id) != noErr) { ++ if (get_default_device(&driver->device_id) != noErr) ++ goto error; ++ } + } else { +- get_device_id_from_num(0, &driver->device_id); // takes a default value (first device) ++ if (get_default_device(&driver->device_id) != noErr) ++ goto error; + } + + if (get_device_name_from_id(driver->device_id, driver->driver_name) != noErr) +- return NULL; ++ goto error; + + driver->client = client; + driver->period_usecs = +@@ -481,31 +489,42 @@ + err = AudioDeviceSetProperty(driver->device_id, NULL, 0, false, + kAudioDevicePropertyBufferFrameSize, outSize, &frames_per_cycle); + if (err != noErr) { +- jack_error("Cannot set buffer size %ld\n", frames_per_cycle); ++ JCALog("Cannot set buffer size %ld\n", frames_per_cycle); + printError1(err); +- return NULL; ++ goto error; + } +- +- // Setting sample rate +- outSize = sizeof(AudioStreamBasicDescription); ++ ++ outSize = sizeof(Float64); + err = AudioDeviceGetProperty(driver->device_id, 0, false, +- kAudioDevicePropertyStreamFormat, &outSize, &sampleRate); ++ kAudioDevicePropertyNominalSampleRate, &outSize, &nominalSampleRate); + if (err != noErr) { +- jack_error("Cannot get sample rate\n"); ++ JCALog("Cannot get sample rate\n"); + printError1(err); +- return NULL; +- } ++ goto error; ++ } else { ++ JCALog("Read nominalSampleRate %f\n", nominalSampleRate); ++ } + +- if (rate != (unsigned long)sampleRate.mSampleRate) { +- sampleRate.mSampleRate = (Float64)rate; ++ if (rate != (jack_nframes_t)nominalSampleRate) { ++ nominalSampleRate = (Float64)rate; + err = AudioDeviceSetProperty(driver->device_id, NULL, 0, +- false, kAudioDevicePropertyStreamFormat, outSize, &sampleRate); ++ false, kAudioDevicePropertyNominalSampleRate, outSize, &nominalSampleRate); + if (err != noErr) { +- jack_error("Cannot set sample rate %ld\n", rate); ++ JCALog("Cannot set sample rate %ld\n", rate); + printError1(err); +- return NULL; ++ goto error; + } + } ++ ++ err = AudioDeviceGetProperty(driver->device_id, 0, false, ++ kAudioDevicePropertyNominalSampleRate, &outSize, &nominalSampleRate); ++ if (err != noErr) { ++ JCALog("Cannot get sample rate\n"); ++ printError1(err); ++ goto error; ++ } else { ++ JCALog("Read again nominalSampleRate %f\n", nominalSampleRate); ++ } + + // AUHAL + ComponentDescription cd = {kAudioUnitType_Output, +@@ -516,22 +535,18 @@ + if (err1 != noErr) + goto error; + +- err1 = AudioUnitSetProperty(driver->au_hal, kAudioOutputUnitProperty_CurrentDevice, +- kAudioUnitScope_Global, 0, &driver->device_id, sizeof(AudioDeviceID)); +- if (err1 != noErr) { +- JCALog("error: calling AudioUnitSetProperty - kAudioOutputUnitProperty_CurrentDevice\n"); +- return NULL; +- } +- + err1 = AudioUnitInitialize(driver->au_hal); +- if (err1 != noErr) ++ if (err1 != noErr) { ++ printError1(err1); + goto error; ++ } + + outSize = 1; + err1 = AudioUnitSetProperty(driver->au_hal, kAudioOutputUnitProperty_EnableIO, + kAudioUnitScope_Output, 0, &outSize, sizeof(outSize)); + if (err1 != noErr) { + JCALog("error: calling AudioUnitSetProperty - kAudioOutputUnitProperty_EnableIO,kAudioUnitScope_Output\n"); ++ printError1(err1); + goto error; + } + +@@ -541,28 +556,42 @@ + kAudioUnitScope_Input, 1, &outSize, sizeof(outSize)); + if (err1 != noErr) { + JCALog("error: calling AudioUnitSetProperty - kAudioOutputUnitProperty_EnableIO,kAudioUnitScope_Input\n"); ++ printError1(err1); + goto error; + } + } + ++ err1 = AudioUnitSetProperty(driver->au_hal, kAudioOutputUnitProperty_CurrentDevice, ++ kAudioUnitScope_Global, 0, &driver->device_id, sizeof(AudioDeviceID)); ++ if (err1 != noErr) { ++ JCALog("error: calling AudioUnitSetProperty - kAudioOutputUnitProperty_CurrentDevice\n"); ++ printError1(err1); ++ goto error; ++ } ++ + err1 = AudioUnitSetProperty(driver->au_hal, kAudioUnitProperty_MaximumFramesPerSlice, + kAudioUnitScope_Global, 0, (UInt32*)&frames_per_cycle, sizeof(UInt32)); + if (err1 != noErr) { + JCALog("error: calling AudioUnitSetProperty - kAudioUnitProperty_MaximumFramesPerSlice\n"); ++ printError1(err1); + goto error; + } + + err1 = AudioUnitGetPropertyInfo(driver->au_hal, kAudioOutputUnitProperty_ChannelMap, + kAudioUnitScope_Input, 1, &outSize, &isWritable); +- if (err1 != noErr) ++ if (err1 != noErr) { + JCALog("error: calling AudioUnitSetProperty - kAudioOutputUnitProperty_ChannelMap-INFO 1\n"); ++ printError1(err1); ++ } + + in_nChannels = outSize / sizeof(SInt32); + + err1 = AudioUnitGetPropertyInfo(driver->au_hal, kAudioOutputUnitProperty_ChannelMap, + kAudioUnitScope_Output, 0, &outSize, &isWritable); +- if (err1 != noErr) ++ if (err1 != noErr) { + JCALog("error: calling AudioUnitSetProperty - kAudioOutputUnitProperty_ChannelMap-INFO 0\n"); ++ printError1(err1); ++ } + + out_nChannels = outSize / sizeof(SInt32); + +@@ -576,7 +605,7 @@ + } + + if (chan_out < out_nChannels) { +- SInt32 chanArr[out_nChannels]; // ??? ++ SInt32 chanArr[out_nChannels]; + for (i = 0;i < out_nChannels; i++) { + chanArr[i] = -1; + } +@@ -585,8 +614,10 @@ + } + err1 = AudioUnitSetProperty(driver->au_hal, kAudioOutputUnitProperty_ChannelMap, + kAudioUnitScope_Output, 0, chanArr, sizeof(SInt32) * out_nChannels); +- if (err1 != noErr) ++ if (err1 != noErr) { + JCALog("error: calling AudioUnitSetProperty - kAudioOutputUnitProperty_ChannelMap 0\n"); ++ printError1(err1); ++ } + } + + if (chan_in < in_nChannels) { +@@ -599,8 +630,10 @@ + } + AudioUnitSetProperty(driver->au_hal, kAudioOutputUnitProperty_ChannelMap, + kAudioUnitScope_Input, 1, chanArr, sizeof(SInt32) * in_nChannels); +- if (err1 != noErr) ++ if (err1 != noErr) { + JCALog("error: calling AudioUnitSetProperty - kAudioOutputUnitProperty_ChannelMap 1\n"); ++ printError1(err1); ++ } + } + + srcFormat.mSampleRate = rate; +@@ -617,8 +650,10 @@ + + err1 = AudioUnitSetProperty(driver->au_hal, kAudioUnitProperty_StreamFormat, + kAudioUnitScope_Input, 0, &srcFormat, sizeof(AudioStreamBasicDescription)); +- if (err1 != noErr) ++ if (err1 != noErr) { + JCALog("error: calling AudioUnitSetProperty - kAudioUnitProperty_StreamFormat kAudioUnitScope_Input\n"); ++ printError1(err1); ++ } + + dstFormat.mSampleRate = rate; + dstFormat.mFormatID = kAudioFormatLinearPCM; +@@ -634,8 +669,10 @@ + + err1 = AudioUnitSetProperty(driver->au_hal, kAudioUnitProperty_StreamFormat, + kAudioUnitScope_Output, 1, &dstFormat, sizeof(AudioStreamBasicDescription)); +- if (err1 != noErr) ++ if (err1 != noErr) { + JCALog("error: calling AudioUnitSetProperty - kAudioUnitProperty_StreamFormat kAudioUnitScope_Output\n"); ++ printError1(err1); ++ } + + if (chan_in > 0 && chan_out== 0) { + AURenderCallbackStruct output; +@@ -645,6 +682,7 @@ + kAudioUnitScope_Output, 1, &output, sizeof(output)); + if (err1 != noErr) { + JCALog("AudioUnitSetProperty - kAudioUnitProperty_SetRenderCallback 1\n"); ++ printError1(err1); + goto error; + } + } else { +@@ -655,6 +693,7 @@ + kAudioUnitScope_Input, 0, &output, sizeof(output)); + if (err1 != noErr) { + JCALog("AudioUnitSetProperty - kAudioUnitProperty_SetRenderCallback 0\n"); ++ printError1(err1); + goto error; + } + } +@@ -689,7 +728,7 @@ + error: + AudioUnitUninitialize(driver->au_hal); + CloseComponent(driver->au_hal); +- jack_error("Cannot open the coreaudio driver\n"); ++ jack_error("Cannot open the coreaudio driver"); + free(driver); + return NULL; + } +@@ -796,7 +835,7 @@ + + i++; + strcpy(desc->params[i].name, "input-latency"); +- desc->params[i].character = 'l'; ++ desc->params[i].character = 'I'; + desc->params[i].type = JackDriverParamUInt; + desc->params[i].value.i = 0; + strcpy(desc->params[i].short_desc, "Extra input latency"); +@@ -804,7 +843,7 @@ + + i++; + strcpy(desc->params[i].name, "output-latency"); +- desc->params[i].character = 'L'; ++ desc->params[i].character = 'O'; + desc->params[i].type = JackDriverParamUInt; + desc->params[i].value.i = 0; + strcpy(desc->params[i].short_desc, "Extra output latency"); +@@ -870,18 +909,17 @@ + frames_per_interrupt = (unsigned int) param->value.ui; + break; + +- case 'l': ++ case 'I': + systemic_input_latency = param->value.ui; + break; + +- case 'L': ++ case 'O': + systemic_output_latency = param->value.ui; + break; + } + } + + /* duplex is the default */ +- + if (!capture && !playback) { + capture = TRUE; + playback = TRUE; diff --git a/media-sound/jack-audio-connection-kit/files/jack-audio-connection-kit-0.100.0-driver_interface.patch b/media-sound/jack-audio-connection-kit/files/jack-audio-connection-kit-0.100.0-driver_interface.patch new file mode 100644 index 000000000000..2b5d865cb561 --- /dev/null +++ b/media-sound/jack-audio-connection-kit/files/jack-audio-connection-kit-0.100.0-driver_interface.patch @@ -0,0 +1,11 @@ +--- jack-audio-connection-kit-0.100.0/jack/driver_interface.h 2003-12-20 10:47:36 -0600 ++++ jack-cvs/jack/driver_interface.h 2005-09-10 18:47:09 -0500 +@@ -30,7 +30,7 @@ + + #define JACK_DRIVER_NAME_MAX 15 + #define JACK_DRIVER_PARAM_NAME_MAX 15 +-#define JACK_DRIVER_PARAM_STRING_MAX 31 ++#define JACK_DRIVER_PARAM_STRING_MAX 63 + + + /** Driver parameter types */ diff --git a/media-sound/jack-audio-connection-kit/jack-audio-connection-kit-0.100.0-r1.ebuild b/media-sound/jack-audio-connection-kit/jack-audio-connection-kit-0.100.0-r1.ebuild new file mode 100644 index 000000000000..eb8ad6716a23 --- /dev/null +++ b/media-sound/jack-audio-connection-kit/jack-audio-connection-kit-0.100.0-r1.ebuild @@ -0,0 +1,137 @@ +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/media-sound/jack-audio-connection-kit/jack-audio-connection-kit-0.100.0-r1.ebuild,v 1.1 2005/09/11 00:57:39 kito Exp $ + +inherit flag-o-matic eutils multilib + +DESCRIPTION="A low-latency audio server" +HOMEPAGE="http://jackit.sourceforge.net/" +SRC_URI="mirror://sourceforge/jackit/${P}.tar.gz" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0" +KEYWORDS="-alpha -amd64 -hppa -ia64 -mips ~ppc ~ppc-macos -ppc64 -sparc -x86" +IUSE="altivec alsa caps coreaudio doc debug jack-tmpfs mmx oss portaudio sndfile sse" + +RDEPEND="dev-util/pkgconfig + sndfile? ( >=media-libs/libsndfile-1.0.0 ) + sys-libs/ncurses + caps? ( sys-libs/libcap ) + !ppc64? ( !alpha? ( !ia64? ( portaudio? ( =media-libs/portaudio-18* ) ) ) ) + !sparc? ( alsa? ( >=media-libs/alsa-lib-0.9.1 ) ) + !media-sound/jack-cvs" +DEPEND="${RDEPEND} + doc? ( app-doc/doxygen )" + +pkg_setup() { + if ! use sndfile ; then + ewarn "sndfile not in USE flags. jack_rec will not be installed!" + fi + + if use caps; then + if [[ "${KV:0:3}" == "2.4" ]]; then + einfo "will build jackstart for 2.4 kernel" + else + einfo "using compatibility symlink for jackstart" + fi + fi + +} + +src_unpack() { + unpack ${A} + cd ${S} + + # the docs option is in upstream, I'll leave the pentium2 foobage + # for the x86 folks...... kito@gentoo.org + + # Add doc option and fix --march=pentium2 in caps test + #epatch ${FILESDIR}/${PN}-doc-option.patch + + # compile and install jackstart, see #92895, #94887 + #if use caps ; then + # epatch ${FILESDIR}/${PN}-0.99.0-jackstart.patch + #fi + + epatch ${FILESDIR}/${PN}-transport.patch + epatch ${FILESDIR}/${P}-coreaudio.patch + epatch ${FILESDIR}/${P}-driver_interface.patch +} + +src_compile() { + local myconf + + sed -i "s/^CFLAGS=\$JACK_CFLAGS/CFLAGS=\"\$JACK_CFLAGS $(get-flag -march)\"/" configure + + if use doc; then + myconf="--enable-html-docs --with-html-dir=/usr/share/doc/${PF}" + else + myconf="--disable-html-docs" + fi + + if use jack-tmpfs; then + myconf="${myconf} --with-default-tmpdir=/dev/shm" + else + myconf="${myconf} --with-default-tmpdir=/var/run/jack" + fi + + if use userland_Darwin ; then + append-flags -fno-common + use altivec && append-flags -force_cpusubtype_ALL \ + -maltivec -mabi=altivec -mhard-float -mpowerpc-gfxopt + fi + + use sndfile && \ + export SNDFILE_CFLAGS="-I/usr/include" \ + export SNDFILE_LIBS="-L/usr/$(get_libdir) -lsndfile" + + econf \ + $(use_enable altivec) \ + $(use_enable alsa) \ + $(use_enable caps capabilities) $(use_enable caps stripped-jackd) \ + $(use_enable coreaudio) \ + $(use_enable debug) \ + $(use_enable mmx) \ + $(use_enable oss) \ + $(use_enable portaudio) \ + $(use_enable sse) \ + --with-pic \ + ${myconf} || die "configure failed" + emake || die "compilation failed" + + if use caps && [[ "${KV:0:3}" == "2.4" ]]; then + einfo "Building jackstart for 2.4 kernel" + cd ${S}/jackd + emake jackstart || die "jackstart build failed." + fi + +} + +src_install() { + make DESTDIR=${D} datadir=${D}/usr/share install || die + + if use caps; then + if [[ "${KV:0:3}" == "2.4" ]]; then + cd ${S}/jackd + dobin jackstart + else + dosym /usr/bin/jackd /usr/bin/jackstart + fi + fi + + if ! use jack-tmpfs; then + keepdir /var/run/jack + chmod 4777 ${D}/var/run/jack + fi + + if use doc; then + mv ${D}/usr/share/doc/${PF}/reference/html \ + ${D}/usr/share/doc/${PF}/ + + mv ${S}/example-clients \ + ${D}/usr/share/doc/${PF}/ + fi + + rm -rf ${D}/usr/share/doc/${PF}/reference +} + |