From bf063501351aab5b3a08601a7f3bbb5fe31bb6a6 Mon Sep 17 00:00:00 2001
From: Gerardo Ballabio
Date: Sun, 16 Aug 2015 13:18:24 +0200
Subject: add packages gtk3 and gtkmm3
Pango has been updated to 1.37.4 in 24cf97dbdd62ece0ea0b39cf33694a8804352bd1
Side effects:
* mute function g_win32_run_session_bus of glib (see the thread)
* add new external dependency: gdk-pixbuf
Original thread:
https://lists.nongnu.org/archive/html/mingw-cross-env-list/2015-08/msg00009.html
---
index.html | 30 +++--
...b-2-remove-runtime-warning-gtkapplication.patch | 24 ++++
src/gtk3-1-fixes.patch | 139 +++++++++++++++++++++
src/gtk3-test.c | 34 +++++
src/gtk3.mk | 41 ++++++
src/gtkmm3-test.cpp | 21 ++++
src/gtkmm3.mk | 37 ++++++
7 files changed, 318 insertions(+), 8 deletions(-)
create mode 100644 src/glib-2-remove-runtime-warning-gtkapplication.patch
create mode 100644 src/gtk3-1-fixes.patch
create mode 100644 src/gtk3-test.c
create mode 100644 src/gtk3.mk
create mode 100644 src/gtkmm3-test.cpp
create mode 100644 src/gtkmm3.mk
diff --git a/index.html b/index.html
index 9802a6c..7182174 100644
--- a/index.html
+++ b/index.html
@@ -612,6 +612,10 @@ USE_OSGPLUGIN(<plugin2>)
XZ Utils |
|
+
+ gdk-pixbuf |
+ |
+
Debian and derivatives
@@ -619,8 +623,8 @@ USE_OSGPLUGIN(<plugin2>)
apt-get install \
autoconf automake autopoint bash bison bzip2 cmake flex \
- gettext git g++ gperf intltool libffi-dev libtool \
- libltdl-dev libssl-dev libxml-parser-perl make openssl \
+ gettext git g++ gperf intltool libffi-dev libgdk-pixbuf2.0-dev \
+ libtool libltdl-dev libssl-dev libxml-parser-perl make openssl \
p7zip-full patch perl pkg-config python ruby scons sed \
unzip wget xz-utils
@@ -644,7 +648,7 @@ USE_OSGPLUGIN(<plugin2>)
yum install \
autoconf automake bash bison bzip2 cmake flex gcc-c++ \
- gettext git gperf intltool make sed libffi-devel \
+ gdk-pixbuf-devel gettext git gperf intltool make sed libffi-devel \
libtool openssl-devel p7zip patch perl pkgconfig \
python ruby scons unzip wget xz
@@ -658,7 +662,7 @@ USE_OSGPLUGIN(<plugin2>)
pkg_add -r \
automake autoconf bash bison cmake coreutils flex \
- gettext git glib20 gmake gperf gsed intltool libffi \
+ gdk-pixbuf2 gettext git glib20 gmake gperf gsed intltool libffi \
libtool openssl p5-XML-Parser p7zip patch perl \
pkgconf python ruby scons unzip wget
@@ -696,7 +700,7 @@ USE_OSGPLUGIN(<plugin2>)
pacman-g2 -S \
autoconf automake bash bzip2 bison cmake flex gcc \
- gettext git gperf intltool make sed libffi libtool \
+ gdk-pixbuf2 gettext git gperf intltool make sed libffi libtool \
openssl patch perl perl-xml-parser pkgconfig python \
ruby scons unzip wget xz xz-lzma
@@ -718,7 +722,7 @@ USE_OSGPLUGIN(<plugin2>)
sys-devel/patch dev-lang/perl dev-perl/XML-Parser \
dev-util/pkgconfig dev-lang/python dev-lang/ruby \
dev-util/scons app-arch/unzip net-misc/wget \
- app-arch/xz-utils
+ app-arch/xz-utils x11-libs/gdk-pixbuf
Mac OS X
@@ -734,7 +738,7 @@ USE_OSGPLUGIN(<plugin2>)
sudo port install \
- glib2 intltool p5-xml-parser p7zip gpatch scons wget xz
+ gdk-pixbuf2 glib2 intltool p5-xml-parser p7zip gpatch scons wget xz
Method 2 - Rudix
Install Rudix you can make it with following command
@@ -745,6 +749,8 @@ USE_OSGPLUGIN(<plugin2>)
then run:
sudo rudix install glib pkg-config scons wget xz
+ Note: gdk-pixbuf2 is not installed in method 2,
+ so you can not build gtk3.
Step 2
After installing pre-requirement run from within the mxe directory:
@@ -763,7 +769,7 @@ USE_OSGPLUGIN(<plugin2>)
zypper install -R \
autoconf automake bash bison bzip2 cmake flex gcc-c++ \
- gettext-tools git gperf intltool libffi-devel libtool \
+ gdk-pixbuf-devel gettext-tools git gperf intltool libffi-devel libtool \
make openssl libopenssl-devel p7zip patch perl \
perl-XML-Parser pkg-config python ruby scons sed unzip \
wget xz
@@ -1393,6 +1399,10 @@ local-pkg-list: $(LOCAL_PKG_LIST)
GTK+ |
+ gtk3 |
+ GTK+ |
+
+
gtkglarea |
GtkGLArea |
@@ -1413,6 +1423,10 @@ local-pkg-list: $(LOCAL_PKG_LIST)
GTKMM |
+ gtkmm3 |
+ GTKMM |
+
+
gtksourceview |
GTKSourceView |
diff --git a/src/glib-2-remove-runtime-warning-gtkapplication.patch b/src/glib-2-remove-runtime-warning-gtkapplication.patch
new file mode 100644
index 0000000..3d47602
--- /dev/null
+++ b/src/glib-2-remove-runtime-warning-gtkapplication.patch
@@ -0,0 +1,24 @@
+This file is part of MXE.
+See index.html for further information.
+
+Remove an annoying runtime warning that pops up when using GtkApplication
+in Gtk+ 3 programs.
+
+--- a/gio/gdbusaddress.c 2014-06-28 19:02:43.000000000 +0200
++++ b/gio/gdbusaddress.c 2015-08-12 20:26:45.931228430 +0200
+@@ -1325,6 +1325,7 @@
+ __declspec(dllexport) void CALLBACK
+ g_win32_run_session_bus (HWND hwnd, HINSTANCE hinst, char *cmdline, int nCmdShow)
+ {
++ /*
+ GDBusDaemon *daemon;
+ GMainLoop *loop;
+ const char *address;
+@@ -1354,6 +1355,7 @@
+
+ g_main_loop_unref (loop);
+ g_object_unref (daemon);
++ */
+ }
+
+ static gchar *
diff --git a/src/gtk3-1-fixes.patch b/src/gtk3-1-fixes.patch
new file mode 100644
index 0000000..33c5828
--- /dev/null
+++ b/src/gtk3-1-fixes.patch
@@ -0,0 +1,139 @@
+This file is part of MXE.
+See index.html for further information.
+
+Contains ad hoc patches for cross building.
+
+
+---
+These were adapted from the gtk2 patchset.
+
+--- a/configure
++++ b/configure
+@@ -7005,15 +7005,15 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ if test "$os_win32" = "yes"; then
+ if test x$enable_static = xyes -o x$enable_static = x; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Disabling static library build, must build as DLL on Windows." >&5
+-$as_echo "$as_me: WARNING: Disabling static library build, must build as DLL on Windows." >&2;}
+- enable_static=no
++ { $as_echo "(disabled warning)" >&5
++$as_echo "(disabled warning)" >&2;}
++ enable_static=yes
+ fi
+ if test x$enable_shared = xno; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Enabling shared library build, must build as DLL on Windows." >&5
+-$as_echo "$as_me: WARNING: Enabling shared library build, must build as DLL on Windows." >&2;}
++ { $as_echo "(disabled warning)" >&5
++$as_echo "(disabled warning)" >&2;}
+ fi
+- enable_shared=yes
++ enable_shared=no
+ fi
+
+
+--- a/gdk/win32/gdkmain-win32.c 2015-07-25 23:15:29.947190754 +0200
++++ b/gdk/win32/gdkmain-win32.c 2015-07-25 23:15:55.723190733 +0200
+@@ -64,7 +64,7 @@
+ };
+
+ BOOL WINAPI
+-DllMain (HINSTANCE hinstDLL,
++gdk_DllMain (HINSTANCE hinstDLL,
+ DWORD dwReason,
+ LPVOID reserved)
+ {
+--- a/gtk/gtkwin32.c 2015-07-25 23:20:57.735190485 +0200
++++ b/gtk/gtkwin32.c 2015-07-25 23:21:13.447190472 +0200
+@@ -42,7 +42,7 @@
+ static HMODULE gtk_dll;
+
+ BOOL WINAPI
+-DllMain (HINSTANCE hinstDLL,
++gtk_DllMain (HINSTANCE hinstDLL,
+ DWORD fdwReason,
+ LPVOID lpvReserved)
+ {
+--- a/gtk+-3.0.pc.in 2015-07-26 16:55:29.755170491 +0200
++++ b/gtk+-3.0.pc.in 2015-07-26 16:56:23.655170447 +0200
+@@ -12,5 +12,5 @@
+ Version: @VERSION@
+ Requires: gdk-@GTK_API_VERSION@ @GTK_PACKAGES@
+ Requires.private: @GTK_PRIVATE_PACKAGES@
+-Libs: -L${libdir} -lgtk-3 @GTK_EXTRA_LIBS@
++Libs: -L${libdir} -lgtk-3 @GTK_DEP_LIBS@ -lwinspool -lcomctl32 -lcomdlg32
+ Cflags: -I${includedir}/gtk-@GTK_API_VERSION@ @GTK_EXTRA_CFLAGS@
+---
+Here there were two problems, one is that util/extract-strings.exe
+was being cross-built while it should be built locally, the other is
+that in fact it wasn't even being built because of some problem with
+makefile variables (PROGRAMS appears to be empty even if it is set to
+a nonempty value).
+
+--- a/util/Makefile.in 2014-10-21 17:03:07.000000000 +0200
++++ b/util/Makefile.in 2014-12-27 23:12:40.910506266 +0100
+@@ -107,9 +107,8 @@
+ am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+ am__v_lt_0 = --silent
+ am__v_lt_1 =
+-extract_strings_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+- $(extract_strings_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
++extract_strings_LINK = $(CC_FOR_BUILD) \
++ $(extract_strings_CFLAGS) $(CFLAGS_FOR_BUILD) $(AM_LDFLAGS) $(LDFLAGS_FOR_BUILD) \
+ -o $@
+ AM_V_P = $(am__v_P_@AM_V@)
+ am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+@@ -485,7 +484,7 @@
+
+ extract-strings$(EXEEXT): $(extract_strings_OBJECTS) $(extract_strings_DEPENDENCIES) $(EXTRA_extract_strings_DEPENDENCIES)
+ @rm -f extract-strings$(EXEEXT)
+- $(AM_V_CCLD)$(extract_strings_LINK) $(extract_strings_OBJECTS) $(extract_strings_LDADD) $(LIBS)
++ $(AM_V_CCLD)$(extract_strings_LINK) $(extract_strings_OBJECTS) $(extract_strings_LDADD)
+
+ mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+@@ -517,7 +516,7 @@
+ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+
+ extract_strings-extract-strings.o: extract-strings.c
+-@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(extract_strings_CFLAGS) $(CFLAGS) -MT extract_strings-extract-strings.o -MD -MP -MF $(DEPDIR)/extract_strings-extract-strings.Tpo -c -o extract_strings-extract-strings.o `test -f 'extract-strings.c' || echo '$(srcdir)/'`extract-strings.c
++@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC_FOR_BUILD) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS_FOR_BUILD) $(extract_strings_CFLAGS) $(CFLAGS_FOR_BUILD) -MT extract_strings-extract-strings.o -MD -MP -MF $(DEPDIR)/extract_strings-extract-strings.Tpo -c -o extract_strings-extract-strings.o `test -f 'extract-strings.c' || echo '$(srcdir)/'`extract-strings.c
+ @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/extract_strings-extract-strings.Tpo $(DEPDIR)/extract_strings-extract-strings.Po
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='extract-strings.c' object='extract_strings-extract-strings.o' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@@ -620,7 +619,7 @@
+ done
+ check-am: all-am
+ check: check-am
+-all-am: Makefile $(PROGRAMS)
++all-am: Makefile extract-strings$(EXEEXT)
+ installdirs:
+ install: install-am
+ install-exec: install-exec-am
+---
+This one fixes "cd $builddir" failing because neither $builddir nor
+$HOME were set
+
+--- a/configure 2015-07-24 21:19:46.839151097 +0200
++++ b/configure 2015-07-24 21:20:13.655151075 +0200
+@@ -23215,7 +23215,7 @@
+ NATIVE_GDKPIXBUF_LIBS=`$PKG_CONFIG_FOR_BUILD --libs gdk-pixbuf-2.0`
+ # This is the native gtk-update-icon-cache which will be used at
+ # build time, NOT the one installed on the target host.
+- GTK_UPDATE_ICON_CACHE="`cd $builddir && pwd`/gtk/native/native-update-icon-cache$BUILD_EXEEXT"
++ GTK_UPDATE_ICON_CACHE="`pwd`/gtk/native/native-update-icon-cache$BUILD_EXEEXT"
+
+
+
+---
+Not sure what happens when this line is commented out.
+
+--- a/gtk/a11y/gtkaccessibility.c 2014-08-15 16:38:05.000000000 +0200
++++ b/gtk/a11y/gtkaccessibility.c 2015-07-26 17:43:36.647168119 +0200
+@@ -991,5 +991,5 @@
+ atk_bridge_adaptor_init (NULL, NULL);
+ #endif
+
+- atk_misc_instance = g_object_new (GTK_TYPE_MISC_IMPL, NULL);
++ /* atk_misc_instance = g_object_new (GTK_TYPE_MISC_IMPL, NULL); */
+ }
diff --git a/src/gtk3-test.c b/src/gtk3-test.c
new file mode 100644
index 0000000..7442034
--- /dev/null
+++ b/src/gtk3-test.c
@@ -0,0 +1,34 @@
+/*
+ * This file is part of MXE.
+ * See index.html for further information.
+ */
+
+#include
+
+static void activate(GtkApplication *app)
+{
+ GtkWidget *window;
+ GtkWidget *button;
+
+ window = gtk_application_window_new(app);
+ button = gtk_button_new_with_label("Hello World");
+
+ g_signal_connect_swapped(button, "clicked",
+ G_CALLBACK(gtk_widget_destroy), window);
+ gtk_container_add(GTK_CONTAINER(window), button);
+
+ gtk_widget_show_all(window);
+}
+
+int main(int argc, char *argv[])
+{
+ GtkApplication *app;
+ int status;
+
+ app = gtk_application_new(NULL, G_APPLICATION_FLAGS_NONE);
+ g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
+ status = g_application_run(G_APPLICATION(app), argc, argv);
+ g_object_unref(app);
+
+ return status;
+}
diff --git a/src/gtk3.mk b/src/gtk3.mk
new file mode 100644
index 0000000..398160f
--- /dev/null
+++ b/src/gtk3.mk
@@ -0,0 +1,41 @@
+# This file is part of MXE.
+# See index.html for further information.
+
+PKG := gtk3
+$(PKG)_IGNORE :=
+$(PKG)_VERSION := 3.14.4
+$(PKG)_CHECKSUM := ff4a257226842d11eaaa6ca798ae72e8eaab8bbe
+$(PKG)_SUBDIR := gtk+-$($(PKG)_VERSION)
+$(PKG)_FILE := gtk+-$($(PKG)_VERSION).tar.xz
+$(PKG)_URL := http://ftp.gnome.org/pub/gnome/sources/gtk+/$(call SHORT_PKG_VERSION,$(PKG))/$($(PKG)_FILE)
+$(PKG)_DEPS := gcc gettext libpng jpeg tiff jasper glib atk pango cairo gdk-pixbuf
+
+define $(PKG)_UPDATE
+ $(WGET) -q -O- 'http://git.gnome.org/browse/gtk+/refs/tags' | \
+ grep ']*>\([0-9]*\.[0-9]*[02468]\.[^<]*\)<.*,\1,p' | \
+ grep '^3\.' | \
+ head -1
+endef
+
+define $(PKG)_BUILD
+ cd '$(1)' && ./configure \
+ $(MXE_CONFIGURE_OPTS) \
+ --enable-explicit-deps \
+ --disable-glibtest \
+ --disable-modules \
+ --disable-cups \
+ --disable-test-print-backend \
+ --disable-gtk-doc \
+ --disable-man \
+ --with-included-immodules \
+ --without-x
+ $(MAKE) -C '$(1)' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS=
+
+ '$(TARGET)-gcc' \
+ -W -Wall -Werror -ansi \
+ '$(2).c' -o '$(PREFIX)/$(TARGET)/bin/test-gtk3.exe' \
+ `'$(TARGET)-pkg-config' gtk+-3.0 --cflags --libs`
+endef
+
+$(PKG)_BUILD_SHARED =
diff --git a/src/gtkmm3-test.cpp b/src/gtkmm3-test.cpp
new file mode 100644
index 0000000..131cf6c
--- /dev/null
+++ b/src/gtkmm3-test.cpp
@@ -0,0 +1,21 @@
+/*
+ * This file is part of MXE.
+ * See index.html for further information.
+ */
+
+#include
+#include
+#include
+
+int main(int argc, char *argv[])
+{
+ Glib::RefPtr app = Gtk::Application::create(argc, argv);
+
+ Gtk::Window window;
+ Gtk::Button button("Hello World");
+ button.signal_clicked().connect(sigc::mem_fun(window, &Gtk::Window::close));
+ window.add(button);
+ window.show_all();
+
+ return app->run(window);
+}
diff --git a/src/gtkmm3.mk b/src/gtkmm3.mk
new file mode 100644
index 0000000..c605e67
--- /dev/null
+++ b/src/gtkmm3.mk
@@ -0,0 +1,37 @@
+# This file is part of MXE.
+# See index.html for further information.
+
+PKG := gtkmm3
+$(PKG)_IGNORE :=
+$(PKG)_VERSION := 3.14.0
+$(PKG)_CHECKSUM := cc3948dcb9a83e4c55b0fa37535eb52d61531286
+$(PKG)_SUBDIR := gtkmm-$($(PKG)_VERSION)
+$(PKG)_FILE := gtkmm-$($(PKG)_VERSION).tar.xz
+$(PKG)_URL := http://ftp.gnome.org/pub/gnome/sources/gtkmm/$(call SHORT_PKG_VERSION,$(PKG))/$($(PKG)_FILE)
+$(PKG)_DEPS := gcc gtk3 libsigc++ pangomm cairomm atkmm
+
+define $(PKG)_UPDATE
+ $(WGET) -q -O- 'http://git.gnome.org/browse/gtkmm/refs/tags' | \
+ grep ']*>\([0-9]*\.[0-9]*[02468]\.[^<]*\)<.*,\1,p' | \
+ grep '^3\.' | \
+ head -1
+endef
+
+define $(PKG)_BUILD
+ cd '$(1)' && ./configure \
+ --host='$(TARGET)' \
+ --build="`config.guess`" \
+ --disable-shared \
+ --prefix='$(PREFIX)/$(TARGET)' \
+ MAKE=$(MAKE)
+ $(MAKE) -C '$(1)' -j '$(JOBS)' bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS=
+ $(MAKE) -C '$(1)' -j 1 install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS= doc_install='# DISABLED: doc-install.pl'
+
+ '$(TARGET)-g++' \
+ -W -Wall -Werror -pedantic -std=c++0x \
+ '$(2).cpp' -o '$(PREFIX)/$(TARGET)/bin/test-gtkmm3.exe' \
+ `'$(TARGET)-pkg-config' gtkmm-3.0 --cflags --libs`
+endef
+
+$(PKG)_BUILD_SHARED =
--
cgit v0.12