diff --git a/dev-java/swt/Manifest b/dev-java/swt/Manifest
new file mode 100644
index 000000000..353c0667b
--- /dev/null
+++ b/dev-java/swt/Manifest
@@ -0,0 +1,2 @@
+DIST swt-4.10-gtk-linux-ppc64le.zip 3848264 BLAKE2B 214861fde6987906fb24f3187936f3bcb49aebed54fe242427c3737bf6761e8f77d049c376f30ca0fc33e74a1e8a48b6aff6d9863775ee9c33fea7cb2edd1309 SHA512 1b3ede58c2b41abae76f58a303bd3fbf1849ba8be3fd6518325bc22400e960c3ab542e7351b1bc08053e2746ea3e28812e04c2d1789cb1e19ea28745c8a5f39a
+DIST swt-4.10-gtk-linux-x86_64.zip 3844306 BLAKE2B 0e0ed21708acce347fd025920ee635f586c460f8a9c05a7067fd70eed9da999b4a62a5febd17f0c5546ab15198336038e4ab49a1bd588d49ffb39450353a1911 SHA512 9dd946cb7c11446f553f06b8af516167519bab00d4a89f626cd612be6d18e50023fc537aa3d844a8f7a56a767df00410efe4dd20e2bfd930639330a1e279a7a0
diff --git a/dev-java/swt/files/as-needed-and-flag-fixes-3.6.patch b/dev-java/swt/files/as-needed-and-flag-fixes-3.6.patch
new file mode 100644
index 000000000..16194fdc5
--- /dev/null
+++ b/dev-java/swt/files/as-needed-and-flag-fixes-3.6.patch
@@ -0,0 +1,243 @@
+--- make_linux.mak~ 2010-06-08 17:30:58.000000000 +0000
++++ make_linux.mak 2010-08-09 22:48:01.515433721 +0000
+@@ -66,7 +66,7 @@
+ # Uncomment for Native Stats tool
+ #NATIVE_STATS = -DNATIVE_STATS
+
+-MOZILLACFLAGS = -O \
++MOZILLACFLAGS = $(CXXFLAGS) \
+ -DSWT_VERSION=$(SWT_VERSION) \
+ $(NATIVE_STATS) \
+ -DMOZILLA_STRICT_API=1 \
+@@ -107,7 +107,7 @@
+ WEBKIT_OBJECTS = swt.o webkit.o webkit_structs.o webkit_stats.o
+ GLX_OBJECTS = swt.o glx.o glx_structs.o glx_stats.o
+
+-CFLAGS = -O -Wall \
++CFLAGS += \
+ -DSWT_VERSION=$(SWT_VERSION) \
+ $(NATIVE_STATS) \
+ -DLINUX -DGTK \
+@@ -131,13 +131,13 @@
+ make_swt: $(SWT_LIB) $(SWTPI_LIB)
+
+ $(SWT_LIB): $(SWT_OBJECTS)
+- $(CC) $(LFLAGS) -o $(SWT_LIB) $(SWT_OBJECTS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(SWT_LIB) $(SWT_OBJECTS)
+
+ callback.o: callback.c callback.h
+ $(CC) $(CFLAGS) -DUSE_ASSEMBLER -c callback.c
+
+ $(SWTPI_LIB): $(SWTPI_OBJECTS)
+- $(CC) $(LFLAGS) -o $(SWTPI_LIB) $(SWTPI_OBJECTS) $(GTKLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(SWTPI_LIB) $(SWTPI_OBJECTS) $(GTKLIBS)
+
+ swt.o: swt.c swt.h
+ $(CC) $(CFLAGS) -c swt.c
+@@ -156,7 +156,7 @@
+ make_cairo: $(CAIRO_LIB)
+
+ $(CAIRO_LIB): $(CAIRO_OBJECTS)
+- $(CC) $(LFLAGS) -o $(CAIRO_LIB) $(CAIRO_OBJECTS) $(CAIROLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(CAIRO_LIB) $(CAIRO_OBJECTS) $(CAIROLIBS)
+
+ cairo.o: cairo.c cairo.h swt.h
+ $(CC) $(CFLAGS) $(CAIROCFLAGS) -c cairo.c
+@@ -172,7 +172,7 @@
+ make_cde: $(CDE_LIB)
+
+ $(CDE_LIB): $(CDE_OBJECTS)
+- $(CC) $(LFLAGS) -o $(CDE_LIB) $(CDE_OBJECTS) $(CDE_LIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(CDE_LIB) $(CDE_OBJECTS) $(CDE_LIBS)
+
+ #
+ # AWT lib
+@@ -180,7 +180,7 @@
+ make_awt:$(AWT_LIB)
+
+ $(AWT_LIB): $(AWT_OBJECTS)
+- $(CC) $(AWT_LFLAGS) -o $(AWT_LIB) $(AWT_OBJECTS) $(AWT_LIBS)
++ $(CC) $(LDFLAGS) $(AWT_LFLAGS) -o $(AWT_LIB) $(AWT_OBJECTS) $(AWT_LIBS)
+
+ #
+ # Atk lib
+@@ -188,7 +188,7 @@
+ make_atk: $(ATK_LIB)
+
+ $(ATK_LIB): $(ATK_OBJECTS)
+- $(CC) $(LFLAGS) -o $(ATK_LIB) $(ATK_OBJECTS) $(ATKLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(ATK_LIB) $(ATK_OBJECTS) $(ATKLIBS)
+
+ atk.o: atk.c atk.h
+ $(CC) $(CFLAGS) $(ATKCFLAGS) -c atk.c
+@@ -205,7 +205,7 @@
+ make_gnome: $(GNOME_LIB)
+
+ $(GNOME_LIB): $(GNOME_OBJECTS)
+- $(CC) $(LFLAGS) -o $(GNOME_LIB) $(GNOME_OBJECTS) $(GNOMELIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(GNOME_LIB) $(GNOME_OBJECTS) $(GNOMELIBS)
+
+ gnome.o: gnome.c
+ $(CC) $(CFLAGS) $(GNOMECFLAGS) -c gnome.c
+@@ -222,7 +222,7 @@
+ make_mozilla:$(MOZILLA_LIB)
+
+ $(MOZILLA_LIB): $(MOZILLA_OBJECTS)
+- $(CXX) -o $(MOZILLA_LIB) $(MOZILLA_OBJECTS) $(MOZILLALFLAGS) ${MOZILLA_LIBS}
++ $(CXX) $(LDFLAGS) -o $(MOZILLA_LIB) $(MOZILLA_OBJECTS) $(MOZILLALFLAGS) ${MOZILLA_LIBS}
+
+ xpcom.o: xpcom.cpp
+ $(CXX) $(MOZILLACFLAGS) $(MOZILLAEXCLUDES) ${MOZILLA_INCLUDES} -c xpcom.cpp
+@@ -242,7 +242,7 @@
+ make_xulrunner:$(XULRUNNER_LIB)
+
+ $(XULRUNNER_LIB): $(XULRUNNER_OBJECTS)
+- $(CXX) -o $(XULRUNNER_LIB) $(XULRUNNER_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
++ $(CXX) $(LDFLAGS) -o $(XULRUNNER_LIB) $(XULRUNNER_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
+
+ xpcomxul.o: xpcom.cpp
+ $(CXX) -o xpcomxul.o $(MOZILLACFLAGS) $(XULRUNNEREXCLUDES) ${XULRUNNER_INCLUDES} -c xpcom.cpp
+@@ -262,7 +262,7 @@
+ make_xpcominit:$(XPCOMINIT_LIB)
+
+ $(XPCOMINIT_LIB): $(XPCOMINIT_OBJECTS)
+- $(CXX) -o $(XPCOMINIT_LIB) $(XPCOMINIT_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
++ $(CXX) $(LDFLAGS) -o $(XPCOMINIT_LIB) $(XPCOMINIT_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
+
+ xpcominit.o: xpcominit.cpp
+ $(CXX) $(MOZILLACFLAGS) ${XULRUNNER_INCLUDES} -c xpcominit.cpp
+@@ -279,7 +279,7 @@
+ make_webkit: $(WEBKIT_LIB)
+
+ $(WEBKIT_LIB): $(WEBKIT_OBJECTS)
+- $(CC) $(LFLAGS) -o $(WEBKIT_LIB) $(WEBKIT_OBJECTS) $(WEBKITLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(WEBKIT_LIB) $(WEBKIT_OBJECTS) $(WEBKITLIBS)
+
+ webkit.o: webkitgtk.c
+ $(CC) $(CFLAGS) $(WEBKITCFLAGS) -c webkitgtk.c -o webkit.o
+@@ -296,7 +296,7 @@
+ make_glx: $(GLX_LIB)
+
+ $(GLX_LIB): $(GLX_OBJECTS)
+- $(CC) $(LFLAGS) -o $(GLX_LIB) $(GLX_OBJECTS) $(GLXLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(GLX_LIB) $(GLX_OBJECTS) $(GLXLIBS)
+
+ glx.o: glx.c
+ $(CC) $(CFLAGS) $(GLXCFLAGS) -c glx.c
+--- make_freebsd.mak~ 2010-06-08 17:30:58.000000000 +0000
++++ make_freebsd.mak 2010-08-09 22:50:26.173246263 +0000
+@@ -64,7 +64,7 @@
+ # Uncomment for Native Stats tool
+ #NATIVE_STATS = -DNATIVE_STATS
+
+-MOZILLACFLAGS = -O \
++MOZILLACFLAGS += \
+ -DSWT_VERSION=$(SWT_VERSION) \
+ $(NATIVE_STATS) \
+ -DMOZILLA_STRICT_API=1 \
+@@ -91,7 +91,7 @@
+ XPCOMINIT_OBJECTS = swt.o xpcominit.o xpcominit_structs.o xpcominit_stats.o
+ GLX_OBJECTS = swt.o glx.o glx_structs.o glx_stats.o
+
+-CFLAGS = -O -Wall \
++CFLAGS += \
+ -DSWT_VERSION=$(SWT_VERSION) \
+ $(NATIVE_STATS) \
+ -DFREEBSD -DGTK \
+@@ -115,13 +115,13 @@
+ make_swt: $(SWT_LIB) $(SWTPI_LIB)
+
+ $(SWT_LIB): $(SWT_OBJECTS)
+- $(CC) $(LFLAGS) -o $(SWT_LIB) $(SWT_OBJECTS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(SWT_LIB) $(SWT_OBJECTS)
+
+ callback.o: callback.c callback.h
+ $(CC) $(CFLAGS) -DUSE_ASSEMBLER -c callback.c
+
+ $(SWTPI_LIB): $(SWTPI_OBJECTS)
+- $(CC) $(LFLAGS) -o $(SWTPI_LIB) $(SWTPI_OBJECTS) $(GTKLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(SWTPI_LIB) $(SWTPI_OBJECTS) $(GTKLIBS)
+
+ swt.o: swt.c swt.h
+ $(CC) $(CFLAGS) -c swt.c
+@@ -140,7 +140,7 @@
+ make_cairo: $(CAIRO_LIB)
+
+ $(CAIRO_LIB): $(CAIRO_OBJECTS)
+- $(CC) $(LFLAGS) -o $(CAIRO_LIB) $(CAIRO_OBJECTS) $(CAIROLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(CAIRO_LIB) $(CAIRO_OBJECTS) $(CAIROLIBS)
+
+ cairo.o: cairo.c cairo.h swt.h
+ $(CC) $(CFLAGS) $(CAIROCFLAGS) -c cairo.c
+@@ -156,7 +156,7 @@
+ make_cde: $(CDE_LIB)
+
+ $(CDE_LIB): $(CDE_OBJECTS)
+- $(CC) $(LFLAGS) -o $(CDE_LIB) $(CDE_OBJECTS) $(CDE_LIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(CDE_LIB) $(CDE_OBJECTS) $(CDE_LIBS)
+
+ #
+ # AWT lib
+@@ -164,7 +164,7 @@
+ make_awt:$(AWT_LIB)
+
+ $(AWT_LIB): $(AWT_OBJECTS)
+- $(CC) $(AWT_LFLAGS) -o $(AWT_LIB) $(AWT_OBJECTS) $(AWT_LIBS)
++ $(CC) $(LDFLAGS) $(AWT_LFLAGS) -o $(AWT_LIB) $(AWT_OBJECTS) $(AWT_LIBS)
+
+ #
+ # Atk lib
+@@ -172,7 +172,7 @@
+ make_atk: $(ATK_LIB)
+
+ $(ATK_LIB): $(ATK_OBJECTS)
+- $(CC) $(LFLAGS) -o $(ATK_LIB) $(ATK_OBJECTS) $(ATKLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(ATK_LIB) $(ATK_OBJECTS) $(ATKLIBS)
+
+ atk.o: atk.c atk.h
+ $(CC) $(CFLAGS) $(ATKCFLAGS) -c atk.c
+@@ -189,7 +189,7 @@
+ make_gnome: $(GNOME_LIB)
+
+ $(GNOME_LIB): $(GNOME_OBJECTS)
+- $(CC) $(LFLAGS) -o $(GNOME_LIB) $(GNOME_OBJECTS) $(GNOMELIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(GNOME_LIB) $(GNOME_OBJECTS) $(GNOMELIBS)
+
+ gnome.o: gnome.c
+ $(CC) $(CFLAGS) $(GNOMECFLAGS) -c gnome.c
+@@ -206,7 +206,7 @@
+ make_mozilla:$(MOZILLA_LIB)
+
+ $(MOZILLA_LIB): $(MOZILLA_OBJECTS)
+- $(CXX) -o $(MOZILLA_LIB) $(MOZILLA_OBJECTS) $(MOZILLALFLAGS) ${MOZILLA_LIBS}
++ $(CXX) $(LDFLAGS) -o $(MOZILLA_LIB) $(MOZILLA_OBJECTS) $(MOZILLALFLAGS) ${MOZILLA_LIBS}
+
+ xpcom.o: xpcom.cpp
+ $(CXX) $(MOZILLACFLAGS) ${MOZILLA_INCLUDES} -c xpcom.cpp
+@@ -226,7 +226,7 @@
+ make_xulrunner:$(XULRUNNER_LIB)
+
+ $(XULRUNNER_LIB): $(XULRUNNER_OBJECTS)
+- $(CXX) -o $(XULRUNNER_LIB) $(XULRUNNER_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
++ $(CXX) $(LDFLAGS) -o $(XULRUNNER_LIB) $(XULRUNNER_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
+
+ xpcomxul.o: xpcom.cpp
+ $(CXX) -o xpcomxul.o $(MOZILLACFLAGS) ${XULRUNNER_INCLUDES} -c xpcom.cpp
+@@ -252,7 +252,7 @@
+ make_xpcominit:$(XPCOMINIT_LIB)
+
+ $(XPCOMINIT_LIB): $(XPCOMINIT_OBJECTS)
+- $(CXX) -o $(XPCOMINIT_LIB) $(XPCOMINIT_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
++ $(CXX) $(LDFLAGS) -o $(XPCOMINIT_LIB) $(XPCOMINIT_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
+
+ xpcominit.o: xpcominit.cpp
+ $(CXX) $(MOZILLACFLAGS) ${XULRUNNER_INCLUDES} -c xpcominit.cpp
+@@ -269,7 +269,7 @@
+ make_glx: $(GLX_LIB)
+
+ $(GLX_LIB): $(GLX_OBJECTS)
+- $(CC) $(LFLAGS) -o $(GLX_LIB) $(GLX_OBJECTS) $(GLXLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(GLX_LIB) $(GLX_OBJECTS) $(GLXLIBS)
+
+ glx.o: glx.c
+ $(CC) $(CFLAGS) $(GLXCFLAGS) -c glx.c
diff --git a/dev-java/swt/files/build.xml b/dev-java/swt/files/build.xml
new file mode 100644
index 000000000..ea775871b
--- /dev/null
+++ b/dev-java/swt/files/build.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/dev-java/swt/files/swt-3.7-manifest b/dev-java/swt/files/swt-3.7-manifest
new file mode 100644
index 000000000..bddcbb48b
--- /dev/null
+++ b/dev-java/swt/files/swt-3.7-manifest
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Fragment-Host: org.eclipse.swt; bundle-version="[3.0.0,4.0.0)"
+Bundle-SymbolicName: org.eclipse.swt.gtk.linux.SWT_ARCH; singleton:=true
+Bundle-Version: 3.7
+Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=SWT_ARCH))
+Export-Package: org.eclipse.swt.internal.accessibility.gtk; x-internal:=true,
+ org.eclipse.swt.internal.cairo; x-internal:=true,
+ org.eclipse.swt.internal.cde; x-internal:=true,
+ org.eclipse.swt.internal.gnome; x-internal:=true,
+ org.eclipse.swt.internal.gtk; x-internal:=true,
+ org.eclipse.swt.internal.opengl.glx; x-internal:=true
+ org.eclipse.swt.internal.webkit; x-internal:=true
+
diff --git a/dev-java/swt/files/swt-3.7.2-gio_launch-URI-x86.patch b/dev-java/swt/files/swt-3.7.2-gio_launch-URI-x86.patch
new file mode 100644
index 000000000..cab0e0cdb
--- /dev/null
+++ b/dev-java/swt/files/swt-3.7.2-gio_launch-URI-x86.patch
@@ -0,0 +1,121 @@
+Program.launch will first attempt to open files using libgio and then fallback
+to gnome-vfs. gio_launch uses g_file_new_for_path which fails when passed a
+URI. If swt was built with USE="-gnome" then the fallback fails as well,
+making it appear that a package has a dependency on swt[gnome] when it does
+not.
+
+Caused by: java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
+ no swt-gnome-gtk-3740 in java.library.path
+ no swt-gnome-gtk in java.library.path
+ Can't load library: /home/xxx/.swt/lib/linux/x86_64/libswt-gnome-gtk-3740.so
+ Can't load library: /home/xxx/.swt/lib/linux/x86_64/libswt-gnome-gtk.so
+
+Use g_file_new_for_commandline_arg instead.
+
+https://bugs.gentoo.org/424151
+
+
+--- a/os.c
++++ b/os.c
+@@ -3059,6 +3059,30 @@ fail:
+ }
+ #endif
+
++#ifndef NO__1g_1file_1new_1for_1commandline_1arg
++JNIEXPORT jintLong JNICALL OS_NATIVE(_1g_1file_1new_1for_1commandline_1arg)
++ (JNIEnv *env, jclass that, jbyteArray arg0)
++{
++ jbyte *lparg0=NULL;
++ jintLong rc = 0;
++ OS_NATIVE_ENTER(env, that, _1g_1file_1new_1for_1commandline_1arg_FUNC);
++ if (arg0) if ((lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL)) == NULL) goto fail;
++/*
++ rc = (jintLong)g_file_new_for_commandline_arg(lparg0);
++*/
++ {
++ LOAD_FUNCTION(fp, g_file_new_for_commandline_arg)
++ if (fp) {
++ rc = (jintLong)((jintLong (CALLING_CONVENTION*)(jbyte *))fp)(lparg0);
++ }
++ }
++fail:
++ if (arg0 && lparg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
++ OS_NATIVE_EXIT(env, that, _1g_1file_1new_1for_1commandline_1arg_FUNC);
++ return rc;
++}
++#endif
++
+ #ifndef NO__1g_1file_1new_1for_1path
+ JNIEXPORT jintLong JNICALL OS_NATIVE(_1g_1file_1new_1for_1path)
+ (JNIEnv *env, jclass that, jbyteArray arg0)
+--- a/os_custom.h
++++ b/os_custom.h
+@@ -280,6 +280,7 @@
+ #define g_file_icon_get_file_LIB LIB_GIO
+ #define g_file_info_get_content_type_LIB LIB_GIO
+ #define g_file_info_get_modification_time_LIB LIB_GIO
++#define g_file_new_for_commandline_arg_LIB LIB_GIO
+ #define g_file_new_for_path_LIB LIB_GIO
+ #define g_file_new_for_uri_LIB LIB_GIO
+ #define g_file_read_LIB LIB_GIO
+--- a/os_stats.c
++++ b/os_stats.c
+@@ -18,8 +18,8 @@
+
+ #ifdef NATIVE_STATS
+
+-int OS_nativeFunctionCount = 1396;
+-int OS_nativeFunctionCallCount[1396];
++int OS_nativeFunctionCount = 1397;
++int OS_nativeFunctionCallCount[1397];
+ char * OS_nativeFunctionNames[] = {
+ #ifndef JNI64
+ "Call__IIII",
+@@ -250,6 +250,7 @@ char * OS_nativeFunctionNames[] = {
+ "_1g_1file_1icon_1get_1file",
+ "_1g_1file_1info_1get_1content_1type",
+ "_1g_1file_1info_1get_1modification_1time",
++ "_1g_1file_1new_1for_1commandline_1arg",
+ "_1g_1file_1new_1for_1path",
+ "_1g_1file_1new_1for_1uri",
+ "_1g_1file_1query_1info",
+--- a/os_stats.h
++++ b/os_stats.h
+@@ -258,6 +258,7 @@ typedef enum {
+ _1g_1file_1icon_1get_1file_FUNC,
+ _1g_1file_1info_1get_1content_1type_FUNC,
+ _1g_1file_1info_1get_1modification_1time_FUNC,
++ _1g_1file_1new_1for_1commandline_1arg_FUNC,
+ _1g_1file_1new_1for_1path_FUNC,
+ _1g_1file_1new_1for_1uri_FUNC,
+ _1g_1file_1query_1info_FUNC,
+--- a/src/org/eclipse/swt/internal/gtk/OS.java
++++ b/src/org/eclipse/swt/internal/gtk/OS.java
+@@ -2113,6 +2113,16 @@ public static final int /*long*/ g_file_new_for_path(byte[] fileName) {
+ }
+ }
+ /** @method flags=dynamic */
++public static final native int /*long*/ _g_file_new_for_commandline_arg(byte[] fileName);
++public static final int /*long*/ g_file_new_for_commandline_arg(byte[] fileName) {
++ lock.lock();
++ try {
++ return _g_file_new_for_commandline_arg(fileName);
++ } finally {
++ lock.unlock();
++ }
++}
++/** @method flags=dynamic */
+ public static final native int /*long*/ _g_file_new_for_uri(byte[] fileName);
+ public static final int /*long*/ g_file_new_for_uri(byte[] fileName) {
+ lock.lock();
+--- a/src/org/eclipse/swt/program/Program.java
++++ b/src/org/eclipse/swt/program/Program.java
+@@ -954,7 +954,7 @@ static boolean gio_isExecutable(String fileName) {
+ static boolean gio_launch(String fileName) {
+ boolean result = false;
+ byte[] fileNameBuffer = Converter.wcsToMbcs (null, fileName, true);
+- int /*long*/ file = OS.g_file_new_for_path (fileNameBuffer);
++ int /*long*/ file = OS.g_file_new_for_commandline_arg (fileNameBuffer);
+ if (file != 0) {
+ int /*long*/ uri = OS.g_file_get_uri (file);
+ if (uri != 0) {
diff --git a/dev-java/swt/files/swt-3.7.2-gio_launch-URI.patch b/dev-java/swt/files/swt-3.7.2-gio_launch-URI.patch
new file mode 100644
index 000000000..bbb285730
--- /dev/null
+++ b/dev-java/swt/files/swt-3.7.2-gio_launch-URI.patch
@@ -0,0 +1,121 @@
+Program.launch will first attempt to open files using libgio and then fallback
+to gnome-vfs. gio_launch uses g_file_new_for_path which fails when passed a
+URI. If swt was built with USE="-gnome" then the fallback fails as well,
+making it appear that a package has a dependency on swt[gnome] when it does
+not.
+
+Caused by: java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
+ no swt-gnome-gtk-3740 in java.library.path
+ no swt-gnome-gtk in java.library.path
+ Can't load library: /home/xxx/.swt/lib/linux/x86_64/libswt-gnome-gtk-3740.so
+ Can't load library: /home/xxx/.swt/lib/linux/x86_64/libswt-gnome-gtk.so
+
+Use g_file_new_for_commandline_arg instead.
+
+https://bugs.gentoo.org/424151
+
+
+--- a/os.c
++++ b/os.c
+@@ -3059,6 +3059,30 @@ fail:
+ }
+ #endif
+
++#ifndef NO__1g_1file_1new_1for_1commandline_1arg
++JNIEXPORT jintLong JNICALL OS_NATIVE(_1g_1file_1new_1for_1commandline_1arg)
++ (JNIEnv *env, jclass that, jbyteArray arg0)
++{
++ jbyte *lparg0=NULL;
++ jintLong rc = 0;
++ OS_NATIVE_ENTER(env, that, _1g_1file_1new_1for_1commandline_1arg_FUNC);
++ if (arg0) if ((lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL)) == NULL) goto fail;
++/*
++ rc = (jintLong)g_file_new_for_commandline_arg(lparg0);
++*/
++ {
++ LOAD_FUNCTION(fp, g_file_new_for_commandline_arg)
++ if (fp) {
++ rc = (jintLong)((jintLong (CALLING_CONVENTION*)(jbyte *))fp)(lparg0);
++ }
++ }
++fail:
++ if (arg0 && lparg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0);
++ OS_NATIVE_EXIT(env, that, _1g_1file_1new_1for_1commandline_1arg_FUNC);
++ return rc;
++}
++#endif
++
+ #ifndef NO__1g_1file_1new_1for_1path
+ JNIEXPORT jintLong JNICALL OS_NATIVE(_1g_1file_1new_1for_1path)
+ (JNIEnv *env, jclass that, jbyteArray arg0)
+--- a/os_custom.h
++++ b/os_custom.h
+@@ -280,6 +280,7 @@
+ #define g_file_icon_get_file_LIB LIB_GIO
+ #define g_file_info_get_content_type_LIB LIB_GIO
+ #define g_file_info_get_modification_time_LIB LIB_GIO
++#define g_file_new_for_commandline_arg_LIB LIB_GIO
+ #define g_file_new_for_path_LIB LIB_GIO
+ #define g_file_new_for_uri_LIB LIB_GIO
+ #define g_file_read_LIB LIB_GIO
+--- a/os_stats.c
++++ b/os_stats.c
+@@ -18,8 +18,8 @@
+
+ #ifdef NATIVE_STATS
+
+-int OS_nativeFunctionCount = 1396;
+-int OS_nativeFunctionCallCount[1396];
++int OS_nativeFunctionCount = 1397;
++int OS_nativeFunctionCallCount[1397];
+ char * OS_nativeFunctionNames[] = {
+ #ifndef JNI64
+ "Call__IIII",
+@@ -250,6 +250,7 @@ char * OS_nativeFunctionNames[] = {
+ "_1g_1file_1icon_1get_1file",
+ "_1g_1file_1info_1get_1content_1type",
+ "_1g_1file_1info_1get_1modification_1time",
++ "_1g_1file_1new_1for_1commandline_1arg",
+ "_1g_1file_1new_1for_1path",
+ "_1g_1file_1new_1for_1uri",
+ "_1g_1file_1query_1info",
+--- a/os_stats.h
++++ b/os_stats.h
+@@ -258,6 +258,7 @@ typedef enum {
+ _1g_1file_1icon_1get_1file_FUNC,
+ _1g_1file_1info_1get_1content_1type_FUNC,
+ _1g_1file_1info_1get_1modification_1time_FUNC,
++ _1g_1file_1new_1for_1commandline_1arg_FUNC,
+ _1g_1file_1new_1for_1path_FUNC,
+ _1g_1file_1new_1for_1uri_FUNC,
+ _1g_1file_1query_1info_FUNC,
+--- a/src/org/eclipse/swt/internal/gtk/OS.java
++++ b/src/org/eclipse/swt/internal/gtk/OS.java
+@@ -2113,6 +2113,16 @@ public static final long /*int*/ g_file_new_for_path(byte[] fileName) {
+ }
+ }
+ /** @method flags=dynamic */
++public static final native long /*int*/ _g_file_new_for_commandline_arg(byte[] fileName);
++public static final long /*int*/ g_file_new_for_commandline_arg(byte[] fileName) {
++ lock.lock();
++ try {
++ return _g_file_new_for_commandline_arg(fileName);
++ } finally {
++ lock.unlock();
++ }
++}
++/** @method flags=dynamic */
+ public static final native long /*int*/ _g_file_new_for_uri(byte[] fileName);
+ public static final long /*int*/ g_file_new_for_uri(byte[] fileName) {
+ lock.lock();
+--- a/src/org/eclipse/swt/program/Program.java
++++ b/src/org/eclipse/swt/program/Program.java
+@@ -954,7 +954,7 @@ static boolean gio_isExecutable(String fileName) {
+ static boolean gio_launch(String fileName) {
+ boolean result = false;
+ byte[] fileNameBuffer = Converter.wcsToMbcs (null, fileName, true);
+- long /*int*/ file = OS.g_file_new_for_path (fileNameBuffer);
++ long /*int*/ file = OS.g_file_new_for_commandline_arg (fileNameBuffer);
+ if (file != 0) {
+ long /*int*/ uri = OS.g_file_get_uri (file);
+ if (uri != 0) {
diff --git a/dev-java/swt/files/swt-3.8-as-needed-and-flag-fixes.patch b/dev-java/swt/files/swt-3.8-as-needed-and-flag-fixes.patch
new file mode 100644
index 000000000..ce5c54e40
--- /dev/null
+++ b/dev-java/swt/files/swt-3.8-as-needed-and-flag-fixes.patch
@@ -0,0 +1,243 @@
+--- a/make_freebsd.mak
++++ b/make_freebsd.mak
+@@ -64,7 +64,7 @@ GLXLIBS = -L/usr/X11R6/lib -lGL -lGLU -lm
+ # Uncomment for Native Stats tool
+ #NATIVE_STATS = -DNATIVE_STATS
+
+-MOZILLACFLAGS = -O \
++MOZILLACFLAGS += \
+ -DSWT_VERSION=$(SWT_VERSION) \
+ $(NATIVE_STATS) \
+ -DMOZILLA_STRICT_API=1 \
+@@ -91,7 +91,7 @@ XULRUNNER_OBJECTS = swt.o xpcomxul.o xpcomxul_custom.o xpcomxul_structs.o xpcomx
+ XPCOMINIT_OBJECTS = swt.o xpcominit.o xpcominit_structs.o xpcominit_stats.o
+ GLX_OBJECTS = swt.o glx.o glx_structs.o glx_stats.o
+
+-CFLAGS = -O -Wall \
++CFLAGS += \
+ -DSWT_VERSION=$(SWT_VERSION) \
+ $(NATIVE_STATS) \
+ -DFREEBSD -DGTK \
+@@ -115,13 +115,13 @@ all: make_swt make_atk make_gnome make_glx
+ make_swt: $(SWT_LIB) $(SWTPI_LIB)
+
+ $(SWT_LIB): $(SWT_OBJECTS)
+- $(CC) $(LFLAGS) -o $(SWT_LIB) $(SWT_OBJECTS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(SWT_LIB) $(SWT_OBJECTS)
+
+ callback.o: callback.c callback.h
+ $(CC) $(CFLAGS) -DUSE_ASSEMBLER -c callback.c
+
+ $(SWTPI_LIB): $(SWTPI_OBJECTS)
+- $(CC) $(LFLAGS) -o $(SWTPI_LIB) $(SWTPI_OBJECTS) $(GTKLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(SWTPI_LIB) $(SWTPI_OBJECTS) $(GTKLIBS)
+
+ swt.o: swt.c swt.h
+ $(CC) $(CFLAGS) -c swt.c
+@@ -140,7 +140,7 @@ os_stats.o: os_stats.c os_structs.h os.h os_stats.h swt.h
+ make_cairo: $(CAIRO_LIB)
+
+ $(CAIRO_LIB): $(CAIRO_OBJECTS)
+- $(CC) $(LFLAGS) -o $(CAIRO_LIB) $(CAIRO_OBJECTS) $(CAIROLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(CAIRO_LIB) $(CAIRO_OBJECTS) $(CAIROLIBS)
+
+ cairo.o: cairo.c cairo.h swt.h
+ $(CC) $(CFLAGS) $(CAIROCFLAGS) -c cairo.c
+@@ -156,7 +156,7 @@ cairo_stats.o: cairo_stats.c cairo_structs.h cairo.h cairo_stats.h swt.h
+ make_cde: $(CDE_LIB)
+
+ $(CDE_LIB): $(CDE_OBJECTS)
+- $(CC) $(LFLAGS) -o $(CDE_LIB) $(CDE_OBJECTS) $(CDE_LIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(CDE_LIB) $(CDE_OBJECTS) $(CDE_LIBS)
+
+ #
+ # AWT lib
+@@ -164,7 +164,7 @@ $(CDE_LIB): $(CDE_OBJECTS)
+ make_awt:$(AWT_LIB)
+
+ $(AWT_LIB): $(AWT_OBJECTS)
+- $(CC) $(AWT_LFLAGS) -o $(AWT_LIB) $(AWT_OBJECTS) $(AWT_LIBS)
++ $(CC) $(LDFLAGS) $(AWT_LFLAGS) -o $(AWT_LIB) $(AWT_OBJECTS) $(AWT_LIBS)
+
+ #
+ # Atk lib
+@@ -172,7 +172,7 @@ $(AWT_LIB): $(AWT_OBJECTS)
+ make_atk: $(ATK_LIB)
+
+ $(ATK_LIB): $(ATK_OBJECTS)
+- $(CC) $(LFLAGS) -o $(ATK_LIB) $(ATK_OBJECTS) $(ATKLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(ATK_LIB) $(ATK_OBJECTS) $(ATKLIBS)
+
+ atk.o: atk.c atk.h
+ $(CC) $(CFLAGS) $(ATKCFLAGS) -c atk.c
+@@ -189,7 +189,7 @@ atk_stats.o: atk_stats.c atk_structs.h atk_stats.h atk.h
+ make_gnome: $(GNOME_LIB)
+
+ $(GNOME_LIB): $(GNOME_OBJECTS)
+- $(CC) $(LFLAGS) -o $(GNOME_LIB) $(GNOME_OBJECTS) $(GNOMELIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(GNOME_LIB) $(GNOME_OBJECTS) $(GNOMELIBS)
+
+ gnome.o: gnome.c
+ $(CC) $(CFLAGS) $(GNOMECFLAGS) -c gnome.c
+@@ -206,7 +206,7 @@ gnome_stats.o: gnome_stats.c gnome_stats.h
+ make_mozilla:$(MOZILLA_LIB)
+
+ $(MOZILLA_LIB): $(MOZILLA_OBJECTS)
+- $(CXX) -o $(MOZILLA_LIB) $(MOZILLA_OBJECTS) $(MOZILLALFLAGS) ${MOZILLA_LIBS}
++ $(CXX) $(LDFLAGS) -o $(MOZILLA_LIB) $(MOZILLA_OBJECTS) $(MOZILLALFLAGS) ${MOZILLA_LIBS}
+
+ xpcom.o: xpcom.cpp
+ $(CXX) $(MOZILLACFLAGS) ${MOZILLA_INCLUDES} -c xpcom.cpp
+@@ -226,7 +226,7 @@ xpcom_stats.o: xpcom_stats.cpp
+ make_xulrunner:$(XULRUNNER_LIB)
+
+ $(XULRUNNER_LIB): $(XULRUNNER_OBJECTS)
+- $(CXX) -o $(XULRUNNER_LIB) $(XULRUNNER_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
++ $(CXX) $(LDFLAGS) -o $(XULRUNNER_LIB) $(XULRUNNER_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
+
+ xpcomxul.o: xpcom.cpp
+ $(CXX) -o xpcomxul.o $(MOZILLACFLAGS) ${XULRUNNER_INCLUDES} -c xpcom.cpp
+@@ -252,7 +252,7 @@ xpcomxulglue_stats.o: xpcomglue_stats.cpp
+ make_xpcominit:$(XPCOMINIT_LIB)
+
+ $(XPCOMINIT_LIB): $(XPCOMINIT_OBJECTS)
+- $(CXX) -o $(XPCOMINIT_LIB) $(XPCOMINIT_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
++ $(CXX) $(LDFLAGS) -o $(XPCOMINIT_LIB) $(XPCOMINIT_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
+
+ xpcominit.o: xpcominit.cpp
+ $(CXX) $(MOZILLACFLAGS) ${XULRUNNER_INCLUDES} -c xpcominit.cpp
+@@ -269,7 +269,7 @@ xpcominit_stats.o: xpcominit_stats.cpp
+ make_glx: $(GLX_LIB)
+
+ $(GLX_LIB): $(GLX_OBJECTS)
+- $(CC) $(LFLAGS) -o $(GLX_LIB) $(GLX_OBJECTS) $(GLXLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(GLX_LIB) $(GLX_OBJECTS) $(GLXLIBS)
+
+ glx.o: glx.c
+ $(CC) $(CFLAGS) $(GLXCFLAGS) -c glx.c
+--- a/make_linux.mak
++++ b/make_linux.mak
+@@ -66,7 +66,7 @@ GLXLIBS = -lGL -lGLU -lm
+ # Uncomment for Native Stats tool
+ #NATIVE_STATS = -DNATIVE_STATS
+
+-MOZILLACFLAGS = -O \
++MOZILLACFLAGS = $(CXXFLAGS) \
+ -DSWT_VERSION=$(SWT_VERSION) \
+ $(NATIVE_STATS) \
+ -DMOZILLA_STRICT_API=1 \
+@@ -106,7 +106,7 @@ XPCOMINIT_OBJECTS = swt.o xpcominit.o xpcominit_structs.o xpcominit_stats.o
+ WEBKIT_OBJECTS = swt.o webkit.o webkit_structs.o webkit_stats.o
+ GLX_OBJECTS = swt.o glx.o glx_structs.o glx_stats.o
+
+-CFLAGS = -O -Wall \
++CFLAGS += \
+ -DSWT_VERSION=$(SWT_VERSION) \
+ $(NATIVE_STATS) \
+ -DLINUX -DGTK \
+@@ -130,13 +130,13 @@ all: make_swt make_atk make_glx make_webkit
+ make_swt: $(SWT_LIB) $(SWTPI_LIB)
+
+ $(SWT_LIB): $(SWT_OBJECTS)
+- $(CC) $(LFLAGS) -o $(SWT_LIB) $(SWT_OBJECTS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(SWT_LIB) $(SWT_OBJECTS)
+
+ callback.o: callback.c callback.h
+ $(CC) $(CFLAGS) -DUSE_ASSEMBLER -c callback.c
+
+ $(SWTPI_LIB): $(SWTPI_OBJECTS)
+- $(CC) $(LFLAGS) -o $(SWTPI_LIB) $(SWTPI_OBJECTS) $(GTKLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(SWTPI_LIB) $(SWTPI_OBJECTS) $(GTKLIBS)
+
+ swt.o: swt.c swt.h
+ $(CC) $(CFLAGS) -c swt.c
+@@ -155,7 +155,7 @@ os_stats.o: os_stats.c os_structs.h os.h os_stats.h swt.h
+ make_cairo: $(CAIRO_LIB)
+
+ $(CAIRO_LIB): $(CAIRO_OBJECTS)
+- $(CC) $(LFLAGS) -o $(CAIRO_LIB) $(CAIRO_OBJECTS) $(CAIROLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(CAIRO_LIB) $(CAIRO_OBJECTS) $(CAIROLIBS)
+
+ cairo.o: cairo.c cairo.h swt.h
+ $(CC) $(CFLAGS) $(CAIROCFLAGS) -c cairo.c
+@@ -171,7 +171,7 @@ cairo_stats.o: cairo_stats.c cairo_structs.h cairo.h cairo_stats.h swt.h
+ make_cde: $(CDE_LIB)
+
+ $(CDE_LIB): $(CDE_OBJECTS)
+- $(CC) $(LFLAGS) -o $(CDE_LIB) $(CDE_OBJECTS) $(CDE_LIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(CDE_LIB) $(CDE_OBJECTS) $(CDE_LIBS)
+
+ #
+ # AWT lib
+@@ -179,7 +179,7 @@ $(CDE_LIB): $(CDE_OBJECTS)
+ make_awt:$(AWT_LIB)
+
+ $(AWT_LIB): $(AWT_OBJECTS)
+- $(CC) $(AWT_LFLAGS) -o $(AWT_LIB) $(AWT_OBJECTS) $(AWT_LIBS)
++ $(CC) $(LDFLAGS) $(AWT_LFLAGS) -o $(AWT_LIB) $(AWT_OBJECTS) $(AWT_LIBS)
+
+ #
+ # Atk lib
+@@ -187,7 +187,7 @@ $(AWT_LIB): $(AWT_OBJECTS)
+ make_atk: $(ATK_LIB)
+
+ $(ATK_LIB): $(ATK_OBJECTS)
+- $(CC) $(LFLAGS) -o $(ATK_LIB) $(ATK_OBJECTS) $(ATKLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(ATK_LIB) $(ATK_OBJECTS) $(ATKLIBS)
+
+ atk.o: atk.c atk.h
+ $(CC) $(CFLAGS) $(ATKCFLAGS) -c atk.c
+@@ -204,7 +204,7 @@ atk_stats.o: atk_stats.c atk_structs.h atk_stats.h atk.h
+ make_gnome: $(GNOME_LIB)
+
+ $(GNOME_LIB): $(GNOME_OBJECTS)
+- $(CC) $(LFLAGS) -o $(GNOME_LIB) $(GNOME_OBJECTS) $(GNOMELIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(GNOME_LIB) $(GNOME_OBJECTS) $(GNOMELIBS)
+
+ gnome.o: gnome.c
+ $(CC) $(CFLAGS) $(GNOMECFLAGS) -c gnome.c
+@@ -221,7 +221,7 @@ gnome_stats.o: gnome_stats.c gnome_stats.h
+ make_mozilla:$(MOZILLA_LIB)
+
+ $(MOZILLA_LIB): $(MOZILLA_OBJECTS)
+- $(CXX) -o $(MOZILLA_LIB) $(MOZILLA_OBJECTS) $(MOZILLALFLAGS) ${MOZILLA_LIBS}
++ $(CXX) $(LDFLAGS) -o $(MOZILLA_LIB) $(MOZILLA_OBJECTS) $(MOZILLALFLAGS) ${MOZILLA_LIBS}
+
+ xpcom.o: xpcom.cpp
+ $(CXX) $(MOZILLACFLAGS) $(MOZILLAEXCLUDES) ${MOZILLA_INCLUDES} -c xpcom.cpp
+@@ -242,7 +242,7 @@ make_xulrunner:$(XULRUNNER_LIB)
+
+ $(XULRUNNER_LIB): $(XULRUNNER_OBJECTS)
+ echo -e "#include\nsize_t je_malloc_usable_size_in_advance(size_t n) {\nreturn n;\n}" | gcc --shared -xc - -o libswt-xulrunner-fix.so
+- $(CXX) -o $(XULRUNNER_LIB) $(XULRUNNER_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
++ $(CXX) $(LDFLAGS) -o $(XULRUNNER_LIB) $(XULRUNNER_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
+
+ xpcomxul.o: xpcom.cpp
+ $(CXX) -o xpcomxul.o $(MOZILLACFLAGS) $(XULRUNNEREXCLUDES) ${XULRUNNER_INCLUDES} -c xpcom.cpp
+@@ -262,7 +262,7 @@ xpcomxul_stats.o: xpcom_stats.cpp
+ make_xpcominit:$(XPCOMINIT_LIB)
+
+ $(XPCOMINIT_LIB): $(XPCOMINIT_OBJECTS)
+- $(CXX) -o $(XPCOMINIT_LIB) $(XPCOMINIT_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
++ $(CXX) $(LDFLAGS) -o $(XPCOMINIT_LIB) $(XPCOMINIT_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
+
+ xpcominit.o: xpcominit.cpp
+ $(CXX) $(MOZILLACFLAGS) ${XULRUNNER_INCLUDES} -c xpcominit.cpp
+@@ -279,7 +279,7 @@ xpcominit_stats.o: xpcominit_stats.cpp
+ make_webkit: $(WEBKIT_LIB)
+
+ $(WEBKIT_LIB): $(WEBKIT_OBJECTS)
+- $(CC) $(LFLAGS) -o $(WEBKIT_LIB) $(WEBKIT_OBJECTS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(WEBKIT_LIB) $(WEBKIT_OBJECTS)
+
+ webkit.o: webkitgtk.c
+ $(CC) $(CFLAGS) $(WEBKITCFLAGS) -c webkitgtk.c -o webkit.o
+@@ -296,7 +296,7 @@ webkit_stats.o: webkitgtk_stats.c webkitgtk_stats.h
+ make_glx: $(GLX_LIB)
+
+ $(GLX_LIB): $(GLX_OBJECTS)
+- $(CC) $(LFLAGS) -o $(GLX_LIB) $(GLX_OBJECTS) $(GLXLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(GLX_LIB) $(GLX_OBJECTS) $(GLXLIBS)
+
+ glx.o: glx.c
+ $(CC) $(CFLAGS) $(GLXCFLAGS) -c glx.c
diff --git a/dev-java/swt/files/swt-3.8-manifest b/dev-java/swt/files/swt-3.8-manifest
new file mode 100644
index 000000000..ee9e31c37
--- /dev/null
+++ b/dev-java/swt/files/swt-3.8-manifest
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Fragment-Host: org.eclipse.swt; bundle-version="[3.0.0,4.0.0)"
+Bundle-SymbolicName: org.eclipse.swt.gtk.linux.SWT_ARCH; singleton:=true
+Bundle-Version: 3.8
+Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=SWT_ARCH))
+Export-Package: org.eclipse.swt.internal.accessibility.gtk; x-internal:=true,
+ org.eclipse.swt.internal.cairo; x-internal:=true,
+ org.eclipse.swt.internal.cde; x-internal:=true,
+ org.eclipse.swt.internal.gnome; x-internal:=true,
+ org.eclipse.swt.internal.gtk; x-internal:=true,
+ org.eclipse.swt.internal.opengl.glx; x-internal:=true
+ org.eclipse.swt.internal.webkit; x-internal:=true
+
diff --git a/dev-java/swt/files/swt-3.8.2-gthread.patch b/dev-java/swt/files/swt-3.8.2-gthread.patch
new file mode 100644
index 000000000..6f99a5938
--- /dev/null
+++ b/dev-java/swt/files/swt-3.8.2-gthread.patch
@@ -0,0 +1,44 @@
+From c973b9b9be568ebbce618985bc5ee440babf8ab1 Mon Sep 17 00:00:00 2001
+From: Jakub Adam
+Date: Thu, 27 Jun 2013 10:16:49 +0200
+Subject: [PATCH 1/2] fix-glib-2.35-compatibility
+
+g_thread_init() and g_thread_supported() are deprecated and don't
+have to be used anymore.
+
+---
+ os.c | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+--- a/os.c
++++ b/os.c
+@@ -4444,9 +4444,9 @@ fail:
+ JNIEXPORT void JNICALL OS_NATIVE(_1g_1thread_1init)
+ (JNIEnv *env, jclass that, jintLong arg0)
+ {
+- OS_NATIVE_ENTER(env, that, _1g_1thread_1init_FUNC);
++ /*OS_NATIVE_ENTER(env, that, _1g_1thread_1init_FUNC);
+ g_thread_init((GThreadFunctions *)arg0);
+- OS_NATIVE_EXIT(env, that, _1g_1thread_1init_FUNC);
++ OS_NATIVE_EXIT(env, that, _1g_1thread_1init_FUNC);*/
+ }
+ #endif
+
+@@ -4454,11 +4454,12 @@ JNIEXPORT void JNICALL OS_NATIVE(_1g_1thread_1init)
+ JNIEXPORT jboolean JNICALL OS_NATIVE(_1g_1thread_1supported)
+ (JNIEnv *env, jclass that)
+ {
+- jboolean rc = 0;
++ /*jboolean rc = 0;
+ OS_NATIVE_ENTER(env, that, _1g_1thread_1supported_FUNC);
+ rc = (jboolean)g_thread_supported();
+ OS_NATIVE_EXIT(env, that, _1g_1thread_1supported_FUNC);
+- return rc;
++ return rc;*/
++ return 1;
+ }
+ #endif
+
+--
+1.7.10.4
+
diff --git a/dev-java/swt/files/swt-4.10-as-needed-and-flag-fixes.patch b/dev-java/swt/files/swt-4.10-as-needed-and-flag-fixes.patch
new file mode 100644
index 000000000..09bed21d5
--- /dev/null
+++ b/dev-java/swt/files/swt-4.10-as-needed-and-flag-fixes.patch
@@ -0,0 +1,82 @@
+diff -Naur a/make_linux.mak b/make_linux.mak
+--- a/make_linux.mak 2019-01-07 14:08:00.269147198 +0100
++++ b/make_linux.mak 2019-01-07 14:10:28.645155241 +0100
+@@ -101,7 +101,7 @@
+ WEBKIT_OBJECTS = swt.o webkitgtk.o webkitgtk_structs.o webkitgtk_stats.o webkitgtk_custom.o
+ GLX_OBJECTS = swt.o glx.o glx_structs.o glx_stats.o
+
+-CFLAGS := $(CFLAGS) \
++CFLAGS += -fPIC \
+ -DSWT_VERSION=$(SWT_VERSION) \
+ $(NATIVE_STATS) \
+ $(SWT_DEBUG) \
+@@ -129,13 +129,13 @@
+ make_swt: $(SWT_LIB) $(SWTPI_LIB)
+
+ $(SWT_LIB): $(SWT_OBJECTS)
+- $(CC) $(LFLAGS) -o $(SWT_LIB) $(SWT_OBJECTS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(SWT_LIB) $(SWT_OBJECTS)
+
+ callback.o: callback.c callback.h
+ $(CC) $(CFLAGS) -DUSE_ASSEMBLER -c callback.c
+
+ $(SWTPI_LIB): $(SWTPI_OBJECTS)
+- $(CC) $(LFLAGS) -o $(SWTPI_LIB) $(SWTPI_OBJECTS) $(GTKLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(SWTPI_LIB) $(SWTPI_OBJECTS) $(GTKLIBS)
+
+ swt.o: swt.c swt.h
+ $(CC) $(CFLAGS) -c swt.c
+@@ -154,7 +154,7 @@
+ make_cairo: $(CAIRO_LIB)
+
+ $(CAIRO_LIB): $(CAIRO_OBJECTS)
+- $(CC) $(LFLAGS) -o $(CAIRO_LIB) $(CAIRO_OBJECTS) $(CAIROLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(CAIRO_LIB) $(CAIRO_OBJECTS) $(CAIROLIBS)
+
+ cairo.o: cairo.c cairo.h swt.h
+ $(CC) $(CFLAGS) $(CAIROCFLAGS) -c cairo.c
+@@ -169,7 +169,7 @@
+ make_awt:$(AWT_LIB)
+
+ $(AWT_LIB): $(AWT_OBJECTS)
+- $(CC) $(AWT_LFLAGS) -o $(AWT_LIB) $(AWT_OBJECTS) $(AWT_LIBS)
++ $(CC) -fPIC $(LDFLAGS) $(AWT_LFLAGS) -o $(AWT_LIB) $(AWT_OBJECTS) $(AWT_LIBS)
+
+ #
+ # Atk lib
+@@ -177,7 +177,7 @@
+ make_atk: $(ATK_LIB)
+
+ $(ATK_LIB): $(ATK_OBJECTS)
+- $(CC) $(LFLAGS) -o $(ATK_LIB) $(ATK_OBJECTS) $(ATKLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(ATK_LIB) $(ATK_OBJECTS) $(ATKLIBS)
+
+ atk.o: atk.c atk.h
+ $(CC) $(CFLAGS) $(ATKCFLAGS) -c atk.c
+@@ -198,7 +198,7 @@
+ endif
+
+ $(WEBKIT_LIB): $(WEBKIT_OBJECTS)
+- $(CC) $(LFLAGS) -o $(WEBKIT_LIB) $(WEBKIT_OBJECTS) $(WEBKITLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(WEBKIT_LIB) $(WEBKIT_OBJECTS) $(WEBKITLIBS)
+
+ webkitgtk.o: webkitgtk.c webkitgtk_custom.h
+ $(CC) $(CFLAGS) $(WEBKITCFLAGS) -c webkitgtk.c
+@@ -217,7 +217,7 @@
+ make_webkit2extension: $(WEBKIT_EXTENSION_LIB)
+
+ $(WEBKIT_EXTENSION_LIB) : webkitgtk_extension.o
+- $(CC) $(LFLAGS) -o $@ $^ $(WEBKIT_EXTENSION_LFLAGS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $@ $^ $(WEBKIT_EXTENSION_LFLAGS)
+
+ webkitgtk_extension.o : webkitgtk_extension.c
+ $(CC) $(CFLAGS) $(WEBKIT_EXTENSION_CFLAGS) ${SWT_PTR_CFLAGS} -fPIC -c $^
+@@ -228,7 +228,7 @@
+ make_glx: $(GLX_LIB)
+
+ $(GLX_LIB): $(GLX_OBJECTS)
+- $(CC) $(LFLAGS) -o $(GLX_LIB) $(GLX_OBJECTS) $(GLXLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(GLX_LIB) $(GLX_OBJECTS) $(GLXLIBS)
+
+ glx.o: glx.c
+ $(CC) $(CFLAGS) $(GLXCFLAGS) -c glx.c
diff --git a/dev-java/swt/files/swt-4.10-manifest b/dev-java/swt/files/swt-4.10-manifest
new file mode 100644
index 000000000..230d33f7b
--- /dev/null
+++ b/dev-java/swt/files/swt-4.10-manifest
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Fragment-Host: org.eclipse.swt; bundle-version=4.5.1
+Bundle-SymbolicName: org.eclipse.swt.gtk.linux.SWT_ARCH; singleton:=true
+Bundle-Version: 4.5
+Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=SWT_ARCH))
+Export-Package: org.eclipse.swt.internal.accessibility.gtk; x-internal:=true,
+ org.eclipse.swt.internal.cairo; x-internal:=true,
+ org.eclipse.swt.internal.cde; x-internal:=true,
+ org.eclipse.swt.internal.gnome; x-internal:=true,
+ org.eclipse.swt.internal.gtk; x-internal:=true,
+ org.eclipse.swt.internal.opengl.glx; x-internal:=true
+ org.eclipse.swt.internal.webkit; x-internal:=true
diff --git a/dev-java/swt/files/swt-4.2-as-needed-and-flag-fixes.patch b/dev-java/swt/files/swt-4.2-as-needed-and-flag-fixes.patch
new file mode 100644
index 000000000..98773c155
--- /dev/null
+++ b/dev-java/swt/files/swt-4.2-as-needed-and-flag-fixes.patch
@@ -0,0 +1,243 @@
+--- make_linux.mak- 2012-07-02 00:49:48.729100052 +0000
++++ make_linux.mak 2012-07-02 00:53:16.753499389 +0000
+@@ -66,7 +66,7 @@
+ # Uncomment for Native Stats tool
+ #NATIVE_STATS = -DNATIVE_STATS
+
+-MOZILLACFLAGS = -O \
++MOZILLACFLAGS = $(CXXFLAGS) \
+ -DSWT_VERSION=$(SWT_VERSION) \
+ $(NATIVE_STATS) \
+ -DMOZILLA_STRICT_API=1 \
+@@ -106,7 +106,7 @@
+ WEBKIT_OBJECTS = swt.o webkit.o webkit_structs.o webkit_stats.o
+ GLX_OBJECTS = swt.o glx.o glx_structs.o glx_stats.o
+
+-CFLAGS = -O -Wall \
++CFLAGS += \
+ -DSWT_VERSION=$(SWT_VERSION) \
+ $(NATIVE_STATS) \
+ -DLINUX -DGTK \
+@@ -130,13 +130,13 @@
+ make_swt: $(SWT_LIB) $(SWTPI_LIB)
+
+ $(SWT_LIB): $(SWT_OBJECTS)
+- $(CC) $(LFLAGS) -o $(SWT_LIB) $(SWT_OBJECTS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(SWT_LIB) $(SWT_OBJECTS)
+
+ callback.o: callback.c callback.h
+ $(CC) $(CFLAGS) -DUSE_ASSEMBLER -c callback.c
+
+ $(SWTPI_LIB): $(SWTPI_OBJECTS)
+- $(CC) $(LFLAGS) -o $(SWTPI_LIB) $(SWTPI_OBJECTS) $(GTKLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(SWTPI_LIB) $(SWTPI_OBJECTS) $(GTKLIBS)
+
+ swt.o: swt.c swt.h
+ $(CC) $(CFLAGS) -c swt.c
+@@ -155,7 +155,7 @@
+ make_cairo: $(CAIRO_LIB)
+
+ $(CAIRO_LIB): $(CAIRO_OBJECTS)
+- $(CC) $(LFLAGS) -o $(CAIRO_LIB) $(CAIRO_OBJECTS) $(CAIROLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(CAIRO_LIB) $(CAIRO_OBJECTS) $(CAIROLIBS)
+
+ cairo.o: cairo.c cairo.h swt.h
+ $(CC) $(CFLAGS) $(CAIROCFLAGS) -c cairo.c
+@@ -171,7 +171,7 @@
+ make_cde: $(CDE_LIB)
+
+ $(CDE_LIB): $(CDE_OBJECTS)
+- $(CC) $(LFLAGS) -o $(CDE_LIB) $(CDE_OBJECTS) $(CDE_LIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(CDE_LIB) $(CDE_OBJECTS) $(CDE_LIBS)
+
+ #
+ # AWT lib
+@@ -179,7 +179,7 @@
+ make_awt:$(AWT_LIB)
+
+ $(AWT_LIB): $(AWT_OBJECTS)
+- $(CC) $(AWT_LFLAGS) -o $(AWT_LIB) $(AWT_OBJECTS) $(AWT_LIBS)
++ $(CC) $(LDFLAGS) $(AWT_LFLAGS) -o $(AWT_LIB) $(AWT_OBJECTS) $(AWT_LIBS)
+
+ #
+ # Atk lib
+@@ -187,7 +187,7 @@
+ make_atk: $(ATK_LIB)
+
+ $(ATK_LIB): $(ATK_OBJECTS)
+- $(CC) $(LFLAGS) -o $(ATK_LIB) $(ATK_OBJECTS) $(ATKLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(ATK_LIB) $(ATK_OBJECTS) $(ATKLIBS)
+
+ atk.o: atk.c atk.h
+ $(CC) $(CFLAGS) $(ATKCFLAGS) -c atk.c
+@@ -204,7 +204,7 @@
+ make_gnome: $(GNOME_LIB)
+
+ $(GNOME_LIB): $(GNOME_OBJECTS)
+- $(CC) $(LFLAGS) -o $(GNOME_LIB) $(GNOME_OBJECTS) $(GNOMELIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(GNOME_LIB) $(GNOME_OBJECTS) $(GNOMELIBS)
+
+ gnome.o: gnome.c
+ $(CC) $(CFLAGS) $(GNOMECFLAGS) -c gnome.c
+@@ -221,7 +221,7 @@
+ make_mozilla:$(MOZILLA_LIB)
+
+ $(MOZILLA_LIB): $(MOZILLA_OBJECTS)
+- $(CXX) -o $(MOZILLA_LIB) $(MOZILLA_OBJECTS) $(MOZILLALFLAGS) ${MOZILLA_LIBS}
++ $(CXX) $(LDFLAGS) -o $(MOZILLA_LIB) $(MOZILLA_OBJECTS) $(MOZILLALFLAGS) ${MOZILLA_LIBS}
+
+ xpcom.o: xpcom.cpp
+ $(CXX) $(MOZILLACFLAGS) $(MOZILLAEXCLUDES) ${MOZILLA_INCLUDES} -c xpcom.cpp
+@@ -242,7 +242,7 @@
+
+ $(XULRUNNER_LIB): $(XULRUNNER_OBJECTS)
+ echo -e "#include\nsize_t je_malloc_usable_size_in_advance(size_t n) {\nreturn n;\n}" | gcc --shared -xc - -o libswt-xulrunner-fix.so
+- $(CXX) -o $(XULRUNNER_LIB) $(XULRUNNER_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
++ $(CXX) $(LDFLAGS) -o $(XULRUNNER_LIB) $(XULRUNNER_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
+
+ xpcomxul.o: xpcom.cpp
+ $(CXX) -o xpcomxul.o $(MOZILLACFLAGS) $(XULRUNNEREXCLUDES) ${XULRUNNER_INCLUDES} -c xpcom.cpp
+@@ -262,7 +262,7 @@
+ make_xpcominit:$(XPCOMINIT_LIB)
+
+ $(XPCOMINIT_LIB): $(XPCOMINIT_OBJECTS)
+- $(CXX) -o $(XPCOMINIT_LIB) $(XPCOMINIT_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
++ $(CXX) $(LDFLAGS) -o $(XPCOMINIT_LIB) $(XPCOMINIT_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
+
+ xpcominit.o: xpcominit.cpp
+ $(CXX) $(MOZILLACFLAGS) ${XULRUNNER_INCLUDES} -c xpcominit.cpp
+@@ -279,7 +279,7 @@
+ make_webkit: $(WEBKIT_LIB)
+
+ $(WEBKIT_LIB): $(WEBKIT_OBJECTS)
+- $(CC) $(LFLAGS) -o $(WEBKIT_LIB) $(WEBKIT_OBJECTS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(WEBKIT_LIB) $(WEBKIT_OBJECTS)
+
+ webkit.o: webkitgtk.c
+ $(CC) $(CFLAGS) $(WEBKITCFLAGS) -c webkitgtk.c -o webkit.o
+@@ -296,7 +296,7 @@
+ make_glx: $(GLX_LIB)
+
+ $(GLX_LIB): $(GLX_OBJECTS)
+- $(CC) $(LFLAGS) -o $(GLX_LIB) $(GLX_OBJECTS) $(GLXLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(GLX_LIB) $(GLX_OBJECTS) $(GLXLIBS)
+
+ glx.o: glx.c
+ $(CC) $(CFLAGS) $(GLXCFLAGS) -c glx.c
+--- make_freebsd.mak- 2012-07-02 00:53:28.553351871 +0000
++++ make_freebsd.mak 2012-07-02 00:55:37.369741444 +0000
+@@ -64,7 +64,7 @@
+ # Uncomment for Native Stats tool
+ #NATIVE_STATS = -DNATIVE_STATS
+
+-MOZILLACFLAGS = -O \
++MOZILLACFLAGS += \
+ -DSWT_VERSION=$(SWT_VERSION) \
+ $(NATIVE_STATS) \
+ -DMOZILLA_STRICT_API=1 \
+@@ -91,7 +91,7 @@
+ XPCOMINIT_OBJECTS = swt.o xpcominit.o xpcominit_structs.o xpcominit_stats.o
+ GLX_OBJECTS = swt.o glx.o glx_structs.o glx_stats.o
+
+-CFLAGS = -O -Wall \
++CFLAGS += \
+ -DSWT_VERSION=$(SWT_VERSION) \
+ $(NATIVE_STATS) \
+ -DFREEBSD -DGTK \
+@@ -115,13 +115,13 @@
+ make_swt: $(SWT_LIB) $(SWTPI_LIB)
+
+ $(SWT_LIB): $(SWT_OBJECTS)
+- $(CC) $(LFLAGS) -o $(SWT_LIB) $(SWT_OBJECTS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(SWT_LIB) $(SWT_OBJECTS)
+
+ callback.o: callback.c callback.h
+ $(CC) $(CFLAGS) -DUSE_ASSEMBLER -c callback.c
+
+ $(SWTPI_LIB): $(SWTPI_OBJECTS)
+- $(CC) $(LFLAGS) -o $(SWTPI_LIB) $(SWTPI_OBJECTS) $(GTKLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(SWTPI_LIB) $(SWTPI_OBJECTS) $(GTKLIBS)
+
+ swt.o: swt.c swt.h
+ $(CC) $(CFLAGS) -c swt.c
+@@ -140,7 +140,7 @@
+ make_cairo: $(CAIRO_LIB)
+
+ $(CAIRO_LIB): $(CAIRO_OBJECTS)
+- $(CC) $(LFLAGS) -o $(CAIRO_LIB) $(CAIRO_OBJECTS) $(CAIROLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(CAIRO_LIB) $(CAIRO_OBJECTS) $(CAIROLIBS)
+
+ cairo.o: cairo.c cairo.h swt.h
+ $(CC) $(CFLAGS) $(CAIROCFLAGS) -c cairo.c
+@@ -156,7 +156,7 @@
+ make_cde: $(CDE_LIB)
+
+ $(CDE_LIB): $(CDE_OBJECTS)
+- $(CC) $(LFLAGS) -o $(CDE_LIB) $(CDE_OBJECTS) $(CDE_LIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(CDE_LIB) $(CDE_OBJECTS) $(CDE_LIBS)
+
+ #
+ # AWT lib
+@@ -164,7 +164,7 @@
+ make_awt:$(AWT_LIB)
+
+ $(AWT_LIB): $(AWT_OBJECTS)
+- $(CC) $(AWT_LFLAGS) -o $(AWT_LIB) $(AWT_OBJECTS) $(AWT_LIBS)
++ $(CC) $(LDFLAGS) $(AWT_LFLAGS) -o $(AWT_LIB) $(AWT_OBJECTS) $(AWT_LIBS)
+
+ #
+ # Atk lib
+@@ -172,7 +172,7 @@
+ make_atk: $(ATK_LIB)
+
+ $(ATK_LIB): $(ATK_OBJECTS)
+- $(CC) $(LFLAGS) -o $(ATK_LIB) $(ATK_OBJECTS) $(ATKLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(ATK_LIB) $(ATK_OBJECTS) $(ATKLIBS)
+
+ atk.o: atk.c atk.h
+ $(CC) $(CFLAGS) $(ATKCFLAGS) -c atk.c
+@@ -189,7 +189,7 @@
+ make_gnome: $(GNOME_LIB)
+
+ $(GNOME_LIB): $(GNOME_OBJECTS)
+- $(CC) $(LFLAGS) -o $(GNOME_LIB) $(GNOME_OBJECTS) $(GNOMELIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(GNOME_LIB) $(GNOME_OBJECTS) $(GNOMELIBS)
+
+ gnome.o: gnome.c
+ $(CC) $(CFLAGS) $(GNOMECFLAGS) -c gnome.c
+@@ -206,7 +206,7 @@
+ make_mozilla:$(MOZILLA_LIB)
+
+ $(MOZILLA_LIB): $(MOZILLA_OBJECTS)
+- $(CXX) -o $(MOZILLA_LIB) $(MOZILLA_OBJECTS) $(MOZILLALFLAGS) ${MOZILLA_LIBS}
++ $(CXX) $(LDFLAGS) -o $(MOZILLA_LIB) $(MOZILLA_OBJECTS) $(MOZILLALFLAGS) ${MOZILLA_LIBS}
+
+ xpcom.o: xpcom.cpp
+ $(CXX) $(MOZILLACFLAGS) ${MOZILLA_INCLUDES} -c xpcom.cpp
+@@ -226,7 +226,7 @@
+ make_xulrunner:$(XULRUNNER_LIB)
+
+ $(XULRUNNER_LIB): $(XULRUNNER_OBJECTS)
+- $(CXX) -o $(XULRUNNER_LIB) $(XULRUNNER_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
++ $(CXX) $(LDFLAGS) -o $(XULRUNNER_LIB) $(XULRUNNER_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
+
+ xpcomxul.o: xpcom.cpp
+ $(CXX) -o xpcomxul.o $(MOZILLACFLAGS) ${XULRUNNER_INCLUDES} -c xpcom.cpp
+@@ -252,7 +252,7 @@
+ make_xpcominit:$(XPCOMINIT_LIB)
+
+ $(XPCOMINIT_LIB): $(XPCOMINIT_OBJECTS)
+- $(CXX) -o $(XPCOMINIT_LIB) $(XPCOMINIT_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
++ $(CXX) $(LDFLAGS) -o $(XPCOMINIT_LIB) $(XPCOMINIT_OBJECTS) $(MOZILLALFLAGS) ${XULRUNNER_LIBS}
+
+ xpcominit.o: xpcominit.cpp
+ $(CXX) $(MOZILLACFLAGS) ${XULRUNNER_INCLUDES} -c xpcominit.cpp
+@@ -269,7 +269,7 @@
+ make_glx: $(GLX_LIB)
+
+ $(GLX_LIB): $(GLX_OBJECTS)
+- $(CC) $(LFLAGS) -o $(GLX_LIB) $(GLX_OBJECTS) $(GLXLIBS)
++ $(CC) $(LDFLAGS) $(LFLAGS) -o $(GLX_LIB) $(GLX_OBJECTS) $(GLXLIBS)
+
+ glx.o: glx.c
+ $(CC) $(CFLAGS) $(GLXCFLAGS) -c glx.c
diff --git a/dev-java/swt/files/swt-4.2-manifest b/dev-java/swt/files/swt-4.2-manifest
new file mode 100644
index 000000000..36736a0db
--- /dev/null
+++ b/dev-java/swt/files/swt-4.2-manifest
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Fragment-Host: org.eclipse.swt; bundle-version=4.2.0
+Bundle-SymbolicName: org.eclipse.swt.gtk.linux.SWT_ARCH; singleton:=true
+Bundle-Version: 4.2
+Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=SWT_ARCH))
+Export-Package: org.eclipse.swt.internal.accessibility.gtk; x-internal:=true,
+ org.eclipse.swt.internal.cairo; x-internal:=true,
+ org.eclipse.swt.internal.cde; x-internal:=true,
+ org.eclipse.swt.internal.gnome; x-internal:=true,
+ org.eclipse.swt.internal.gtk; x-internal:=true,
+ org.eclipse.swt.internal.opengl.glx; x-internal:=true
+ org.eclipse.swt.internal.webkit; x-internal:=true
diff --git a/dev-java/swt/swt-4.10-r1.ebuild b/dev-java/swt/swt-4.10-r1.ebuild
new file mode 100644
index 000000000..9c064c811
--- /dev/null
+++ b/dev-java/swt/swt-4.10-r1.ebuild
@@ -0,0 +1,169 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit eutils flag-o-matic java-pkg-2 java-ant-2 toolchain-funcs java-osgi
+
+MY_PV="${PV/_rc/RC}"
+MY_DMF="http://download.eclipse.org/eclipse/downloads/drops4/R-${MY_PV}-201812060815"
+MY_P="${PN}-${MY_PV}"
+
+DESCRIPTION="GTK based SWT Library"
+HOMEPAGE="http://www.eclipse.org/"
+SRC_URI="
+ amd64? ( ${MY_DMF}/${MY_P}-gtk-linux-x86_64.zip )
+ ppc64? ( ${MY_DMF}/${MY_P}-gtk-linux-ppc64le.zip )"
+
+LICENSE="CPL-1.0 LGPL-2.1 MPL-1.1"
+SLOT="4.10"
+KEYWORDS="~amd64 ~ppc64"
+IUSE="cairo opengl webkit"
+
+COMMON_DEP="
+ >=dev-libs/atk-1.10.2
+ >=dev-libs/glib-2.32
+ >=x11-libs/gtk+-2.6.8:2
+ x11-libs/libXtst
+ cairo? ( >=x11-libs/cairo-1.4.14 )
+ opengl? (
+ virtual/glu
+ virtual/opengl
+ )
+ webkit? (
+ net-libs/webkit-gtk:4
+ )"
+DEPEND="${COMMON_DEP}
+ >=virtual/jdk-1.8
+ app-arch/unzip
+ virtual/pkgconfig
+ x11-base/xorg-proto
+ x11-libs/libX11
+ x11-libs/libXrender
+ x11-libs/libXt
+ >=x11-libs/libXtst-1.1.0"
+RDEPEND="${COMMON_DEP}
+ >=virtual/jre-1.8"
+
+S="${WORKDIR}"
+
+# JNI libraries don't need SONAME, bug #253756
+QA_SONAME='usr/lib[^/]*/libswt-[^/]+.so'
+
+PATCHES=(
+ "${FILESDIR}"/${P}-as-needed-and-flag-fixes.patch
+)
+
+src_unpack() {
+ local DISTFILE=${A}
+ unzip -jq "${DISTDIR}"/${DISTFILE} swt.jar src.zip || die "Unable to extract distfile"
+ unpack "./src.zip"
+
+ # Cleanup the redirtied directory structure
+ rm -rf about_files/ || die
+}
+
+src_prepare() {
+ # Replace the build.xml to allow compilation without Eclipse tasks
+ cp "${FILESDIR}/build.xml" "${S}/build.xml" || die "Unable to update build.xml"
+ mkdir "${S}/src" && mv "${S}/org" "${S}/src" || die "Unable to restructure SWT sources"
+
+ # Apply patches
+ default
+
+ # Define missing g_thread_supported() to be already started.
+ sed -i '1s/^/#define g_thread_supported() 1\n\n/' "${S}"/os_custom.h || die
+
+ # Webext is also in the library directory
+ sed -i 's|findResource([^,]\+|findResource("swt"|' \
+ "${S}"/src/org/eclipse/swt/browser/WebKit.java || die
+}
+
+src_compile() {
+ # Drop jikes support as it seems to be unfriendly with SWT
+ java-pkg_filter-compiler jikes
+
+ local AWT_ARCH
+ local JAWTSO="libjawt.so"
+ if [[ $(tc-arch) == 'ppc64' ]] ; then
+ AWT_ARCH="ppc64"
+ else
+ AWT_ARCH="amd64"
+ fi
+ if [[ -f "${JAVA_HOME}/jre/lib/${AWT_ARCH}/${JAWTSO}" ]]; then
+ export AWT_LIB_PATH="${JAVA_HOME}/jre/lib/${AWT_ARCH}"
+ elif [[ -f "${JAVA_HOME}/jre/bin/${JAWTSO}" ]]; then
+ export AWT_LIB_PATH="${JAVA_HOME}/jre/bin"
+ elif [[ -f "${JAVA_HOME}/$(get_libdir)/${JAWTSO}" ]] ; then
+ export AWT_LIB_PATH="${JAVA_HOME}/$(get_libdir)"
+ elif [[ -f "${JAVA_HOME}/lib/${JAWTSO}" ]] ; then
+ export AWT_LIB_PATH="${JAVA_HOME}/lib"
+ else
+ eerror "${JAWTSO} not found in the JDK being used for compilation!"
+ die "cannot build AWT library"
+ fi
+
+ # Fix the pointer size for AMD64
+ export SWT_PTR_CFLAGS=-DJNI64
+
+ # Bug #461784, g_thread_init is deprecated since glib-2.32.
+ append-cflags -DNO__1g_1thread_1init
+
+ local make="emake -f make_linux.mak NO_STRIP=y CC=$(tc-getCC) CXX=$(tc-getCXX)"
+
+ einfo "Building AWT library"
+ ${make} make_awt AWT_LIBS="-L\$(AWT_LIB_PATH) -Wl,-rpath,\$(AWT_LIB_PATH) -ljawt \`pkg-config --libs x11\`"
+
+ einfo "Building SWT library"
+ ${make} make_swt
+
+ einfo "Building JAVA-AT-SPI bridge"
+ ${make} make_atk
+
+ if use cairo ; then
+ einfo "Building CAIRO support"
+ ${make} make_cairo
+ fi
+
+ if use opengl ; then
+ einfo "Building OpenGL component"
+ ${make} make_glx
+ fi
+
+ if use webkit ; then
+ einfo "Building WebKit component"
+ ${make} make_webkit make_webkit2extension
+ fi
+
+ einfo "Building JNI libraries"
+ eant compile
+
+ einfo "Copying missing files"
+ cp -i "${S}/version.txt" "${S}/build/version.txt" || die
+ cp -i "${S}/src/org/eclipse/swt/internal/SWTMessages.properties" \
+ "${S}/build/org/eclipse/swt/internal/" || die
+ unzip swt.jar 'org/eclipse/swt/internal/gtk/*.css' -d build || die
+
+ einfo "Packing JNI libraries"
+ eant jar
+}
+
+src_install() {
+ local swtArch=${ARCH}
+ use amd64 && swtArch=x86_64
+
+ sed "s/SWT_ARCH/${swtArch}/" "${FILESDIR}/${PN}-${SLOT}-manifest" > "MANIFEST_TMP.MF" || die
+ remove_from_manifest() {
+ local subpkg=$1
+ sed -i -e "/ org.eclipse.swt.internal.$subpkg; x-internal:=true,/d" "MANIFEST_TMP.MF" || die
+ }
+ use cairo || remove_from_manifest cairo
+ use opengl || remove_from_manifest opengl.glx
+ use webkit || remove_from_manifest webkit
+ java-osgi_newjar-fromfile "swt.jar" "MANIFEST_TMP.MF" "Standard Widget Toolkit for GTK 2.0"
+
+ java-pkg_sointo "/usr/$(get_libdir)/swt"
+ java-pkg_doso *.so
+
+ dodoc about.html
+}
diff --git a/dev-util/recaf-bin/Manifest b/dev-util/recaf-bin/Manifest
index 6a91112b5..177a3b3ca 100644
--- a/dev-util/recaf-bin/Manifest
+++ b/dev-util/recaf-bin/Manifest
@@ -1,3 +1,3 @@
DIST recaf-1.15.10-patched.jar 49591747 BLAKE2B 851636021a9e28ecb030dde8633384e91dde0d14486e4f6090a3606ec794f7a9423665de702debf39b2bff62d9836c6762c05b087a0af1fd4205c4727a21f45a SHA512 7522cdfabc612ec09a800a95e7bc8e5c0e8189a31c6d23ca766f93be6640f32423ba9534954c522d8d86cef9e3a489a8d1e5bd7fbafbc73c58e0ff08bf24a97a
DIST recaf-1.15.10.jar 10203841 BLAKE2B 3c02b374922db441e3ccf304b3a532db47e78992c11b7878026f79a698f05caef6f28bf1bf34fa21a5c90dd03177d5b32b427f76b60a8c71d44853586ffdcf76 SHA512 7c9a724bea6b210f5b70a8635d36c54ad93e691ca2941109bb34e5e46bd0b4782ecc8b3115f1d5d02d7c3810942c3ec560b58413426aacc410784b064a14711b
-DIST recaf-2.0.0-J11-jar-with-dependencies.jar 61962806 BLAKE2B c88395e02ec4d9c34e8c390b0d765f8e74b32a2113e25c6fabdbd7a6a2b4fb80ca04dfc8338566196c88eeab9b5c4d48e3297473b9a4cfa3e4732bbd366d76e3 SHA512 931f107ec1b548ab8cf6676c3fc96c6217e4b0d4dd79d37ea1d616dc731bf383c5f8ed31d48adb49ad7d22200252dab0de60c2ca15c5160066b69748024e9f0d
+DIST recaf-bin-2.0.0_p5.jar 24305985 BLAKE2B 0b7179d8aaebbccc0cd455719c7e89dfa5c31ac35fb8ac88f14643f4526d5c4e4e260f9a7fdd904abc97adc5917f05cbd4544bda0dae41f7b5164203f77e899a SHA512 e8a77c9e054a0ce7ccca9f0bb8013f9560466fb06c6a66bd45b7227682524679df3912a96b8383aad0ab55b1970eaeacd491774130b9fb3d99b8afcd66b21c5e
diff --git a/dev-util/recaf-bin/recaf-bin-1.15.10.ebuild b/dev-util/recaf-bin/recaf-bin-1.15.10.ebuild
index e787ee1cc..8708a4935 100644
--- a/dev-util/recaf-bin/recaf-bin-1.15.10.ebuild
+++ b/dev-util/recaf-bin/recaf-bin-1.15.10.ebuild
@@ -16,7 +16,7 @@ KEYWORDS="~amd64"
IUSE="javafx"
#might work with oracle/javafx using https://gluonhq.com/products/javafx/
-RDEPEND="|| ( virtual/jre virtual/jdk:* )
+RDEPEND="|| ( virtual/jre:* virtual/jdk:* )
javafx? ( dev-java/openjdk[javafx?] ) "
DEPEND="${RDEPEND}"
diff --git a/dev-util/recaf-bin/recaf-bin-2.0.0.ebuild b/dev-util/recaf-bin/recaf-bin-2.0.0.ebuild
deleted file mode 100644
index de53d08ff..000000000
--- a/dev-util/recaf-bin/recaf-bin-2.0.0.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-MY_PN="recaf"
-
-DESCRIPTION="A modern Java bytecode editor"
-HOMEPAGE="https://col-e.github.io/Recaf/"
-SRC_URI="https://dev.pentoo.ch/~blshkv/distfiles/recaf-2.0.0-J11-jar-with-dependencies.jar"
-#SRC_URI="javafx? ( https://github.com/Col-E/Recaf/releases/download/${PV}/${MY_PN}-${PV}.jar )"
-# !javafx? ( https://dev.pentoo.ch/~blshkv/distfiles/${MY_PN}-${PV}-patched.jar )"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64"
-IUSE="javafx"
-
-#might work with oracle/javafx using https://gluonhq.com/products/javafx/
-RDEPEND="|| ( virtual/jre:11 virtual/jdk:11 )
- javafx? ( dev-java/openjdk[javafx?] ) "
-DEPEND="${RDEPEND}"
-
-S="${WORKDIR}"
-
-src_unpack() {
- dodir "${S}"
- cp -L "${DISTDIR}/${A}" "${S}/${MY_PN}.jar" || die
-}
-
-src_install() {
- insinto "/opt/${MY_PN}/"
- doins "${MY_PN}.jar"
-
- newbin - ${MY_PN} <<-EOF
- java -jar /opt/recaf/recaf.jar
- EOF
-
-}
diff --git a/dev-util/recaf-bin/recaf-bin-2.0.0_p5.ebuild b/dev-util/recaf-bin/recaf-bin-2.0.0_p5.ebuild
new file mode 100644
index 000000000..1fdcffd87
--- /dev/null
+++ b/dev-util/recaf-bin/recaf-bin-2.0.0_p5.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+MY_PN="recaf"
+MY_PV="$(ver_cut 1-3)-redesign.$(ver_cut 5)"
+
+DESCRIPTION="A modern Java bytecode editor"
+HOMEPAGE="https://col-e.github.io/Recaf/"
+SRC_URI="https://github.com/Col-E/Recaf/releases/download/${MY_PV}/recaf-$(ver_cut 1-3)-J8-jar-with-dependencies.jar -> ${P}.jar"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="system-openjfx"
+
+RDEPEND="system-openjfx? ( dev-java/openjfx )
+ virtual/jre:*"
+DEPEND="${RDEPEND}"
+
+S="${WORKDIR}"
+
+src_unpack() {
+ dodir "${S}"
+ cp -L "${DISTDIR}/${A}" "${S}/${MY_PN}.jar" || die
+}
+
+src_install() {
+ insinto "/opt/${MY_PN}/"
+ doins "${MY_PN}.jar"
+
+ newbin - ${MY_PN} <<-EOF
+ #!/bin/sh
+ FXLIB_PATH="/usr/lib64/openjfx-11/lib"
+
+ FXLIBS="\$FXLIB_PATH/javafx.base.jar:\$FXLIB_PATH/javafx.controls.jar:\
+\$FXLIB_PATH/javafx.graphics.jar:\
+/opt/${MY_PN}/recaf.jar"
+
+ java -cp \$FXLIBS me.coley.recaf.Recaf
+ EOF
+}
+
+pkg_postinst() {
+ if ! use system-openjfx; then
+ einfo "The tool is installed without system-openjfx use flag"
+ einfo "It will download openjfx during runtime into a home diretory"
+ fi
+}
diff --git a/profiles/pentoo/base/package.accept_keywords/dev-java b/profiles/pentoo/base/package.accept_keywords/dev-java
index e3ec2912e..e53570cd1 100644
--- a/profiles/pentoo/base/package.accept_keywords/dev-java
+++ b/profiles/pentoo/base/package.accept_keywords/dev-java
@@ -28,3 +28,4 @@ virtual/jre:11
#recaf
=dev-java/openjfx-11.0*
dev-java/swt:4.10
+~dev-java/ant-core-1.10.7