On 06/28/2010 03:27 PM, Kalev Lember wrote:
A few packages [2] [3] have recently had problems with the default
-DBUILD_SHARED_LIBS:BOOL=ON which is part of %cmake macro. Those
packages didn't pass neither SHARED nor STATIC arguments to
add_library() call and relied on the cmake usual default to produce
static libraries. Those static libraries weren't meant to be installed;
they were just used as "convenience" libraries during the build which
would be statically linked into the final executable.
However, if BUILD_SHARED_LIBS is defined, we get unversioned shared
libraries instead of "convenience" libraries. Packagers often don't know
what to do with such unversioned libraries.
Perhaps it'd be better to completely remove -DBUILD_SHARED_LIBS:BOOL=ON
from the default %cmake macro? I would imagine that most (all?)
libraries which are meant to be actually used as shared libraries
contain explicit add_library(... SHARED) and set_target_properties(...
PROPERTIES VERSION ... SOVERSION ...) calls, but maybe that's not how it
is. Any thoughts whether removing BUILD_SHARED_LIBS=ON would break
existing packages?
Sorry for not replying earlier.
Looking at my existing cmake built packages, I'm a bit leery of this change.
Most of them don't seem to specify SHARED in add_library. Has anyone tested
this out on a large number of packages? Perhaps it makes sense to request a
cmake koji build tag for this and rebuild all cmake built packages there.
--
Orion Poplawski
Technical Manager 303-415-9701 x222
NWRA/CoRA Division FAX: 303-415-9702
3380 Mitchell Lane orion(a)cora.nwra.com
Boulder, CO 80301
http://www.cora.nwra.com