summaryrefslogtreecommitdiffstats
path: root/classes/java.bbclass
diff options
context:
space:
mode:
authorHenning Heinold <heinold@inf.fu-berlin.de>2011-11-12 20:58:34 +0100
committerHenning Heinold <heinold@inf.fu-berlin.de>2011-11-26 23:41:44 +0100
commit57e069cde6617f00ca8834a82c6f360af43d5067 (patch)
tree48cbe15e96d217c45acfa64b0c13aad8c6424980 /classes/java.bbclass
downloadmeta-java-57e069cde6617f00ca8834a82c6f360af43d5067.tar.gz
meta-java: initial commit
* taken over mostly stuff from oe classic * cleaned up recipes * added license checksums * bump icedtea6-native to 1.8.11 * use jamvm from git as native
Diffstat (limited to 'classes/java.bbclass')
-rw-r--r--classes/java.bbclass184
1 files changed, 184 insertions, 0 deletions
diff --git a/classes/java.bbclass b/classes/java.bbclass
new file mode 100644
index 0000000..6a45065
--- /dev/null
+++ b/classes/java.bbclass
@@ -0,0 +1,184 @@
1# Defines the commonly used target directories and provides a convenience
2# function to install jar files.
3#
4# All the default directory locations herein resemble locations chosen in
5# the Debian distribution.
6
7# Jar location on target
8datadir_java ?= ${datadir}/java
9
10# JNI library location on target
11libdir_jni ?= ${libdir}/jni
12
13# JVM bundle location on target
14libdir_jvm ?= ${libdir}/jvm
15
16STAGING_DATADIR_JAVA ?= ${STAGING_DATADIR}/java
17STAGING_LIBDIR_JNI ?= ${STAGING_LIBDIR}/jni
18STAGING_LIBDIR_JVM ?= ${STAGING_LIBDIR}/jvm
19
20STAGING_DATADIR_JAVA_NATIVE ?= ${STAGING_DATADIR_NATIVE}/java
21STAGING_LIBDIR_JNI_NATIVE ?= ${STAGING_LIBDIR_NATIVE}/jni
22STAGING_LIBDIR_JVM_NATIVE ?= ${STAGING_LIBDIR_NATIVE}/jvm
23
24oe_jarinstall() {
25 # Purpose: Install a jar file and create all the given symlinks to it.
26 # Example:
27 # oe_jarinstall foo-1.3.jar foo.jar
28 # Installs foo-1.3.jar and creates symlink foo.jar.
29 #
30 # oe_jarinstall -r foo-1.3.jar foo_1_3.jar foo.jar
31 # Installs foo_1_3.jar as foo-1.3.jar and creates a symlink to this.
32 #
33 dir=${D}${datadir_java}
34 destname=""
35 while [ "$#" -gt 0 ]; do
36 case "$1" in
37 -r)
38 shift
39 destname=$1
40 ;;
41 -*)
42 oefatal "oe_jarinstall: unknown option: $1"
43 ;;
44 *)
45 break;
46 ;;
47 esac
48 shift
49 done
50
51 jarname=$1
52 destname=${destname:-`basename $jarname`}
53 shift
54
55 install -d $dir
56 install -m 0644 $jarname $dir/$destname
57
58 # Creates symlinks out of the remaining arguments.
59 while [ "$#" -gt 0 ]; do
60 if [ -e $dir/$1 -o -h $dir/$1 ]; then
61 oewarn "file was in the way. removing:" $dir/$1
62 rm $dir/$1
63 fi
64 ln -s $destname $dir/$1
65 shift
66 done
67}
68
69oe_makeclasspath() {
70 # Purpose: Generate a classpath variable from the given Jar file names
71 # where the ".jar" has been omitted. The string is stored in the script
72 # variable whose name is given in the first argument to this function.
73 #
74 # oe_makeclasspath cp foo baz bar
75 # Stores ${datadir_java}/foo.jar:${datadir_java}/baz.jar:${datadir_java}/bar.jar
76 # in variable "cp".
77 #
78 # oe_makeclasspath bootcp -s foo baz bar
79 # Stores ${STAGING_DATADIR_JAVA}/foo.jar:${STAGING_DATADIR_JAVA}/baz.jar:${STAGING_DATADIR_JAVA}/bar.jar
80 # in variable "bootcp".
81 #
82 # Provide the -s at the beginning otherwise strange things happen.
83 # If -s is given the function checks whether the requested jar file exists
84 # and exits with an error message if it cannot be found.
85 #
86 # Note: In order to encourage usage of the DEPENDS variable, the function
87 # can accept recipe names. If a recipe has no corresponding Jar file it
88 # is ignored. Be careful with recipes where the recipe name is different
89 # from the the Jar file name!
90 dir=${datadir_java}
91 classpath=
92 delimiter=
93 retval=$1
94
95 shift
96
97 while [ "$#" -gt 0 ]; do
98 case "$1" in
99 -s)
100 # take jar files from native staging if this is a -native recipe
101 if [ ${PACKAGE_ARCH} = ${BUILD_ARCH} ]; then
102 dir=${STAGING_DATADIR_JAVA_NATIVE}
103 else
104 dir=${STAGING_DATADIR_JAVA}
105 fi
106 ;;
107 -*)
108 oefatal "oe_makeclasspath: unknown option: $1"
109 ;;
110 *)
111 file=$dir/$1.jar
112
113 if [ -e $file ]; then
114 classpath=$classpath$delimiter$file
115 delimiter=":"
116 fi
117
118 ;;
119 esac
120 shift
121 done
122
123 eval $retval="$classpath"
124}
125
126# Creates a simple wrapper script for your Java program.
127# The script is written to ${PN} by default.
128#
129# Parameters are as follows:
130# [options] <output file> <main class> [jar files ...]
131#
132# Options are
133# -o <name> where name is the output file name
134#
135# It can only take jar files from ${datadir_java}!
136oe_java_simple_wrapper() {
137 delimiter=
138 mainclass=
139 classpath=
140 output=${PN}
141
142 while [ "$#" -gt 0 ]; do
143 case "$1" in
144 -o)
145 shift
146 output=$1
147 ;;
148 -*)
149 oefatal "oe_java_simple_wrapper: unknown option: $1"
150 ;;
151 *)
152 if [ $mainclass ]
153 then
154 classpath=$classpath$delimiter${datadir_java}/$1
155 delimiter=":"
156 else
157 mainclass=$1
158 fi
159 ;;
160 esac
161 shift
162 done
163
164 oenote "Creating simple Java wrapper script"
165 oenote "Output File: $output"
166 oenote "Main Class: $mainclass"
167 oenote "Classpath: $classpath"
168
169 echo "#!/bin/sh" > $output
170 echo "# This file is autogenerated by the oe_java_simple_wrapper function of OpenEmbedded" >> $output
171 echo >> $output
172 echo "# You can provide additional VM arguments by setting the VMARGS environment variable." >> $output
173 echo "CLASSPATH_ARG=\"-cp $classpath\"" >> $output
174 echo >> $output
175 echo "MAIN_CLASS=$mainclass" >> $output
176 echo >> $output
177 echo "# Allows overriding the VM by setting the JAVA environment variable." >> $output
178 echo "if [ x\${JAVA} = x ]" >> $output
179 echo "then" >> $output
180 echo " JAVA=java" >> $output
181 echo "fi" >> $output
182 echo >> $output
183 echo "exec \${JAVA} \${VMARGS} \${CLASSPATH_ARG} \${MAIN_CLASS} \${@}" >> $output
184}