[Portaudio] directory structure (Solaris support?)
Ross Bencina
rbencina@iprimus.com.au
Tue, 21 May 2002 14:44:32 +1000
> > I think we should restructure the directories as follows, (Phil?):
> >
> > pa_unix_oss/ // oss implementation
> > pa_unix_solaris/ // solaris implementation
> > pa_unix_common/ // common files for all unixes
>
> So three directories, each with one file....Hmm
> They are so closely related, maybe they could just be in one directory
> called "pa_unix/".
my thinking was along the following lines...
Even if the ALSA implementation is completely separate from oss and solaris
implementations there will still be some common unix functions (memory
allocation, timing etc.) which will be shared by all three implementations.
We could put them all in one directory, but I thought this would be
inconsistent with what we are going to need to do with windows and mac..
since ASIO will use files from pa_win_common under windows, but from
pa_mac_common on the mac I thought we would need separate asio, win_common
and mac_common directories.
the other thing we could do is this:
unix/ -- oss, solaris, alsa + files shared by these
win/ -- mme, ds + files shared by these and winasio
mac/ -- sm, core + files shared by these and macasio
common/ -- common infrastructure to all implementations
asio/ -- asio
beos/ -- beos
sgi/ -- sgiAL
the reality is that things are pretty confusing for users whichever way we
go because a multi-api build will have to pull files from common/ and one or
more implementation directories, plus potentially a platform-common
directory (eg pa_unix_common.c). another thing to consider is whether we
should have a per-platform configuration file which determines which
host-apis are initialised.. at the moment i have an initializer table in the
multi-host-api file, but it could be convienient to have a separate
initialization/configuration file for each implementation: pa_win_init.c
pa_mac_init.c, pa_unix_init.c etc. this would give you at least 2 common
files per-platform.
could we consider dropping pa_ from the directory names too? and how about
an include/ directory for the public include files?
I know it's going to be fun putting these changes into cvs, so it would
warrant further discussion.
Best wishes,
Ross.