[Freeswitch-dev] Integration of external libraries into FreeSwitch

Roman Shaposhnik rvs at sun.com
Thu Oct 5 00:07:10 EDT 2006


Guys,

since I haven't got any major feedback on my suggestion
of privatizing external libraries FreeSwitch depends
upon I guess its time for me to give a practical example
of how I would like FreeSwitch to be structured.
Lets take libresample-0.1.3 as the simplest case (the meat
of it is just 3 files: filterkit.c, resample.c, resamplesubs.c;
the rest is precisely the fluff I'd like to get rid of):

Anyway, here's what I would like to see in FreeSwitch's SVN
instead:
 
    extlib/libresample/Makefile.[in|am]
                       [ORIGIN|README]
                       src/filterkit.c
                       src/resample.c
                       src/resamplesubs.c
                       src/filterkit.h
                       src/resample_defs.h
                       [inc|include]/libresample.h

ORIGIN (or README) file would describe where the library came
from an what is the procedure for manually sync'ing up with
the upstream development version (if needed).

Makefile.[in|am] would mostly be from the original project
(which means most of the time it would a trivial one) feeding
off a *single* configure run. We can even introduce specific 
targets into it so that it does "export" public API header files
and object files into a predetermined location for ease of 
future linking:
     extlib/lib
     extlib/include
so that -I and -L have to point to a single location only (but still
withing our build area which means no messy make install's!).

PROS:
    * much greater control over how we build external libraries,
      which includes ease of using performance related options,
      building libraries as archives, etc.
    * much greater control over source code of the the external
      libraries (don't have to depend on maintainers to push
      changes we need ASAP).
    * everything is in SVN  
    * single ./configure run
    * no messy make installs screwing up the place where --prefix
      points to
    * no LD_LIBRARY_PATH and LD_RUN_PATH mess to deal with

CONS: 
    * everytime we actually need something from the upstream
      version it would have to be manually sync'ed up with the
      FreeSwitch SVN (hence ORIGIN|README).

And finally -- as far as Anthony's coding speed  is concerned it 
should be pretty transparent ;-), so what do you all think ?

Thanks,
Roman.




More information about the Freeswitch-dev mailing list