1 # Copyright 1999-2019 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
6 inherit eutils flag-o-matic java-pkg-2 java-ant-2 toolchain-funcs java-osgi
9 MY_DMF="http://download.eclipse.org/eclipse/downloads/drops4/R-${MY_PV}-201812060815"
12 DESCRIPTION="GTK based SWT Library"
13 HOMEPAGE="http://www.eclipse.org/"
15 amd64? ( ${MY_DMF}/${MY_P}-gtk-linux-x86_64.zip )
16 ppc64? ( ${MY_DMF}/${MY_P}-gtk-linux-ppc64le.zip )"
18 LICENSE="CPL-1.0 LGPL-2.1 MPL-1.1"
20 KEYWORDS="~amd64 ~ppc64"
21 IUSE="cairo opengl webkit"
26 >=x11-libs/gtk+-2.6.8:2
28 cairo? ( >=x11-libs/cairo-1.4.14 )
44 >=x11-libs/libXtst-1.1.0"
45 RDEPEND="${COMMON_DEP}
50 # JNI libraries don't need SONAME, bug #253756
51 QA_SONAME='usr/lib[^/]*/libswt-[^/]+.so'
54 "${FILESDIR}"/${P}-as-needed-and-flag-fixes.patch
59 unzip -jq "${DISTDIR}"/${DISTFILE} swt.jar src.zip || die "Unable to extract distfile"
62 # Cleanup the redirtied directory structure
63 rm -rf about_files/ || die
67 # Replace the build.xml to allow compilation without Eclipse tasks
68 cp "${FILESDIR}/build.xml" "${S}/build.xml" || die "Unable to update build.xml"
69 mkdir "${S}/src" && mv "${S}/org" "${S}/src" || die "Unable to restructure SWT sources"
74 # Define missing g_thread_supported() to be already started.
75 sed -i '1s/^/#define g_thread_supported() 1\n\n/' "${S}"/os_custom.h || die
77 # Webext is also in the library directory
78 sed -i 's|findResource([^,]\+|findResource("swt"|' \
79 "${S}"/src/org/eclipse/swt/browser/WebKit.java || die
83 # Drop jikes support as it seems to be unfriendly with SWT
84 java-pkg_filter-compiler jikes
87 local JAWTSO="libjawt.so"
88 if [[ $(tc-arch) == 'ppc64' ]] ; then
93 if [[ -f "${JAVA_HOME}/jre/lib/${AWT_ARCH}/${JAWTSO}" ]]; then
94 export AWT_LIB_PATH="${JAVA_HOME}/jre/lib/${AWT_ARCH}"
95 elif [[ -f "${JAVA_HOME}/jre/bin/${JAWTSO}" ]]; then
96 export AWT_LIB_PATH="${JAVA_HOME}/jre/bin"
97 elif [[ -f "${JAVA_HOME}/$(get_libdir)/${JAWTSO}" ]] ; then
98 export AWT_LIB_PATH="${JAVA_HOME}/$(get_libdir)"
100 eerror "${JAWTSO} not found in the JDK being used for compilation!"
101 die "cannot build AWT library"
104 # Fix the pointer size for AMD64
105 export SWT_PTR_CFLAGS=-DJNI64
107 # Bug #461784, g_thread_init is deprecated since glib-2.32.
108 append-cflags -DNO__1g_1thread_1init
110 local make="emake -f make_linux.mak NO_STRIP=y CC=$(tc-getCC) CXX=$(tc-getCXX)"
112 einfo "Building AWT library"
113 ${make} make_awt AWT_LIBS="-L\$(AWT_LIB_PATH) -Wl,-rpath,\$(AWT_LIB_PATH) -ljawt \`pkg-config --libs x11\`"
115 einfo "Building SWT library"
118 einfo "Building JAVA-AT-SPI bridge"
122 einfo "Building CAIRO support"
127 einfo "Building OpenGL component"
132 einfo "Building WebKit component"
133 ${make} make_webkit make_webkit2extension
136 einfo "Building JNI libraries"
139 einfo "Copying missing files"
140 cp -i "${S}/version.txt" "${S}/build/version.txt" || die
141 cp -i "${S}/src/org/eclipse/swt/internal/SWTMessages.properties" \
142 "${S}/build/org/eclipse/swt/internal/" || die
143 unzip swt.jar 'org/eclipse/swt/internal/gtk/*.css' -d build || die
145 einfo "Packing JNI libraries"
150 local swtArch=${ARCH}
151 use amd64 && swtArch=x86_64
153 sed "s/SWT_ARCH/${swtArch}/" "${FILESDIR}/${PN}-${SLOT}-manifest" > "MANIFEST_TMP.MF" || die
154 remove_from_manifest() {
156 sed -i -e "/ org.eclipse.swt.internal.$subpkg; x-internal:=true,/d" "MANIFEST_TMP.MF" || die
158 use cairo || remove_from_manifest cairo
159 use opengl || remove_from_manifest opengl.glx
160 use webkit || remove_from_manifest webkit
161 java-osgi_newjar-fromfile "swt.jar" "MANIFEST_TMP.MF" "Standard Widget Toolkit for GTK 2.0"
163 java-pkg_sointo "/usr/$(get_libdir)/swt"