On May 1, 2009, at 3:12 AM, august wrote:
what exactly does that mean? Do you mean compiling it in
statically?
Or, do you mean compiling and installing the libraries? If you mean
statically, I'm not sure, but I think it will be difficult since
it is
gmerlin based on a plugin architecture of shared objects.
-a
Static is one option, but not the only. You can also compile it as a
dynamic lib and included it with the external. That makes it harder
to distribute though. With Windows and Mac OS X distros of Pd-
extended, there are many included dynamic libs. If there were fink
packages for gmerlin/gavl then this happens automatically as part of
the build system.
Basically what I mean in something like this:
externals/readanysf
externals/readanysf/readanysf~.c
externals/readanysf/gavl
externals/readanysf/gmerlin
Then in the Makefile for readanysf, build gavl and gmerlin, then use
something like "-I./gavl -I./gmerlin" for CFLAGS and "-L./gavl -L./
gmerlin" for LDFLAGS. Using automake would make that process easier.
Then whereever the readanysf~.pd_linux is, the .so would be included
(or .pd_darwin/.dylib, or .dll/dll).
I'm not sure it can work like that. For one, and correct me if I am
wrong...cause I am certainly not the master of dynamic linking, but
just
because you compile an app with -L/gavl doesn't mean your system
will be
able to load that needed dynamic library with the app. You need to
tell
the system that the dynamic library is somewhere where it can find it.
The second problem is that the gmerlin_avdecode library itself is
based
on dynamic object plugins (one for madlib, one for theora, etc.) and
those object need to be in a findable place as well.
please correct me if I am missing something about how you are
packaging
PD. Is there a folder somewhere that you are installing shared libs
that
are used by pd or externals?
This kind of thing various a lot by platform:
- Windows will use .dlls in ".", it will also look in the same folder
as the pd.exe. With the Pd-extended installer, the dlls can be
installed and managed in the "system32" folder too.
- I think GNU/Linux can also look in "." for .so files, but I haven't
really tried much because I haven't had too, I just statically link,
or use packaged libraries there.
- Mac OS X is the hardest. The .dylibs need to have their path coded
in them. I don't think "." will work, but it might. In Pd-extended,
I wrote a script that looks for Fink libs (based on the /sw base path)
then it copies them into the Pd-extended.app/Contents/lib and rewrites
their path using the @executable_path variable that allows some kind
of relative path. This is fully automated for years now, so I think
making fink packages for this stuff will be the easiest path on Mac OS
X. But it would be good to figure out how to automatically
load .dylibs from '.' so they can be included in any standalone
libdirs. By the way, libquicktime also has plugins, but they are also
included in the Pd-extended.app package. That required setting an
envvar with the location.
After writing all that, I am thinking that linking everything
statically on all platforms is probably going to be the easiest thing
to do for now... it would be the same makefile, more or less, on all
platforms. The dynamic lib stuff will all be totally different on
each platform.
.hc
----------------------------------------------------------------------------
"It is convenient to imagine a power beyond us because that means we
don't have to examine our own lives.", from "The Idols of
Environmentalism", by Curtis White
_______________________________________________
[email protected] mailing list
UNSUBSCRIBE and account-management ->
http://lists.puredata.info/listinfo/pd-list