aboutsummaryrefslogtreecommitdiffstats
path: root/classes
diff options
context:
space:
mode:
authorStefan Schmidt <stefan@buglabs.net>2010-11-11 09:33:09 +0100
committerStefan Schmidt <stefan@buglabs.net>2011-01-18 10:11:26 +0100
commitd2b084e28497209016f7d837ddd595627f9887f8 (patch)
tree60f2680aa76fcb30ccf722f64aaf6579aaf6e613 /classes
parent4be33a03f28437cf3f37ca3587b735e49fefe23b (diff)
downloadopenembedded-d2b084e28497209016f7d837ddd595627f9887f8.tar.gz
jni-library.bbclass: Add helper class for jni libraries
Signed-off-by: Stefan Schmidt <stefan@buglabs.net>
Diffstat (limited to 'classes')
-rw-r--r--classes/jni-library.bbclass54
1 files changed, 54 insertions, 0 deletions
diff --git a/classes/jni-library.bbclass b/classes/jni-library.bbclass
new file mode 100644
index 0000000000..fefbace208
--- /dev/null
+++ b/classes/jni-library.bbclass
@@ -0,0 +1,54 @@
+# we need javah
+DEPENDS += "openjdk-langtools-native zip-native"
+
+JNI_LIB_DIR = "/usr/lib/jni"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+EXTRA_OEMAKE +=" \
+ JAVAH_OUT=${D}${JNI_LIB_DIR} \
+ LIB_DIR=${D}${JNI_LIB_DIR} \
+ JAVAH_CLASSPATH=${S}/build --debug \
+ COMMON_CLASSPATH=${STAGING_LIBDIR}/com.buglabs.bug.jni.common.jar \
+ STAGING_BUG_INCDIR=${STAGING_INCDIR}/bug \
+ BUG_LINUX_SRC=${STAGING_KERNEL_DIR} \
+ STAGING_INCDIR=${STAGING_INCDIR} \
+ CLASSPATH_INCDIR=${STAGING_INCDIR}/classpath \
+ ROOTFS_BUG=${STAGING_LIBDIR}/../../ \
+"
+
+addtask jni_compile after do_compile before do_install
+do_jni_compile() {
+ cd ${S}/src/c
+ oe_runmake jni
+}
+
+addtask jni_install after do_install before do_package
+do_jni_install() {
+ install -d ${D}${JNI_LIB_DIR}
+ cd ${S}/src/c
+ oe_runmake libs
+}
+
+addtask jni_update_jar after do_jni_install before do_package
+do_jni_update_jar(){
+ cd ${S}/src/c/
+ install -d lib/
+ cp *.so lib/
+ zip -u ${D}${datadir_java}/${JARFILENAME} lib/*.so
+}
+
+addtask jni_staging after do_jni_install before do_package
+do_jni_staging() {
+ if test -e ${S}/src/c/*.so; then
+ install -d ${STAGING_LIBDIR}/bug
+ cp -r ${S}/src/c/*.so ${STAGING_LIBDIR}/bug
+ cp -r ${S}/src/c/*.so ${STAGING_LIBDIR}/
+ fi
+
+ if test -e ${S}/src/c/include/*.h; then
+ install -d ${STAGING_INCDIR}/bug
+ cp -r ${S}/src/c/include/*.h ${STAGING_INCDIR}/bug
+ cp -r ${S}/src/c/include/*.h ${STAGING_INCDIR}/
+ fi
+}