sys-devel/llvm: ppc64 stable wrt bug #705530
[gentoo.git] / dev-java / swt / swt-4.10.ebuild
1 # Copyright 1999-2019 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=6
5
6 inherit eutils flag-o-matic java-pkg-2 java-ant-2 toolchain-funcs java-osgi
7
8 MY_PV="${PV/_rc/RC}"
9 MY_DMF="http://download.eclipse.org/eclipse/downloads/drops4/R-${MY_PV}-201812060815"
10 MY_P="${PN}-${MY_PV}"
11
12 DESCRIPTION="GTK based SWT Library"
13 HOMEPAGE="http://www.eclipse.org/"
14 SRC_URI="
15         amd64? ( ${MY_DMF}/${MY_P}-gtk-linux-x86_64.zip )
16         ppc64? ( ${MY_DMF}/${MY_P}-gtk-linux-ppc64le.zip )"
17
18 LICENSE="CPL-1.0 LGPL-2.1 MPL-1.1"
19 SLOT="4.10"
20 KEYWORDS="~amd64 ~ppc64"
21 IUSE="cairo opengl webkit"
22
23 COMMON_DEP="
24         >=dev-libs/atk-1.10.2
25         >=dev-libs/glib-2.32
26         >=x11-libs/gtk+-2.6.8:2
27         x11-libs/libXtst
28         cairo? ( >=x11-libs/cairo-1.4.14 )
29         opengl? (
30                 virtual/glu
31                 virtual/opengl
32         )
33         webkit? (
34                 net-libs/webkit-gtk:4
35         )"
36 DEPEND="${COMMON_DEP}
37         >=virtual/jdk-1.8
38         app-arch/unzip
39         virtual/pkgconfig
40         x11-base/xorg-proto
41         x11-libs/libX11
42         x11-libs/libXrender
43         x11-libs/libXt
44         >=x11-libs/libXtst-1.1.0"
45 RDEPEND="${COMMON_DEP}
46         >=virtual/jre-1.8"
47
48 S="${WORKDIR}"
49
50 # JNI libraries don't need SONAME, bug #253756
51 QA_SONAME='usr/lib[^/]*/libswt-[^/]+.so'
52
53 PATCHES=(
54         "${FILESDIR}"/${P}-as-needed-and-flag-fixes.patch
55 )
56
57 src_unpack() {
58         local DISTFILE=${A}
59         unzip -jq "${DISTDIR}"/${DISTFILE} swt.jar src.zip || die "Unable to extract distfile"
60         unpack "./src.zip"
61
62         # Cleanup the redirtied directory structure
63         rm -rf about_files/ || die
64 }
65
66 src_prepare() {
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"
70
71         # Apply patches
72         default
73
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
76
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
80 }
81
82 src_compile() {
83         # Drop jikes support as it seems to be unfriendly with SWT
84         java-pkg_filter-compiler jikes
85
86         local AWT_ARCH
87         local JAWTSO="libjawt.so"
88         if [[ $(tc-arch) == 'ppc64' ]] ; then
89                 AWT_ARCH="ppc64"
90         else
91                 AWT_ARCH="amd64"
92         fi
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)"
99         else
100                 eerror "${JAWTSO} not found in the JDK being used for compilation!"
101                 die "cannot build AWT library"
102         fi
103
104         # Fix the pointer size for AMD64
105         export SWT_PTR_CFLAGS=-DJNI64
106
107         # Bug #461784, g_thread_init is deprecated since glib-2.32.
108         append-cflags -DNO__1g_1thread_1init
109
110         local make="emake -f make_linux.mak NO_STRIP=y CC=$(tc-getCC) CXX=$(tc-getCXX)"
111
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\`"
114
115         einfo "Building SWT library"
116         ${make} make_swt
117
118         einfo "Building JAVA-AT-SPI bridge"
119         ${make} make_atk
120
121         if use cairo ; then
122                 einfo "Building CAIRO support"
123                 ${make} make_cairo
124         fi
125
126         if use opengl ; then
127                 einfo "Building OpenGL component"
128                 ${make} make_glx
129         fi
130
131         if use webkit ; then
132                 einfo "Building WebKit component"
133                 ${make} make_webkit make_webkit2extension
134         fi
135
136         einfo "Building JNI libraries"
137         eant compile
138
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
144
145         einfo "Packing JNI libraries"
146         eant jar
147 }
148
149 src_install() {
150         local swtArch=${ARCH}
151         use amd64 && swtArch=x86_64
152
153         sed "s/SWT_ARCH/${swtArch}/" "${FILESDIR}/${PN}-${SLOT}-manifest" > "MANIFEST_TMP.MF" || die
154         remove_from_manifest() {
155                 local subpkg=$1
156                 sed -i -e "/ org.eclipse.swt.internal.$subpkg; x-internal:=true,/d" "MANIFEST_TMP.MF" || die
157         }
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"
162
163         java-pkg_sointo "/usr/$(get_libdir)/swt"
164         java-pkg_doso *.so
165
166         dodoc about.html
167 }