I've read up on cmake variable scope but I can't figure out how to build bro with static libraries. The bro-bundled caf already has CAF_BUILD_STATIC_ONLY which I'm pretty sure works but I'm unable to turn it on when building caf as part of a bro build.
For example I'd like is to optionally (i.e. from a -D argument to cmake itself) be able to turn on CAF_BUILD_STATIC_ONLY for aux/broker/3rdparty/caf/CMakeLists.txt but nothing I've tried in the top level CMakeLists.txt is seen when the caf CMakeLists.txt is being evaluated.
(I'm working on updating the FreeBSD port to 2.6 and can't install things like libcaf_io.so in /usr/local/lib because they conflict with libraries potentially installed by the devel/caf port.)
Johanna has been working on this recently. We may end up needing to do a minor release update just to fix this because it appears that it's going to be a bit of a packaging problem on a number of OSs and distros otherwise.
I actually recently started working on this, however I am did not quite
look at what you want.
There already is a branch called topic/johanna/static, which now makes
--build-static(-only) work for broker whan CAF is built statically - it
does not yet pass the static flags through to broker; I actually wanted to
take a look at that today.
In case it is helpful, here is the script I used to build all static bro (without any shared libraries)
cd bro
mkdir buildcaf
cd buildcaf
cmake -DCAF_NO_UNIT_TESTS=1 -DCAF_NO_EXAMPLES=1 -DCAF_BUILD_STATIC_ONLY=1 ../aux/broker/3rdparty/caf/
make
make install || true
cd ..
mkdir build
cd build
cmake -DDISABLE_PYTHON_BINDINGS=1 -DENABLE_STATIC_ONLY=1 -DCAF_ROOT_DIR=../buildcaf ..
make
make install
It needed also a small patch to bro, which comes afterwards
FYI - there now also is a topic/johanna/static branch in the base
repository, which adds a --enable-static-broker flag that automatically
builds/links static broker/caf against Bro.