Re: GTK+3 win32/64 build environment


I hope I am not too late in the discussion, Marc-André pointed me to it yesterday :) i was not in the mailing list before so I don't know how to jump in the discussion.

I am the author and current maintainer of cerbero, and like he described it previously in this thread we are currently using it to build and package GStreamer and its dependencies (more than 100) for Linux, Windows, OS X, Android and IOS. You can check the results in

I believe cerbero could be very helpful for building  and packaging Gtk+ on Windows and OS X. It's a build system that is platform and architecture aware using recipes that are Python classes, which make it's very useful for building software for different platforms and architecture and work around all the build issues that are specific to a given platform or architecture. I will try to highlight its different features to help you in making your decision.

Bootstrapping is handled internally by cerbero, taking care of installing the toolchain and building or installing all the build dependencies (m4, libtool, autoconf, automake, gettext, yasm, cmake, etc...). On Linux it requires a base system with python and git, on OS X is requires additionally installing XCode (for the packaging tools) and on Windows it also requires Mingw/msys and WiX (for the packaging)

Bootstrapping is as easy as:
  $ cerbero bootstrap

Or for Windows cross-compilation:
  $ cerbero -c config/cross-win64 bootstrap

For Windows we provide pre-compiled  native and cross toolchain for w32 and w64 using mingw-w64 (that are also built using cerbero), so it's not tighted to a specific distro for cross-compilation.

The build process is split in 2 big steps: source handling and build handling. We have backends for SVN, Git and tarballs for the sources and Makefiles, Autotools and CMake for the build.
Projects are described using recipes, which are Python classes, so it's really easy customizing the build process for any kind of project, adding new backends or overwriting the steps in the recipe itself sub-classing the step functions.

cerbero supports native and cross-compilation for Windows and universal builds in OS X, where each project is built in a separate tree for the different target archs (ppc, i386, x86_64) and merged into universal binaries.

Besides building, cerbero is also able to create native packages such as MSI installer in Windows and .pkg packages in OSX. There are 3 kind of packages available:
  * Package: base package that creates merge modules in Windows and .pkg in OS X
  * SdkPackage: collection of Package's creating final installer (MSI installer in Windows and a meta-package .pkg in OS X)
  * Application: creates an installer for applications (MSI installer in Windows, .app package in OSX)
For each package, a runtime and a development package is created to make the distribution easier.

Redistribution and bundling in applications
It's also very easy for applications to embed an redistribute the runtime.
On Windows each package included in the final installer is made using Merge Modules and the same for OS X using .pkg
We have documented the deployment strategies for applications here:

Integration with IDE's
Unfortunately not every body likes the shell, make,  the autotools and pkg-config, so the integration with the native IDE's is very important.
The development package of the SDK allows developers using the regular build process in unix systems, including the libtool libraries and the pkgconfig files but it also allows developers to use VS or XCode.

For VS cerbero creates import libraries and a set of VS property sheets similar to pkg-config files. So including Gtk+ in a Visual Studio project is as simple as including the gtk+.props file, which will in turn include all the dependency .props files and set the correct build and link flags.

For XCode cerbero creates a real OS X frameworks, so using the SDK is as easy as drag and drop the Gtk+.framework into XCode .

I probably missed other features but I hope it's a good starting point to convince you!


Andoni Morales Alastruey

LongoMatch:The Digital Coach

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]