2  Installation

2.1 Requirements
2.2 Installation
2.2.1 Using CMake for iceWing building
2.2.2 Using makefiles for iceWing building

2.1  Requirements

Libraries needed iceWing is targeted at Unix-like operating systems and was actually tested on Linux, Alpha/True64, Solaris, and Mac OSX. For compiling and using it some programs and libraries must be installed:

Additional optional libraries extend the functionality of iceWing:

Attention: You will always need the development files, especially header files, for the different libraries. We will show for RedHat packages (rpm) how to verify that everything is installed. Debian packages are quite similar. You can easily check with the following shell command

  > rpm -qa | grep gtk

which packages are installed and which version that libraries have. iceWing needs the headers, too, and often separate developer packets provide them. If you compile your own libraries from sources, you have to add the headers into the default-include path, so iceWing will find them. After verifying all this, you only need to get the iceWing tarball “icewing-version.tar.bz2”.

Further stuff You can use DACS for your own iceWing plugins to communicate with other external net wide processes. It works quite similar to Corba. You do not need DACS for any iceWing internal communication (iceWing - plugin, plugin - plugin) or to e.g. access files of the system. Additionally, iceWing has integrated support for reading/publishing images to/from other programs and for remote control of plugin sliders via DACS. If DACS is not available, these features can be disabled during compiling.

More information about DACS can be found in the Web under this address:

Many details of DACS are also in the dissertation of Niels Jungclaus [Jun98].

2.2  Installation

Lets assume you have the iceWing tarball in “./”. Then simply start by

  > bunzip2 -c icewing-version.tar.bz2 | tar -xv
  > cd icewing-version

where version is the particular iceWing version number you are using.

To proceed, you have two distinct possibilities, as there are two installation procedures available: Using CMake to configure iceWing and generate necessary build files or to adapt and use the hand written makefiles.

2.2.1  Using CMake for iceWing building

CMake, available from http://www.cmake.org, is a utility to configure a software package and generate build files for it. If you would like to use it for iceWing, verify that you have CMake installed. After that go to the cmake directory inside the iceWing sources and start the cmake utility, i.e.:

  > cd {wherever your sources are}/cmake
  > cmake ..

This will generate the necessary build files for building iceWing in the cmake subdirectory and for installing it to “/usr/local”. Compiling and installing is then done by

  > make
  > make install

inside the cmake subdirectory. Optionally, “VERBOSE=1 make” will show the exact commands that are run during the make process. “make install” will create a file “install_manifest.txt” in the cmake directory, which contains the list of all installed files.

Additionally, you can pass different variable settings to CMake with the “-D” command line to influence the configuration step, i.e.: “cmake -DNAME_OF_THE_VARIABLE=value ..”. Important available variables are:

CMAKE_INSTALL_PREFIX=PATH:
The installation prefix, e.g. “cmake -DCMAKE_INSTALL_PREFIX=/opt/icewing ..’’ will install iceWing to “/opt/icewing”. The default is “/usr/local”.
WITH_GRABBER=ON|OFF:
If OFF, iceWing will have no support for grabbing images from a camera, independent of any installed libraries. Otherwise, depending on the found libraries, support for different grabber hardware will be integrated. The default is ON.

On Alpha/True64 systems the libAVVideo is needed for all grabber access. On Linux, support for Composite and SVideo cameras is based on the “Video for Linux Two” interface (see “http://linuxtv.org/wiki/”) and directly integrated in iceWing. If available, the libv4lconvert library (see “http://git.linuxtv.org/v4l-utils.git”) is used to support different additional pixel formats, pixel formats which are sometimes used be web cams.

FireWire (IEEE1394) cameras supporting the “Digital Camera Specification” are supported via the raw1394 and dc1394 libraries. If available version 2 of the dc1394 library is used, otherwise version 1.2 is used. Cameras conforming to the NET iCube interface are supported if the iCube NETUSBCAM library can be found. Cameras conforming to the MATRIX VISION impact acquire interface are supported if the impact aquire libraries can be found. Cameras conforming to the IDS Imaging uEye interface are supported if the uEye libraries can be found. Cameras using the GenICam standard are supported by the aravis library. Additional hardware is supported if the unicap library is available.

WITH_GTK1=ON|OFF:
If ON, force using GTK+ V1.2 for the user interface. If OFF, first try to find GTK+ V2.x and fall back to GTK+ V1.2 if V2.x can not be found. The default is OFF.
CMAKE_BUILD_TYPE=STRING:
Type of build. The possible choices are: None (CMAKE_CXX_FLAGS and CMAKE_C_FLAGS are used), Debug, Release, RelWithDebInfo, and MinSizeRel. The default is “RelWithDebInfo”, which uses “-O2 -g” if gcc is used as the compiler.

CMake will try to find all necessary and supported libraries automatically. If you want to disable this and prevent the usage of a library, you can do so by using one of the following variables:

WITH_DACS=ON|OFF:
Build with DACS support if DACS is installed.
WITH_DOC=ON|OFF:
Build the iceWing PDF manual.
WITH_XCF=ON|OFF:
Build XCF communication support.
WITH_PNG=ON|OFF:
Build PNG image saving support.
WITH_JPEG=ON|OFF:
Build JPEG image saving support.
WITH_ARAVIS=ON|OFF:
Build aravis grabbing support.
WITH_FIRE2=ON|OFF:
Build Firewire grabbing support.
WITH_ICUBE=ON|OFF:
Build NET iCube grabbing support.
WITH_UNICAP=ON|OFF:
Build unicap grabbing support.
WITH_LIBV4L=ON|OFF:
Use libv4lconvert in the V4L2 grabbing driver.
WITH_MVIMPACT=ON|OFF:
Build MATRIX VISION mvDeviceManager grabbing support.
WITH_UEYE=ON|OFF:
Build IDS uEye grabbing support.
WITH_FFMPEG=ON|OFF:
Build extended movie loading/saving support.
WITH_READLINE=ON|OFF:
Build icewing-control command line tool.

If you have headers and libraries installed in non-standard locations that CMake cannot find, then set the following two environment variables. Despite the similar naming convention, these will not work as arguments on the cmake command line:

CMAKE_INCLUDE_PATH:
E.g. export CMAKE_INCLUDE_PATH=/sw/include
CMAKE_LIBRARY_PATH:
E.g. export CMAKE_LIBRARY_PATH=/sw/lib

After the “make install”, if the new “icewing”-executable is in the execute-path, you can right away start “icewing”, the executable (see section 3.1 “quicktour”). If you are interested in what is where in this installation, have a look at section 8.1 “filesystem hierarchy”.

2.2.2  Using makefiles for iceWing building

Alternatively to the CMake build system, hand written makefiles are available for compiling the iceWing package. To use these, you have to edit the Makefile to adopt it to your system and in- or exclude the support for additional packages. Mostly it will be uncommenting some few lines that you probably will not need on your system.

PREFIX:
The installation prefix, i.e. where iceWing will be installed during “make install”. The default is “/usr/local”.
FLAGS:
Eventually you must adopt the compiler flags to your hardware. E.g.: You might not have a Pentium/Athlon processor?
WITH_GTK1:
If WITH_GTK1 is defined GTK+ V1.2 is used for the user interface. Otherwise iceWing uses the newer 2.x GTK+ version.
WITH_GRABBER, WITH_ARAVIS, WITH_FIRE,
WITH_ICUBE, WITH_MVIMPACT, WITH_UEYE, WITH_UNICAP, WITH_LIBV4L: If included, iceWing will have support for grabbing images from a camera. On Alpha/True64 systems an external library – the libAVVideo – is needed. The value given to WITH_GRABBER specifies the location of the libAVVideo.

On Linux support for image grabbing is directly integrated into iceWing. This gets activated if WITH_GRABBER is defined. Composite and SVideo cameras are supported with the help of the “Video for Linux Two” interface (see “http://linuxtv.org/wiki/”). If WITH_LIBV4L is defined the libv4lconvert library (see “http://git.linuxtv.org/v4l-utils.git”) is used to support different additional pixel formats, pixel formats which are sometimes used be web cams. WITH_LIBV4L gives the location of the libv4lconvert library and header files.

If additionally WITH_FIRE is defined FireWire (IEEE1394) cameras supporting the “Digital Camera Specification” are supported as well. WITH_FIRE gives the location of the needed raw1394 and dc1394 libraries and header files, for example “/usr” or “/usr/local”. If WITH_FIRE2 is defined, version 2 of the dc1394 library is used instead of version 1.2. WITH_ICUBE activates support for cameras conforming to the NET iCube interface (see “http://www.net-gmbh.com”). WITH_ICUBE gives the location of the iCube NETUSBCAM library and header files. WITH_MVIMPACT activates support for cameras conforming to the MATRIX VISION impact acquire interface (see “http://www.matrix-vision.com”). WITH_MVIMPACT gives the location of the impact aquire libraries and header files. WITH_UEYE activates support for cameras conforming to the IDS uEye interface (see “http://www.ids-imaging.com”). WITH_UEYE gives the location of the uEye libraries and header files. WITH_ARAVIS additionally to WITH_GRABBER activates support for the aravis library, which supports cameras conforming to the GenICam standard (see “http://live.gnome.org/Aravis”). WITH_ARAVIS gives the location of the aravis library and header files. By defining WITH_UNICAP additionally to WITH_GRABBER support for the unicap library gets integrated. WITH_UNICAP gives the location of the unicap library and header files (see “http://unicap-imaging.org”).

WITH_DACS:
If included, iceWing will have support for DACS, which is like Corba for network wide interprocess communication. Especially, iceWing will be able to send and receive images and widget configurations via DACS communication channels.
WITH_GPB:
Enables support for the gdk-pixbuf library to load images of other formats than PNM and PNG.
WITH_JPG, WITH_PNG, WITH_ZLIB:
Enables further image saving formats and enhances image loading by using the libjpeg, libpng, and libz libraries.
WITH_FFMPEG:
Enables loading of a wide variety of video formats and saving of two additional video formats by using the FFmpeg library. WITH_FFMPEG gives the location of the library and the corresponding header files.

“make” it all After adopting the Makefile, you can build the installation files from the sources:

  > cd {wherever your sources are}
  > make depend
  > make

You must now login as admin/root, if ${PREFIX} is not writable for the current user. The Makefile expects the directory that is named in ${PREFIX} to be existing - if not:

  > mkdir ${PREFIX}

The installation is now fully prepared. Now the time for installation has come!

  > cd {wherever your sources are}
  > make install

To all the cautious admins: You eventually want to check the groups and rights of the new dirs now.

That’s it! For further details about what was done, just have insight into the installation log file, which is located at “${PREFIX}/share/log/iceWing.log”.

If the new “icewing”-executable is in the execute-path, you can right away start “icewing”, the executable (see section 3.1 quicktour). If you are interested in what is where in this installation, have a look at section 8.1 Filesystem.

Troubleshooting Check the output for errors, also the installation-logfile. You are sure, that you installed the needed libraries properly, but

  > make

produced errors like:

/bin/sh: gdk-pixbuf-config: command not found

Let’s again assume you used the RedHat package named “gdk-pixbuf-devel” (well, Debian packages are treated similar). Then check via

  > rpm -ql gdk-pixbuf-devel | grep gdk-pixbuf-config

or with full search

  > find / -name gdk-pixbuf-config

where the needed packed-files got installed. Maybe they are simply not in the default-execute path!?

Assume you find “gdk-pixbuf-config” in “/opt/gnome/bin/gdk-pixbuf-config”. With the bash-shell you can replace the compiling

  > make

command by:

  > PATH=$PATH:/opt/gnome/bin make

Or you change the Makefile entry “GDK_PIXBUF = gdk-pixbuf-config” to “GDK_PIXBUF = /opt/gnome/bin/gdk-pixbuf-config”.