FindICE.cmake

I’m trying to build gnu radio with control port, but cmake won’t find
my Ice installation. I have Ice-3.4 installed through apt on Ubuntu
13.10. Digging in to the FindIce.cmake I made the following changes:

diff --git a/cmake/Modules/FindICE.cmake b/cmake/Modules/FindICE.cmake
index 087ee9b…705c019 100644
— a/cmake/Modules/FindICE.cmake
+++ b/cmake/Modules/FindICE.cmake
@@ -4,7 +4,7 @@
FIND_PACKAGE(PkgConfig)
PKG_CHECK_MODULES(PC_ICE Ice-3.4 QUIET)

-if(NOT ICE_FOUND)
+if(NOT PC_ICE_FOUND)

Maybe we don’t have a .pc file for Ice. Check for Config.h. If

that exists, get the version string and parse it for the proper

version.

@@ -21,11 +21,11 @@ if(NOT ICE_FOUND)
set(ICE_FOUND TRUE)
endif(ICE_FOUND)
endif(ICE_CONFIG_INCLUDE_DIR)
-endif(NOT ICE_FOUND)
+endif(NOT PC_ICE_FOUND)

-if(NOT ICE_FOUND)
+if(NOT PC_ICE_FOUND)
message(STATUS " package ‘Ice-3.4’ not found")
-endif(NOT ICE_FOUND)
+endif(NOT PC_ICE_FOUND)

Recheck if we found the right version of ICE and proceed if true.

This at least squelches the ‘package Ice-3.4 not found’ message, which
is an improvement. (I test this with cmake -P . I’m
still not able to get cmake to configure GNU Radio to build
control-port, and this is already extending my cmake-fu.

I’ve only managed to get this configured properly through PyBOMBS. Any
suggestions on fixing this module to properly detect a distro
installed Ice?

Nathan

On Wed, Apr 30, 2014 at 9:11 PM, West, Nathan
[email protected]wrote:

PKG_CHECK_MODULES(PC_ICE Ice-3.4 QUIET)
-endif(NOT ICE_FOUND)

Nathan,
Yeah, I suspect you’re right on the use of the PC_ for the variables.

Have you made sure that python-zeroc-ice is also installed?

Tom

Ok, yeah, I think I’ve figured out the problem. They completely changed
the
ICE package config files and the location of the libraries in 14.04. The
package config file doesn’t have any include dirs specified and the
library
points to an installed Microsoft DLL, which seems… strange to me.
Basically, I’m thinking that using the package config for Ice is
worthless,
so I’m going to strip it out of the FindICE-3.5.cmake file (we’ll be
pushing up the minimum required version of ICE to 3.5 with our release
of
v3.8.0, anyways, so support for 3.4 will go away).

The other big issue is that the libraries are installed for multi-arch
support, so they are located in /usr/lib/libIceX.so, anymore. And we’re
using NO_DEFAULT_PATH when looking for libraries. I /think/ we started
using that setting to support OS X builds. I have this working now on a
VM,
but I’m going to have to work on patching FindIce-3.5.cmake a little
more
to make sure everything’s ok and test it on multiple platforms (yay…).

If you’ve followed what I said above, you should be able to quickly fix
this locally on your own machine. Basically:

  • remove the use of package config (comment out PKG_CHECK_MODULE)
  • remove the use of NO_DEFAULT_PATH in the FIND_LIBRARY commands

Tom

I can confirm that this solved the issue and I’m able to build with
Ubuntu’s version of Ice. However, I think this also affects 13.10
(that’s what I’ve been using and I upgraded specifically to get
ice-3.5).

Thanks Tom.

On Thu, May 1, 2014 at 8:23 AM, Tom R. [email protected] wrote:

+++ b/cmake/Modules/FindICE.cmake
set(ICE_FOUND TRUE)

installed Ice?
Tom

Yea, python-zeroc-ice is installed. If I replace all of the ICE_FOUND
instances with PC_ICE_FOUND then I get a syntax error on line 36:
string(REGEX REPLACE “/include” “” ICE_PATH
${ICE_CONFIG_INCLUDE_DIR}). I Don’t see where ICE_PATH is being set in
the first place.

Nathan

On Wed, May 7, 2014 at 5:53 PM, West, Nathan
[email protected]wrote:

I can confirm that this solved the issue and I’m able to build with
Ubuntu’s version of Ice. However, I think this also affects 13.10
(that’s what I’ve been using and I upgraded specifically to get
ice-3.5).

Thanks Tom.

Great, thanks for testing! I’ve pushed a branch to my github repo called
cmake_ice_libs that addresses the issues for both Ice 3.4 and 3.5. I’ll
use
it tomorrow to test my various setups in-house, but any other feedback
about it’s applicability or problems will be helpful!

https://github.com/trondeau/gnuradio/tree/cmake_ice_libs

Thanks,
Tom