Wireshark-dev: Re: [Wireshark-dev] Status Cmake Win32 support

From: Graham Bloice <graham.bloice@xxxxxxxxxxxxx>
Date: Mon, 2 Dec 2013 11:34:21 +0000
On 2 December 2013 10:54, Joerg Mayer <jmayer@xxxxxxxxx> wrote:
On Sun, Dec 01, 2013 at 10:35:50PM +0000, Graham Bloice wrote:
> On 30 November 2013 23:18, Joerg Mayer <jmayer@xxxxxxxxx> wrote:

> I still have the issue with GTK3, in that I have to comment out the path
> "corrections" in FindGTK3.cmake.

Hmm, can you please explain the problems you are encountering - I'd like to
fix them. In case it involves rewriting the results from pkg-config, can you
please include the .pc file?

In FindGTK3.cmake there is some code that modifies the paths found by pkg-config only on Windows.  Doing this totally messed up the paths for me, I commented out the block of code and everything just worked.  Note that I'm using pkg-config from the gtk2 bundle not the Cygwin one.


> My current hit-list of things to do (some you've touched in in your
> message):
>
> 1.  Copy build artifacts (and 3rd party dlls etc.) to a directory for
> running (as per nmake).  Almost like install.  Note that the exact location
> of the build artifacts depends on the type of build actually made (debug,
> release etc.)

I'll look into that.

> 2.  Fix the generation of the manifext files (in progress GMB), and include
> in build (use SED to produce .manifest from .manifest.in), should go into
> correct intermediate build dir (e.g. wireshark.dir\Release).  Note needs to
> know processor architecture, so maybe should be a prebuild custom command
> for each target).

I have no idea what this is about but native nmake seems to do something here
as well. msbuild seems to generate something here.

There are manifest templates (*.exe.manifest.in located in the source image directory) that (in an nmake build) are modified by a sed script to produce the *.exe.manifest files that are then added to the list of source files for the executable being built.  CMake and VS does the rest.  I have used configure_file() to process the file, but an issue is that one template field is modified depending on the build being run (x86, vs 64) so it should really be created at build time, not cmake time.


> 3.  Fix the generation of the .rc files (in progress GMB), and include in
> build (use SED to produce .rc from .rc.in), should go into correct
> intermediate build dir (e.g. wireshark.dir\Release).  Note associated .ico
> and .manifest.

dito.

Very similar to the item above, although the .rc files can be shared between all builds.

> 4.  Fix the use of zlib, so that zlib is built by CMake and doesn't require
> nmake build first.

This should be done in the setup process.

If zlib had a CmakeLists.txt, could we somehow chain that in? 

One of the remaining points is to make the setup process independent of
nmake but we need a concept here first that should probably then be applied
to the native nmake too.

 
On the long list.
 
> 5.  Fix PortAudio.

dito.

> 6.  Fix CMake to find a working pkg-config.exe (only found in gtk2\bin at
> the moment, missing from gtk3), currently manualy copied to build dir
> (along with intl.dll and libglib-2.0-0.dll)

I use pkg-config from cygwin, so it might be easiest to update the installation
manual.

See my earlier comment about using the one from gtk2.  I'd really like not to add any dependencies on Cygwin, as one of my long-term goals is to remove the need for Cygwin.

> 7.  Fix qtshark use its own .rc file (not done in nmake either)

> 8.  Fix build of plugins.

They build on my system (cmake with nmake and msbuild).

When building wireshark, I don't see any attempt to build them, maybe there's a missing dependency in CMakeLists.  I haven't tried building them explicitly. 

> 9.  Fix build of executables that use WTAP_PLUGIN_SOURCES.

Have to check what you are talking about :-)

Happened right at the end of my testing time so I didn't really investigate it.  I was trying to build some one of the other executables (mergecap??) and it failed.  Then I noticed all other executables that depended on WTAP_PLUGIN_SOURCES also failed.