[gnome-music/wip/mschraal/3-30-flatpak-lua: 3/4] flatpak: Add lua support for grilo-plugins



commit 561768b2c490a35659710167cc7e789b58c2bc7f
Author: Jean Felder <jfelder src gnome org>
Date:   Mon Sep 24 22:34:30 2018 +0200

    flatpak: Add lua support for grilo-plugins
    
    Some Grilo plugins used by Music are written in lua (for example,
    theaudiodb-coverart one). Flatpak default runtime does not provide lua
    support, so these plugins are disabled.
    
    Add Flathub shared modules as a git submodule. Add lua manifest file from
    this repository to enable lua support in flatpak builds.
    Enable lua support in grilo-plugins compilation.
    
    Closes: #226

 .gitmodules                                        |   3 +
 org.gnome.Music.json                               |   4 +-
 subprojects/shared-modules/README.md               |  22 +
 subprojects/shared-modules/SDL/SDL-1.2.15.json     |  36 ++
 .../SDL/SDL_Pango-0.1.2-API-adds.patch             | 118 +++++
 .../shared-modules/SDL/SDL_image-1.2.12.json       |  19 +
 .../shared-modules/SDL/SDL_mixer-1.2.12.json       |  22 +
 subprojects/shared-modules/SDL/SDL_net-1.2.8.json  |  19 +
 .../shared-modules/SDL/SDL_pango-0.1.2.json        |  23 +
 subprojects/shared-modules/SDL/SDL_ttf-2.0.11.json |  19 +
 .../shared-modules/SDL/sdl-libx11-build.patch      |  59 +++
 subprojects/shared-modules/cld2/CMakeLists.txt     | 155 +++++++
 subprojects/shared-modules/cld2/cld2.json          |  24 +
 subprojects/shared-modules/glew/glew.json          |  26 ++
 subprojects/shared-modules/glu/glu-9.0.0.json      |  11 +
 .../gtk2/gtk2-use-adwaita-theme.patch              |  80 ++++
 subprojects/shared-modules/gtk2/gtk2.json          |  69 +++
 subprojects/shared-modules/lame/lame-3.99.5.json   |  32 ++
 .../lame/lame-ansi2knr2devnull.patch               |  43 ++
 .../lame/lame-gtk1-ac-directives.patch             | 205 ++++++++
 subprojects/shared-modules/lame/lame-msse.patch    |  17 +
 .../libappindicator/libappindicator-ftbfs.patch    |  20 +
 .../libappindicator-gtk2-12.10.json                | 122 +++++
 .../libappindicator-gtk3-12.10.json                | 122 +++++
 .../libappindicator-gtk3-introspection-12.10.json  | 122 +++++
 .../libappindicator/libappindicator.json.in        | 122 +++++
 .../lua5.3/lua-5.3.0-autotoolize.patch             | 192 ++++++++
 .../lua5.3/lua-5.3.0-configure-compat-module.patch |  35 ++
 .../shared-modules/lua5.3/lua-5.3.0-idsize.patch   |  12 +
 subprojects/shared-modules/lua5.3/lua-5.3.2.json   |  34 ++
 .../shared-modules/pygame/audiofile-gcc6.patch     |  21 +
 .../pygame/fluidsynth-no-rawmidi.patch             |  69 +++
 .../shared-modules/pygame/portmidi-no-java.patch   | 105 +++++
 .../shared-modules/pygame/pygame-1.9.3.json        |  94 ++++
 .../pygame/pygame-add-search-dirs.patch            |  27 ++
 .../shared-modules/python2.7/python-2.7.15.json    |  46 ++
 .../shared-modules/qt4/qt4-4.8.7-minimal.json      |  86 ++++
 subprojects/shared-modules/qt4/qt4-aarch64.patch   | 514 +++++++++++++++++++++
 subprojects/shared-modules/smpeg/smpeg-0.4.5.json  |  39 ++
 .../shared-modules/smpeg/smpeg-am-prog-as.patch    |  12 +
 .../smpeg/smpeg-export-mpegaudio-class.patch       |  17 +
 subprojects/shared-modules/smpeg/smpeg-gcc6.patch  |  40 ++
 .../shared-modules/smpeg/smpeg-no-gtk.patch        |  37 ++
 subprojects/shared-modules/udev/udev-175.json      |  43 ++
 44 files changed, 2936 insertions(+), 1 deletion(-)
---
diff --git a/.gitmodules b/.gitmodules
index fa136361..b2aeb1fe 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,6 @@
 [submodule "subprojects/libgd"]
        path = subprojects/libgd
        url = https://gitlab.gnome.org/GNOME/libgd.git
+[submodule "subprojects/shared-modules"]
+       path = subprojects/shared-modules
+       url = https://github.com/flathub/shared-modules.git
diff --git a/org.gnome.Music.json b/org.gnome.Music.json
index 180d3d40..3da71bbe 100644
--- a/org.gnome.Music.json
+++ b/org.gnome.Music.json
@@ -17,6 +17,7 @@
         "--own-name=org.mpris.MediaPlayer2.GnomeMusic",
         "--talk-name=org.gnome.SettingsDaemon.MediaKeys",
         "--talk-name=com.intel.dleyna-server",
+        "--talk-name=org.gtk.vfs.mountpoint_http",
         "--socket=pulseaudio",
         "--filesystem=xdg-music",
         "--filesystem=xdg-cache/media-art"
@@ -41,6 +42,7 @@
         "*.a"
     ],
     "modules": [
+        "subprojects/shared-modules/lua5.3/lua-5.3.2.json",
         {
             "name": "libmediaart",
             "sources": [
@@ -124,7 +126,7 @@
                              "-Denable-filesystem=no",
                              "-Denable-freebox=no",
                              "-Denable-local-metadata=no",
-                             "-Denable-lua-factory=no",
+                             "-Denable-lua-factory=yes",
                              "-Denable-metadata-store=no",
                              "-Denable-opensubtitles=no",
                              "-Denable-optical-media=no",
diff --git a/subprojects/shared-modules/README.md b/subprojects/shared-modules/README.md
new file mode 100644
index 00000000..756fc7f4
--- /dev/null
+++ b/subprojects/shared-modules/README.md
@@ -0,0 +1,22 @@
+This repository contains commonly shared modules and is intended to be used as a git submodule.
+
+To use shared modules for packaging an application, add the submodule:
+
+```
+git submodule add https://github.com/flathub/shared-modules.git
+```
+
+Then modules from this repository can be specified in a manifest JSON file like this:
+
+```json
+"modules": [
+  "shared-modules/SDL/SDL-1.2.15.json",
+  {
+    "name": "foo"
+  }
+]
+```
+
+[See the description in the Flathub 
wiki](https://github.com/flathub/flathub/wiki/App-Requirements#shared-modules) for more information.
+
+Please do not request adding modules unless they have many users in the Flathub repository.
diff --git a/subprojects/shared-modules/SDL/SDL-1.2.15.json b/subprojects/shared-modules/SDL/SDL-1.2.15.json
new file mode 100644
index 00000000..975f8b80
--- /dev/null
+++ b/subprojects/shared-modules/SDL/SDL-1.2.15.json
@@ -0,0 +1,36 @@
+{
+    "name": "SDL1",
+    "rm-configure": true,
+    "config-opts": ["--disable-static"],
+    "cleanup": [
+        "/bin",
+        "/share/man",
+        "/share/aclocal",
+        "/include",
+        "/lib/pkgconfig",
+        "/lib/*.la",
+        "/lib/*.a"
+    ],
+    "sources": [
+        {
+            "type": "archive",
+            "url": "https://www.libsdl.org/release/SDL-1.2.15.tar.gz";,
+            "sha256": "d6d316a793e5e348155f0dd93b979798933fb98aa1edebcc108829d6474aad00"
+        },
+        {
+            "type": "patch",
+            "path": "sdl-libx11-build.patch"
+        },
+        {
+            "type": "script",
+            "dest-filename": "autogen.sh",
+            "commands": [
+                "sed -i -e 's/.*AM_PATH_ESD.*//' configure.in",
+                "cp -p /usr/share/automake-*/config.{sub,guess} build-scripts",
+                "aclocal",
+                "libtoolize",
+                "autoconf"
+            ]
+        }
+    ]
+}
diff --git a/subprojects/shared-modules/SDL/SDL_Pango-0.1.2-API-adds.patch 
b/subprojects/shared-modules/SDL/SDL_Pango-0.1.2-API-adds.patch
new file mode 100644
index 00000000..6b1f2d05
--- /dev/null
+++ b/subprojects/shared-modules/SDL/SDL_Pango-0.1.2-API-adds.patch
@@ -0,0 +1,118 @@
+diff -Naupr SDL_Pango-0.1.2.orig/src/SDL_Pango.c SDL_Pango-0.1.2/src/SDL_Pango.c
+--- SDL_Pango-0.1.2.orig/src/SDL_Pango.c       2004-12-10 10:06:33.000000000 +0100
++++ SDL_Pango-0.1.2/src/SDL_Pango.c    2006-09-29 17:42:09.000000000 +0200
+@@ -723,13 +723,8 @@ SDLPango_CopyFTBitmapToSurface(
+     SDL_UnlockSurface(surface);
+ }
+ 
+-/*!
+-    Create a context which contains Pango objects.
+-
+-    @return A pointer to the context as a SDLPango_Context*.
+-*/
+ SDLPango_Context*
+-SDLPango_CreateContext()
++SDLPango_CreateContext_GivenFontDesc(const char* font_desc)
+ {
+     SDLPango_Context *context = g_malloc(sizeof(SDLPango_Context));
+     G_CONST_RETURN char *charset;
+@@ -743,8 +738,7 @@ SDLPango_CreateContext()
+     pango_context_set_language (context->context, pango_language_from_string (charset));
+     pango_context_set_base_dir (context->context, PANGO_DIRECTION_LTR);
+ 
+-    context->font_desc = pango_font_description_from_string(
+-      MAKE_FONT_NAME (DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE));
++    context->font_desc = pango_font_description_from_string(font_desc);
+ 
+     context->layout = pango_layout_new (context->context);
+ 
+@@ -762,6 +756,17 @@ SDLPango_CreateContext()
+ }
+ 
+ /*!
++    Create a context which contains Pango objects.
++
++    @return A pointer to the context as a SDLPango_Context*.
++*/
++SDLPango_Context*
++SDLPango_CreateContext()
++{
++     SDLPango_CreateContext_GivenFontDesc(MAKE_FONT_NAME(DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE));
++}
++
++/*!
+     Free a context.
+ 
+     @param *context [i/o] Context to be free
+@@ -1053,6 +1058,20 @@ SDLPango_SetMarkup(
+     pango_layout_set_font_description (context->layout, context->font_desc);
+ }
+ 
++void
++SDLPango_SetText_GivenAlignment(
++    SDLPango_Context *context,
++    const char *text,
++    int length,
++    SDLPango_Alignment alignment)
++{
++    pango_layout_set_attributes(context->layout, NULL);
++    pango_layout_set_text (context->layout, text, length);
++    pango_layout_set_auto_dir (context->layout, TRUE);
++    pango_layout_set_alignment (context->layout, alignment);
++    pango_layout_set_font_description (context->layout, context->font_desc);
++}
++
+ /*!
+     Set plain text to context.
+     Text must be utf-8.
+@@ -1067,11 +1086,7 @@ SDLPango_SetText(
+     const char *text,
+     int length)
+ {
+-    pango_layout_set_attributes(context->layout, NULL);
+-    pango_layout_set_text (context->layout, text, length);
+-    pango_layout_set_auto_dir (context->layout, TRUE);
+-    pango_layout_set_alignment (context->layout, PANGO_ALIGN_LEFT);
+-    pango_layout_set_font_description (context->layout, context->font_desc);
++     SDLPango_SetText_GivenAlignment(context, text, length, SDLPANGO_ALIGN_LEFT);
+ }
+ 
+ /*!
+diff -Naupr SDL_Pango-0.1.2.orig/src/SDL_Pango.h SDL_Pango-0.1.2/src/SDL_Pango.h
+--- SDL_Pango-0.1.2.orig/src/SDL_Pango.h       2004-12-10 10:06:33.000000000 +0100
++++ SDL_Pango-0.1.2/src/SDL_Pango.h    2006-09-29 17:42:09.000000000 +0200
+@@ -109,12 +109,20 @@ typedef enum {
+     SDLPANGO_DIRECTION_NEUTRAL        /*! Neutral */
+ } SDLPango_Direction;
+ 
+-
++/*!
++    Specifies alignment of text. See Pango reference for detail
++*/
++typedef enum {
++    SDLPANGO_ALIGN_LEFT,
++    SDLPANGO_ALIGN_CENTER,
++    SDLPANGO_ALIGN_RIGHT
++} SDLPango_Alignment;
+ 
+ extern DECLSPEC int SDLCALL SDLPango_Init();
+ 
+ extern DECLSPEC int SDLCALL SDLPango_WasInit();
+ 
++extern DECLSPEC SDLPango_Context* SDLCALL SDLPango_CreateContext_GivenFontDesc(const char* font_desc);
+ extern DECLSPEC SDLPango_Context* SDLCALL SDLPango_CreateContext();
+ 
+ extern DECLSPEC void SDLCALL SDLPango_FreeContext(
+@@ -157,6 +165,12 @@ extern DECLSPEC void SDLCALL SDLPango_Se
+     const char *markup,
+     int length);
+ 
++extern DECLSPEC void SDLCALL SDLPango_SetText_GivenAlignment(
++    SDLPango_Context *context,
++    const char *text,
++    int length,
++    SDLPango_Alignment alignment);
++
+ extern DECLSPEC void SDLCALL SDLPango_SetText(
+     SDLPango_Context *context,
+     const char *markup,
diff --git a/subprojects/shared-modules/SDL/SDL_image-1.2.12.json 
b/subprojects/shared-modules/SDL/SDL_image-1.2.12.json
new file mode 100644
index 00000000..5e1692b6
--- /dev/null
+++ b/subprojects/shared-modules/SDL/SDL_image-1.2.12.json
@@ -0,0 +1,19 @@
+{
+    "name": "SDL_image",
+    "config-opts": ["--disable-static"],
+    "rm-configure": true,
+    "sources": [
+        {
+            "type": "archive",
+            "url": "https://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.12.tar.gz";,
+            "sha256": "0b90722984561004de84847744d566809dbb9daf732a9e503b91a1b5a84e5699"
+        },
+        {
+            "type": "script",
+            "dest-filename": "autogen.sh",
+            "commands": [
+                "AUTOMAKE=\"automake --foreign\" autoreconf -vfi"
+            ]
+        }
+    ]
+}
diff --git a/subprojects/shared-modules/SDL/SDL_mixer-1.2.12.json 
b/subprojects/shared-modules/SDL/SDL_mixer-1.2.12.json
new file mode 100644
index 00000000..ba5a6276
--- /dev/null
+++ b/subprojects/shared-modules/SDL/SDL_mixer-1.2.12.json
@@ -0,0 +1,22 @@
+{
+    "name": "SDL_mixer",
+    "config-opts": ["--disable-static"],
+    "rm-configure": true,
+    "sources": [
+        {
+            "type": "archive",
+            "url": "https://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.12.tar.gz";,
+            "sha256": "1644308279a975799049e4826af2cfc787cad2abb11aa14562e402521f86992a"
+        },
+        {
+            "type": "script",
+            "dest-filename": "autogen.sh",
+            "commands": [
+                "rm acinclude/libtool.m4",
+                "rm acinclude/lt*",
+                "AUTOMAKE=\"automake --foreign\" autoreconf -vfi -I acinclude",
+                "cp -p /usr/share/automake-*/config.{sub,guess} build-scripts"
+            ]
+        }
+    ]
+}
diff --git a/subprojects/shared-modules/SDL/SDL_net-1.2.8.json 
b/subprojects/shared-modules/SDL/SDL_net-1.2.8.json
new file mode 100644
index 00000000..9d3e896c
--- /dev/null
+++ b/subprojects/shared-modules/SDL/SDL_net-1.2.8.json
@@ -0,0 +1,19 @@
+{
+    "name": "SDL_net",
+    "config-opts": ["--disable-static"],
+    "rm-configure": true,
+    "sources": [
+        {
+            "type": "archive",
+            "url": "https://www.libsdl.org/projects/SDL_net/release/SDL_net-1.2.8.tar.gz";,
+            "sha256": "5f4a7a8bb884f793c278ac3f3713be41980c5eedccecff0260411347714facb4"
+        },
+        {
+            "type": "script",
+            "dest-filename": "autogen.sh",
+            "commands": [
+                "AUTOMAKE=\"automake --foreign\" autoreconf -vfi"
+            ]
+        }
+    ]
+}
diff --git a/subprojects/shared-modules/SDL/SDL_pango-0.1.2.json 
b/subprojects/shared-modules/SDL/SDL_pango-0.1.2.json
new file mode 100644
index 00000000..fdbef4d1
--- /dev/null
+++ b/subprojects/shared-modules/SDL/SDL_pango-0.1.2.json
@@ -0,0 +1,23 @@
+{
+    "name": "SDL_pango",
+    "config-opts": ["--disable-static"],
+    "rm-configure": true,
+    "sources": [
+        {
+            "type": "archive",
+            "url": 
"https://downloads.sourceforge.net/project/sdlpango/SDL_Pango/0.1.2/SDL_Pango-0.1.2.tar.gz";,
+            "sha256": "7f75d3b97acf707c696ea126424906204ebfa07660162de925173cdd0257eba4"
+        },
+        {
+            "type": "patch",
+            "path": "SDL_Pango-0.1.2-API-adds.patch"
+        },
+        {
+            "type": "script",
+            "dest-filename": "autogen.sh",
+            "commands": [
+                "autoreconf -vfi"
+            ]
+        }
+    ]
+}
diff --git a/subprojects/shared-modules/SDL/SDL_ttf-2.0.11.json 
b/subprojects/shared-modules/SDL/SDL_ttf-2.0.11.json
new file mode 100644
index 00000000..5e928e46
--- /dev/null
+++ b/subprojects/shared-modules/SDL/SDL_ttf-2.0.11.json
@@ -0,0 +1,19 @@
+{
+    "name": "SDL_ttf",
+    "config-opts": ["--disable-static"],
+    "rm-configure": true,
+    "sources": [
+        {
+            "type": "archive",
+            "url": "https://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-2.0.11.tar.gz";,
+            "sha256": "724cd895ecf4da319a3ef164892b72078bd92632a5d812111261cde248ebcdb7"
+        },
+        {
+            "type": "script",
+            "dest-filename": "autogen.sh",
+            "commands": [
+                "AUTOMAKE=\"automake --foreign\" autoreconf -vfi"
+            ]
+        }
+    ]
+}
diff --git a/subprojects/shared-modules/SDL/sdl-libx11-build.patch 
b/subprojects/shared-modules/SDL/sdl-libx11-build.patch
new file mode 100644
index 00000000..5bb14d4b
--- /dev/null
+++ b/subprojects/shared-modules/SDL/sdl-libx11-build.patch
@@ -0,0 +1,59 @@
+
+# HG changeset patch
+# User Azamat H. Hackimov <azamat hackimov gmail com>
+# Date 1370184533 -21600
+# Node ID 91ad7b43317a6387e115ecdf63a49137f47e42c8
+# Parent  f7fd5c3951b9ed922fdf696f7182e71b58a13268
+Fix compilation with libX11 >= 1.5.99.902.
+
+These changes fixes bug #1769 for SDL 1.2
+(http://bugzilla.libsdl.org/show_bug.cgi?id=1769).
+
+diff -r f7fd5c3951b9 -r 91ad7b43317a configure.in
+--- a/configure.in     Wed Apr 17 00:56:53 2013 -0700
++++ b/configure.in     Sun Jun 02 20:48:53 2013 +0600
+@@ -1169,6 +1169,17 @@
+             if test x$definitely_enable_video_x11_xrandr = xyes; then
+                 AC_DEFINE(SDL_VIDEO_DRIVER_X11_XRANDR)
+             fi
++            AC_MSG_CHECKING(for const parameter to _XData32)
++            have_const_param_xdata32=no
++            AC_TRY_COMPILE([
++              #include <X11/Xlibint.h>
++              extern int _XData32(Display *dpy,register _Xconst long *data,unsigned len);
++            ],[
++            ],[
++            have_const_param_xdata32=yes
++            AC_DEFINE(SDL_VIDEO_DRIVER_X11_CONST_PARAM_XDATA32)
++            ])
++            AC_MSG_RESULT($have_const_param_xdata32)
+         fi
+     fi
+ }
+diff -r f7fd5c3951b9 -r 91ad7b43317a include/SDL_config.h.in
+--- a/include/SDL_config.h.in  Wed Apr 17 00:56:53 2013 -0700
++++ b/include/SDL_config.h.in  Sun Jun 02 20:48:53 2013 +0600
+@@ -283,6 +283,7 @@
+ #undef SDL_VIDEO_DRIVER_WINDIB
+ #undef SDL_VIDEO_DRIVER_WSCONS
+ #undef SDL_VIDEO_DRIVER_X11
++#undef SDL_VIDEO_DRIVER_X11_CONST_PARAM_XDATA32
+ #undef SDL_VIDEO_DRIVER_X11_DGAMOUSE
+ #undef SDL_VIDEO_DRIVER_X11_DYNAMIC
+ #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT
+diff -r f7fd5c3951b9 -r 91ad7b43317a src/video/x11/SDL_x11sym.h
+--- a/src/video/x11/SDL_x11sym.h       Wed Apr 17 00:56:53 2013 -0700
++++ b/src/video/x11/SDL_x11sym.h       Sun Jun 02 20:48:53 2013 +0600
+@@ -165,7 +165,11 @@
+  */
+ #ifdef LONG64
+ SDL_X11_MODULE(IO_32BIT)
++#if SDL_VIDEO_DRIVER_X11_CONST_PARAM_XDATA32
++SDL_X11_SYM(int,_XData32,(Display *dpy,register _Xconst long *data,unsigned len),(dpy,data,len),return)
++#else
+ SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)
++#endif
+ SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),)
+ #endif
+ 
+
diff --git a/subprojects/shared-modules/cld2/CMakeLists.txt b/subprojects/shared-modules/cld2/CMakeLists.txt
new file mode 100644
index 00000000..d25f857f
--- /dev/null
+++ b/subprojects/shared-modules/cld2/CMakeLists.txt
@@ -0,0 +1,155 @@
+cmake_minimum_required(VERSION 2.8)
+project (cld2)
+enable_language(CXX)
+
+set (VERSION "0.0.197")
+set (common_SOURCE_FILES
+    internal/cldutil.cc
+    internal/cldutil_shared.cc
+    internal/compact_lang_det.cc
+    internal/compact_lang_det_hint_code.cc
+    internal/compact_lang_det_impl.cc
+    internal/debug.cc
+    internal/fixunicodevalue.cc 
+    internal/generated_entities.cc
+    internal/generated_language.cc
+    internal/generated_ulscript.cc
+    internal/getonescriptspan.cc
+    internal/lang_script.cc
+    internal/offsetmap.cc
+    internal/scoreonescriptspan.cc
+    internal/tote.cc
+    internal/utf8statetable.cc
+    )
+
+set (cld2_SOURCE_FILES
+    internal/generated_distinct_bi_0.cc
+    internal/cld_generated_cjk_uni_prop_80.cc
+    internal/cld2_generated_cjk_compatible.cc
+    internal/cld_generated_cjk_delta_bi_4.cc
+    internal/cld2_generated_quadchrome_2.cc
+    internal/cld2_generated_deltaoctachrome.cc
+    internal/cld2_generated_distinctoctachrome.cc
+    internal/cld_generated_score_quad_octa_2.cc
+    )
+
+set (cld2_full_SOURCE_FILES
+    internal/generated_distinct_bi_0.cc
+    internal/cld_generated_cjk_uni_prop_80.cc
+    internal/cld2_generated_cjk_compatible.cc
+    internal/cld_generated_cjk_delta_bi_32.cc
+    internal/cld2_generated_quad0122.cc
+    internal/cld2_generated_deltaocta0122.cc
+    internal/cld2_generated_distinctocta0122.cc
+    internal/cld_generated_score_quad_octa_0122.cc
+    )
+
+set (cld2_dynamic_SOURCE_FILES
+    internal/cld2_dynamic_data.cc
+    internal/cld2_dynamic_data_loader.cc
+    )
+
+add_library(cld2 SHARED ${common_SOURCE_FILES} ${cld2_SOURCE_FILES})
+set_target_properties(cld2 PROPERTIES
+  ENABLE_EXPORTS On
+  OUTPUT_NAME cld2
+  VERSION ${VERSION}
+  SOVERSION 0
+  )
+add_library(cld2_full SHARED ${cld2_full_SOURCE_FILES})
+set_target_properties(cld2_full PROPERTIES
+  ENABLE_EXPORTS On
+  OUTPUT_NAME cld2_full
+  VERSION ${VERSION}
+  SOVERSION 0
+  )
+
+add_library(cld2_dynamic SHARED ${cld2_dynamic_SOURCE_FILES})
+set_target_properties(cld2_dynamic PROPERTIES
+  ENABLE_EXPORTS On
+  OUTPUT_NAME cld2_dynamic
+  VERSION ${VERSION}
+  SOVERSION 0
+  COMPILE_FLAGS "-DCLD2_DYNAMIC_MODE"
+  )
+install(TARGETS cld2 DESTINATION lib/${CMAKE_LIBRARY_ARCHITECTURE})
+install(TARGETS cld2_full DESTINATION lib/${CMAKE_LIBRARY_ARCHITECTURE})
+install(TARGETS cld2_dynamic DESTINATION lib/${CMAKE_LIBRARY_ARCHITECTURE})
+
+set (cld2_internal_HEADERS
+    internal/cld2_dynamic_compat.h
+    internal/cld2_dynamic_data_extractor.h
+    internal/cld2_dynamic_data.h
+    internal/cld2_dynamic_data_loader.h
+    internal/cld2tablesummary.h
+    internal/cldutil.h
+    internal/cldutil_offline.h
+    internal/cldutil_shared.h
+    internal/compact_lang_det_hint_code.h
+    internal/compact_lang_det_impl.h
+    internal/debug.h
+    internal/fixunicodevalue.h
+    internal/generated_language.h
+    internal/generated_ulscript.h
+    internal/getonescriptspan.h
+    internal/integral_types.h
+    internal/lang_script.h
+    internal/langspan.h
+    internal/offsetmap.h
+    internal/port.h
+    internal/scoreonescriptspan.h
+    internal/stringpiece.h
+    internal/tote.h
+    internal/unittest_data.h
+    internal/utf8acceptinterchange.h
+    internal/utf8prop_lettermarkscriptnum.h
+    internal/utf8repl_lettermarklower.h
+    internal/utf8scannot_lettermarkspecial.h
+    internal/utf8statetable.h
+    )
+
+install(FILES ${cld2_internal_HEADERS} DESTINATION include/cld2/internal)
+set (cld2_public_HEADERS
+    public/compact_lang_det.h
+    public/encodings.h
+    )
+install(FILES ${cld2_public_HEADERS} DESTINATION include/cld2/public)
+
+set (full_SOURCE_FILES
+    internal/cld_generated_cjk_uni_prop_80.cc
+    internal/cld2_generated_cjk_compatible.cc
+    internal/cld_generated_cjk_delta_bi_32.cc
+    internal/generated_distinct_bi_0.cc
+    internal/cld2_generated_quad0122.cc
+    internal/cld2_generated_deltaocta0122.cc
+    internal/cld2_generated_distinctocta0122.cc
+    internal/cld_generated_score_quad_octa_0122.cc
+    )
+
+add_executable(compact_lang_det_test_full ${full_SOURCE_FILES} internal/compact_lang_det_test.cc)
+add_executable(cld2_unittest_full         ${full_SOURCE_FILES} internal/cld2_unittest_full.cc)
+add_executable(cld2_unittest_full_avoid   ${full_SOURCE_FILES} internal/cld2_unittest_full.cc)
+set_target_properties(cld2_unittest_full_avoid PROPERTIES COMPILE_FLAGS "-Davoid_utf8_string_constants")
+
+add_executable(cld2_dynamic_data_tool               internal/cld2_dynamic_data_extractor.cc 
internal/cld2_dynamic_data_tool.cc)
+add_executable(compact_lang_det_dynamic_test_chrome ${common_SOURCE_FILES} 
internal/cld2_dynamic_data_extractor.cc internal/compact_lang_det_test.cc)
+add_executable(cld2_dynamic_unittest                ${common_SOURCE_FILES} internal/cld2_unittest.cc)
+set_target_properties(compact_lang_det_dynamic_test_chrome PROPERTIES COMPILE_FLAGS "-DCLD2_DYNAMIC_MODE")
+set_target_properties(cld2_dynamic_unittest PROPERTIES COMPILE_FLAGS "-DCLD2_DYNAMIC_MODE")
+
+add_executable(compact_lang_det_test_chrome_2  internal/compact_lang_det_test.cc)
+add_executable(compact_lang_det_test_chrome_16 internal/compact_lang_det_test.cc)
+add_executable(cld2_unittest_chrome_2          internal/cld2_unittest.cc)
+add_executable(cld2_unittest_avoid_chrome_2    internal/cld2_unittest.cc)
+set_target_properties(cld2_unittest_avoid_chrome_2 PROPERTIES COMPILE_FLAGS "-Davoid_utf8_string_constants")
+
+target_link_libraries(compact_lang_det_test_full cld2)
+target_link_libraries(cld2_unittest_full cld2)
+target_link_libraries(cld2_unittest_full_avoid cld2)
+target_link_libraries(cld2_dynamic_data_tool cld2 cld2_dynamic)
+target_link_libraries(compact_lang_det_dynamic_test_chrome cld2_dynamic)
+target_link_libraries(cld2_dynamic_unittest cld2_dynamic)
+target_link_libraries(compact_lang_det_test_chrome_2 cld2)
+target_link_libraries(compact_lang_det_test_chrome_16 cld2)
+target_link_libraries(cld2_unittest_chrome_2 cld2)
+target_link_libraries(cld2_unittest_avoid_chrome_2 cld2)
diff --git a/subprojects/shared-modules/cld2/cld2.json b/subprojects/shared-modules/cld2/cld2.json
new file mode 100644
index 00000000..8487e31e
--- /dev/null
+++ b/subprojects/shared-modules/cld2/cld2.json
@@ -0,0 +1,24 @@
+{
+    "name": "cld2",
+    "buildsystem": "simple",
+    "build-options": {
+       "cxxflags": "-std=c++98"
+    },
+    "build-commands": [
+       "cp CMakeLists.txt ./cld2",
+       "cd cld2 && mkdir build && cd build && cmake .. -DCMAKE_INSTALL_PREFIX=/app 
-DCMAKE_BUILD_TYPE=Release",
+       "cd cld2/build && make && make install"
+    ],
+    "sources":[
+        {
+            "type": "git",
+            "url": "https://github.com/CLD2Owners/cld2.git";,
+            "commit": "84b58a5d7690ebf05a91406f371ce00c3daf31c0",
+            "dest": "cld2"
+        },
+        {
+            "type": "file",
+            "path": "CMakeLists.txt"
+        }
+    ]
+}
diff --git a/subprojects/shared-modules/glew/glew.json b/subprojects/shared-modules/glew/glew.json
new file mode 100644
index 00000000..6ec15bf7
--- /dev/null
+++ b/subprojects/shared-modules/glew/glew.json
@@ -0,0 +1,26 @@
+{
+        "name": "glew",
+        "no-autogen": true,
+        "make-args": [
+                "GLEW_PREFIX=/app",
+                "GLEW_DEST=/app",
+                "LIBDIR=/app/lib"
+        ],
+        "make-install-args": [
+                "GLEW_PREFIX=/app",
+                "GLEW_DEST=/app",
+                "LIBDIR=/app/lib"
+        ],
+        "sources": [
+                {
+                        "type": "archive",
+                        "url": "https://downloads.sourceforge.net/project/glew/glew/2.1.0/glew-2.1.0.tgz";,
+                        "sha256": "04de91e7e6763039bc11940095cd9c7f880baba82196a7765f727ac05a993c95"
+                }
+        ],
+        "cleanup": [
+                "/include",
+                "/lib/pkgconfig",
+                "/lib/*.a"
+        ]
+}
diff --git a/subprojects/shared-modules/glu/glu-9.0.0.json b/subprojects/shared-modules/glu/glu-9.0.0.json
new file mode 100644
index 00000000..c4fd4179
--- /dev/null
+++ b/subprojects/shared-modules/glu/glu-9.0.0.json
@@ -0,0 +1,11 @@
+{
+  "name": "glu",
+  "sources": [
+    {
+      "type": "archive",
+      "url": "https://mesa.freedesktop.org/archive/glu/glu-9.0.0.tar.bz2";,
+      "sha256": "1f7ad0d379a722fcbd303aa5650c6d7d5544fde83196b42a73d1193568a4df12"
+    }
+  ],
+  "cleanup": [ "/include", "/lib/*.a", "/lib/*.la", "/lib/pkgconfig" ]
+}
diff --git a/subprojects/shared-modules/gtk2/gtk2-use-adwaita-theme.patch 
b/subprojects/shared-modules/gtk2/gtk2-use-adwaita-theme.patch
new file mode 100644
index 00000000..916b3491
--- /dev/null
+++ b/subprojects/shared-modules/gtk2/gtk2-use-adwaita-theme.patch
@@ -0,0 +1,80 @@
+diff --git a/gdk/x11/gdkevents-x11.c b/gdk/x11/gdkevents-x11.c
+index 186a8f5cb2..f5c39b5afe 100644
+--- a/gdk/x11/gdkevents-x11.c
++++ b/gdk/x11/gdkevents-x11.c
+@@ -3000,6 +3000,50 @@ check_transform (const gchar *xsettings_name,
+     return TRUE;
+ }
+ 
++static gchar *
++gtk_rc_get_theme_dir (void)
++{
++  const gchar *var;
++  gchar *path;
++
++  var = g_getenv ("GTK_DATA_PREFIX");
++
++  if (var)
++    path = g_build_filename (var, "share", "themes", NULL);
++  else
++    path = g_build_filename ("/usr", "share", "themes", NULL);
++
++  return path;
++}
++
++static gboolean
++theme_name_valid (XSettingsSetting *setting)
++{
++  gboolean res = FALSE;
++
++  if (setting->type == XSETTINGS_TYPE_STRING)
++    {
++      char *theme_name = setting->data.v_string;
++      gchar *theme_dir = gtk_rc_get_theme_dir ();
++      gchar *path = g_build_filename (theme_dir, theme_name, "gtk-2.0", "gtkrc", NULL);
++
++      if (g_file_test (path, G_FILE_TEST_EXISTS))
++        res = TRUE;
++      else if (g_str_has_suffix (theme_name, "-Dark") ||
++               g_str_has_suffix (theme_name, "-dark"))
++        {
++          setting->data.v_string = g_strdup ("Adwaita-dark");
++          g_free (theme_name);
++          res = TRUE;
++        }
++
++      g_free (theme_dir);
++      g_free (path);
++    }
++
++  return res;
++}
++
+ /**
+  * gdk_screen_get_setting:
+  * @screen: the #GdkScreen where the setting is located
+@@ -3050,6 +3094,11 @@ gdk_screen_get_setting (GdkScreen   *screen,
+   if (result != XSETTINGS_SUCCESS)
+     goto out;
+ 
++  if (strcmp (name, "gtk-theme-name") == 0 &&
++      (setting->type != XSETTINGS_TYPE_STRING ||
++       !theme_name_valid (setting)))
++    goto out;
++
+   switch (setting->type)
+     {
+     case XSETTINGS_TYPE_INT:
+diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c
+index 3fbbf00548..5c0a4b33d2 100644
+--- a/gtk/gtksettings.c
++++ b/gtk/gtksettings.c
+@@ -312,7 +312,7 @@ gtk_settings_class_init (GtkSettingsClass *class)
+ #ifdef G_OS_WIN32
+                                                                 "MS-Windows",
+ #else
+-                                                                "Raleigh",
++                                                                "Adwaita",
+ #endif
+                                                                 GTK_PARAM_READWRITE),
+                                              NULL);
diff --git a/subprojects/shared-modules/gtk2/gtk2.json b/subprojects/shared-modules/gtk2/gtk2.json
new file mode 100644
index 00000000..ff85007b
--- /dev/null
+++ b/subprojects/shared-modules/gtk2/gtk2.json
@@ -0,0 +1,69 @@
+{
+  "name": "gnome-themes-extra",
+  "rm-configure": true,
+  "config-opts": [
+    "--disable-dependency-tracking",
+    "--disable-gtk3-engine"
+  ],
+  "cleanup": [
+    "/share/themes/Adwaita/gtk-3.0",
+    "/share/themes/Adwaita-dark/gtk-3.0",
+    "/share/themes/HighContrast/gtk-3.0",
+    "*.la"
+  ],
+  "sources": [
+    {
+      "type": "archive",
+      "url": "https://download.gnome.org/sources/gnome-themes-extra/3.28/gnome-themes-extra-3.28.tar.xz";,
+      "sha256": "7c4ba0bff001f06d8983cfc105adaac42df1d1267a2591798a780bac557a5819"
+    },
+    {
+      "type": "shell",
+      "//": "We want to avoid generating icons as its 99% of the build time and gnome runtime has it",
+      "commands": [
+        "sed -i 's/icons//' themes/HighContrast/Makefile.am"
+      ]
+    },
+    {
+      "type": "script",
+      "commands": [
+        "autoreconf -fsi"
+      ]
+    }
+  ],
+  "modules": [
+    {
+      "name": "gtk2",
+      "cleanup": [
+        "/bin",
+        "/share/gtk-2.0",
+        "/share/aclocal",
+        "/share/gtk-doc",
+        "/lib/pkgconfig",
+        "/lib/gtk-2.0/include",
+        "/include",
+        "*.la"
+      ],
+      "x-cpe": {
+        "product": "gtk+"
+      },
+      "config-opts": [
+        "--disable-dependency-tracking",
+        "--disable-gtk-doc-html",
+        "--disable-introspection",
+        "--with-xinput=xfree"
+      ],
+      "sources": [
+        {
+          "type": "archive",
+          "url": "https://download.gnome.org/sources/gtk+/2.24/gtk+-2.24.32.tar.xz";,
+          "sha256": "b6c8a93ddda5eabe3bfee1eb39636c9a03d2a56c7b62828b359bf197943c582e"
+        },
+        {
+          "type": "patch",
+          "path": "gtk2-use-adwaita-theme.patch"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/subprojects/shared-modules/lame/lame-3.99.5.json 
b/subprojects/shared-modules/lame/lame-3.99.5.json
new file mode 100644
index 00000000..f6cf5184
--- /dev/null
+++ b/subprojects/shared-modules/lame/lame-3.99.5.json
@@ -0,0 +1,32 @@
+{
+  "name": "lame",
+  "rm-configure": true,
+  "config-opts": ["--disable-static"],
+  "sources": [
+    {
+      "type": "archive",
+      "url": "https://downloads.sourceforge.net/lame/lame-3.99.5.tar.gz";,
+      "sha256": "24346b4158e4af3bd9f2e194bb23eb473c75fb7377011523353196b19b9a23ff"
+    },
+    {
+      "type": "patch",
+      "path": "lame-msse.patch"
+    },
+    {
+      "type": "patch",
+      "path": "lame-gtk1-ac-directives.patch"
+    },
+    {
+      "type": "patch",
+      "path": "lame-ansi2knr2devnull.patch"
+    },
+    {
+      "type": "script",
+      "dest-filename": "autogen.sh",
+      "commands": [
+        "autoreconf -vfi"
+      ]
+    }
+  ],
+  "cleanup": ["/bin", "/include", "/share/doc", "/share/man", "*.la"]
+}
diff --git a/subprojects/shared-modules/lame/lame-ansi2knr2devnull.patch 
b/subprojects/shared-modules/lame/lame-ansi2knr2devnull.patch
new file mode 100644
index 00000000..c427345e
--- /dev/null
+++ b/subprojects/shared-modules/lame/lame-ansi2knr2devnull.patch
@@ -0,0 +1,43 @@
+Description: Patch out remaining ansi2knr.
+Author: Dimitri John Ledkov <xnox ubuntu com>
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=755111
+--- a/configure.in
++++ b/configure.in
+@@ -78,7 +78,6 @@
+ fi
+ 
+ dnl more automake stuff
+-AM_C_PROTOTYPES
+ 
+ AC_CHECK_HEADER(dmalloc.h)
+ if test "${ac_cv_header_dmalloc_h}" = "yes"; then
+--- a/doc/man/Makefile.am
++++ b/doc/man/Makefile.am
+@@ -1,6 +1,6 @@
+ ## $Id: Makefile.am,v 1.1 2000/10/22 11:39:44 aleidinger Exp $
+ 
+-AUTOMAKE_OPTIONS = foreign ansi2knr
++AUTOMAKE_OPTIONS = foreign
+ 
+ man_MANS = lame.1
+ EXTRA_DIST = ${man_MANS}
+--- a/libmp3lame/i386/Makefile.am
++++ b/libmp3lame/i386/Makefile.am
+@@ -1,6 +1,6 @@
+ ## $Id: Makefile.am,v 1.26 2011/04/04 09:42:34 aleidinger Exp $
+ 
+-AUTOMAKE_OPTIONS = foreign $(top_srcdir)/ansi2knr
++AUTOMAKE_OPTIONS = foreign
+ 
+ DEFS = @DEFS@ @CONFIG_DEFS@
+ 
+--- a/doc/html/Makefile.am
++++ b/doc/html/Makefile.am
+@@ -1,6 +1,6 @@
+ ## $Id: Makefile.am,v 1.7 2010/09/30 20:58:40 jaz001 Exp $
+ 
+-AUTOMAKE_OPTIONS = foreign ansi2knr
++AUTOMAKE_OPTIONS = foreign
+ 
+ docdir = $(datadir)/doc
+ pkgdocdir = $(docdir)/$(PACKAGE)
diff --git a/subprojects/shared-modules/lame/lame-gtk1-ac-directives.patch 
b/subprojects/shared-modules/lame/lame-gtk1-ac-directives.patch
new file mode 100644
index 00000000..7e0d3fe4
--- /dev/null
+++ b/subprojects/shared-modules/lame/lame-gtk1-ac-directives.patch
@@ -0,0 +1,205 @@
+Description: Include GTK-1 autoconf directives in build system.
+Origin: http://anonscm.debian.org/gitweb/?p=pkg-multimedia/lame.git;a=tree;f=debian/patches
+Forwarded: yes
+Applied-Upstream: http://lame.cvs.sf.net/viewvc/lame/lame/acinclude.m4?revision=1.6
+
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -85,4 +85,197 @@
+ [AC_MSG_WARN(can't check for IEEE854 compliant 80 bit floats)]
+ )])]) # alex_IEEE854_FLOAT80
+ 
++# Configure paths for GTK+
++# Owen Taylor     97-11-3
+ 
++dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
++dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
++dnl
++AC_DEFUN([AM_PATH_GTK],
++[dnl
++dnl Get the cflags and libraries from the gtk-config script
++dnl
++AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
++            gtk_config_prefix="$withval", gtk_config_prefix="")
++AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
++            gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
++AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
++        , enable_gtktest=yes)
++
++  for module in . $4
++  do
++      case "$module" in
++         gthread)
++             gtk_config_args="$gtk_config_args gthread"
++         ;;
++      esac
++  done
++
++  if test x$gtk_config_exec_prefix != x ; then
++     gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
++     if test x${GTK_CONFIG+set} != xset ; then
++        GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
++     fi
++  fi
++  if test x$gtk_config_prefix != x ; then
++     gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
++     if test x${GTK_CONFIG+set} != xset ; then
++        GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
++     fi
++  fi
++
++  AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
++  min_gtk_version=ifelse([$1], ,0.99.7,$1)
++  AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
++  no_gtk=""
++  if test "$GTK_CONFIG" = "no" ; then
++    no_gtk=yes
++  else
++    GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
++    GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
++    gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \
++           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
++    gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
++           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
++    gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
++           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
++    if test "x$enable_gtktest" = "xyes" ; then
++      ac_save_CFLAGS="$CFLAGS"
++      ac_save_LIBS="$LIBS"
++      CFLAGS="$CFLAGS $GTK_CFLAGS"
++      LIBS="$GTK_LIBS $LIBS"
++dnl
++dnl Now check if the installed GTK is sufficiently new. (Also sanity
++dnl checks the results of gtk-config to some extent
++dnl
++      rm -f conf.gtktest
++      AC_TRY_RUN([
++#include <gtk/gtk.h>
++#include <stdio.h>
++#include <stdlib.h>
++
++int
++main ()
++{
++  int major, minor, micro;
++  char *tmp_version;
++
++  system ("touch conf.gtktest");
++
++  /* HP/UX 9 (%@#!) writes to sscanf strings */
++  tmp_version = g_strdup("$min_gtk_version");
++  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
++     printf("%s, bad version string\n", "$min_gtk_version");
++     exit(1);
++   }
++
++  if ((gtk_major_version != $gtk_config_major_version) ||
++      (gtk_minor_version != $gtk_config_minor_version) ||
++      (gtk_micro_version != $gtk_config_micro_version))
++    {
++      printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
++             $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
++             gtk_major_version, gtk_minor_version, gtk_micro_version);
++      printf ("*** was found! If gtk-config was correct, then it is best\n");
++      printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
++      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
++      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
++      printf("*** required on your system.\n");
++      printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n");
++      printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
++      printf("*** before re-running configure\n");
++    }
++#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
++  else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
++     (gtk_minor_version != GTK_MINOR_VERSION) ||
++           (gtk_micro_version != GTK_MICRO_VERSION))
++    {
++      printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
++       GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
++      printf("*** library (version %d.%d.%d)\n",
++       gtk_major_version, gtk_minor_version, gtk_micro_version);
++    }
++#endif /* defined (GTK_MAJOR_VERSION) ... */
++  else
++    {
++      if ((gtk_major_version > major) ||
++        ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
++        ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
++      {
++        return 0;
++       }
++     else
++      {
++        printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
++               gtk_major_version, gtk_minor_version, gtk_micro_version);
++        printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
++         major, minor, micro);
++        printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n";);
++        printf("***\n");
++        printf("*** If you have already installed a sufficiently new version, this error\n");
++        printf("*** probably means that the wrong copy of the gtk-config shell script is\n");
++        printf("*** being found. The easiest way to fix this is to remove the old version\n");
++        printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n");
++        printf("*** correct copy of gtk-config. (In this case, you will have to\n");
++        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
++        printf("*** so that the correct libraries are found at run-time))\n");
++      }
++    }
++  return 1;
++}
++],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
++       CFLAGS="$ac_save_CFLAGS"
++       LIBS="$ac_save_LIBS"
++     fi
++  fi
++  if test "x$no_gtk" = x ; then
++     AC_MSG_RESULT(yes)
++     ifelse([$2], , :, [$2])
++  else
++     AC_MSG_RESULT(no)
++     if test "$GTK_CONFIG" = "no" ; then
++       echo "*** The gtk-config script installed by GTK could not be found"
++       echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
++       echo "*** your path, or set the GTK_CONFIG environment variable to the"
++       echo "*** full path to gtk-config."
++     else
++       if test -f conf.gtktest ; then
++        :
++       else
++          echo "*** Could not run GTK test program, checking why..."
++          CFLAGS="$CFLAGS $GTK_CFLAGS"
++          LIBS="$LIBS $GTK_LIBS"
++          AC_TRY_LINK([
++#include <gtk/gtk.h>
++#include <stdio.h>
++],      [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
++        [ echo "*** The test program compiled, but did not run. This usually means"
++          echo "*** that the run-time linker is not finding GTK or finding the wrong"
++          echo "*** version of GTK. If it is not finding GTK, you'll need to set your"
++          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
++          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
++          echo "*** is required on your system"
++    echo "***"
++          echo "*** If you have an old version installed, it is best to remove it, although"
++          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
++          echo "***"
++          echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
++          echo "*** came with the system with the command"
++          echo "***"
++          echo "***    rpm --erase --nodeps gtk gtk-devel" ],
++        [ echo "*** The test program failed to compile or link. See the file config.log for the"
++          echo "*** exact error that occured. This usually means GTK was incorrectly installed"
++          echo "*** or that you have moved GTK since it was installed. In the latter case, you"
++          echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ])
++          CFLAGS="$ac_save_CFLAGS"
++          LIBS="$ac_save_LIBS"
++       fi
++     fi
++     GTK_CFLAGS=""
++     GTK_LIBS=""
++     ifelse([$3], , :, [$3])
++  fi
++  AC_SUBST(GTK_CFLAGS)
++  AC_SUBST(GTK_LIBS)
++  rm -f conf.gtktest
++])
diff --git a/subprojects/shared-modules/lame/lame-msse.patch b/subprojects/shared-modules/lame/lame-msse.patch
new file mode 100644
index 00000000..4b71a2ed
--- /dev/null
+++ b/subprojects/shared-modules/lame/lame-msse.patch
@@ -0,0 +1,17 @@
+Description: Build xmm_quantize_sub.c with -msse
+Author: Sebastian Ramacher <sramacher debian org>
+Bug: http://sourceforge.net/p/lame/bugs/443/
+Bug-Debian: https://bugs.debian.org/760047
+Forwarded: http://sourceforge.net/p/lame/bugs/443/
+Last-Update: 2014-08-31
+
+--- lame-3.99.5+repack1.orig/libmp3lame/vector/Makefile.am
++++ lame-3.99.5+repack1/libmp3lame/vector/Makefile.am
+@@ -20,6 +20,7 @@ xmm_sources = xmm_quantize_sub.c
+ 
+ if WITH_XMM
+ liblamevectorroutines_la_SOURCES = $(xmm_sources)
++liblamevectorroutines_la_CFLAGS = -msse
+ endif
+ 
+ noinst_HEADERS = lame_intrin.h
diff --git a/subprojects/shared-modules/libappindicator/libappindicator-ftbfs.patch 
b/subprojects/shared-modules/libappindicator/libappindicator-ftbfs.patch
new file mode 100644
index 00000000..93d31af6
--- /dev/null
+++ b/subprojects/shared-modules/libappindicator/libappindicator-ftbfs.patch
@@ -0,0 +1,20 @@
+From: Olivier Tilloy <olivier tilloy canonical com>
+Date: Tue 2018-03-20 12:47:56 +0000
+Subject: [PATCH] libappindicator FTBFS on bionic
+
+Fix build failures on bionic,
+and update Vcs-* fields in debian/control. (LP: #1757121)
+
+Approved by: Marco Trevisan (Treviño)
+---
+--- libappindicator-12.10.0/src/app-indicator.c        2017-02-15 14:10:41 +0000
++++ libappindicator-12.10.0/src/app-indicator.c        2018-03-20 12:38:59 +0000
+@@ -2196,7 +2196,7 @@ app_indicator_set_secondary_activate_tar
+ 
+       g_return_if_fail (GTK_IS_WIDGET (menuitem));
+ 
+-      priv->sec_activate_target = g_object_ref(G_OBJECT(menuitem));
++      priv->sec_activate_target = g_object_ref(menuitem);
+       priv->sec_activate_enabled = widget_is_menu_child(self, menuitem);
+       g_signal_connect(menuitem, "parent-set", G_CALLBACK(sec_activate_target_parent_changed), self);
+ }
diff --git a/subprojects/shared-modules/libappindicator/libappindicator-gtk2-12.10.json 
b/subprojects/shared-modules/libappindicator/libappindicator-gtk2-12.10.json
new file mode 100644
index 00000000..f43a4211
--- /dev/null
+++ b/subprojects/shared-modules/libappindicator/libappindicator-gtk2-12.10.json
@@ -0,0 +1,122 @@
+{
+  "name": "libappindicator",
+  "build-options": {
+    "cflags": "-Wno-error=deprecated-declarations"
+  },
+  "rm-configure": true,
+  "config-opts": [
+    "--disable-static",
+    "--disable-gtk-doc",
+    "--disable-tests",
+    "--disable-mono-tests",
+    "--enable-introspection=no",
+    "--with-gtk=2"
+  ],
+  "cleanup": [
+    "/include",
+    "/lib/pkgconfig",
+    "/lib/*.la",
+    "/share/gtk-doc",
+    "/share/gir-1.0"
+  ],
+  "sources": [
+    {
+      "type": "archive",
+      "url": "https://launchpad.net/libappindicator/12.10/12.10.0/+download/libappindicator-12.10.0.tar.gz";,
+      "sha256": "d5907c1f98084acf28fd19593cb70672caa0ca1cf82d747ba6f4830d4cc3b49f"
+    },
+    {
+      "type": "patch",
+      "path": "libappindicator-ftbfs.patch"
+    },
+    {
+      "type": "shell",
+      "commands": [
+        "# Disable python bindings",
+        "sed -e '/APPINDICATOR_PYTHON/,/\\$PYGTK_CODEGEN/ d' -i configure.ac",
+        "sed -e '/bindings/ d' -e '/example/ d' -i Makefile.am"
+      ]
+    },
+    {
+      "type": "script",
+      "commands": ["autoreconf -sfi"],
+      "dest-filename": "autogen.sh"
+    }
+  ],
+  "modules": [
+    {
+      "name": "libdbusmenu",
+      "build-options": {
+        "env": {
+          "HAVE_VALGRIND_FALSE": "#",
+          "HAVE_VALGRIND_TRUE": ""
+        }
+      },
+      "cleanup": [
+        "/include",
+        "/libexec",
+        "/lib/pkgconfig",
+        "/lib/*.la",
+        "/share/doc",
+        "/share/libdbusmenu",
+        "/share/gtk-doc",
+        "/share/gir-1.0"
+      ],
+      "config-opts": [
+        "--disable-static",
+        "--disable-gtk-doc",
+        "--enable-introspection=no",
+        "--disable-vala",
+        "--disable-dumper",
+        "--disable-tests",
+        "--with-gtk=2"
+      ],
+      "sources": [
+        {
+          "type": "archive",
+          "url": "https://launchpad.net/libdbusmenu/16.04/16.04.0/+download/libdbusmenu-16.04.0.tar.gz";,
+          "sha256": "b9cc4a2acd74509435892823607d966d424bd9ad5d0b00938f27240a1bfa878a"
+        }
+      ]
+    },
+    {
+      "name": "libindicator",
+      "build-options": {
+        "cflags": "-Wno-error=deprecated-declarations"
+      },
+      "cleanup": [
+        "/include",
+        "/libexec",
+        "/lib/pkgconfig",
+        "/lib/*.la",
+        "/share/libindicator",
+        "/share/gtk-doc",
+        "/share/gir-1.0"
+      ],
+      "config-opts": [
+        "--disable-static",
+        "--disable-tests",
+        "--with-gtk=2"
+      ],
+      "sources": [
+        {
+          "type": "archive",
+          "url": "https://launchpad.net/libindicator/12.10/12.10.1/+download/libindicator-12.10.1.tar.gz";,
+          "sha256": "b2d2e44c10313d5c9cd60db455d520f80b36dc39562df079a3f29495e8f9447f"
+        },
+        {
+          "type": "shell",
+          "commands": [
+            "# FTBFS fix",
+            "sed -e '/LIBINDICATOR_LIBS/ s/\\$LIBM/ $LIBM/' -i configure.ac"
+          ]
+        },
+        {
+          "type": "script",
+          "commands": ["autoreconf -sfi"],
+          "dest-filename": "autogen.sh"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/subprojects/shared-modules/libappindicator/libappindicator-gtk3-12.10.json 
b/subprojects/shared-modules/libappindicator/libappindicator-gtk3-12.10.json
new file mode 100644
index 00000000..8756506c
--- /dev/null
+++ b/subprojects/shared-modules/libappindicator/libappindicator-gtk3-12.10.json
@@ -0,0 +1,122 @@
+{
+  "name": "libappindicator",
+  "build-options": {
+    "cflags": "-Wno-error=deprecated-declarations"
+  },
+  "rm-configure": true,
+  "config-opts": [
+    "--disable-static",
+    "--disable-gtk-doc",
+    "--disable-tests",
+    "--disable-mono-tests",
+    "--enable-introspection=no",
+    "--with-gtk=3"
+  ],
+  "cleanup": [
+    "/include",
+    "/lib/pkgconfig",
+    "/lib/*.la",
+    "/share/gtk-doc",
+    "/share/gir-1.0"
+  ],
+  "sources": [
+    {
+      "type": "archive",
+      "url": "https://launchpad.net/libappindicator/12.10/12.10.0/+download/libappindicator-12.10.0.tar.gz";,
+      "sha256": "d5907c1f98084acf28fd19593cb70672caa0ca1cf82d747ba6f4830d4cc3b49f"
+    },
+    {
+      "type": "patch",
+      "path": "libappindicator-ftbfs.patch"
+    },
+    {
+      "type": "shell",
+      "commands": [
+        "# Disable python bindings",
+        "sed -e '/APPINDICATOR_PYTHON/,/\\$PYGTK_CODEGEN/ d' -i configure.ac",
+        "sed -e '/bindings/ d' -e '/example/ d' -i Makefile.am"
+      ]
+    },
+    {
+      "type": "script",
+      "commands": ["autoreconf -sfi"],
+      "dest-filename": "autogen.sh"
+    }
+  ],
+  "modules": [
+    {
+      "name": "libdbusmenu",
+      "build-options": {
+        "env": {
+          "HAVE_VALGRIND_FALSE": "#",
+          "HAVE_VALGRIND_TRUE": ""
+        }
+      },
+      "cleanup": [
+        "/include",
+        "/libexec",
+        "/lib/pkgconfig",
+        "/lib/*.la",
+        "/share/doc",
+        "/share/libdbusmenu",
+        "/share/gtk-doc",
+        "/share/gir-1.0"
+      ],
+      "config-opts": [
+        "--disable-static",
+        "--disable-gtk-doc",
+        "--enable-introspection=no",
+        "--disable-vala",
+        "--disable-dumper",
+        "--disable-tests",
+        "--with-gtk=3"
+      ],
+      "sources": [
+        {
+          "type": "archive",
+          "url": "https://launchpad.net/libdbusmenu/16.04/16.04.0/+download/libdbusmenu-16.04.0.tar.gz";,
+          "sha256": "b9cc4a2acd74509435892823607d966d424bd9ad5d0b00938f27240a1bfa878a"
+        }
+      ]
+    },
+    {
+      "name": "libindicator",
+      "build-options": {
+        "cflags": "-Wno-error=deprecated-declarations"
+      },
+      "cleanup": [
+        "/include",
+        "/libexec",
+        "/lib/pkgconfig",
+        "/lib/*.la",
+        "/share/libindicator",
+        "/share/gtk-doc",
+        "/share/gir-1.0"
+      ],
+      "config-opts": [
+        "--disable-static",
+        "--disable-tests",
+        "--with-gtk=3"
+      ],
+      "sources": [
+        {
+          "type": "archive",
+          "url": "https://launchpad.net/libindicator/12.10/12.10.1/+download/libindicator-12.10.1.tar.gz";,
+          "sha256": "b2d2e44c10313d5c9cd60db455d520f80b36dc39562df079a3f29495e8f9447f"
+        },
+        {
+          "type": "shell",
+          "commands": [
+            "# FTBFS fix",
+            "sed -e '/LIBINDICATOR_LIBS/ s/\\$LIBM/ $LIBM/' -i configure.ac"
+          ]
+        },
+        {
+          "type": "script",
+          "commands": ["autoreconf -sfi"],
+          "dest-filename": "autogen.sh"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/subprojects/shared-modules/libappindicator/libappindicator-gtk3-introspection-12.10.json 
b/subprojects/shared-modules/libappindicator/libappindicator-gtk3-introspection-12.10.json
new file mode 100644
index 00000000..d7b1f490
--- /dev/null
+++ b/subprojects/shared-modules/libappindicator/libappindicator-gtk3-introspection-12.10.json
@@ -0,0 +1,122 @@
+{
+  "name": "libappindicator",
+  "build-options": {
+    "cflags": "-Wno-error=deprecated-declarations"
+  },
+  "rm-configure": true,
+  "config-opts": [
+    "--disable-static",
+    "--disable-gtk-doc",
+    "--disable-tests",
+    "--disable-mono-tests",
+    "--enable-introspection=yes",
+    "--with-gtk=3"
+  ],
+  "cleanup": [
+    "/include",
+    "/lib/pkgconfig",
+    "/lib/*.la",
+    "/share/gtk-doc",
+    "/share/gir-1.0"
+  ],
+  "sources": [
+    {
+      "type": "archive",
+      "url": "https://launchpad.net/libappindicator/12.10/12.10.0/+download/libappindicator-12.10.0.tar.gz";,
+      "sha256": "d5907c1f98084acf28fd19593cb70672caa0ca1cf82d747ba6f4830d4cc3b49f"
+    },
+    {
+      "type": "patch",
+      "path": "libappindicator-ftbfs.patch"
+    },
+    {
+      "type": "shell",
+      "commands": [
+        "# Disable python bindings",
+        "sed -e '/APPINDICATOR_PYTHON/,/\\$PYGTK_CODEGEN/ d' -i configure.ac",
+        "sed -e '/bindings/ d' -e '/example/ d' -i Makefile.am"
+      ]
+    },
+    {
+      "type": "script",
+      "commands": ["autoreconf -sfi"],
+      "dest-filename": "autogen.sh"
+    }
+  ],
+  "modules": [
+    {
+      "name": "libdbusmenu",
+      "build-options": {
+        "env": {
+          "HAVE_VALGRIND_FALSE": "#",
+          "HAVE_VALGRIND_TRUE": ""
+        }
+      },
+      "cleanup": [
+        "/include",
+        "/libexec",
+        "/lib/pkgconfig",
+        "/lib/*.la",
+        "/share/doc",
+        "/share/libdbusmenu",
+        "/share/gtk-doc",
+        "/share/gir-1.0"
+      ],
+      "config-opts": [
+        "--disable-static",
+        "--disable-gtk-doc",
+        "--enable-introspection=yes",
+        "--disable-vala",
+        "--disable-dumper",
+        "--disable-tests",
+        "--with-gtk=3"
+      ],
+      "sources": [
+        {
+          "type": "archive",
+          "url": "https://launchpad.net/libdbusmenu/16.04/16.04.0/+download/libdbusmenu-16.04.0.tar.gz";,
+          "sha256": "b9cc4a2acd74509435892823607d966d424bd9ad5d0b00938f27240a1bfa878a"
+        }
+      ]
+    },
+    {
+      "name": "libindicator",
+      "build-options": {
+        "cflags": "-Wno-error=deprecated-declarations"
+      },
+      "cleanup": [
+        "/include",
+        "/libexec",
+        "/lib/pkgconfig",
+        "/lib/*.la",
+        "/share/libindicator",
+        "/share/gtk-doc",
+        "/share/gir-1.0"
+      ],
+      "config-opts": [
+        "--disable-static",
+        "--disable-tests",
+        "--with-gtk=3"
+      ],
+      "sources": [
+        {
+          "type": "archive",
+          "url": "https://launchpad.net/libindicator/12.10/12.10.1/+download/libindicator-12.10.1.tar.gz";,
+          "sha256": "b2d2e44c10313d5c9cd60db455d520f80b36dc39562df079a3f29495e8f9447f"
+        },
+        {
+          "type": "shell",
+          "commands": [
+            "# FTBFS fix",
+            "sed -e '/LIBINDICATOR_LIBS/ s/\\$LIBM/ $LIBM/' -i configure.ac"
+          ]
+        },
+        {
+          "type": "script",
+          "commands": ["autoreconf -sfi"],
+          "dest-filename": "autogen.sh"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/subprojects/shared-modules/libappindicator/libappindicator.json.in 
b/subprojects/shared-modules/libappindicator/libappindicator.json.in
new file mode 100644
index 00000000..93f49b02
--- /dev/null
+++ b/subprojects/shared-modules/libappindicator/libappindicator.json.in
@@ -0,0 +1,122 @@
+{
+  "name": "libappindicator",
+  "build-options": {
+    "cflags": "-Wno-error=deprecated-declarations"
+  },
+  "rm-configure": true,
+  "config-opts": [
+    "--disable-static",
+    "--disable-gtk-doc",
+    "--disable-tests",
+    "--disable-mono-tests",
+    "--enable-introspection=@INTROSPECTION@",
+    "--with-gtk=@GTK_VER@"
+  ],
+  "cleanup": [
+    "/include",
+    "/lib/pkgconfig",
+    "/lib/*.la",
+    "/share/gtk-doc",
+    "/share/gir-1.0"
+  ],
+  "sources": [
+    {
+      "type": "archive",
+      "url": "https://launchpad.net/libappindicator/12.10/12.10.0/+download/libappindicator-12.10.0.tar.gz";,
+      "sha256": "d5907c1f98084acf28fd19593cb70672caa0ca1cf82d747ba6f4830d4cc3b49f"
+    },
+    {
+      "type": "patch",
+      "path": "libappindicator-ftbfs.patch"
+    },
+    {
+      "type": "shell",
+      "commands": [
+        "# Disable python bindings",
+        "sed -e '/APPINDICATOR_PYTHON/,/\\$PYGTK_CODEGEN/ d' -i configure.ac",
+        "sed -e '/bindings/ d' -e '/example/ d' -i Makefile.am"
+      ]
+    },
+    {
+      "type": "script",
+      "commands": ["autoreconf -sfi"],
+      "dest-filename": "autogen.sh"
+    }
+  ],
+  "modules": [
+    {
+      "name": "libdbusmenu",
+      "build-options": {
+        "env": {
+          "HAVE_VALGRIND_FALSE": "#",
+          "HAVE_VALGRIND_TRUE": ""
+        }
+      },
+      "cleanup": [
+        "/include",
+        "/libexec",
+        "/lib/pkgconfig",
+        "/lib/*.la",
+        "/share/doc",
+        "/share/libdbusmenu",
+        "/share/gtk-doc",
+        "/share/gir-1.0"
+      ],
+      "config-opts": [
+        "--disable-static",
+        "--disable-gtk-doc",
+        "--enable-introspection=@INTROSPECTION@",
+        "--disable-vala",
+        "--disable-dumper",
+        "--disable-tests",
+        "--with-gtk=@GTK_VER@"
+      ],
+      "sources": [
+        {
+          "type": "archive",
+          "url": "https://launchpad.net/libdbusmenu/16.04/16.04.0/+download/libdbusmenu-16.04.0.tar.gz";,
+          "sha256": "b9cc4a2acd74509435892823607d966d424bd9ad5d0b00938f27240a1bfa878a"
+        }
+      ]
+    },
+    {
+      "name": "libindicator",
+      "build-options": {
+        "cflags": "-Wno-error=deprecated-declarations"
+      },
+      "cleanup": [
+        "/include",
+        "/libexec",
+        "/lib/pkgconfig",
+        "/lib/*.la",
+        "/share/libindicator",
+        "/share/gtk-doc",
+        "/share/gir-1.0"
+      ],
+      "config-opts": [
+        "--disable-static",
+        "--disable-tests",
+        "--with-gtk=@GTK_VER@"
+      ],
+      "sources": [
+        {
+          "type": "archive",
+          "url": "https://launchpad.net/libindicator/12.10/12.10.1/+download/libindicator-12.10.1.tar.gz";,
+          "sha256": "b2d2e44c10313d5c9cd60db455d520f80b36dc39562df079a3f29495e8f9447f"
+        },
+        {
+          "type": "shell",
+          "commands": [
+            "# FTBFS fix",
+            "sed -e '/LIBINDICATOR_LIBS/ s/\\$LIBM/ $LIBM/' -i configure.ac"
+          ]
+        },
+        {
+          "type": "script",
+          "commands": ["autoreconf -sfi"],
+          "dest-filename": "autogen.sh"
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/subprojects/shared-modules/lua5.3/lua-5.3.0-autotoolize.patch 
b/subprojects/shared-modules/lua5.3/lua-5.3.0-autotoolize.patch
new file mode 100644
index 00000000..3e4723a5
--- /dev/null
+++ b/subprojects/shared-modules/lua5.3/lua-5.3.0-autotoolize.patch
@@ -0,0 +1,192 @@
+diff -up lua-5.3.0/configure.ac.autoxxx lua-5.3.0/configure.ac
+--- lua-5.3.0/configure.ac.autoxxx     2015-01-15 10:20:03.826889574 -0500
++++ lua-5.3.0/configure.ac     2015-01-15 10:20:03.826889574 -0500
+@@ -0,0 +1,69 @@
++AC_PREREQ(2.59)
++AC_INIT([lua], [5.3.0], [https://bugzilla.redhat.com/], [lua-at], [http://www.lua.org])
++AC_SUBST([MAJOR_VERSION], [5.3])
++
++AC_CONFIG_HEADERS([config.h])
++AC_CONFIG_SRCDIR([src/lapi.c])
++
++AM_INIT_AUTOMAKE([1.9 foreign])
++
++AC_PROG_CC
++AC_PROG_LIBTOOL
++
++AC_ARG_WITH(
++  [readline],
++  [AC_HELP_STRING([--with-readline], [Use readline for interpreter input [default=yes]])],
++  [use_readline=$withval],
++  [use_readline=yes]
++)
++
++LUA_LIBS="-lm"
++
++# Check for readline
++READLINE_DEFS="#undef LUA_USE_READLINE"
++if test "x$use_readline" == "xyes"; then
++  AC_CHECK_LIB([readline], [readline], [:], [use_readline=no], [-lncurses])
++  AC_CHECK_HEADERS([readline/readline.h readline/history.h], [], [use_readline=no])
++  if test "x$use_readline" == "xno"; then
++    AC_MSG_WARN([readline headers could not be found, disabling readline support])
++  else
++    READLINE_DEFS="#define LUA_USE_READLINE"
++    READLINE_LIBS="-lreadline -lncurses"
++  fi
++fi
++AC_SUBST(READLINE_DEFS)
++AC_SUBST(READLINE_LIBS)
++
++case "$host" in
++  *-mingw*)  use_os=win32  ;;
++  *-darwin*) use_os=macosx ;;
++  *)         use_os=posix  ;;
++esac
++
++POSIX_DEFS="#undef LUA_USE_POSIX"
++LUA_DL_DEFS="#undef LUA_USE_DLOPEN"
++LUA_BUILD_AS_DLL_DEFS="#undef LUA_BUILD_AS_DLL"
++
++if test "x$use_os" == "xwin32"; then
++  LUA_BUILD_AS_DLL_DEFS="#define LUA_BUILD_AS_DLL"
++elif test "x$use_os" == "xmacosx"; then
++  POSIX_DEFS="#define LUA_USE_POSIX"
++  LUA_DL_DEFS="#define LUA_DL_DYLD"
++elif test "x$use_os" == "xposix"; then
++  POSIX_DEFS="#define LUA_USE_POSIX"
++  LUA_DL_DEFS="#define LUA_DL_DLOPEN"
++  LUA_LIBS="$LUA_LIBS -ldl"
++fi
++AC_SUBST(POSIX_DEFS)
++AC_SUBST(LUA_DL_DEFS)
++AC_SUBST(LUA_BUILD_AS_DLL_DEFS)
++
++AC_SUBST(LUA_LIBS)
++
++AC_CONFIG_FILES([Makefile
++                 src/Makefile
++                 src/lua.pc
++                 src/luaconf.h.template
++                 doc/Makefile
++])
++AC_OUTPUT
+diff -up lua-5.3.0/doc/Makefile.am.autoxxx lua-5.3.0/doc/Makefile.am
+--- lua-5.3.0/doc/Makefile.am.autoxxx  2015-01-15 10:20:03.826889574 -0500
++++ lua-5.3.0/doc/Makefile.am  2015-01-15 10:20:03.826889574 -0500
+@@ -0,0 +1,4 @@
++man1_MANS = lua.1 luac.1
++
++EXTRA_DIST = \
++      contents.html logo.gif lua.1 luac.1 lua.css manual.css manual.html osi-certified-72x60.png readme.html
+diff -up lua-5.3.0/Makefile.am.autoxxx lua-5.3.0/Makefile.am
+--- lua-5.3.0/Makefile.am.autoxxx      2015-01-15 10:20:03.826889574 -0500
++++ lua-5.3.0/Makefile.am      2015-01-15 10:20:03.826889574 -0500
+@@ -0,0 +1,3 @@
++SUBDIRS = src doc
++
++EXTRA_DIST = README
+diff -up lua-5.3.0/src/.gitignore.autoxxx lua-5.3.0/src/.gitignore
+--- lua-5.3.0/src/.gitignore.autoxxx   2015-01-15 10:20:03.826889574 -0500
++++ lua-5.3.0/src/.gitignore   2015-01-15 10:20:03.826889574 -0500
+@@ -0,0 +1,5 @@
++lua
++lua.pc
++luac
++luaconf.h
++luaconf.h.template
+diff -up lua-5.3.0/src/luaconf.h.template.in.autoxxx lua-5.3.0/src/luaconf.h.template.in
+--- lua-5.3.0/src/luaconf.h.template.in.autoxxx        2015-01-15 10:20:03.828889562 -0500
++++ lua-5.3.0/src/luaconf.h.template.in        2015-01-15 10:22:37.420027778 -0500
+@@ -11,6 +11,11 @@
+ #include <limits.h>
+ #include <stddef.h>
+ 
++@POSIX_DEFS@
++@LUA_DL_DEFS@
++@LUA_BUILD_AS_DLL_DEFS@
++@READLINE_DEFS@
++
+ 
+ /*
+ ** ===================================================================
+@@ -175,9 +180,9 @@
+ 
+ #else                 /* }{ */
+ 
+-#define LUA_ROOT      "/usr/local/"
+-#define LUA_LDIR      LUA_ROOT "share/lua/" LUA_VDIR "/"
+-#define LUA_CDIR      LUA_ROOT "lib/lua/" LUA_VDIR "/"
++#define LUA_ROOT      "@prefix@/"
++#define LUA_LDIR      "@pkgdatadir@/lua/" LUA_VDIR "/"
++#define LUA_CDIR      "@libdir@/lua/" LUA_VDIR "/"
+ #define LUA_PATH_DEFAULT  \
+               LUA_LDIR"?.lua;"  LUA_LDIR"?/init.lua;" \
+               LUA_CDIR"?.lua;"  LUA_CDIR"?/init.lua;" \
+diff -up lua-5.3.0/src/lua.pc.in.autoxxx lua-5.3.0/src/lua.pc.in
+--- lua-5.3.0/src/lua.pc.in.autoxxx    2015-01-15 10:20:03.827889568 -0500
++++ lua-5.3.0/src/lua.pc.in    2015-01-15 10:20:03.827889568 -0500
+@@ -0,0 +1,13 @@
++V= @MAJOR_VERSION@
++R= @VERSION@
++prefix= @prefix@
++exec_prefix=${prefix}
++libdir= @libdir@
++includedir=${prefix}/include
++
++Name: Lua
++Description: An Extensible Extension Language
++Version: ${R}
++Requires:
++Libs: -llua @LUA_LIBS@
++Cflags: -I${includedir}
+diff -up lua-5.3.0/src/Makefile.am.autoxxx lua-5.3.0/src/Makefile.am
+--- lua-5.3.0/src/Makefile.am.autoxxx  2015-01-15 10:20:03.826889574 -0500
++++ lua-5.3.0/src/Makefile.am  2015-01-15 10:20:03.826889574 -0500
+@@ -0,0 +1,46 @@
++AM_CFLAGS = -Wall
++
++include_HEADERS = lua.h lualib.h lauxlib.h lua.hpp
++
++nodist_include_HEADERS = luaconf.h
++
++lib_LTLIBRARIES = liblua.la
++liblua_la_LDFLAGS = -release @MAJOR_VERSION@
++liblua_la_SOURCES = \
++      lapi.c lauxlib.c lbaselib.c lbitlib.c lcode.c lcorolib.c lctype.c ldblib.c \
++      ldebug.c ldo.c ldump.c lfunc.c lgc.c linit.c liolib.c llex.c lmathlib.c lmem.c \
++      loadlib.c lobject.c lopcodes.c loslib.c lparser.c lstate.c lstring.c lstrlib.c \
++      ltable.c ltablib.c ltm.c lundump.c lutf8lib.c lvm.c lzio.c \
++      lapi.h lcode.h lctype.h ldebug.h ldo.h lfunc.h lgc.h llex.h llimits.h \
++      lmem.h lobject.h lopcodes.h lparser.h lstate.h lstring.h ltable.h ltm.h \
++      lundump.h lvm.h lzio.h
++
++pkgconfigdir = $(libdir)/pkgconfig
++pkgconfig_DATA = lua.pc
++
++bin_PROGRAMS = lua luac
++
++lua_SOURCES = lua.c
++lua_LDADD = liblua.la @LUA_LIBS@ @READLINE_LIBS@
++lua_DEPENDENCIES = liblua.la
++
++luac_SOURCES = luac.c
++# Statically link liblua against luac since luac uses symbols not exported in liblua
++luac_LDADD = .libs/liblua.a @LUA_LIBS@
++luac_DEPENDENCIES = liblua.la
++
++EXTRA_DIST = luaconf.h.template
++BUILT_SOURCES = luaconf.h
++CLEANFILES = luaconf.h luaconf.h.template
++
++readline_defs = @READLINE_DEFS@
++
++edit =        sed \
++        -e 's,%prefix%,$(prefix),g' \
++        -e 's,%lua_datadir%,$(datadir),g' \
++        -e 's,%lua_libdir%,$(libdir),g'
++
++luaconf.h : luaconf.h.template
++      rm -f $@ $@.tmp
++      $(edit) $< >$@.tmp
++      mv $@.tmp $@
diff --git a/subprojects/shared-modules/lua5.3/lua-5.3.0-configure-compat-module.patch 
b/subprojects/shared-modules/lua5.3/lua-5.3.0-configure-compat-module.patch
new file mode 100644
index 00000000..bd5d41d4
--- /dev/null
+++ b/subprojects/shared-modules/lua5.3/lua-5.3.0-configure-compat-module.patch
@@ -0,0 +1,35 @@
+diff -up lua-5.2.2/configure.ac.compat-module lua-5.2.2/configure.ac
+--- lua-5.2.2/configure.ac.compat-module       2013-05-10 10:16:05.344137597 -0400
++++ lua-5.2.2/configure.ac     2013-05-10 10:16:05.357137596 -0400
+@@ -11,6 +11,20 @@ AC_PROG_CC
+ AC_PROG_LIBTOOL
+ 
+ AC_ARG_WITH(
++  [compat-module],
++  [AC_HELP_STRING([--with-compat-module], [Enable LUA_COMPAT_MODULE functions [default=no]])],
++  [use_compat_module=$withval],
++  [use_compat_module=no]
++)
++
++COMPAT_DEFS="#undef LUA_COMPAT_ALL"
++if test "x$use_compat_module" == "xyes"; then
++  COMPAT_DEFS="#define LUA_COMPAT_5_1
++#define LUA_COMPAT_5_2"
++fi
++AC_SUBST(COMPAT_DEFS)
++
++AC_ARG_WITH(
+   [readline],
+   [AC_HELP_STRING([--with-readline], [Use readline for interpreter input [default=yes]])],
+   [use_readline=$withval],
+diff -up lua-5.2.2/src/luaconf.h.template.in.compat-module lua-5.2.2/src/luaconf.h.template.in
+--- lua-5.2.2/src/luaconf.h.template.in.compat-module  2013-05-10 10:25:42.586116963 -0400
++++ lua-5.2.2/src/luaconf.h.template.in        2013-05-10 10:26:29.957115269 -0400
+@@ -15,6 +15,7 @@
+ @LUA_DL_DEFS@
+ @LUA_BUILD_AS_DLL_DEFS@
+ @READLINE_DEFS@
++@COMPAT_DEFS@
+ 
+ 
+ /*
diff --git a/subprojects/shared-modules/lua5.3/lua-5.3.0-idsize.patch 
b/subprojects/shared-modules/lua5.3/lua-5.3.0-idsize.patch
new file mode 100644
index 00000000..16107fe2
--- /dev/null
+++ b/subprojects/shared-modules/lua5.3/lua-5.3.0-idsize.patch
@@ -0,0 +1,12 @@
+diff -up lua-5.3.0/src/luaconf.h.template.in.idsize lua-5.3.0/src/luaconf.h.template.in
+--- lua-5.3.0/src/luaconf.h.template.in.idsize 2015-01-15 10:23:20.515801344 -0500
++++ lua-5.3.0/src/luaconf.h.template.in        2015-01-15 10:23:48.955651916 -0500
+@@ -693,7 +693,7 @@
+ @@ of a function in debug information.
+ ** CHANGE it if you want a different size.
+ */
+-#define LUA_IDSIZE    60
++#define LUA_IDSIZE    512
+ 
+ 
+ /*
diff --git a/subprojects/shared-modules/lua5.3/lua-5.3.2.json 
b/subprojects/shared-modules/lua5.3/lua-5.3.2.json
new file mode 100644
index 00000000..464ded5d
--- /dev/null
+++ b/subprojects/shared-modules/lua5.3/lua-5.3.2.json
@@ -0,0 +1,34 @@
+{
+    "name": "lua-5.3",
+    "config-opts": [
+        "--with-compat-module"
+    ],
+    "sources": [
+        {
+            "type": "archive",
+            "url": "https://www.lua.org/ftp/lua-5.3.4.tar.gz";,
+            "sha256": "f681aa518233bc407e23acf0f5887c884f17436f000d453b2491a9f11a52400c"
+        },
+        {
+            "type": "shell",
+            "commands": [ "mv src/luaconf.h src/luaconf.h.template.in" ]
+        },
+        {
+            "type": "patch",
+            "path": "lua-5.3.0-autotoolize.patch"
+        },
+        {
+            "type": "patch",
+            "path": "lua-5.3.0-idsize.patch"
+        },
+        {
+            "type": "patch",
+            "path": "lua-5.3.0-configure-compat-module.patch"
+        },
+        {
+            "type": "shell",
+            "commands": [ "autoreconf -i" ]
+        }
+    ],
+    "cleanup": [ "/bin" ]
+}
diff --git a/subprojects/shared-modules/pygame/audiofile-gcc6.patch 
b/subprojects/shared-modules/pygame/audiofile-gcc6.patch
new file mode 100644
index 00000000..89afb6d8
--- /dev/null
+++ b/subprojects/shared-modules/pygame/audiofile-gcc6.patch
@@ -0,0 +1,21 @@
+From b62c902dd258125cac86cd2df21fc898035a43d3 Mon Sep 17 00:00:00 2001
+From: Michael Pruett <michael 68k org>
+Date: Mon, 29 Aug 2016 23:08:26 -0500
+Subject: [PATCH] Fix undefined behavior in sign conversion.
+Origin: https://github.com/mpruett/audiofile/commit/b62c902dd258125cac86cd2df21fc898035a43d3
+
+---
+diff --git a/libaudiofile/modules/SimpleModule.h b/libaudiofile/modules/SimpleModule.h
+index 03c6c69..bad85ad 100644
+--- a/libaudiofile/modules/SimpleModule.h
++++ b/libaudiofile/modules/SimpleModule.h
+@@ -123,7 +123,8 @@ struct signConverter
+       typedef typename IntTypes<Format>::UnsignedType UnsignedType;
+ 
+       static const int kScaleBits = (Format + 1) * CHAR_BIT - 1;
+-      static const int kMinSignedValue = -1 << kScaleBits;
++      static const int kMaxSignedValue = (((1 << (kScaleBits - 1)) - 1) << 1) + 1;
++      static const int kMinSignedValue = -kMaxSignedValue - 1;
+ 
+       struct signedToUnsigned : public std::unary_function<SignedType, UnsignedType>
+       {
diff --git a/subprojects/shared-modules/pygame/fluidsynth-no-rawmidi.patch 
b/subprojects/shared-modules/pygame/fluidsynth-no-rawmidi.patch
new file mode 100644
index 00000000..88a89742
--- /dev/null
+++ b/subprojects/shared-modules/pygame/fluidsynth-no-rawmidi.patch
@@ -0,0 +1,69 @@
+diff -rupN fluidsynth-1.1.6.orig/src/drivers/fluid_alsa.c fluidsynth-1.1.6/src/drivers/fluid_alsa.c
+--- fluidsynth-1.1.6.orig/src/drivers/fluid_alsa.c     2012-08-16 05:01:13.000000000 +0100
++++ fluidsynth-1.1.6/src/drivers/fluid_alsa.c  2017-02-28 21:26:57.033244239 +0000
+@@ -96,7 +96,7 @@ struct fluid_alsa_formats_t fluid_alsa_f
+ };
+ 
+ 
+-
++#if 0
+ /*
+  * fluid_alsa_rawmidi_driver_t
+  *
+@@ -119,7 +119,7 @@ fluid_midi_driver_t* new_fluid_alsa_rawm
+ 
+ int delete_fluid_alsa_rawmidi_driver(fluid_midi_driver_t* p);
+ static void fluid_alsa_midi_run(void* d);
+-
++#endif
+ 
+ /*
+  * fluid_alsa_seq_driver_t
+@@ -535,7 +535,7 @@ static void fluid_alsa_audio_run_s16 (vo
+  *
+  */
+ 
+-
++#if 0
+ void fluid_alsa_rawmidi_driver_settings(fluid_settings_t* settings)
+ {
+   fluid_settings_register_str(settings, "midi.alsa.device", "default", 0, NULL, NULL);
+@@ -698,7 +698,7 @@ fluid_alsa_midi_run(void* d)
+     }
+   }
+ }
+-
++#endif
+ /**************************************************************
+  *
+  *        Alsa sequencer
+diff -rupN fluidsynth-1.1.6.orig/src/drivers/fluid_mdriver.c fluidsynth-1.1.6/src/drivers/fluid_mdriver.c
+--- fluidsynth-1.1.6.orig/src/drivers/fluid_mdriver.c  2012-08-16 05:01:13.000000000 +0100
++++ fluidsynth-1.1.6/src/drivers/fluid_mdriver.c       2017-02-28 21:24:43.887833321 +0000
+@@ -24,11 +24,13 @@
+ 
+ /* ALSA */
+ #if ALSA_SUPPORT
++#if 0
+ fluid_midi_driver_t* new_fluid_alsa_rawmidi_driver(fluid_settings_t* settings,
+                                                handle_midi_event_func_t handler,
+                                                void* event_handler_data);
+ int delete_fluid_alsa_rawmidi_driver(fluid_midi_driver_t* p);
+ void fluid_alsa_rawmidi_driver_settings(fluid_settings_t* settings);
++#endif
+ 
+ fluid_midi_driver_t* new_fluid_alsa_seq_driver(fluid_settings_t* settings,
+                                            handle_midi_event_func_t handler,
+@@ -109,10 +111,12 @@ struct fluid_mdriver_definition_t fluid_
+     fluid_oss_midi_driver_settings },
+ #endif
+ #if ALSA_SUPPORT
++#if 0
+   { "alsa_raw",
+     new_fluid_alsa_rawmidi_driver,
+     delete_fluid_alsa_rawmidi_driver,
+     fluid_alsa_rawmidi_driver_settings },
++#endif
+   { "alsa_seq",
+     new_fluid_alsa_seq_driver,
+     delete_fluid_alsa_seq_driver,
diff --git a/subprojects/shared-modules/pygame/portmidi-no-java.patch 
b/subprojects/shared-modules/pygame/portmidi-no-java.patch
new file mode 100644
index 00000000..00ef8eaa
--- /dev/null
+++ b/subprojects/shared-modules/pygame/portmidi-no-java.patch
@@ -0,0 +1,105 @@
+diff -rupN portmidi.orig/CMakeLists.txt portmidi/CMakeLists.txt
+--- portmidi.orig/CMakeLists.txt       2010-09-20 15:57:48.000000000 +0100
++++ portmidi/CMakeLists.txt    2017-03-03 13:50:58.494561245 +0000
+@@ -71,7 +71,3 @@ add_subdirectory(pm_common)
+ add_subdirectory(pm_test)
+ 
+ add_subdirectory(pm_dylib)
+-
+-# Cannot figure out how to make an xcode Java application with CMake
+-add_subdirectory(pm_java)
+-
+diff -rupN portmidi.orig/pm_common/CMakeLists.txt portmidi/pm_common/CMakeLists.txt
+--- portmidi.orig/pm_common/CMakeLists.txt     2010-09-20 15:57:48.000000000 +0100
++++ portmidi/pm_common/CMakeLists.txt  2017-03-03 14:02:32.851938051 +0000
+@@ -67,14 +67,6 @@ if(UNIX)
+     message(STATUS "SYSROOT: " ${CMAKE_OSX_SYSROOT})
+   else(APPLE)
+     # LINUX settings...
+-    include(FindJNI)
+-    message(STATUS "JAVA_JVM_LIB_PATH is " ${JAVA_JVM_LIB_PATH})
+-    message(STATUS "JAVA_INCLUDE_PATH is " ${JAVA_INCLUDE_PATH})
+-    message(STATUS "JAVA_INCLUDE_PATH2 is " ${JAVA_INCLUDE_PATH2})
+-    message(STATUS "JAVA_JVM_LIBRARY is " ${JAVA_JVM_LIBRARY})
+-    set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
+-    # libjvm.so is found relative to JAVA_INCLUDE_PATH:
+-    set(JAVAVM_LIB ${JAVA_JVM_LIBRARY}/libjvm.so)
+ 
+     set(LINUXSRC pmlinuxalsa pmlinux finddefault)
+     prepend_path(LIBSRC ../pm_linux/ ${LINUXSRC})
+@@ -99,7 +91,6 @@ else(UNIX)
+     set(PM_NEEDED_LIBS winmm.lib)
+   endif(WIN32)
+ endif(UNIX)
+-set(JNI_EXTRA_LIBS ${PM_NEEDED_LIBS} ${JAVA_JVM_LIBRARY})
+ 
+ # this completes the list of library sources by adding shared code
+ list(APPEND LIBSRC pmutil portmidi)
+@@ -109,19 +100,11 @@ add_library(portmidi-static ${LIBSRC})
+ set_target_properties(portmidi-static PROPERTIES OUTPUT_NAME "portmidi_s")
+ target_link_libraries(portmidi-static ${PM_NEEDED_LIBS})
+ 
+-# define the jni library
+-include_directories(${JAVA_INCLUDE_PATHS})
+-
+-set(JNISRC ${LIBSRC} ../pm_java/pmjni/pmjni.c)
+-add_library(pmjni SHARED ${JNISRC})
+-target_link_libraries(pmjni ${JNI_EXTRA_LIBS})
+-set_target_properties(pmjni PROPERTIES EXECUTABLE_EXTENSION "jnilib")
+-
+ # install the libraries (Linux and Mac OS X command line)
+ if(UNIX)
+-  INSTALL(TARGETS portmidi-static pmjni
+-    LIBRARY DESTINATION /usr/local/lib
+-    ARCHIVE DESTINATION /usr/local/lib)
++  INSTALL(TARGETS portmidi-static
++    LIBRARY DESTINATION /app/lib
++    ARCHIVE DESTINATION /app/lib)
+ # .h files installed by pm_dylib/CMakeLists.txt, so don't need them here
+ #  INSTALL(FILES portmidi.h ../porttime/porttime.h
+ #    DESTINATION /usr/local/include)
+diff -rupN portmidi.orig/pm_dylib/CMakeLists.txt portmidi/pm_dylib/CMakeLists.txt
+--- portmidi.orig/pm_dylib/CMakeLists.txt      2009-11-20 00:41:10.000000000 +0000
++++ portmidi/pm_dylib/CMakeLists.txt   2017-03-03 14:03:56.807104521 +0000
+@@ -63,7 +63,6 @@ if(UNIX)
+     message(STATUS "SYSROOT: " ${CMAKE_OSX_SYSROOT})
+   else(APPLE)
+     # LINUX settings...
+-    include(FindJNI)
+     # message(STATUS "JAVA_JVM_LIB_PATH is " ${JAVA_JVM_LIB_PATH})
+     # message(STATUS "JAVA_INCLUDE_PATH is " ${JAVA_INCLUDE_PATH})
+     # note: should use JAVA_JVM_LIB_PATH, but it is not set properly
+@@ -75,12 +74,7 @@ if(UNIX)
+     # JAVA_INCLUDE_PATH2; if no, then we need to make both JAVA_INCLUDE_PATH
+     # and JAVA_INCLUDE_PATH2 set by user (will need clear documentation
+     # because JAVA_INCLUDE_PATH2 is pretty obscure)
+-    set(JAVA_INCLUDE_PATH  ${JAVA_INCLUDE_PATH-UNKNOWN}
+-        CACHE STRING "where to find Java SDK include directory")
+-    set(JAVA_INCLUDE_PATHS ${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH}/linux)
+-    # libjvm.so is found relative to JAVA_INCLUDE_PATH:
+-    set(JAVAVM_LIB ${JAVA_INCLUDE_PATH}/../jre/lib/i386/client/libjvm.so)
+-
++    
+     set(LINUXSRC pmlinuxalsa pmlinux finddefault)
+     prepend_path(LIBSRC ../pm_linux/ ${LINUXSRC})
+     list(APPEND LIBSRC ../porttime/ptlinux)
+@@ -106,7 +100,6 @@ else(UNIX)
+     # message(STATUS "JAVAVM_LIB: " ${JAVAVM_LIB})
+   endif(WIN32)
+ endif(UNIX)
+-set(JNI_EXTRA_LIBS ${PM_NEEDED_LIBS} ${JAVAVM_LIB})
+ 
+ # this completes the list of library sources by adding shared code
+ set(SHARED_FILES pmutil portmidi)
+@@ -120,8 +113,8 @@ target_link_libraries(portmidi-dynamic $
+ # install the libraries (Linux and Mac OS X command line)
+ if(UNIX)
+   INSTALL(TARGETS portmidi-dynamic
+-    LIBRARY DESTINATION /usr/local/lib
+-    ARCHIVE DESTINATION /usr/local/lib)
++    LIBRARY DESTINATION /app/lib
++    ARCHIVE DESTINATION /app/lib)
+   INSTALL(FILES ../pm_common/portmidi.h ../porttime/porttime.h
+-    DESTINATION /usr/local/include)
++    DESTINATION /app/include)
+ endif(UNIX)
diff --git a/subprojects/shared-modules/pygame/pygame-1.9.3.json 
b/subprojects/shared-modules/pygame/pygame-1.9.3.json
new file mode 100644
index 00000000..2e0854f6
--- /dev/null
+++ b/subprojects/shared-modules/pygame/pygame-1.9.3.json
@@ -0,0 +1,94 @@
+{
+    "name": "pygame",
+    "sources": [
+        {
+            "type": "archive",
+            "url": 
"https://pypi.python.org/packages/61/06/3c25051549c252cc6fde01c8aeae90b96831370884504fe428a623316def/pygame-1.9.3.tar.gz";,
+            "sha256": "751021819bdc0cbe5cbd51904abb6ff9e9aee5b0e8955af02284d0e77d6c9ec2"
+        },
+        {
+            "type": "patch",
+            "path": "pygame-add-search-dirs.patch"
+        }
+    ],
+    "buildsystem": "simple",
+    "build-commands": [
+      "pip3 install --ignore-installed --no-deps --prefix=/app ."
+    ],
+    "build-options": {
+      "env": {
+        "PORTMIDI_INC_PORTTIME": "1",
+        "LOCALBASE": "/app"
+      }
+    },
+    "modules": [
+        "../SDL/SDL-1.2.15.json",
+        "../SDL/SDL_image-1.2.12.json",
+        "../SDL/SDL_ttf-2.0.11.json",
+        "../smpeg/smpeg-0.4.5.json",
+        "../SDL/SDL_mixer-1.2.12.json",
+        {
+            "name": "audiofile",
+            "sources": [
+                {
+                    "type": "archive",
+                    "url": "http://audiofile.68k.org/audiofile-0.3.6.tar.gz";,
+                    "sha256": "cdc60df19ab08bfe55344395739bb08f50fc15c92da3962fac334d3bff116965"
+                },
+                {
+                    "type": "patch",
+                    "path": "audiofile-gcc6.patch"
+                }
+            ]
+        },
+        {
+            "name": "libmikmod",
+            "sources": [
+                {
+                    "type": "archive",
+                    "url": 
"https://sourceforge.net/projects/mikmod/files/libmikmod/3.3.11.1/libmikmod-3.3.11.1.tar.gz";,
+                    "sha256": "ad9d64dfc8f83684876419ea7cd4ff4a41d8bcd8c23ef37ecb3a200a16b46d19"
+                }
+            ]
+        },
+        {
+            "name": "fluidsynth",    
+            "buildsystem": "cmake-ninja",
+            "config-opts": [
+              "-DCMAKE_BUILD_TYPE=Release"
+            ],
+            "sources": [
+                {
+                    "type": "archive",
+                    "url": 
"https://downloads.sourceforge.net/project/fluidsynth/fluidsynth-1.1.6/fluidsynth-1.1.6.tar.bz2";,
+                    "sha256": "d28b47dfbf7f8e426902ae7fa2981d821fbf84f41da9e1b85be933d2d748f601"
+                },
+                {
+                    "type": "patch",
+                    "path": "fluidsynth-no-rawmidi.patch"
+                }
+            ]
+        },
+        {
+            "name": "portmidi",
+            "buildsystem": "cmake-ninja",
+            "config-opts": [
+              "-DCMAKE_BUILD_TYPE=Release",
+              "-DCMAKE_LIBRARY_OUTPUT_DIRECTORY:STRING=/app/lib",
+              "-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY:STRING=/app/lib",
+              "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY:STRING=/app/bin"
+            ],
+            "sources": [
+                {
+                    "type": "archive",
+                    "url": 
"http://downloads.sourceforge.net/project/portmedia/portmidi/217/portmidi-src-217.zip";,
+                    "sha256": "08e9a892bd80bdb1115213fb72dc29a7bf2ff108b378180586aa65f3cfd42e0f"
+                },
+                {
+                    "type": "patch",
+                    "path": "portmidi-no-java.patch"
+                }
+            ]
+        }
+    ]
+}
diff --git a/subprojects/shared-modules/pygame/pygame-add-search-dirs.patch 
b/subprojects/shared-modules/pygame/pygame-add-search-dirs.patch
new file mode 100644
index 00000000..13366c2e
--- /dev/null
+++ b/subprojects/shared-modules/pygame/pygame-add-search-dirs.patch
@@ -0,0 +1,27 @@
+diff -r 407caa445ee0 config_unix.py
+--- a/config_unix.py   Mon Jan 16 21:12:10 2017 +0000
++++ b/config_unix.py   Fri Mar 03 15:10:07 2017 +0000
+@@ -110,6 +110,12 @@
+             self.found = 1
+         else:
+             print (self.name + '        '[len(self.name):] + ': not found')
++            print('incname',  incname)
++            print('incdirs', incdirs)
++            print('self.inc_dir', self.inc_dir)
++            print('libnames', libnames)
++            print('libdirs', libdirs)
++            print('self.lib_dir', self.lib_dir)
+ 
+ 
+ class DependencyPython:
+@@ -195,8 +201,8 @@
+     incdirs += ["/usr/local"+d for d in origincdirs]
+     libdirs += ["/usr/local"+d for d in origlibdirs]
+     if localbase:
+-        incdirs = [localbase+d for d in origincdirs]
+-        libdirs = [localbase+d for d in origlibdirs]
++        incdirs += [localbase+d for d in origincdirs]
++        libdirs += [localbase+d for d in origlibdirs]
+ 
+     for arg in DEPS[0].cflags.split():
+         if arg[:2] == '-I':
diff --git a/subprojects/shared-modules/python2.7/python-2.7.15.json 
b/subprojects/shared-modules/python2.7/python-2.7.15.json
new file mode 100644
index 00000000..9e7da87e
--- /dev/null
+++ b/subprojects/shared-modules/python2.7/python-2.7.15.json
@@ -0,0 +1,46 @@
+{
+    "name": "python-2.7",
+    "sources": [
+        {
+            "type": "archive",
+            "url": "https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz";,
+            "sha256": "18617d1f15a380a919d517630a9cd85ce17ea602f9bbdc58ddc672df4b0239db"
+        }
+    ],
+    "config-opts": [
+        "--enable-shared",
+        "--with-ensurepip=yes",
+        "--with-system-expat",
+        "--with-system-ffi",
+        "--enable-loadable-sqlite-extensions",
+        "--with-dbmliborder=gdbm",
+        "--enable-unicode=ucs4"
+    ],
+    "post-install": [
+        /* Theres seem to be a permissions missmatch that causes the debug stripping to fail */
+        "chmod 644 /app/lib/libpython2.7.so.1.0"
+    ],
+    "cleanup": [
+        "/bin/2to3*",
+        "/bin/easy_install*",
+        "/bin/idle*",
+        "/bin/pyvenv*",
+        "/bin/pydoc*",
+        "/include",
+        "/share",
+
+        /* Test scripts */
+        "/lib/python*/test",
+        "/lib/python*/*/test",
+        "/lib/python*/*/tests",
+        "/lib/python*/lib-tk/test",
+        "/lib/python*/lib-dynload/_*_test.*.so",
+        "/lib/python*/lib-dynload/_test*.*.so",
+
+        /* Unused modules */
+        "/lib/python*/idlelib",
+        "/lib/python*/tkinter*",
+        "/lib/python*/turtle*",
+        "/lib/python*/lib2to3*"
+    ]
+}
diff --git a/subprojects/shared-modules/qt4/qt4-4.8.7-minimal.json 
b/subprojects/shared-modules/qt4/qt4-4.8.7-minimal.json
new file mode 100644
index 00000000..16affa72
--- /dev/null
+++ b/subprojects/shared-modules/qt4/qt4-4.8.7-minimal.json
@@ -0,0 +1,86 @@
+{
+    "name": "qt4",
+    "config-opts": [
+        "-verbose",
+        "-confirm-license",
+        "-opensource",
+        "-release",
+        "-shared",
+        "-no-static",
+        "-fast",
+        "-datadir", "/app/lib/qt4",
+        "-importdir", "/app/lib/qt4/imports",
+        "-plugindir", "/app/lib/qt4/plugins",
+        "-translationdir", "/app/share/qt4/translations",
+        "-accessibility",
+        "-exceptions",
+        "-fontconfig",
+        "-glib",
+        "-dbus-linked",
+        "-openssl-linked",
+        "-optimized-qmake",
+        "-system-libjpeg",
+        "-system-libpng",
+        "-system-libtiff",
+        "-system-proxies",
+        "-system-zlib",
+        "-no-cups",
+        "-no-declarative",
+        "-no-gtkstyle",
+        "-no-javascript-jit",
+        "-no-libmng",
+        "-no-multimedia",
+        "-no-nis",
+        "-no-opengl",
+        "-no-phonon",
+        "-no-phonon-backend",
+        "-no-qt3support",
+        "-no-rpath",
+        "-no-script",
+        "-no-scripttools",
+        "-no-sql-db2",
+        "-no-sql-ibase",
+        "-no-sql-mysql",
+        "-no-sql-oci",
+        "-no-sql-odbc",
+        "-no-sql-psql",
+        "-no-sql-sqlite",
+        "-no-sql-sqlite2",
+        "-no-sql-sqlite_symbian",
+        "-no-sql-symsql",
+        "-no-sql-tds",
+        "-no-svg",
+        "-no-webkit",
+        "-no-xmlpatterns",
+        "-nomake", "demos",
+        "-nomake", "docs",
+        "-nomake", "examples"
+    ],
+    "build-options": {
+        "env": {
+            "CXXFLAGS": "-std=gnu++98",
+            "LD_LIBRARY_PATH": "/run/build/qt4/lib/"
+        }
+    },
+    "sources": [
+        {
+            "type": "archive",
+            "url": "https://download.qt.io/archive/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz";,
+            "sha256": "e2882295097e47fe089f8ac741a95fef47e0a73a3f3cdf21b56990638f626ea0"
+        },
+        {
+            "type": "patch",
+            "path": "qt4-aarch64.patch"
+        }
+    ],
+    "cleanup": [
+        "/bin",
+        "/include",
+        "/lib/*.a",
+        "/lib/*.la",
+        "/lib/*.prl",
+        "/lib/pkgconfig",
+        "/lib/qt4/mkspecs",
+        "/lib/qt4/q3porting.xml"
+    ]
+}
diff --git a/subprojects/shared-modules/qt4/qt4-aarch64.patch 
b/subprojects/shared-modules/qt4/qt4-aarch64.patch
new file mode 100644
index 00000000..cbe815de
--- /dev/null
+++ b/subprojects/shared-modules/qt4/qt4-aarch64.patch
@@ -0,0 +1,514 @@
+diff -up qt-everywhere-opensource-src-4.8.7/include/QtCore/headers.pri.aarch64 
qt-everywhere-opensource-src-4.8.7/include/QtCore/headers.pri
+--- qt-everywhere-opensource-src-4.8.7/include/QtCore/headers.pri.aarch64      2015-05-08 21:48:32.714057739 
-0500
++++ qt-everywhere-opensource-src-4.8.7/include/QtCore/headers.pri      2015-05-08 21:53:21.088761971 -0500
+@@ -1,3 +1,3 @@
+-SYNCQT.HEADER_FILES = ../corelib/kernel/qabstracteventdispatcher.h ../corelib/kernel/qabstractitemmodel.h 
../corelib/kernel/qbasictimer.h ../corelib/kernel/qcoreapplication.h ../corelib/kernel/qcoreevent.h 
../corelib/kernel/qeventloop.h ../corelib/kernel/qfunctions_nacl.h ../corelib/kernel/qfunctions_vxworks.h 
../corelib/kernel/qfunctions_wince.h ../corelib/kernel/qmath.h ../corelib/kernel/qmetaobject.h 
../corelib/kernel/qmetatype.h ../corelib/kernel/qmimedata.h ../corelib/kernel/qobject.h 
../corelib/kernel/qobjectcleanuphandler.h ../corelib/kernel/qobjectdefs.h ../corelib/kernel/qpointer.h 
../corelib/kernel/qsharedmemory.h ../corelib/kernel/qsignalmapper.h ../corelib/kernel/qsocketnotifier.h 
../corelib/kernel/qsystemsemaphore.h ../corelib/kernel/qtimer.h ../corelib/kernel/qtranslator.h 
../corelib/kernel/qvariant.h ../corelib/animation/qabstractanimation.h ../corelib/animation/qanimationgroup.h 
../corelib/animation/qparallelanimationgroup.h ../corelib/animation/qpauseanimat
 ion.h ..
 /corelib/animation/qpropertyanimation.h ../corelib/animation/qsequentialanimationgroup.h 
../corelib/animation/qvariantanimation.h ../corelib/arch/qatomic_alpha.h ../corelib/arch/qatomic_arch.h 
../corelib/arch/qatomic_arm.h ../corelib/arch/qatomic_armv5.h ../corelib/arch/qatomic_armv6.h 
../corelib/arch/qatomic_armv7.h ../corelib/arch/qatomic_avr32.h ../corelib/arch/qatomic_bfin.h 
../corelib/arch/qatomic_bootstrap.h ../corelib/arch/qatomic_generic.h ../corelib/arch/qatomic_i386.h 
../corelib/arch/qatomic_ia64.h ../corelib/arch/qatomic_integrity.h ../corelib/arch/qatomic_m68k.h 
../corelib/arch/qatomic_macosx.h ../corelib/arch/qatomic_mips.h ../corelib/arch/qatomic_parisc.h 
../corelib/arch/qatomic_powerpc.h ../corelib/arch/qatomic_s390.h ../corelib/arch/qatomic_sh.h 
../corelib/arch/qatomic_sh4a.h ../corelib/arch/qatomic_sparc.h ../corelib/arch/qatomic_symbian.h 
../corelib/arch/qatomic_vxworks.h ../corelib/arch/qatomic_windows.h ../corelib/arch/qatomic_windowsce.h 
../corelib/arch/
 qatomic_
 x86_64.h ../corelib/tools/qalgorithms.h ../corelib/tools/qbitarray.h ../corelib/tools/qbytearray.h 
../corelib/tools/qbytearraymatcher.h ../corelib/tools/qcache.h ../corelib/tools/qchar.h 
../corelib/tools/qcontainerfwd.h ../corelib/tools/qcontiguouscache.h ../corelib/tools/qcryptographichash.h 
../corelib/tools/qdatetime.h ../corelib/tools/qeasingcurve.h ../corelib/tools/qelapsedtimer.h 
../corelib/tools/qhash.h ../corelib/tools/qiterator.h ../corelib/tools/qline.h ../corelib/tools/qlinkedlist.h 
../corelib/tools/qlist.h ../corelib/tools/qlocale.h ../corelib/tools/qlocale_blackberry.h 
../corelib/tools/qmap.h ../corelib/tools/qmargins.h ../corelib/tools/qpair.h ../corelib/tools/qpoint.h 
../corelib/tools/qqueue.h ../corelib/tools/qrect.h ../corelib/tools/qregexp.h 
../corelib/tools/qscopedpointer.h ../corelib/tools/qscopedvaluerollback.h ../corelib/tools/qset.h 
../corelib/tools/qshareddata.h ../corelib/tools/qsharedpointer.h ../corelib/tools/qsharedpointer_impl.h 
../corelib/tools/q
 size.h .
 ./corelib/tools/qstack.h ../corelib/tools/qstring.h ../corelib/tools/qstringbuilder.h 
../corelib/tools/qstringlist.h ../corelib/tools/qstringmatcher.h ../corelib/tools/qtextboundaryfinder.h 
../corelib/tools/qtimeline.h ../corelib/tools/qvarlengtharray.h ../corelib/tools/qvector.h 
../corelib/plugin/qfactoryinterface.h ../corelib/plugin/qlibrary.h ../corelib/plugin/qplugin.h 
../corelib/plugin/qpluginloader.h ../corelib/plugin/quuid.h ../corelib/xml/qxmlstream.h 
../corelib/thread/qatomic.h ../corelib/thread/qbasicatomic.h ../corelib/thread/qmutex.h 
../corelib/thread/qreadwritelock.h ../corelib/thread/qsemaphore.h ../corelib/thread/qthread.h 
../corelib/thread/qthreadstorage.h ../corelib/thread/qwaitcondition.h 
../corelib/statemachine/qabstractstate.h ../corelib/statemachine/qabstracttransition.h 
../corelib/statemachine/qeventtransition.h ../corelib/statemachine/qfinalstate.h 
../corelib/statemachine/qhistorystate.h ../corelib/statemachine/qsignaltransition.h ../corelib/statemachi
 ne/qstat
 e.h ../corelib/statemachine/qstatemachine.h ../corelib/concurrent/qfuture.h 
../corelib/concurrent/qfutureinterface.h ../corelib/concurrent/qfuturesynchronizer.h 
../corelib/concurrent/qfuturewatcher.h ../corelib/concurrent/qrunnable.h 
../corelib/concurrent/qtconcurrentcompilertest.h ../corelib/concurrent/qtconcurrentexception.h 
../corelib/concurrent/qtconcurrentfilter.h ../corelib/concurrent/qtconcurrentfilterkernel.h 
../corelib/concurrent/qtconcurrentfunctionwrappers.h ../corelib/concurrent/qtconcurrentiteratekernel.h 
../corelib/concurrent/qtconcurrentmap.h ../corelib/concurrent/qtconcurrentmapkernel.h 
../corelib/concurrent/qtconcurrentmedian.h ../corelib/concurrent/qtconcurrentreducekernel.h 
../corelib/concurrent/qtconcurrentresultstore.h ../corelib/concurrent/qtconcurrentrun.h 
../corelib/concurrent/qtconcurrentrunbase.h ../corelib/concurrent/qtconcurrentstoredfunctioncall.h 
../corelib/concurrent/qtconcurrentthreadengine.h ../corelib/concurrent/qthreadpool.h ../corelib/io/q
 abstract
 fileengine.h ../corelib/io/qbuffer.h ../corelib/io/qdatastream.h ../corelib/io/qdebug.h ../corelib/io/qdir.h 
../corelib/io/qdiriterator.h ../corelib/io/qfile.h ../corelib/io/qfileinfo.h 
../corelib/io/qfilesystemwatcher.h ../corelib/io/qfsfileengine.h ../corelib/io/qiodevice.h 
../corelib/io/qprocess.h ../corelib/io/qresource.h ../corelib/io/qsettings.h ../corelib/io/qtemporaryfile.h 
../corelib/io/qtextstream.h ../corelib/io/qurl.h ../corelib/global/qconfig-dist.h 
../corelib/global/qconfig-large.h ../corelib/global/qconfig-medium.h ../corelib/global/qconfig-minimal.h 
../corelib/global/qconfig-nacl.h ../corelib/global/qconfig-small.h ../corelib/global/qendian.h 
../corelib/global/qfeatures.h ../corelib/global/qglobal.h ../corelib/global/qlibraryinfo.h 
../corelib/global/qnamespace.h ../corelib/global/qnumeric.h ../corelib/global/qt_windows.h 
../corelib/global/qconfig.h ../corelib/codecs/qtextcodec.h ../corelib/codecs/qtextcodecplugin.h 
../../include/QtCore/QtCore 
++SYNCQT.HEADER_FILES = ../corelib/kernel/qabstracteventdispatcher.h ../corelib/kernel/qabstractitemmodel.h 
../corelib/kernel/qbasictimer.h ../corelib/kernel/qcoreapplication.h ../corelib/kernel/qcoreevent.h 
../corelib/kernel/qeventloop.h ../corelib/kernel/qfunctions_nacl.h ../corelib/kernel/qfunctions_vxworks.h 
../corelib/kernel/qfunctions_wince.h ../corelib/kernel/qmath.h ../corelib/kernel/qmetaobject.h 
../corelib/kernel/qmetatype.h ../corelib/kernel/qmimedata.h ../corelib/kernel/qobject.h 
../corelib/kernel/qobjectcleanuphandler.h ../corelib/kernel/qobjectdefs.h ../corelib/kernel/qpointer.h 
../corelib/kernel/qsharedmemory.h ../corelib/kernel/qsignalmapper.h ../corelib/kernel/qsocketnotifier.h 
../corelib/kernel/qsystemsemaphore.h ../corelib/kernel/qtimer.h ../corelib/kernel/qtranslator.h 
../corelib/kernel/qvariant.h ../corelib/animation/qabstractanimation.h ../corelib/animation/qanimationgroup.h 
../corelib/animation/qparallelanimationgroup.h ../corelib/animation/qpauseanimat
 ion.h ..
 /corelib/animation/qpropertyanimation.h ../corelib/animation/qsequentialanimationgroup.h 
../corelib/animation/qvariantanimation.h ../corelib/arch/qatomic_aarch64.h ../corelib/arch/qatomic_alpha.h 
../corelib/arch/qatomic_arch.h ../corelib/arch/qatomic_arm.h ../corelib/arch/qatomic_armv5.h 
../corelib/arch/qatomic_armv6.h ../corelib/arch/qatomic_armv7.h ../corelib/arch/qatomic_avr32.h 
../corelib/arch/qatomic_bfin.h ../corelib/arch/qatomic_bootstrap.h ../corelib/arch/qatomic_generic.h 
../corelib/arch/qatomic_i386.h ../corelib/arch/qatomic_ia64.h ../corelib/arch/qatomic_integrity.h 
../corelib/arch/qatomic_m68k.h ../corelib/arch/qatomic_macosx.h ../corelib/arch/qatomic_mips.h 
../corelib/arch/qatomic_parisc.h ../corelib/arch/qatomic_powerpc.h ../corelib/arch/qatomic_s390.h 
../corelib/arch/qatomic_sh.h ../corelib/arch/qatomic_sh4a.h ../corelib/arch/qatomic_sparc.h 
../corelib/arch/qatomic_symbian.h ../corelib/arch/qatomic_vxworks.h ../corelib/arch/qatomic_windows.h 
../corelib/arch/qa
 tomic_wi
 ndowsce.h ../corelib/arch/qatomic_x86_64.h ../corelib/tools/qalgorithms.h ../corelib/tools/qbitarray.h 
../corelib/tools/qbytearray.h ../corelib/tools/qbytearraymatcher.h ../corelib/tools/qcache.h 
../corelib/tools/qchar.h ../corelib/tools/qcontainerfwd.h ../corelib/tools/qcontiguouscache.h 
../corelib/tools/qcryptographichash.h ../corelib/tools/qdatetime.h ../corelib/tools/qeasingcurve.h 
../corelib/tools/qelapsedtimer.h ../corelib/tools/qhash.h ../corelib/tools/qiterator.h 
../corelib/tools/qline.h ../corelib/tools/qlinkedlist.h ../corelib/tools/qlist.h ../corelib/tools/qlocale.h 
../corelib/tools/qlocale_blackberry.h ../corelib/tools/qmap.h ../corelib/tools/qmargins.h 
../corelib/tools/qpair.h ../corelib/tools/qpoint.h ../corelib/tools/qqueue.h ../corelib/tools/qrect.h 
../corelib/tools/qregexp.h ../corelib/tools/qscopedpointer.h ../corelib/tools/qscopedvaluerollback.h 
../corelib/tools/qset.h ../corelib/tools/qshareddata.h ../corelib/tools/qsharedpointer.h 
../corelib/tools/qshare
 dpointer
 _impl.h ../corelib/tools/qsize.h ../corelib/tools/qstack.h ../corelib/tools/qstring.h 
../corelib/tools/qstringbuilder.h ../corelib/tools/qstringlist.h ../corelib/tools/qstringmatcher.h 
../corelib/tools/qtextboundaryfinder.h ../corelib/tools/qtimeline.h ../corelib/tools/qvarlengtharray.h 
../corelib/tools/qvector.h ../corelib/plugin/qfactoryinterface.h ../corelib/plugin/qlibrary.h 
../corelib/plugin/qplugin.h ../corelib/plugin/qpluginloader.h ../corelib/plugin/quuid.h 
../corelib/xml/qxmlstream.h ../corelib/thread/qatomic.h ../corelib/thread/qbasicatomic.h 
../corelib/thread/qmutex.h ../corelib/thread/qreadwritelock.h ../corelib/thread/qsemaphore.h 
../corelib/thread/qthread.h ../corelib/thread/qthreadstorage.h ../corelib/thread/qwaitcondition.h 
../corelib/statemachine/qabstractstate.h ../corelib/statemachine/qabstracttransition.h 
../corelib/statemachine/qeventtransition.h ../corelib/statemachine/qfinalstate.h 
../corelib/statemachine/qhistorystate.h ../corelib/statemachine/qsignal
 transiti
 on.h ../corelib/statemachine/qstate.h ../corelib/statemachine/qstatemachine.h 
../corelib/concurrent/qfuture.h ../corelib/concurrent/qfutureinterface.h 
../corelib/concurrent/qfuturesynchronizer.h ../corelib/concurrent/qfuturewatcher.h 
../corelib/concurrent/qrunnable.h ../corelib/concurrent/qtconcurrentcompilertest.h 
../corelib/concurrent/qtconcurrentexception.h ../corelib/concurrent/qtconcurrentfilter.h 
../corelib/concurrent/qtconcurrentfilterkernel.h ../corelib/concurrent/qtconcurrentfunctionwrappers.h 
../corelib/concurrent/qtconcurrentiteratekernel.h ../corelib/concurrent/qtconcurrentmap.h 
../corelib/concurrent/qtconcurrentmapkernel.h ../corelib/concurrent/qtconcurrentmedian.h 
../corelib/concurrent/qtconcurrentreducekernel.h ../corelib/concurrent/qtconcurrentresultstore.h 
../corelib/concurrent/qtconcurrentrun.h ../corelib/concurrent/qtconcurrentrunbase.h 
../corelib/concurrent/qtconcurrentstoredfunctioncall.h ../corelib/concurrent/qtconcurrentthreadengine.h 
../corelib/concur
 rent/qth
 readpool.h ../corelib/io/qabstractfileengine.h ../corelib/io/qbuffer.h ../corelib/io/qdatastream.h 
../corelib/io/qdebug.h ../corelib/io/qdir.h ../corelib/io/qdiriterator.h ../corelib/io/qfile.h 
../corelib/io/qfileinfo.h ../corelib/io/qfilesystemwatcher.h ../corelib/io/qfsfileengine.h 
../corelib/io/qiodevice.h ../corelib/io/qprocess.h ../corelib/io/qresource.h ../corelib/io/qsettings.h 
../corelib/io/qtemporaryfile.h ../corelib/io/qtextstream.h ../corelib/io/qurl.h 
../corelib/global/qconfig-dist.h ../corelib/global/qconfig-large.h ../corelib/global/qconfig-medium.h 
../corelib/global/qconfig-minimal.h ../corelib/global/qconfig-nacl.h ../corelib/global/qconfig-small.h 
../corelib/global/qendian.h ../corelib/global/qfeatures.h ../corelib/global/qglobal.h 
../corelib/global/qlibraryinfo.h ../corelib/global/qnamespace.h ../corelib/global/qnumeric.h 
../corelib/global/qt_windows.h ../corelib/global/qconfig.h ../corelib/codecs/qtextcodec.h 
../corelib/codecs/qtextcodecplugin.h ../../incl
 ude/QtCo
 re/QtCore 
+ SYNCQT.HEADER_CLASSES = ../../include/QtCore/QAbstractEventDispatcher ../../include/QtCore/QModelIndex 
../../include/QtCore/QPersistentModelIndex ../../include/QtCore/QModelIndexList 
../../include/QtCore/QAbstractItemModel ../../include/QtCore/QAbstractTableModel 
../../include/QtCore/QAbstractListModel ../../include/QtCore/QBasicTimer 
../../include/QtCore/QCoreApplication ../../include/QtCore/QtCleanUpFunction ../../include/QtCore/QEvent 
../../include/QtCore/QTimerEvent ../../include/QtCore/QChildEvent ../../include/QtCore/QCustomEvent 
../../include/QtCore/QDynamicPropertyChangeEvent ../../include/QtCore/QEventLoop 
../../include/QtCore/QMetaMethod ../../include/QtCore/QMetaEnum ../../include/QtCore/QMetaProperty 
../../include/QtCore/QMetaClassInfo ../../include/QtCore/QMetaType ../../include/QtCore/QMetaTypeId 
../../include/QtCore/QMetaTypeId2 ../../include/QtCore/QMimeData ../../include/QtCore/QObjectList 
../../include/QtCore/QObjectData ../../include/QtCore/QObject ../../
 include/
 QtCore/QObjectUserData ../../include/QtCore/QObjectCleanupHandler ../../include/QtCore/QGenericArgument 
../../include/QtCore/QGenericReturnArgument ../../include/QtCore/QArgument 
../../include/QtCore/QReturnArgument ../../include/QtCore/QMetaObject 
../../include/QtCore/QMetaObjectAccessor ../../include/QtCore/QMetaObjectExtraData 
../../include/QtCore/QPointer ../../include/QtCore/QSharedMemory ../../include/QtCore/QSignalMapper 
../../include/QtCore/QSocketNotifier ../../include/QtCore/QSystemSemaphore ../../include/QtCore/QTimer 
../../include/QtCore/QTranslator ../../include/QtCore/QVariant ../../include/QtCore/QVariantList 
../../include/QtCore/QVariantMap ../../include/QtCore/QVariantHash 
../../include/QtCore/QVariantComparisonHelper ../../include/QtCore/QAbstractAnimation 
../../include/QtCore/QAnimationDriver ../../include/QtCore/QAnimationGroup 
../../include/QtCore/QParallelAnimationGroup ../../include/QtCore/QPauseAnimation 
../../include/QtCore/QPropertyAnimation ../../i
 nclude/Q
 tCore/QSequentialAnimationGroup ../../include/QtCore/QVariantAnimation ../../include/QtCore/QtAlgorithms 
../../include/QtCore/QBitArray ../../include/QtCore/QBitRef ../../include/QtCore/QByteArray 
../../include/QtCore/QByteRef ../../include/QtCore/QByteArrayMatcher ../../include/QtCore/QCache 
../../include/QtCore/QLatin1Char ../../include/QtCore/QChar ../../include/QtCore/QtContainerFwd 
../../include/QtCore/QContiguousCacheData ../../include/QtCore/QContiguousCacheTypedData 
../../include/QtCore/QContiguousCache ../../include/QtCore/QCryptographicHash ../../include/QtCore/QDate 
../../include/QtCore/QTime ../../include/QtCore/QDateTime ../../include/QtCore/QEasingCurve 
../../include/QtCore/QElapsedTimer ../../include/QtCore/QHashData ../../include/QtCore/QHashDummyValue 
../../include/QtCore/QHashDummyNode ../../include/QtCore/QHashNode ../../include/QtCore/QHash 
../../include/QtCore/QMultiHash ../../include/QtCore/QHashIterator ../../include/QtCore/QMutableHashIterator 
../../i
 nclude/Q
 tCore/QLine ../../include/QtCore/QLineF ../../include/QtCore/QLinkedListData 
../../include/QtCore/QLinkedListNode ../../include/QtCore/QLinkedList 
../../include/QtCore/QLinkedListIterator ../../include/QtCore/QMutableLinkedListIterator 
../../include/QtCore/QListData ../../include/QtCore/QList ../../include/QtCore/QListIterator 
../../include/QtCore/QMutableListIterator ../../include/QtCore/QSystemLocale ../../include/QtCore/QLocale 
../../include/QtCore/QBBSystemLocaleData ../../include/QtCore/QMapData ../../include/QtCore/QMapNode 
../../include/QtCore/QMapPayloadNode ../../include/QtCore/QMap ../../include/QtCore/QMultiMap 
../../include/QtCore/QMapIterator ../../include/QtCore/QMutableMapIterator ../../include/QtCore/QMargins 
../../include/QtCore/QPair ../../include/QtCore/QPoint ../../include/QtCore/QPointF 
../../include/QtCore/QQueue ../../include/QtCore/QRect ../../include/QtCore/QRectF 
../../include/QtCore/QRegExp ../../include/QtCore/QScopedPointerDeleter ../../include/Q
 tCore/QS
 copedPointerArrayDeleter ../../include/QtCore/QScopedPointerPodDeleter ../../include/QtCore/QScopedPointer 
../../include/QtCore/QScopedArrayPointer ../../include/QtCore/QScopedValueRollback ../../include/QtCore/QSet 
../../include/QtCore/QSetIterator ../../include/QtCore/QMutableSetIterator ../../include/QtCore/QSharedData 
../../include/QtCore/QSharedDataPointer ../../include/QtCore/QExplicitlySharedDataPointer 
../../include/QtCore/QSharedPointer ../../include/QtCore/QWeakPointer ../../include/QtCore/QSize 
../../include/QtCore/QSizeF ../../include/QtCore/QStack ../../include/QtCore/QStdWString 
../../include/QtCore/QString ../../include/QtCore/QLatin1String ../../include/QtCore/QCharRef 
../../include/QtCore/QConstString ../../include/QtCore/QStringRef ../../include/QtCore/QLatin1Literal 
../../include/QtCore/QAbstractConcatenable ../../include/QtCore/QConcatenable 
../../include/QtCore/QStringBuilder ../../include/QtCore/QStringListIterator 
../../include/QtCore/QMutableStringLis
 tIterato
 r ../../include/QtCore/QStringList ../../include/QtCore/QStringMatcher 
../../include/QtCore/QTextBoundaryFinder ../../include/QtCore/QTimeLine ../../include/QtCore/QVarLengthArray 
../../include/QtCore/QVectorData ../../include/QtCore/QVectorTypedData ../../include/QtCore/QVector 
../../include/QtCore/QVectorIterator ../../include/QtCore/QMutableVectorIterator 
../../include/QtCore/QFactoryInterface ../../include/QtCore/QLibrary ../../include/QtCore/QtPlugin 
../../include/QtCore/QtPluginInstanceFunction ../../include/QtCore/QPluginLoader ../../include/QtCore/QUuid 
../../include/QtCore/QXmlStreamStringRef ../../include/QtCore/QXmlStreamAttribute 
../../include/QtCore/QXmlStreamAttributes ../../include/QtCore/QXmlStreamNamespaceDeclaration 
../../include/QtCore/QXmlStreamNamespaceDeclarations ../../include/QtCore/QXmlStreamNotationDeclaration 
../../include/QtCore/QXmlStreamNotationDeclarations ../../include/QtCore/QXmlStreamEntityDeclaration 
../../include/QtCore/QXmlStreamEntityDec
 laration
 s ../../include/QtCore/QXmlStreamEntityResolver ../../include/QtCore/QXmlStreamReader 
../../include/QtCore/QXmlStreamWriter ../../include/QtCore/QAtomicInt ../../include/QtCore/QAtomicPointer 
../../include/QtCore/QBasicAtomicInt ../../include/QtCore/QBasicAtomicPointer ../../include/QtCore/QMutex 
../../include/QtCore/QMutexLocker ../../include/QtCore/QMutexData ../../include/QtCore/QReadWriteLock 
../../include/QtCore/QReadLocker ../../include/QtCore/QWriteLocker ../../include/QtCore/QSemaphore 
../../include/QtCore/QThread ../../include/QtCore/QThreadStorageData ../../include/QtCore/QThreadStorage 
../../include/QtCore/QWaitCondition ../../include/QtCore/QAbstractState 
../../include/QtCore/QAbstractTransition ../../include/QtCore/QEventTransition 
../../include/QtCore/QFinalState ../../include/QtCore/QHistoryState ../../include/QtCore/QSignalTransition 
../../include/QtCore/QState ../../include/QtCore/QStateMachine ../../include/QtCore/QFuture 
../../include/QtCore/QFutureIterato
 r ../../
 include/QtCore/QMutableFutureIterator ../../include/QtCore/QFutureInterfaceBase 
../../include/QtCore/QFutureInterface ../../include/QtCore/QFutureSynchronizer 
../../include/QtCore/QFutureWatcherBase ../../include/QtCore/QFutureWatcher ../../include/QtCore/QRunnable 
../../include/QtCore/QtConcurrentFilter ../../include/QtCore/QtConcurrentMap 
../../include/QtCore/QtConcurrentRun ../../include/QtCore/QThreadPool 
../../include/QtCore/QAbstractFileEngine ../../include/QtCore/QAbstractFileEngineHandler 
../../include/QtCore/QAbstractFileEngineIterator ../../include/QtCore/QBuffer 
../../include/QtCore/QDataStream ../../include/QtCore/QtDebug ../../include/QtCore/QDebug 
../../include/QtCore/QNoDebug ../../include/QtCore/QDir ../../include/QtCore/QDirIterator 
../../include/QtCore/QFile ../../include/QtCore/QFileInfo ../../include/QtCore/QFileInfoList 
../../include/QtCore/QFileInfoListIterator ../../include/QtCore/QFileSystemWatcher 
../../include/QtCore/QFSFileEngine ../../include/QtCo
 re/QIODe
 vice ../../include/QtCore/Q_PID ../../include/QtCore/QProcessEnvironment ../../include/QtCore/QProcess 
../../include/QtCore/QResource ../../include/QtCore/QSettings ../../include/QtCore/QTemporaryFile 
../../include/QtCore/QTextStream ../../include/QtCore/QTextStreamFunction 
../../include/QtCore/QTextStreamManipulator ../../include/QtCore/QTS ../../include/QtCore/QTextIStream 
../../include/QtCore/QTextOStream ../../include/QtCore/QUrl ../../include/QtCore/QtEndian 
../../include/QtCore/QtGlobal ../../include/QtCore/QIntegerForSize ../../include/QtCore/QNoImplicitBoolCast 
../../include/QtCore/Q_INT8 ../../include/QtCore/Q_UINT8 ../../include/QtCore/Q_INT16 
../../include/QtCore/Q_UINT16 ../../include/QtCore/Q_INT32 ../../include/QtCore/Q_UINT32 
../../include/QtCore/Q_INT64 ../../include/QtCore/Q_UINT64 ../../include/QtCore/Q_LLONG 
../../include/QtCore/Q_ULLONG ../../include/QtCore/Q_LONG ../../include/QtCore/Q_ULONG 
../../include/QtCore/QSysInfo ../../include/QtCore/QtMsgHandler
  ../../i
 nclude/QtCore/QGlobalStatic ../../include/QtCore/QGlobalStaticDeleter ../../include/QtCore/QBool 
../../include/QtCore/QTypeInfo ../../include/QtCore/QFlag ../../include/QtCore/QIncompatibleFlag 
../../include/QtCore/QFlags ../../include/QtCore/QForeachContainer ../../include/QtCore/QForeachContainerBase 
../../include/QtCore/QLibraryInfo ../../include/QtCore/Qt ../../include/QtCore/QInternal 
../../include/QtCore/QCOORD ../../include/QtCore/QtConfig ../../include/QtCore/QTextCodec 
../../include/QtCore/QTextEncoder ../../include/QtCore/QTextDecoder 
../../include/QtCore/QTextCodecFactoryInterface ../../include/QtCore/QTextCodecPlugin 
+ SYNCQT.PRIVATE_HEADER_FILES = ../corelib/kernel/qabstracteventdispatcher_p.h 
../corelib/kernel/qabstractitemmodel_p.h ../corelib/kernel/qcore_mac_p.h ../corelib/kernel/qcore_symbian_p.h 
../corelib/kernel/qcore_unix_p.h ../corelib/kernel/qcoreapplication_p.h 
../corelib/kernel/qcorecmdlineargs_p.h ../corelib/kernel/qcoreglobaldata_p.h 
../corelib/kernel/qcrashhandler_p.h ../corelib/kernel/qeventdispatcher_blackberry_p.h 
../corelib/kernel/qeventdispatcher_glib_p.h ../corelib/kernel/qeventdispatcher_symbian_p.h 
../corelib/kernel/qeventdispatcher_unix_p.h ../corelib/kernel/qeventdispatcher_win_p.h 
../corelib/kernel/qfunctions_p.h ../corelib/kernel/qmetaobject_p.h ../corelib/kernel/qobject_p.h 
../corelib/kernel/qsharedmemory_p.h ../corelib/kernel/qsystemerror_p.h ../corelib/kernel/qsystemsemaphore_p.h 
../corelib/kernel/qtranslator_p.h ../corelib/kernel/qvariant_p.h ../corelib/kernel/qwineventnotifier_p.h 
../corelib/animation/qabstractanimation_p.h ../corelib/animation/qanimationgr
 oup_p.h 
 ../corelib/animation/qparallelanimationgroup_p.h ../corelib/animation/qpropertyanimation_p.h 
../corelib/animation/qsequentialanimationgroup_p.h ../corelib/animation/qvariantanimation_p.h 
../corelib/tools/qbytedata_p.h ../corelib/tools/qdatetime_p.h ../corelib/tools/qharfbuzz_p.h 
../corelib/tools/qlocale_data_p.h ../corelib/tools/qlocale_p.h ../corelib/tools/qlocale_tools_p.h 
../corelib/tools/qpodlist_p.h ../corelib/tools/qringbuffer_p.h ../corelib/tools/qscopedpointer_p.h 
../corelib/tools/qsimd_p.h ../corelib/tools/qtools_p.h ../corelib/tools/qunicodetables_p.h 
../corelib/plugin/qelfparser_p.h ../corelib/plugin/qfactoryloader_p.h ../corelib/plugin/qlibrary_p.h 
../corelib/plugin/qsystemlibrary_p.h ../corelib/xml/qxmlstream_p.h ../corelib/xml/qxmlutils_p.h 
../corelib/thread/qmutex_p.h ../corelib/thread/qmutexpool_p.h ../corelib/thread/qorderedmutexlocker_p.h 
../corelib/thread/qreadwritelock_p.h ../corelib/thread/qthread_p.h ../corelib/statemachine/qabstractstate_p.h 
../corelib
 /statema
 chine/qabstracttransition_p.h ../corelib/statemachine/qeventtransition_p.h 
../corelib/statemachine/qhistorystate_p.h ../corelib/statemachine/qsignaleventgenerator_p.h 
../corelib/statemachine/qsignaltransition_p.h ../corelib/statemachine/qstate_p.h 
../corelib/statemachine/qstatemachine_p.h ../corelib/concurrent/qfutureinterface_p.h 
../corelib/concurrent/qfuturewatcher_p.h ../corelib/concurrent/qthreadpool_p.h 
../corelib/io/qabstractfileengine_p.h ../corelib/io/qdatastream_p.h ../corelib/io/qdataurl_p.h 
../corelib/io/qdir_p.h ../corelib/io/qfile_p.h ../corelib/io/qfileinfo_p.h 
../corelib/io/qfilesystemengine_p.h ../corelib/io/qfilesystementry_p.h ../corelib/io/qfilesystemiterator_p.h 
../corelib/io/qfilesystemmetadata_p.h ../corelib/io/qfilesystemwatcher_dnotify_p.h 
../corelib/io/qfilesystemwatcher_fsevents_p.h ../corelib/io/qfilesystemwatcher_inotify_p.h 
../corelib/io/qfilesystemwatcher_kqueue_p.h ../corelib/io/qfilesystemwatcher_p.h 
../corelib/io/qfilesystemwatcher_symbian_p.
 h ../cor
 elib/io/qfilesystemwatcher_win_p.h ../corelib/io/qfsfileengine_iterator_p.h ../corelib/io/qfsfileengine_p.h 
../corelib/io/qiodevice_p.h ../corelib/io/qnoncontiguousbytedevice_p.h ../corelib/io/qprocess_p.h 
../corelib/io/qresource_iterator_p.h ../corelib/io/qresource_p.h ../corelib/io/qsettings_p.h 
../corelib/io/qtldurl_p.h ../corelib/io/qurltlds_p.h ../corelib/io/qwindowspipewriter_p.h 
../corelib/global/qnumeric_p.h ../corelib/global/qt_pch.h ../corelib/codecs/qfontlaocodec_p.h 
../corelib/codecs/qiconvcodec_p.h ../corelib/codecs/qisciicodec_p.h ../corelib/codecs/qlatincodec_p.h 
../corelib/codecs/qsimplecodec_p.h ../corelib/codecs/qtextcodec_p.h ../corelib/codecs/qtsciicodec_p.h 
../corelib/codecs/qutfcodec_p.h 
+diff -up qt-everywhere-opensource-src-4.8.7/include/QtCore/qatomic_aarch64.h.aarch64 
qt-everywhere-opensource-src-4.8.7/include/QtCore/qatomic_aarch64.h
+--- qt-everywhere-opensource-src-4.8.7/include/QtCore/qatomic_aarch64.h.aarch64        2015-05-08 
21:48:32.715057744 -0500
++++ qt-everywhere-opensource-src-4.8.7/include/QtCore/qatomic_aarch64.h        2015-05-08 21:48:32.715057744 
-0500
+@@ -0,0 +1 @@
++#include "../../src/corelib/arch/qatomic_aarch64.h"
+diff -up 
qt-everywhere-opensource-src-4.8.7/src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.pri.aarch64 
qt-everywhere-opensource-src-4.8.7/src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.pri
+--- qt-everywhere-opensource-src-4.8.7/src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.pri.aarch64 
  2015-05-07 09:14:47.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.7/src/3rdparty/javascriptcore/JavaScriptCore/JavaScriptCore.pri   
2015-05-08 21:48:33.268061013 -0500
+@@ -66,6 +66,12 @@ contains(JAVASCRIPTCORE_JIT,no) {
+     }
+ }
+ 
++# Hack around AARCH64 fail wrt JSValue.h
++equals(QT_ARCH, aarch64) {
++    message("JavaScriptCore aarch64 hack: -fpermissive")
++    QMAKE_CXXFLAGS += -fpermissive
++}
++
+ wince* {
+     INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/ce-compat
+     SOURCES += $$QT_SOURCE_TREE/src/3rdparty/ce-compat/ce_time.c
+diff -up 
qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri.aarch64 
qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri
+--- qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri.aarch64  
  2015-05-07 09:14:45.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/JavaScriptCore.pri    
2015-05-08 21:48:33.268061013 -0500
+@@ -63,6 +63,12 @@ contains (CONFIG, text_breaking_with_icu
+     DEFINES += WTF_USE_QT_ICU_TEXT_BREAKING=1
+ }
+ 
++# Hack around AARCH64 fail wrt JSValue.h
++equals(QT_ARCH, aarch64) {
++    message("JavaScriptCore aarch64 hack: -fpermissive")
++    QMAKE_CXXFLAGS += -fpermissive
++}
++
+ wince* {
+     INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/ce-compat
+     INCLUDEPATH += $$PWD/../JavaScriptCore/os-win32
+diff -up qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h.aarch64 
qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h
+--- qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h.aarch64      
  2015-05-07 09:14:45.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source/JavaScriptCore/wtf/Platform.h        
2015-05-08 21:48:33.269061019 -0500
+@@ -369,7 +369,16 @@
+ 
+ #endif /* ARM */
+ 
+-#if CPU(ARM) || CPU(MIPS) || CPU(SH4)
++/* CPU(AARCH64) - AArch64 */
++#if defined(__aarch64__)
++#define WTF_CPU_AARCH64 1
++#if defined(__AARCH64EB__)
++#define WTF_CPU_BIG_ENDIAN 1
++#endif
++#endif
++
++/* Not sure about this one, qt5-qtwebkit doesn't include it -- rex */
++#if CPU(ARM) || CPU(MIPS) || CPU(SH4) || CPU(AARCH64)
+ #define WTF_CPU_NEEDS_ALIGNED_ACCESS 1
+ #endif
+ 
+@@ -1003,7 +1012,7 @@
+     || CPU(SPARC64) \
+     || CPU(S390X) \
+     || CPU(PPC64) \
+-    || CPU(MIPS64)
++    || CPU(MIPS64) || CPU(AARCH64)
+ #define WTF_USE_JSVALUE64 1
+ #else
+ #define WTF_USE_JSVALUE32_64 1
+diff -up qt-everywhere-opensource-src-4.8.7/src/corelib/arch/aarch64/qatomic_aarch64.cpp.aarch64 
qt-everywhere-opensource-src-4.8.7/src/corelib/arch/aarch64/qatomic_aarch64.cpp
+--- qt-everywhere-opensource-src-4.8.7/src/corelib/arch/aarch64/qatomic_aarch64.cpp.aarch64    2015-05-08 
21:48:33.269061019 -0500
++++ qt-everywhere-opensource-src-4.8.7/src/corelib/arch/aarch64/qatomic_aarch64.cpp    2015-05-08 
21:48:33.269061019 -0500
+@@ -0,0 +1,70 @@
++/****************************************************************************
++**
++** Copyright (C) 2012, 2013 Digia Plc and/or its subsidiary(-ies).
++** Contact: http://www.qt-project.org/legal
++**
++** This file is part of the QtCore module of the Qt Toolkit.
++**
++** $QT_BEGIN_LICENSE:LGPL$
++** Commercial License Usage
++** Licensees holding valid commercial Qt licenses may use this file in
++** accordance with the commercial license agreement provided with the
++** Software or, alternatively, in accordance with the terms contained in
++** a written agreement between you and Digia.  For licensing terms and
++** conditions see http://qt.digia.com/licensing.  For further information
++** use the contact form at http://qt.digia.com/contact-us.
++**
++** GNU Lesser General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU Lesser
++** General Public License version 2.1 as published by the Free Software
++** Foundation and appearing in the file LICENSE.LGPL included in the
++** packaging of this file.  Please review the following information to
++** ensure the GNU Lesser General Public License version 2.1 requirements
++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
++**
++** In addition, as a special exception, Digia gives you certain additional
++** rights.  These rights are described in the Digia Qt LGPL Exception
++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
++**
++** GNU General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU
++** General Public License version 3.0 as published by the Free Software
++** Foundation and appearing in the file LICENSE.GPL included in the
++** packaging of this file.  Please review the following information to
++** ensure the GNU General Public License version 3.0 requirements will be
++** met: http://www.gnu.org/copyleft/gpl.html.
++**
++**
++** $QT_END_LICENSE$
++**
++****************************************************************************/
++
++#include <QtCore/qglobal.h>
++
++#include <unistd.h>
++#ifdef _POSIX_PRIORITY_SCHEDULING
++# include <sched.h>
++#endif
++#include <time.h>
++
++QT_BEGIN_NAMESPACE
++
++QT_USE_NAMESPACE
++
++Q_CORE_EXPORT void qt_atomic_yield(int *count)
++{
++#ifdef _POSIX_PRIORITY_SCHEDULING
++    if((*count)++ < 50) {
++        sched_yield();
++    } else
++#endif
++    {
++        struct timespec tm;
++        tm.tv_sec = 0;
++        tm.tv_nsec = 2000001;
++        nanosleep(&tm, NULL);
++        *count = 0;
++    }
++}
++
++QT_END_NAMESPACE
+diff -up qt-everywhere-opensource-src-4.8.7/src/corelib/arch/arch.pri.aarch64 
qt-everywhere-opensource-src-4.8.7/src/corelib/arch/arch.pri
+--- qt-everywhere-opensource-src-4.8.7/src/corelib/arch/arch.pri.aarch64       2015-05-07 09:14:48.000000000 
-0500
++++ qt-everywhere-opensource-src-4.8.7/src/corelib/arch/arch.pri       2015-05-08 21:48:33.270061025 -0500
+@@ -31,7 +31,9 @@ integrity:HEADERS += arch/qatomic_integr
+                        arch/qatomic_s390.h \
+                        arch/qatomic_x86_64.h \
+                        arch/qatomic_sh.h \
+-                       arch/qatomic_sh4a.h
++                       arch/qatomic_sh4a.h \
++                       arch/qatomic_aarch64.h \
++
+ 
+ QT_ARCH_CPP = $$QT_SOURCE_TREE/src/corelib/arch/$$QT_ARCH
+ DEPENDPATH += $$QT_ARCH_CPP
+diff -up qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_aarch64.h.aarch64 
qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_aarch64.h
+--- qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_aarch64.h.aarch64      2015-05-08 
21:48:33.270061025 -0500
++++ qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_aarch64.h      2015-05-08 21:48:33.270061025 
-0500
+@@ -0,0 +1,335 @@
++/****************************************************************************
++**
++** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
++** Contact: http://www.qt-project.org/legal
++**
++** This file is part of the QtCore module of the Qt Toolkit.
++**
++** $QT_BEGIN_LICENSE:LGPL$
++** Commercial License Usage
++** Licensees holding valid commercial Qt licenses may use this file in
++** accordance with the commercial license agreement provided with the
++** Software or, alternatively, in accordance with the terms contained in
++** a written agreement between you and Digia.  For licensing terms and
++** conditions see http://qt.digia.com/licensing.  For further information
++** use the contact form at http://qt.digia.com/contact-us.
++**
++** GNU Lesser General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU Lesser
++** General Public License version 2.1 as published by the Free Software
++** Foundation and appearing in the file LICENSE.LGPL included in the
++** packaging of this file.  Please review the following information to
++** ensure the GNU Lesser General Public License version 2.1 requirements
++** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
++**
++** In addition, as a special exception, Digia gives you certain additional
++** rights.  These rights are described in the Digia Qt LGPL Exception
++** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
++**
++** GNU General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU
++** General Public License version 3.0 as published by the Free Software
++** Foundation and appearing in the file LICENSE.GPL included in the
++** packaging of this file.  Please review the following information to
++** ensure the GNU General Public License version 3.0 requirements will be
++** met: http://www.gnu.org/copyleft/gpl.html.
++**
++**
++** $QT_END_LICENSE$
++**
++****************************************************************************/
++
++#ifndef QATOMIC_AARCH64_H
++#define QATOMIC_AARCH64_H
++
++QT_BEGIN_HEADER
++
++QT_BEGIN_NAMESPACE
++
++#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
++
++inline bool QBasicAtomicInt::isReferenceCountingNative()
++{ return true; }
++inline bool QBasicAtomicInt::isReferenceCountingWaitFree()
++{ return false; }
++
++#define Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE
++
++inline bool QBasicAtomicInt::isTestAndSetNative()
++{ return true; }
++inline bool QBasicAtomicInt::isTestAndSetWaitFree()
++{ return false; }
++
++#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE
++
++inline bool QBasicAtomicInt::isFetchAndStoreNative()
++{ return true; }
++inline bool QBasicAtomicInt::isFetchAndStoreWaitFree()
++{ return false; }
++
++#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE
++
++inline bool QBasicAtomicInt::isFetchAndAddNative()
++{ return true; }
++inline bool QBasicAtomicInt::isFetchAndAddWaitFree()
++{ return false; }
++
++#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetNative()
++{ return true; }
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetWaitFree()
++{ return false; }
++
++#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreNative()
++{ return true; }
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreWaitFree()
++{ return false; }
++
++#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddNative()
++{ return true; }
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddWaitFree()
++{ return false; }
++
++#ifndef Q_DATA_MEMORY_BARRIER
++# define Q_DATA_MEMORY_BARRIER asm volatile("dmb sy\n":::"memory")
++#endif
++#ifndef Q_COMPILER_MEMORY_BARRIER
++# define Q_COMPILER_MEMORY_BARRIER asm volatile("":::"memory")
++#endif
++
++inline bool QBasicAtomicInt::ref()
++{
++    int newValue;
++
++    Q_COMPILER_MEMORY_BARRIER;
++    newValue = __atomic_add_fetch(&_q_value, 1, __ATOMIC_ACQ_REL);
++    Q_COMPILER_MEMORY_BARRIER;
++
++    return newValue != 0;
++}
++
++inline bool QBasicAtomicInt::deref()
++{
++    int newValue;
++
++    Q_COMPILER_MEMORY_BARRIER;
++    newValue = __atomic_sub_fetch(&_q_value, 1, __ATOMIC_ACQ_REL);
++    Q_COMPILER_MEMORY_BARRIER;
++
++    return newValue != 0;
++}
++
++inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
++{
++    bool val;
++
++    Q_COMPILER_MEMORY_BARRIER;
++    val =  __atomic_compare_exchange_n (&_q_value, &expectedValue, newValue,
++                                      false, __ATOMIC_RELAXED, __ATOMIC_RELAXED);
++    Q_COMPILER_MEMORY_BARRIER;
++    return val;
++}
++
++inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue)
++{
++    int val;
++    Q_COMPILER_MEMORY_BARRIER;
++    val = __atomic_exchange_n(&_q_value, newValue, __ATOMIC_RELAXED);
++    Q_COMPILER_MEMORY_BARRIER;
++    return val;
++}
++
++inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
++{
++    int val;
++    Q_COMPILER_MEMORY_BARRIER;
++    val = __atomic_fetch_add(&_q_value, valueToAdd, __ATOMIC_RELAXED);
++    Q_COMPILER_MEMORY_BARRIER;
++    return val;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue)
++{
++    bool val;
++    Q_COMPILER_MEMORY_BARRIER;
++    val =  __atomic_compare_exchange_n (&_q_value, &expectedValue, newValue,
++                                      false, __ATOMIC_RELAXED, __ATOMIC_RELAXED);
++    Q_COMPILER_MEMORY_BARRIER;
++    return val;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
++{
++    T *val;
++    Q_COMPILER_MEMORY_BARRIER;
++    val = __atomic_exchange_n(&_q_value, newValue, __ATOMIC_RELAXED);
++    Q_COMPILER_MEMORY_BARRIER;
++    return val;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
++{
++    T *val;
++    Q_COMPILER_MEMORY_BARRIER;
++    val = __atomic_fetch_add(&_q_value, valueToAdd, __ATOMIC_RELAXED);
++    Q_COMPILER_MEMORY_BARRIER;
++    return val;
++}
++
++inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
++{
++    bool returnValue = testAndSetRelaxed(expectedValue, newValue);
++    Q_DATA_MEMORY_BARRIER;
++    return returnValue;
++}
++
++inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
++{
++    Q_DATA_MEMORY_BARRIER;
++    return testAndSetRelaxed(expectedValue, newValue);
++}
++
++inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
++{
++    Q_DATA_MEMORY_BARRIER;
++    bool returnValue = testAndSetRelaxed(expectedValue, newValue);
++    Q_COMPILER_MEMORY_BARRIER;
++    return returnValue;
++}
++
++inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
++{
++    int returnValue = fetchAndStoreRelaxed(newValue);
++    Q_DATA_MEMORY_BARRIER;
++    return returnValue;
++}
++
++inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
++{
++    Q_DATA_MEMORY_BARRIER;
++    return fetchAndStoreRelaxed(newValue);
++}
++
++inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue)
++{
++    Q_DATA_MEMORY_BARRIER;
++    int returnValue = fetchAndStoreRelaxed(newValue);
++    Q_COMPILER_MEMORY_BARRIER;
++    return returnValue;
++}
++
++inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
++{
++    int returnValue = fetchAndAddRelaxed(valueToAdd);
++    Q_DATA_MEMORY_BARRIER;
++    return returnValue;
++}
++
++inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
++{
++    Q_DATA_MEMORY_BARRIER;
++    return fetchAndAddRelaxed(valueToAdd);
++}
++
++inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
++{
++    Q_DATA_MEMORY_BARRIER;
++    int returnValue = fetchAndAddRelaxed(valueToAdd);
++    Q_COMPILER_MEMORY_BARRIER;
++    return returnValue;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue)
++{
++    bool returnValue = testAndSetRelaxed(expectedValue, newValue);
++    Q_DATA_MEMORY_BARRIER;
++    return returnValue;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue)
++{
++    Q_DATA_MEMORY_BARRIER;
++    return testAndSetRelaxed(expectedValue, newValue);
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
++{
++    Q_DATA_MEMORY_BARRIER;
++    bool returnValue = testAndSetAcquire(expectedValue, newValue);
++    Q_COMPILER_MEMORY_BARRIER;
++    return returnValue;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
++{
++    T *returnValue = fetchAndStoreRelaxed(newValue);
++    Q_DATA_MEMORY_BARRIER;
++    return returnValue;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
++{
++    Q_DATA_MEMORY_BARRIER;
++    return fetchAndStoreRelaxed(newValue);
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
++{
++    Q_DATA_MEMORY_BARRIER;
++    T *returnValue = fetchAndStoreRelaxed(newValue);
++    Q_COMPILER_MEMORY_BARRIER;
++    return returnValue;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
++{
++    T *returnValue = fetchAndAddRelaxed(valueToAdd);
++    Q_DATA_MEMORY_BARRIER;
++    return returnValue;
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd)
++{
++    Q_DATA_MEMORY_BARRIER;
++    return fetchAndAddRelaxed(valueToAdd);
++}
++
++template <typename T>
++Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
++{
++    Q_DATA_MEMORY_BARRIER;
++    T *returnValue = fetchAndAddRelaxed(valueToAdd);
++    Q_COMPILER_MEMORY_BARRIER;
++    return returnValue;
++}
++
++#undef Q_DATA_MEMORY_BARRIER
++#undef Q_COMPILER_MEMORY_BARRIER
++
++QT_END_NAMESPACE
++
++QT_END_HEADER
++
++#endif // QATOMIC_AARCH64_H
+diff -up qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_arch.h.aarch64 
qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_arch.h
+--- qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_arch.h.aarch64 2015-05-07 09:14:48.000000000 
-0500
++++ qt-everywhere-opensource-src-4.8.7/src/corelib/arch/qatomic_arch.h 2015-05-08 21:48:33.271061031 -0500
+@@ -94,6 +94,8 @@ QT_BEGIN_HEADER
+ #  include "QtCore/qatomic_sh4a.h"
+ #elif defined(QT_ARCH_NACL)
+ #  include "QtCore/qatomic_generic.h"
++#elif defined(QT_ARCH_AARCH64)
++#  include "QtCore/qatomic_aarch64.h"
+ #else
+ #  error "Qt has not been ported to this architecture"
+ #endif
diff --git a/subprojects/shared-modules/smpeg/smpeg-0.4.5.json 
b/subprojects/shared-modules/smpeg/smpeg-0.4.5.json
new file mode 100644
index 00000000..a4d82aab
--- /dev/null
+++ b/subprojects/shared-modules/smpeg/smpeg-0.4.5.json
@@ -0,0 +1,39 @@
+{
+    "name": "smpeg",
+    "config-opts": ["--disable-static"],
+    "cleanup": [
+        "/bin",
+        "/man"
+    ],
+    "rm-configure": true,
+    "sources": [
+        {
+            "type": "archive",
+            "url": "http://http.debian.net/debian/pool/main/s/smpeg/smpeg_0.4.5+cvs20030824.orig.tar.gz";,
+            "sha256": "1276ea797dd9fde8a12dd3f33f180153922544c28ca9fc7b477c018876be1916"
+        },
+        {
+            "type": "script",
+            "dest-filename": "autogen.sh",
+            "commands": [
+                "AUTOMAKE=\"automake --foreign --add-missing --force-missing\" autoreconf -vfi"
+            ]
+        },
+        {
+            "type": "patch",
+            "path": "smpeg-am-prog-as.patch"
+        },
+        {
+            "type": "patch",
+            "path": "smpeg-export-mpegaudio-class.patch"
+        },
+        {
+            "type": "patch",
+            "path": "smpeg-no-gtk.patch"
+        },
+        {
+            "type": "patch",
+            "path": "smpeg-gcc6.patch"
+        }
+    ]
+}
diff --git a/subprojects/shared-modules/smpeg/smpeg-am-prog-as.patch 
b/subprojects/shared-modules/smpeg/smpeg-am-prog-as.patch
new file mode 100644
index 00000000..36197d71
--- /dev/null
+++ b/subprojects/shared-modules/smpeg/smpeg-am-prog-as.patch
@@ -0,0 +1,12 @@
+Index: smpeg-0.4.5+cvs20030824/configure.in
+===================================================================
+--- smpeg-0.4.5+cvs20030824.orig/configure.in
++++ smpeg-0.4.5+cvs20030824/configure.in
+@@ -57,6 +57,7 @@
+ AC_LIBTOOL_WIN32_DLL
+ AM_PROG_LIBTOOL
+ AC_PROG_INSTALL
++AM_PROG_AS
+ 
+ dnl Ugh.
+ AS="$CC"
diff --git a/subprojects/shared-modules/smpeg/smpeg-export-mpegaudio-class.patch 
b/subprojects/shared-modules/smpeg/smpeg-export-mpegaudio-class.patch
new file mode 100644
index 00000000..9ecb9b58
--- /dev/null
+++ b/subprojects/shared-modules/smpeg/smpeg-export-mpegaudio-class.patch
@@ -0,0 +1,17 @@
+--- smpeg-0.4.5+cvs20030824.orig/MPEGaudio.h
++++ smpeg-0.4.5+cvs20030824/MPEGaudio.h
+@@ -149,6 +149,14 @@
+ };
+ 
+ /* The actual MPEG audio class */
++
++class MPEGaudio;
++void Play_MPEGaudioSDL(void *udata, Uint8 *stream, int len);
++int Play_MPEGaudio(MPEGaudio *audio, Uint8 *stream, int len);
++#ifdef THREADED_AUDIO
++int Decode_MPEGaudio(void *udata);
++#endif
++
+ class MPEGaudio : public MPEGerror, public MPEGaudioaction {
+ 
+     friend void Play_MPEGaudioSDL(void *udata, Uint8 *stream, int len);
diff --git a/subprojects/shared-modules/smpeg/smpeg-gcc6.patch 
b/subprojects/shared-modules/smpeg/smpeg-gcc6.patch
new file mode 100644
index 00000000..21b30da5
--- /dev/null
+++ b/subprojects/shared-modules/smpeg/smpeg-gcc6.patch
@@ -0,0 +1,40 @@
+Description: Fix compiling with GCC 6.
+Author: Johannes Brandstätter <jbrandst 2ds eu>
+Bug-Debian: https://bugs.debian.org/811742
+Last-Update: <2016-09-24>
+
+Index: smpeg-0.4.5+cvs20030824/audio/huffmantable.cpp
+===================================================================
+--- smpeg-0.4.5+cvs20030824.orig/audio/huffmantable.cpp
++++ smpeg-0.4.5+cvs20030824/audio/huffmantable.cpp
+@@ -9,6 +9,7 @@
+ #include "config.h"
+ #endif
+ 
++#include <climits>
+ #include "MPEGaudio.h"
+ 
+ static const unsigned int
+@@ -550,11 +551,11 @@ htd33[ 31][2]={{ 16,  1},{  8,  1},{  4,
+ 
+ const HUFFMANCODETABLE MPEGaudio::ht[HTN]=
+ {
+-  { 0, 0-1, 0-1, 0,  0, htd33},
++  { 0, UINT_MAX, UINT_MAX, 0,  0, htd33},
+   { 1, 2-1, 2-1, 0,  7,htd01},
+   { 2, 3-1, 3-1, 0, 17,htd02},
+   { 3, 3-1, 3-1, 0, 17,htd03},
+-  { 4, 0-1, 0-1, 0,  0, htd33},
++  { 4, UINT_MAX, UINT_MAX, 0,  0, htd33},
+   { 5, 4-1, 4-1, 0, 31,htd05},
+   { 6, 4-1, 4-1, 0, 31,htd06},
+   { 7, 6-1, 6-1, 0, 71,htd07},
+@@ -564,7 +565,7 @@ const HUFFMANCODETABLE MPEGaudio::ht[HTN
+   {11, 8-1, 8-1, 0,127,htd11},
+   {12, 8-1, 8-1, 0,127,htd12},
+   {13,16-1,16-1, 0,511,htd13},
+-  {14, 0-1, 0-1, 0,  0, htd33},
++  {14, UINT_MAX, UINT_MAX, 0,  0, htd33},
+   {15,16-1,16-1, 0,511,htd15},
+   {16,16-1,16-1, 1,511,htd16},
+   {17,16-1,16-1, 2,511,htd16},
diff --git a/subprojects/shared-modules/smpeg/smpeg-no-gtk.patch 
b/subprojects/shared-modules/smpeg/smpeg-no-gtk.patch
new file mode 100644
index 00000000..792596cf
--- /dev/null
+++ b/subprojects/shared-modules/smpeg/smpeg-no-gtk.patch
@@ -0,0 +1,37 @@
+From 62cda978596a323cd7042722f906df906007e5b5 Mon Sep 17 00:00:00 2001
+From: Cosimo Cecchi <cosimoc gnome org>
+Date: Sat, 15 Apr 2017 13:24:39 -0700
+Subject: [PATCH] Comment out GTK detection
+
+---
+ configure.in | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index 20b1355..2cb4753 100644
+--- a/configure.in
++++ b/configure.in
+@@ -208,13 +208,13 @@ AC_ARG_ENABLE(gtk_player,
+ [  --enable-gtk-player     build a GTk sample SMPEG player [default=yes]],
+               , enable_gtk_player=yes)
+ have_gtk=no
+-if test x$enable_gtk_player = xyes; then
+-    AM_PATH_GTK(1.2.1, have_gtk=yes)
+-    if test x$have_gtk = xyes; then
+-        CFLAGS="$CFLAGS $GTK_CFLAGS"
+-    fi
+-    AC_SUBST(GTK_LIBS)
+-fi
++dnl if test x$enable_gtk_player = xyes; then
++dnl     AM_PATH_GTK(1.2.1, have_gtk=yes)
++dnl     if test x$have_gtk = xyes; then
++dnl         CFLAGS="$CFLAGS $GTK_CFLAGS"
++dnl     fi
++dnl     AC_SUBST(GTK_LIBS)
++dnl fi
+ AM_CONDITIONAL(HAVE_GTK, test x$have_gtk = xyes)
+ 
+ dnl See if we can build the Mesa player
+-- 
+2.12.2
+
diff --git a/subprojects/shared-modules/udev/udev-175.json b/subprojects/shared-modules/udev/udev-175.json
new file mode 100644
index 00000000..a456dea8
--- /dev/null
+++ b/subprojects/shared-modules/udev/udev-175.json
@@ -0,0 +1,43 @@
+{
+  "name": "udev",
+  "rm-configure": true,
+  "config-opts": [
+    "--disable-hwdb",
+    "--disable-logging",
+    "--disable-introspection",
+    "--disable-keymap",
+    "--disable-mtd_probe"
+  ],
+  "cleanup": [
+    "/include",
+    "/etc",
+    "/libexec",
+    "/sbin",
+    "/lib/pkgconfig",
+    "/man",
+    "/share/aclocal",
+    "/share/doc",
+    "/share/gtk-doc",
+    "/share/man",
+    "/share/pkgconfig",
+    "*.la",
+    "*.a"
+  ],
+  "sources": [
+    {
+      "type": "archive",
+      "url": "http://kernel.org/pub/linux/utils/kernel/hotplug/udev-175.tar.bz2";,
+      "sha256": "4c7937fe5a1521316ea571188745b9a00a9fdf314228cffc53a7ba9e5968b7ab"
+    },
+    {
+      "type": "script",
+      "dest-filename": "autogen.sh",
+      "commands": [
+        "autoreconf -vfi"
+      ]
+    }
+  ],
+  "post-install": [
+    "sed -i 's|${exec_prefix}|/app|g' /app/share/pkgconfig/udev.pc"
+  ]
+}



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