So far this is a log of my experiments. There are still lots of issues from here to a working build of Gtk+ so don't expect too much

Introduction

Latest efforts by SamThursfield to get a good native mingw build environment running. These will supplant the instructions at http://afuera.me.uk/jhbuild-windows/ but are currently a work-in-progress.

My current goals are

  • Use jhbuild from git.gnome.org instead of the old Gitorious branch
  • Set up a buildbot slave to keep the Windows port free of regressions
  • Investigate 64-bit builds, and whether the mingw.org and mingw-w32 compilers are compatible in either direction (I suspect mingw.org-built code is compatible with mingw-w32 but not the other way around, since mingw-w32 in other areas provides more complete headers etc)
  • Set up a mingw-get package repository for the Gnome platform libraries, and generally make getting a Windows build environment super easy for everyone

The cast

MSYS

MSYS is a minimal POSIX environment, which is part of the mingw.org project.

that c:\build\mingw is mounted at /mingw

  • Run:

     c:\build\mingw\bin\mingw-get install msys-base msys-patch msys-unzip msys-vim msys-wget 

  • Edit (in the shell) ~/.profile and add the following lines:
    export PATH=/c/build/bin:$PATH
    
    # jhbuild needs to know shell location to be able to run it
    export SHELL=/bin/sh 

Restart the shell.

mingw

You have the choice between two gcc builds.

mingw.org: the "standard" compiler

c:\build\mingw\bin\mingw-get install mingw32 mingw32-g++

mingw-w64: a separate project, with more complete headers, a 64-bit compiler and various other novelties. It is not packaged in mingw-get format, you just download a big bundle and extract it. Be careful to NOT install any gcc/binutils packages from mingw-get in a mingw-w64 environment.

I'm not touching this until mingw.org builds are working :)

You also need (in either case):

c:\build\mingw\bin\mingw-get install mingw32-autotools mingw32-gettext

A note on dual-compiler setups

It seems like maybe this should be possible, but I definitely don't want to be involved in lots of "this is slightly the wrong dll" problems so for now I recommend that if you want to use both toolchains, keep them in completely seperate build environments, with different MSYS installations etc.

Supporting tools

I suggest you put these in c:\tools or some such, as they are self-contained and have no effect on your build targets etc.

msysGIT: make sure you prevent the installer from adding anything to the PATH ("Use Git Bash Only"), because it contains its own versions of MSYS and you really don't want version conflicts here. Choose "Checkout Windows-style, commit Unix-style line endings" as well.

Python 2.7: make sure the installer adds Python to the PATH.

Gnome platform

Binary packages

DieterVerfaillie is working on binary packaging of various components.

Stable ones are available at: http://ftp.gnome.org/pub/gnome/binaries/win32

Experimental ones are currently at: http://optionexplicit.be/projects/gnome-windows/

Building the platform from source

If you'd like fresh builds of your platform libraries, for example to do testing or development of the platform itself, you need to build everything from the latest sources using jhbuild.

Build dependencies

Download and unzip into the prefix:

http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.26-1_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config-dev_0.26-1_win32.zip http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.8-1_win32.zip

# Cheeky! cp c:/build/mingw/bin/libintl8.dll c:/build/bin/intl.dll

jhbuild

Using msysGIT, run

git clone git://git.gnome.org/jhbuild.git git checkout --track origin/windows

In an MSYS shell, run ./autogen.sh --prefix=/c/build make && make install

Create the file c:\build\bin\git and give it the contents:

cmd /c "c:\tools\git\bin\git $*"

This allows jhbuild to call out to git. Git still sits in its own, independent MSYS environment at the moment because it's so sensitive to bugs and version differences. One day it should be packaged as a standard MSYS component.

See also: https://bugzilla.gnome.org/show_bug.cgi?id=585620

Copy examples/mingw32.jhbuild to ~/.jhbuildrc and edit the settings to your liking.

Download, build and install the latest freetype from http://www.freetype.org/ (would be nice if we could conditionally add it to a moduleset, or MSYS package it or something :) All available binaries are quite out of date right now.

Now you can run jhbuild and everything builds of course with no issues :)

Current status

Manual interruptions to build process

* Ironically, Launchpad uses self-signed SSL certificates, so wget of intltool fails and you must wget the file manually with --no-check-certificate

Open bugs

libxslt

https://bugzilla.gnome.org/show_bug.cgi?id=665526

libxml2

https://bugzilla.gnome.org/show_bug.cgi?id=660045 https://bugzilla.gnome.org/show_bug.cgi?id=599241

jhbuild

https://bugzilla.gnome.org/show_bug.cgi?id=502970 https://bugzilla.gnome.org/show_bug.cgi?id=585620 https://bugzilla.gnome.org/show_bug.cgi?id=644643

Modules that don't work

rarian (not useful anyway)

Attic/MingwNativeBuild (last edited 2018-01-15 17:09:57 by SvitozarCherepii)