The current cmake/LibeventConfig.cmake.in has a few problems and I'm not
sure how cleanly developed it is. It seems rater complex for the little
things I would assume it needs to do.
I found two problems that are fixed in this PR:
- If the downstream user does not explicitly set LIBEVENT_STATIC_LINK
before calling find_package(libevent) then they will not be able to
detect the static library, even if its the only one that exists. Since
this may be rather strict, I've changed the behavior so that
LIBEVENT_STATIC_LINK can be set to ON or OFF, but if unset, it defaults
to whatever configuration libevent was built as.
- The other problem is a bug. The package configuration needs to unset
CMAKE_FIND_LIBRARY_SUFFIXES after use, otherwise all packages that are
detected after libevent will be "infected" by this setting. This was a
significant problem for us, and is very hard to detect in downstream
project, because the order of dependencies will lead to different search
results.
(cherry picked from commit 1675a55620e6f0bbba5776f2df72cd48920421c2)
This patchset adds next missing things (in compare to autotools):
- pkgconfig
- event_pthreads/event_openssl
- compile shared/static libraries always
And some fixes, because it will not build after fixing other things:
- export missing symbols for cmake (-fvisibility=hidden)
* cmake-missing-bits:
cmake: support visibility for AppleClang too
cmake: fix export absolute path and relative path and cleanup a bit
cmake: generate and install pkgconfig files
cmake: build SHARED and STATIC libraries (like autoconf does)
cmake: add missing event_openssl/event_pthreads libraries
Export symbols for -fvisibility=hidden (under cmake)
Refs: #246
(cherry picked from commit 489991a2b2628ba1ff4e6879b9f67ec35d224c38)