delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2015/12/27/14:12:04

X-Recipient: archive-cygwin AT delorie DOT com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:mime-version:from:date:message-id:subject:to
:content-type; q=dns; s=default; b=MRXaXRrHJ+2sNRxbmKoBTApu6s/QZ
sRtCNsACq/cFpGMQs4nOZWzxMKJ6SPg58t+B+ocuDyNA8uoKjxNPJBFderWAPazt
2lkY2xX1VuYyktdiss9uoEI/kyqyoxeQiJapw1KO810buDEcn9m3rY0cRVwpxoSk
U+uJP4nApBsJLs=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:mime-version:from:date:message-id:subject:to
:content-type; s=default; bh=JwJ1TcdVW5l1J+1Uu0QuajXpCe0=; b=P8K
iao0FOhdmGb/282+QIBtQs485gv7h4Qe90fOFyhjN8NGpfwnJUblD5VsH7HFxng/
S++NVFF2SWpWkBEV4LHRwcZIgFtrx0hHpJflGDnOcodqXVXyV1EDchc3nal9d28a
uWMjuvC3rCpsl1Y6nYz9FQaUB+k+XZGn+hakRKjE=
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Authentication-Results: sourceware.org; auth=none
X-Virus-Found: No
X-Spam-SWARE-Status: No, score=-6.3 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=belong, apologies, WINDRES, autogen.sh
X-HELO: mail-yk0-f175.google.com
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to :content-type; bh=p+QpksKf8tMQrt+Y3RDAU+sSixGvAgr5ijbR5a9iCYw=; b=PWY+tk7PrMIQEqUyec61KRFJyy4LKVxIXBPOn3se02GJjiytSkjJUffP9Q8oKNDcRP j8XlsWPFw2SBSBKiYk+qZdIzHMM3m6KKTW52qEu9cJRQel3qFlYVQ/X4tYpmfQCi0x4g juCeexUG4oyz/XZWHGaH7fSzO4CCWqJf2i8IAJcBQQXq2mLevzaqiSOvI886Ng+ZLUzG kakItfu1dY9ZM0f8ks1KK/QnHUsYKb+hDkuyqjRDqUFsSFDUXGCYvHP9rN3sfemvjboE CeNYIkjuBcaWXfddcu0lGN+/LdnxqhQl+dwJdGIlo+/LpcJxS/XjZ5w0F1ILbsv3dobG jJbQ==
X-Gm-Message-State: ALoCoQnHKNePe2gRrdfHdvFmxzCRzkWt4b9bPVq5Se3ifa2cp0LsxO7DGvl5m7kJ9Z2yfrL+GPuTfb7I3Ao/lQM+HlgueV2pqOmYceMKB4cgFZqZmuduyq0=
X-Received: by 10.13.213.193 with SMTP id x184mr43523246ywd.339.1451243504154; Sun, 27 Dec 2015 11:11:44 -0800 (PST)
MIME-Version: 1.0
From: David Xu <davix AT seas DOT upenn DOT edu>
Date: Sun, 27 Dec 2015 14:11:24 -0500
Message-ID: <CAHAz=whCeJghZVuLcrq_MJ649RqdvgR4cFi=Po9mbBEC=7VN3A@mail.gmail.com>
Subject: Functional Cygwin GTK with native win32 backend
To: cygwin AT cygwin DOT com

Hi!

I compiled GTK with the native win32 backend, and it is functional.
Brief demo: http://i.imgur.com/PAWyLdW.gif

I would like to bring up discussion about the possibility of including
a native windows build of GTK in the Cygwin package list as well,
since it turns out that the steps that I took weren't so bad.

The general strategy I used was to build the GTK dependencies with
native Windows backends where possible. Just getting those to compile
was half the battle. The other half of the battle was to make some
win32 API symbols from GLIB be exported in libglib-2.0.dll.a to be
visible to the build of GTK.

Caveat: I have not had a chance to test my build extensively yet,
since it *is* holiday break for me, but so far it seems to work. If
you're wondering why I did this, I did this because I was bored and
felt festive.

Happy holidays!

***
Addendum:

If you would like to reproduce my work, you can refer to
https://gist.github.com/lyze/a4f53f8fadac1068a994

If certain details are unclear or do not work, I apologize in advance
for that; I'd be happy to help clarify things.

Outline:

1) Build cairo-1.15.2 with the windows backend (with
--enable-win32=yes passed to ./configure). No patches necessary here.
We need the newer version because it gives us the needed symbol
cairo_win32_surface_create_with_format. This gives us the cairo-win32 package.

2) Build pango-1.39.0 from source. I just used the source release from
their website. You probably will have to specify PKG_CONFIG_PATH as
well to find the new cairo-win32 package.

3) Build epoxy-1.3.1 with the windows backend. I got the release from
the GitHub repository. Patch the release with the attached epoxy
patches, then run ./configure, which should prepare epoxy for EGL,
GLX, and WGL backends.

3) Build glib2.0-2.46.2-1. Here, I obtained the source from the Cygwin
package setup executable. Run cygport prep as usual, and then apply my
patches.

4) Finally, build gtk+-3.18.6. I obtained the source release from the
GNOME website. Apply patches, then configure with
--enable-win32-backend. The invocation I used:

./autogen.sh WINDRES=/usr/bin/windres
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig LDFLAGS='-L/usr/local/lib
-L/usr/lib/w32api' --enable-win32-backend

Gotchas:
You will probably have to specify PKG_CONFIG_PATH at every step, or
else you might pick up your existing library files instead of the
newly built ones. Same goes for LDFLAGS as well.

Apologies in advance if this email is in the wrong list, or if
specific discussion about these build details don't belong here.

-- 
David Xu

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019