Wireshark-dev: Re: [Wireshark-dev] [Wireshark-commits] rev 52194: / /trunk/cmake/modules/: Find
From: Joerg Mayer <jmayer@xxxxxxxxx>
Date: Tue, 24 Sep 2013 11:49:48 +0200
On Tue, Sep 24, 2013 at 10:24:33AM +0100, Graham Bloice wrote:
> On 24 September 2013 10:17, Joerg Mayer <jmayer@xxxxxxxxx> wrote:
> 
> > On Mon, Sep 23, 2013 at 05:32:38PM -0700, Gerald Combs wrote:
> > > Would it make things easier for either of you if you could get useful
> > > answers from pkg-config on Windows?
> >
> > Sure! The problem to solve here is how to handle the different install
> > places (not everyone will find c:\wireshark\ a convenient place where to
> > put the Wireshark-winXX-libs directory). In my current cmake install I've
> > created an (environment) variable to specify that base path.
> > Apart from that: it would be helping because pkgconfig will allow us to
> > get additional information like other required libs, compile flags etc.
> >
> >
> As Jorg says, the main issue right at the start is the location of stuff,
> does pkg-config give you that, or is it more oriented around how the
> package was built and configured?  I'm not at all familiar with pkg-config.

It will provide paths, but also additional information required to bild a program
with that lib.

Here is an example:
jmayer@egg:~> pkg-config --cflags gtk+-3.0
-pthread -I/usr/include/gtk-3.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/libpng15
jmayer@egg:~> pkg-config --libs gtk+-3.0
-lgtk-3 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lgobject-2.0 -lglib-2.0
If linking would require -L or other flags, they would be displayed as well.

> My proto-plan at the moment is that the env installer\updater
> (chocolatey??) will grab all the required bits and store them somewhere
> (possibly configurable by the user) and then provide that location(s) as a
> hint(s) to CMake (env var is too ephemeral for me, probably a file) which
> can then go and do its thing.

The current windows build process seems to require
set WIRESHARK_TARGET_PLATFORM=winXX
so I added
set WIRESHARK_BASE_DIR=c:/wireshark
If you think a registry entry would be better: That's supported by cmake
as well and would probably be a cleaner solution.

Ciao
      Jörg

-- 
Joerg Mayer                                           <jmayer@xxxxxxxxx>
We are stuck with technology when what we really want is just stuff that
works. Some say that should read Microsoft instead of technology.