[oe-commits] org.oe.dev java.bbclass: New bbclass for java recipes.

thebohemian commit openembedded-commits at lists.openembedded.org
Thu Jan 17 21:05:41 UTC 2008


java.bbclass: New bbclass for java recipes.
java-library.bbclass: New bbclass for java library (jar) recipes.
swt3.3-gtk: New recipe.
swt3.4-gtk: New recipe.
swt3.4-gtk-hildon: New recipe.

Author: thebohemian at openembedded.org
Branch: org.openembedded.dev
Revision: 9005ec7475f13738f08b14c023c457704df3f4af
ViewMTN: http://monotone.openembedded.org/revision/info/9005ec7475f13738f08b14c023c457704df3f4af
Files:
1
packages/swt
packages/swt/files
classes/java-library.bbclass
classes/java.bbclass
packages/swt/files/Makefile
packages/swt/files/swt-hildon.patch
packages/swt/swt-gtk.inc
packages/swt/swt3.3-gtk_3.3.1.bb
packages/swt/swt3.4-gtk-hildon_3.3+3.4M3.bb
packages/swt/swt3.4-gtk_3.3+3.4M3.bb
Diffs:

#
# mt diff -r396c39b9ce5e76666714c3b494fef67d986ea8d6 -r9005ec7475f13738f08b14c023c457704df3f4af
#
# 
# 
# add_dir "packages/swt"
# 
# add_dir "packages/swt/files"
# 
# add_file "classes/java-library.bbclass"
#  content [ba884554b916e0ee77988f7e42644eb50f0bcf92]
# 
# add_file "classes/java.bbclass"
#  content [4c1064a0c1677fa3f136bebf5736ace413a11f30]
# 
# add_file "packages/swt/files/Makefile"
#  content [6a0e11147f246807075b03fa7fa27e739f8b6e5d]
# 
# add_file "packages/swt/files/swt-hildon.patch"
#  content [cc6d6cb67722d189122f70411ef01e0639206d86]
# 
# add_file "packages/swt/swt-gtk.inc"
#  content [bcadfa700e7fc0872ab1d3a38e456f41e5ebefed]
# 
# add_file "packages/swt/swt3.3-gtk_3.3.1.bb"
#  content [ac1e6656f8358a0ce3928cd18fcdc21d2d36511e]
# 
# add_file "packages/swt/swt3.4-gtk-hildon_3.3+3.4M3.bb"
#  content [2659ee0d88eeab0a2f7012db8f483cc8a4e0373c]
# 
# add_file "packages/swt/swt3.4-gtk_3.3+3.4M3.bb"
#  content [cf948019bf5ff1d457cbe1999cc6651269b7ea70]
# 
============================================================
--- classes/java-library.bbclass	ba884554b916e0ee77988f7e42644eb50f0bcf92
+++ classes/java-library.bbclass	ba884554b916e0ee77988f7e42644eb50f0bcf92
@@ -0,0 +1,37 @@
+# Inherit this bbclass for each java recipe that builds a Java library (jar file[s]).
+#
+# It automatically adds important build dependencies, defines JPN (Java Package Name)
+# a package named ${JPN} whose contents are those of ${datadir}/java (the jar location).
+#
+# The JPN is basically lib${PN}-java but takes care of the fact that ${PN} already
+# starts with "lib" and/or ends with "-java". In case the "lib" prefix is part of
+# your package's normal name (e.g. liberator) the guessing is wrong and you have
+# to set JPN manually!
+
+inherit java
+
+def java_package_name(d):
+  import bb;
+
+  pre=""
+  post=""
+
+  pn = bb.data.getVar('PN', d, 1)
+  if not pn.startswith("lib"):
+    pre='lib'
+
+  if not pn.endswith("-java"):
+    post='-java'
+
+  return pre + pn + post
+
+JPN ?= "${@java_package_name(d)}"
+
+DEPENDS_prepend = "virtual/javac-native fastjar-native "
+
+PACKAGES = "${JPN}"
+
+PACKAGE_ARCH_${JPN} = "all"
+
+FILES_${JPN} = "${datadir_java}"
+
============================================================
--- classes/java.bbclass	4c1064a0c1677fa3f136bebf5736ace413a11f30
+++ classes/java.bbclass	4c1064a0c1677fa3f136bebf5736ace413a11f30
@@ -0,0 +1,62 @@
+# Defines the commonly used target directories and provides a convenience
+# function to install jar files.
+
+# Jar location on target
+datadir_java ?= ${datadir}/java
+
+# JNI library location on target
+libdir_jni ?= ${libdir}/jni
+
+STAGING_DATADIR_JAVA ?= ${STAGING_DATADIR}/java
+STAGING_LIBDIR_JNI ?= ${STAGING_LIBDIR}/jni
+
+oe_jarinstall() {
+  # Purpose: Install a jar file and create all the given symlinks to it.
+  # Example:
+  # oe_jarinstall foo-1.3.jar foo.jar
+  # Installs foo-1.3.jar and creates symlink foo.jar.
+  #
+  # oe_jarinstall -s foo-1.3.jar foo.jar
+  # Installs foo-1.3.jar to staging and creates symlink foo.jar.
+  #
+  # oe_jarinstall -r foo-1.3.jar foo_1_3.jar foo.jar
+  # Installs foo_1_3.jar as foo-1.3.jar and creates a symlink to this.
+  #
+  dir=${D}${datadir_java}
+  destname=""
+  while [ "$#" -gt 0 ]; do
+    case "$1" in
+    -s)
+      dir=${STAGING_DATADIR_JAVA}
+      ;;
+    -r)
+      shift
+      destname=$1
+      ;;
+    -*)
+      oefatal "oe_jarinstall: unknown option: $1"
+      ;;
+    *)
+      break;
+      ;;
+    esac
+    shift
+  done
+
+  jarname=$1
+  destname=${destname:-`basename $jarname`}
+  shift
+
+  install -d $dir
+  install -m 0644 $jarname $dir/$destname
+
+  # Creates symlinks out of the remaining arguments.
+  while [ "$#" -gt 0 ]; do
+    if [ -e $dir/$1 ]; then
+      oewarn "file was in the way. removing:" $dir/$1
+      rm $dir/$1
+    fi
+    ln -s $destname $dir/$1
+    shift
+  done
+}
============================================================
--- packages/swt/files/Makefile	6a0e11147f246807075b03fa7fa27e739f8b6e5d
+++ packages/swt/files/Makefile	6a0e11147f246807075b03fa7fa27e739f8b6e5d
@@ -0,0 +1,78 @@
+JAVA=swt-gtk-$(RELEASE).jar
+LIBRARIES=libswt.so libswt-pi.so libswt-mozilla.so
+CLEANFILES=*.files *.jar *.so* *-stamp
+
+RELEASE=OE_SWT_RELEASE
+SONAME_VERSION=OE_SWT_API_VERSION
+
+GCJ=gcj
+JAR=gjar
+JAVAC=javac -classpath .
+LDCONFIG=/sbin/ldconfig
+LN_S=ln -s
+RM=rm -f
+
+GCJFLAGS=-O2 -fPIC -fjni -shared
+
+LINK=$(GCJ) $(GCJFLAGS) -o $@ -Wl,-soname=lib$*.so.$(SONAME_VERSION)
+
+# Build without Jars
+#all:
+#	$(MAKE) -f make_linux.mak make_swt make_atk make_cairo
+
+# Build with Jars 
+all: $(JAVA) 
+	$(MAKE) -f make_linux.mak make_swt make_atk make_cairo
+
+# all: $(JAVA) $(LIBRARIES)
+#	$(MAKE) -f make_linux.mak make_swt make_atk make_gnome make_mozilla
+
+clean distclean:
+	$(RM) $(CLEANFILES)
+	$(RM) -r swt swt-pi swt-mozilla
+	-$(MAKE) -f make_linux.mak clean
+
+.PHONY: all clean distclean
+
+swt.files:
+	find org -name *.java \
+		-not -path org/eclipse/swt/internal\* \
+		-not -path org/eclipse/swt/browser\* | sort > $@
+
+swt-mozilla.files:
+	find org/eclipse/swt/browser org/eclipse/swt/internal/mozilla \
+		-name *.java | sort > $@
+
+swt-pi.files:
+	find org/eclipse/swt/internal -name *.java \
+		-not -path org/eclipse/swt/internal/mozilla\* | sort > $@
+
+%-stamp: %.files
+	mkdir -p $*
+	for i in `cat $<`; do \
+		if [ -e $*/$${i%java}class ]; then \
+			echo SKIPPING $$i; \
+		else \
+			echo $(JAVAC) -d $* $$i; \
+			$(JAVAC) -d $* $$i || exit $$?; \
+		fi \
+	done
+	touch $@
+
+%.jar: %-stamp
+	$(JAR) -C $* -cf $@ .
+
+lib%.so.$(RELEASE): %.jar
+	$(LINK) $<
+	$(LDCONFIG) -n .
+
+%.so: %.so.$(RELEASE)
+	$(LN_S) -f $< $@
+
+swt-gtk-$(RELEASE).jar: swt.jar swt-pi.jar swt-mozilla.jar
+	mkdir _jar
+	cd _jar && for i in $^; do $(JAR) -xf ../$$i || exit $$?; done
+	$(JAR) -C _jar -cf $@ org
+	rm -rf _jar
+
+.SECONDARY:
============================================================
--- packages/swt/files/swt-hildon.patch	cc6d6cb67722d189122f70411ef01e0639206d86
+++ packages/swt/files/swt-hildon.patch	cc6d6cb67722d189122f70411ef01e0639206d86
@@ -0,0 +1,128 @@
+Index: swt-hildon/swt-source/make_linux.mak
+===================================================================
+--- swt-hildon.orig/swt-source/make_linux.mak	2008-01-08 09:35:29.000000000 +0100
++++ swt-hildon/swt-source/make_linux.mak	2008-01-08 11:35:01.000000000 +0100
+@@ -45,8 +45,8 @@
+ CAIROLIBS = `pkg-config --libs-only-L cairo` -lcairo
+ 
+ # Do not use pkg-config to get libs because it includes unnecessary dependencies (i.e. pangoxft-1.0)
+-GTKCFLAGS = `pkg-config --cflags gtk+-2.0`
+-GTKLIBS = `pkg-config --libs-only-L gtk+-2.0 gthread-2.0` -lgtk-x11-2.0 -lgthread-2.0 -L/usr/X11R6/lib $(XLIB64) -lXtst
++GTKCFLAGS = `pkg-config --cflags gtk+-2.0 hildon-1`
++GTKLIBS = -lhildon-1 `pkg-config --libs-only-L gtk+-2.0 gthread-2.0` -lgtk-x11-2.0 -lgthread-2.0 -L/usr/X11R6/lib $(XLIB64) -lXtst
+ 
+ CDE_LIBS = -L$(CDE_HOME)/lib -R$(CDE_HOME)/lib -lXt -lX11 -lDtSvc
+ 
+@@ -74,8 +74,6 @@
+ 	-Wno-non-virtual-dtor \
+ 	-fPIC \
+ 	-I. \
+-	-I$(JAVA_HOME)/include \
+-	-I$(JAVA_HOME)/include/linux \
+ 	${SWT_PTR_CFLAGS}
+ MOZILLALIBS = -shared -Wl,--version-script=mozilla_exports -Bsymbolic
+ MOZILLAEXCLUDES = -DNO_XPCOMGlueShutdown -DNO_XPCOMGlueStartup
+@@ -96,8 +94,6 @@
+ 		-DSWT_VERSION=$(SWT_VERSION) \
+ 		$(NATIVE_STATS) \
+ 		-DLINUX -DGTK \
+-		-I$(JAVA_HOME)/include \
+-		-I$(JAVA_HOME)/include/linux \
+ 		-fPIC \
+ 		${SWT_PTR_CFLAGS}
+ LIBS = -shared -fPIC
+Index: swt-hildon/swt-source/os.c
+===================================================================
+--- swt-hildon.orig/swt-source/os.c	2008-01-08 09:35:29.000000000 +0100
++++ swt-hildon/swt-source/os.c	2008-01-08 09:37:00.000000000 +0100
+@@ -17,6 +17,9 @@
+ #include "os_structs.h"
+ #include "os_stats.h"
+ 
++#include <hildon/hildon-program.h>
++#include <hildon/hildon-window.h>
++
+ #define OS_NATIVE(func) Java_org_eclipse_swt_internal_gtk_OS_##func
+ 
+ #ifndef NO_Call
+@@ -7015,9 +7018,18 @@
+ JNIEXPORT void JNICALL OS_NATIVE(_1gtk_1container_1add)
+ 	(JNIEnv *env, jclass that, jint arg0, jint arg1)
+ {
++  GtkContainer *container = (GtkContainer *) arg0;
++  GtkWidget *widget = (GtkWidget *) arg1;
+ 	OS_NATIVE_ENTER(env, that, _1gtk_1container_1add_FUNC);
+-	gtk_container_add((GtkContainer *)arg0, (GtkWidget *)arg1);
+-	OS_NATIVE_EXIT(env, that, _1gtk_1container_1add_FUNC);
++  if (GTK_CHECK_TYPE (widget, GTK_TYPE_MENU)
++      && !strcmp(gtk_menu_get_title(GTK_MENU(widget)), "__main_menu__"))
++  {
++    hildon_window_set_menu(HILDON_WINDOW(container), GTK_MENU(widget));
++  }
++  else
++   gtk_container_add((GtkContainer *)arg0, (GtkWidget *)arg1);
++
++   OS_NATIVE_EXIT(env, that, _1gtk_1container_1add_FUNC);
+ }
+ #endif
+ 
+@@ -9121,9 +9133,12 @@
+ JNIEXPORT jint JNICALL OS_NATIVE(_1gtk_1menu_1bar_1new)
+ 	(JNIEnv *env, jclass that)
+ {
++  GtkWidget *menu;
+ 	jint rc = 0;
+ 	OS_NATIVE_ENTER(env, that, _1gtk_1menu_1bar_1new_FUNC);
+-	rc = (jint)gtk_menu_bar_new();
++	menu = gtk_menu_new();
++  gtk_menu_set_title(menu, "__main_menu__");
++	rc = (jint) menu;
+ 	OS_NATIVE_EXIT(env, that, _1gtk_1menu_1bar_1new_FUNC);
+ 	return rc;
+ }
+@@ -15464,8 +15479,22 @@
+ 	(JNIEnv *env, jclass that, jint arg0)
+ {
+ 	jint rc = 0;
++  HildonProgram *p;
++  GtkWidget *w;
+ 	OS_NATIVE_ENTER(env, that, _1gtk_1window_1new_FUNC);
+-	rc = (jint)gtk_window_new((GtkWindowType)arg0);
++/*
++  if (GTK_WINDOW_TOPLEVEL == (GtkWindowType) arg0)
++  {
++*/
++    p = hildon_program_get_instance();
++    w = hildon_window_new();
++    hildon_program_add_window(p, HILDON_WINDOW(w));
++/*
++  }
++  else
++    w = gtk_window_new(GTK_WINDOW_POPUP);
++*/
++	rc = (jint) w;
+ 	OS_NATIVE_EXIT(env, that, _1gtk_1window_1new_FUNC);
+ 	return rc;
+ }
+Index: swt-hildon/swt-source/org/eclipse/swt/widgets/Menu.java
+===================================================================
+--- swt-hildon.orig/swt-source/org/eclipse/swt/widgets/Menu.java	2008-01-08 09:34:55.000000000 +0100
++++ swt-hildon/swt-source/org/eclipse/swt/widgets/Menu.java	2008-01-08 09:36:01.000000000 +0100
+@@ -259,9 +259,17 @@
+ 	if ((style & SWT.BAR) != 0) {
+ 		handle = OS.gtk_menu_bar_new ();
+ 		if (handle == 0) error (SWT.ERROR_NO_HANDLES);
++		if (parent instanceof Shell)
++		{
++		int /*long*/ shellHandle = ((Shell) parent).shellHandle;
++		OS.gtk_container_add (shellHandle, handle);
++		}
++		else
++		{
+ 		int /*long*/ vboxHandle = parent.vboxHandle;
+ 		OS.gtk_container_add (vboxHandle, handle);
+ 		OS.gtk_box_set_child_packing (vboxHandle, handle, false, true, 0, OS.GTK_PACK_START);
++		}
+ 	} else {
+ 		handle = OS.gtk_menu_new ();
+ 		if (handle == 0) error (SWT.ERROR_NO_HANDLES);
============================================================
--- packages/swt/swt-gtk.inc	bcadfa700e7fc0872ab1d3a38e456f41e5ebefed
+++ packages/swt/swt-gtk.inc	bcadfa700e7fc0872ab1d3a38e456f41e5ebefed
@@ -0,0 +1,58 @@
+DESCRIPTION = "SWT is an open source widget toolkit for Java designed to provide efficient, portable access to the user-interface facilities"
+LICENSE = "CPL MPL LGPL"
+
+inherit java-library
+
+DEPENDS = "cairo gtk+ atk libxtst"
+
+S = "${WORKDIR}/swt-source"
+
+# A number which is used by SWT to mark the shared libraries. It can be found
+# in the version.txt file inside the source directory.
+SWTVERSION = ${@bb.fatal('SWTVERSION is not defined in this swt-gtk recipe!')}
+SWT_API_VERSION = ${@bb.fatal('SWT_API_VERSION is not defined in this swt-gtk recipe!')}
+
+do_unpackpost() {
+  if [ ! -d ${S} ]; then
+    mkdir ${S}
+    cd ${S}
+  fi
+
+  unzip -o ../src.zip
+  cp ../Makefile .
+
+  sed -i -e "s|RELEASE=OE_SWT_RELEASE|RELEASE=${PV}|" Makefile
+  sed -i -e "s|SONAME_VERSION=OE_SWT_API_VERSION|SONAME_VERSION=${SWT_API_VERSION}|" Makefile
+}
+
+do_compile() {
+  oe_runmake NATIVE_STATS="-I${STAGING_INCDIR}/classpath"
+}
+
+addtask unpackpost after do_unpack before do_patch
+
+do_install() {
+  oe_jarinstall swt-pi.jar
+  oe_jarinstall swt.jar
+  oe_jarinstall swt-gtk-${PV}.jar swt-gtk.jar
+
+  install -d ${D}${libdir_jni}
+  oe_libinstall -so libswt-atk-gtk-${SWTVERSION} ${D}/${libdir_jni}
+  oe_libinstall -so libswt-cairo-gtk-${SWTVERSION} ${D}/${libdir_jni}  
+  oe_libinstall -so libswt-pi-gtk-${SWTVERSION} ${D}/${libdir_jni}
+  oe_libinstall -so libswt-gtk-${SWTVERSION} ${D}/${libdir_jni}
+}
+
+do_stage() {
+  oe_jarinstall -s swt-pi.jar
+  oe_jarinstall -s swt.jar
+  oe_jarinstall -s swt-gtk-${PV}.jar swt-gtk.jar
+}
+
+PACKAGES += "lib${PN}-jni"
+
+FILES_lib${PN}-jni = "${libdir_jni}/lib*.so*"
+
+RDEPENDS_${JPN} = "lib${PN}-jni"
+RPROVIDES_${JPN} = "libswt${SWT_API_VERSION}-gtk-java"
+
============================================================
--- packages/swt/swt3.3-gtk_3.3.1.bb	ac1e6656f8358a0ce3928cd18fcdc21d2d36511e
+++ packages/swt/swt3.3-gtk_3.3.1.bb	ac1e6656f8358a0ce3928cd18fcdc21d2d36511e
@@ -0,0 +1,10 @@
+require swt-gtk.inc
+
+SRC_URI = "http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/eclipse/downloads/drops/R-${PV}-200710231652/swt-${PV}-gtk-linux-x86.zip \
+           file://Makefile"
+
+# A number which is used by SWT to mark the shared libraries.
+SWTVERSION = "3347"
+SWT_API_VERSION = "3.3"
+
+RCONFLICTS = "libswt3.4-gtk-java"
============================================================
--- packages/swt/swt3.4-gtk-hildon_3.3+3.4M3.bb	2659ee0d88eeab0a2f7012db8f483cc8a4e0373c
+++ packages/swt/swt3.4-gtk-hildon_3.3+3.4M3.bb	2659ee0d88eeab0a2f7012db8f483cc8a4e0373c
@@ -0,0 +1,7 @@
+require swt3.4-gtk_${PV}.bb
+
+PR = "r1"
+
+DEPENDS += "hildon-1"
+
+SRC_URI += "file://swt-hildon.patch;patch=1;pnum=2"
============================================================
--- packages/swt/swt3.4-gtk_3.3+3.4M3.bb	cf948019bf5ff1d457cbe1999cc6651269b7ea70
+++ packages/swt/swt3.4-gtk_3.3+3.4M3.bb	cf948019bf5ff1d457cbe1999cc6651269b7ea70
@@ -0,0 +1,12 @@
+require swt-gtk.inc
+
+SRC_URI = "http://ftp.wh2.tu-dresden.de/pub/mirrors/eclipse/eclipse/downloads/drops/S-3.4M3-200711012000/swt-3.4M3-gtk-linux-x86.zip \
+           file://Makefile"
+
+# A number which is used by SWT to mark the shared libraries.
+SWTVERSION = "3416"
+SWT_API_VERSION = "3.4"
+
+PROVIDES = "swt3.4-gtk"
+
+RCONFLICTS = "libswt3.3-gtk-java"






More information about the Openembedded-commits mailing list