[Ardour-Dev] building A3 on OSX; patches

Robin Gareus robin at gareus.org
Tue Nov 29 06:42:39 PST 2011


Hi Paul,

> i don't see the point of a universal build myself. it increases the
> download size in order to cover 1/3 of the downloaders, a number that
> is shrinking over time, 

That's a valid point.

Well, then i suggest to remove the waf '--universal' option instead of
fixing it. In its current state it is broken.

> and complicates the build process.

Does it really? It's just add a handful compiler and linker flags.

What difference does it make to ardour: it is less than 10 lines in the
ardour build-env and code; incl. the FPU #ifdefs. It's more of a
political decision.

> i also don't see the point of a non-AU build.

To get a 64bit native binary.

My OSX machine is full of LV2 and LADSPA plugins: only a handful AU
plugins that I never use. The only thing that prevents Ardour from being
a 64bit binary is the Carbon AU plugin interface. Now, I don't expect a
magic speedup - audio processing is 32 bit anyway -  but it may give an
edge to GUI responsiveness.
I'll load one of Joern's > 2000 ports, > 100 tracks ambisonics session
this afternoon.. wanna take a bet if a wallclock will suffice to
quantify the difference between 32 and 64bit? :-)

> i have not seen the issue with GetCurrentEventLoop and don't
> understand why you would be encountering it.

What version of OSX do you build it on? What compiler?

I guess the Carbon headers are pulled in automatically via the 10.4u SDK
that you're using on your box. Xcode on OSX 10.6,7 does no longer come
with the 10.4 SDK.

I think it can be explained like this:

The CoreFoundation.h header that is included from audio_unit.cc uses the
_Cocoa_ API these days (getCFRunLoop(), CFRunLoopGetCurrent() etc.).

GetCurrentEventLoop() is part of the _Carbon_ Event Manager. You need to
explicitly include Carbon headers and link to the Carbon Framework on
OSX >=10.6.

http://developer.apple.com/library/mac/#documentation/CoreFoundation/Reference/CFRunLoopRef/Reference/reference.html
:

"Use the getCFRunLoop method of NSRunLoop to obtain the corresponding
CFRunLoopRef type. In Carbon applications, use the
GetCFRunLoopFromEventLoop function."

Adding #include <Carbon/Carbon.h> to libs/ardour/audio_unit.cc fixes the
problem.
QED.
robin



More information about the Ardour-Dev mailing list