Updated coreaudio patch to allow for >32 character devicenames. Make jackstart a...
authorKito Danya Dietrich <kito@gentoo.org>
Sun, 11 Sep 2005 00:57:39 +0000 (00:57 +0000)
committerKito Danya Dietrich <kito@gentoo.org>
Sun, 11 Sep 2005 00:57:39 +0000 (00:57 +0000)
Package-Manager: portage-2.0.52-r1

media-sound/jack-audio-connection-kit/ChangeLog
media-sound/jack-audio-connection-kit/Manifest
media-sound/jack-audio-connection-kit/files/digest-jack-audio-connection-kit-0.100.0-r1 [new file with mode: 0644]
media-sound/jack-audio-connection-kit/files/jack-audio-connection-kit-0.100.0-coreaudio.patch
media-sound/jack-audio-connection-kit/files/jack-audio-connection-kit-0.100.0-driver_interface.patch [new file with mode: 0644]
media-sound/jack-audio-connection-kit/jack-audio-connection-kit-0.100.0-r1.ebuild [new file with mode: 0644]

index 7dcb1ba00c2dce42ac497b5ada9da4755734a30f..da29d04f1f508c61f47e572acbfa42bdc8f5806f 100644 (file)
@@ -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)
 
index 953c8a27e85a8f8d327f3a82aed712cf576bb379..3cbb705caa7833742508e95ca316b1073889627c 100644 (file)
@@ -1,11 +1,12 @@
-MD5 12ba9bdc06c4aa396ac90a7ebb9400e7 ChangeLog 12096
-MD5 de43c85f549fb9f68102ff44ba2d3476 jack-audio-connection-kit-0.100.0.ebuild 2948
+MD5 a1787c713f42db42b253251f09880b65 ChangeLog 12474
+MD5 e8f890b350d484b2e881039ee5500f46 jack-audio-connection-kit-0.100.0-r1.ebuild 3489
 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 (file)
index 0000000..0c2a3c5
--- /dev/null
@@ -0,0 +1 @@
+MD5 dc28b3e8a663c090227e83be6fc1f2d4 jack-audio-connection-kit-0.100.0.tar.gz 682799
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0a77c8e4272631bf811a6bea058275e9359f8772 100644 (file)
@@ -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 (file)
index 0000000..2b5d865
--- /dev/null
@@ -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 (file)
index 0000000..eb8ad67
--- /dev/null
@@ -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
+}
+