-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathbuild-and-run.sh
executable file
·97 lines (79 loc) · 1.83 KB
/
build-and-run.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/bin/bash
if [ "$(uname | grep -ic linux)" != "0" ]
then
OS=linux
elif [ "$(uname | grep -ic darwin)" != "0" ]
then
OS=macos
elif [ "$(uname | grep -ic cygwin)" != "0" ]
then
OS=cygwin
else
echo "$(uname) not supported"
exit 1
fi
. setup.$OS
exit_on_error() {
if [ $1 -ne 0 ]
then
if [ "$2" != "" ]
then
echo "Failed: $2"
else
echo "Failed"
fi
exit $1
fi
}
using_c_from_java()
{
echo
echo
echo "--=== Using C code from Java ===---"
echo -n "Compiling java code: "
javac se/juneday/FromCWithLove.java && javac se/juneday/JNIDemo.java
exit_on_error $?
echo "OK"
echo -n "Creating C header files from Java source code: "
javah se.juneday.FromCWithLove
exit_on_error $?
echo "OK"
echo -n "Compiling C code: "
eval $CC $JDK_C_FLAGS $JDK_LD_FLAGS c/lovin_c.c
exit_on_error $?
echo "OK"
echo -n "Executing Java program (using C lib): "
java -Djava.library.path=c se.juneday.JNIDemo
exit_on_error $?
echo "OK"
}
using_java_from_c()
{
echo
echo
echo "--=== Using Java code from C ===---"
echo -n "Compiling Java source code: "
javac se/juneday/Stupid.java
exit_on_error $?
echo "OK"
echo -n "Compiling C source code: "
eval $CC -L\"$JDK_LIB_DIR\" $JDK_C_FLAGS c/c-program.c -o c/c-program -ljvm
exit_on_error $?
echo "OK"
echo -n "Executing C program (using Java code): "
if [ "$OS" = "cygwin" ]
then
PATH="$JDK_LIB_DIR":$PATH ./c/c-program
else
LD_LIBRARY_PATH="$JDK_LIB_DIR" ./c/c-program
exit_on_error $?
fi
echo "OK"
}
using_c_from_java
using_java_from_c
echo
echo
echo "--=== Wrapping it up ===---"
echo "Using C code from Java worked fine"
echo "Using Java code from C worked fine"