reordered directory structure a bit (hidden) git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@1046 379699f6-c40d-0410-875b-85095c16579ebranch_1_1
parent
a41bef2994
commit
5a7713ae1a
@ -0,0 +1,9 @@ |
||||
Makefile |
||||
Makefile.in |
||||
configure |
||||
config.log |
||||
config.cache |
||||
config.status |
||||
stamp-h |
||||
libtool |
||||
aclocal.m4 |
@ -0,0 +1 @@ |
||||
Jochen Hoenicke <Jochen.Hoenicke@Informatik.Uni-Oldenburg.DE> |
@ -0,0 +1,33 @@ |
||||
Before installing, make sure you have a java compiler (e.g javac or |
||||
jikes) and the java 1.1 runtime class library installed. If you want |
||||
to run this program you need at least a 1.1 compatible java virtual |
||||
machine. There are some bugs in javac included in the SUN JDK 1.1, it |
||||
won't work. |
||||
|
||||
This package was designed to use the GNU standard for configuration |
||||
and makefiles. To build and install do the following: |
||||
|
||||
0). Make sure that you have all libraries that are needed in you |
||||
classpath. You need gnu.getopt, and if you have JDK 1.1 you also need |
||||
the collection classes and swing for 1.1. |
||||
|
||||
1). Run "aclocal && autoconf && automake --add-missing". |
||||
|
||||
2). Run the "configure" script to configure the package. There are |
||||
various options you might want to pass to configure to control how the |
||||
package is built. "configure --help" will give a complete list. |
||||
|
||||
If you have jikes, you should specify it with --with-jikes. You can |
||||
give a path to the directory where it resides, otherwise it is |
||||
searched in the path. |
||||
|
||||
3). Type "make" to build the package. If you don't have jikes, you |
||||
should make clean first, since the dependency problem is not yet |
||||
resolved. |
||||
|
||||
4). Type "make install" to install everything. This doesn't work yet. |
||||
|
||||
The created jar file is stored in the share directory. |
||||
|
||||
Jochen |
||||
|
@ -0,0 +1,7 @@ |
||||
## Input file for automake to generate the Makefile.in used by configure
|
||||
|
||||
SUBDIRS = jode doc test
|
||||
|
||||
EXTRA_DIST = TODO \
|
||||
jode.html jode-applet.html jode-obfuscator.html jode-unix.html \
|
||||
jode-useapplet.html jode-win.html
|
@ -0,0 +1,10 @@ |
||||
1.0.90 is a prerelease.. |
||||
* First version using configure. Jode can now be almost automatically |
||||
build, see INSTALL for instructions. |
||||
* The decompiler can handler inner and anoymous classes. |
||||
* You now need the gnu getopt package. |
||||
* You need JDK 1.2 or alternatively the swing and collection packages |
||||
for 1.1 |
||||
|
||||
|
||||
|
@ -0,0 +1,106 @@ |
||||
takes class-files as input and produces something similar to the |
||||
original java-File. Of course this can't be perfect: There is no way |
||||
to produce the comments or the names of local variables (except when |
||||
compiled with <code>-g</code>) and there are often more ways to write |
||||
the same thing. But it does its job quite well.</P> |
||||
|
||||
<h2>Quick Test</h2> |
||||
I have now an applet interface to the decompiler. |
||||
<a href="jode-applet.html">Check it out</a>. |
||||
|
||||
<h2>How to get it</h2> |
||||
<P>You can donwload the files in zip form. |
||||
The <a href="jode_src.zip">sources</a> contain only the |
||||
<code>java</code> files, the <a href="jode_cls.zip">classes</a> |
||||
contain only the <code>class</code> files. </p> |
||||
|
||||
<p>I also have a <a href="jode.tar.gz">tar.gz file</a> containing only |
||||
the <code>RCS</code> directories. This is the form I maintain the |
||||
project, but you probably need unix and a few tools to use them.</p> |
||||
|
||||
<p>There are also some <a href="snapshot/">snapshots</a> that have new |
||||
features like inner and anonymous classes. </p> |
||||
|
||||
<p><a href=".">Click here</a> to browse the files online. |
||||
</p> |
||||
|
||||
|
||||
|
||||
<h2>How to use it</h2> |
||||
|
||||
<p>I have some simple step by step pages. There are three |
||||
possibilities: |
||||
<ul> |
||||
<li> <a href="jode-useapplet.html"> Using the applet version</a>. |
||||
This can make problem due to java's security policy, but is the |
||||
simplest way and works on most platforms. |
||||
</li> |
||||
<li> If you use Windows, you should look on <a |
||||
href="jode-win.html">this page</a>.</li> |
||||
<li> Unix users should look on <a href="jode-unix.html">this page</a>. |
||||
</ul> |
||||
|
||||
<h2>Known bugs</h2> |
||||
|
||||
<p>There may be situations, where the code doesn't understand complex |
||||
expressions. In this many ugly temporary variables are used, but the |
||||
code should still be compileable. This does especially happen when |
||||
you compile with `-O' flag and javac has inlined some methods. </p> |
||||
|
||||
<p>Sometimes this program may exit with an <code>Exception</code> or |
||||
produce incorrect code. Most time the code can't be compiled, so that |
||||
it can be easily spotted. If you have one of these problems (except |
||||
those that occur on some of the <code>jode.test</code> files, I would |
||||
be very interested in a bug report (including the <code>class</code> |
||||
file, if possible).</p> |
||||
|
||||
<p>Sometimes it generates some <code>GOTO</code> expression and |
||||
labels. This can't be compiled, but shouldn't happen any more with |
||||
javac or jikes.</p> |
||||
|
||||
<p>It doesn't handle inner and anonymous classes, yet. You can |
||||
decompile them separately, though (use `<code>+$</code>' switch under |
||||
jikes), but there is a bug in javac, so that a final variable is twice |
||||
initialized. If you encounter this problem just remove the doubled |
||||
line by hand. </p> |
||||
|
||||
<p><b>New!</b> The latest <a href="snapshot">snapshot</a> can handle |
||||
inner and anonymous classes.</p> |
||||
|
||||
|
||||
<h2>Why did I wrote it?</h2> |
||||
|
||||
<p>Someday I found <code>guavad</code>, a disassembler for java byte |
||||
code (it does similar things like <code>javap -c</code>). I used |
||||
it on a class file, and found that it was possible to reconstruct the |
||||
original java code. First I did it by hand on some small routines, |
||||
but I soon realized that it was a rather stupid task, and that I could |
||||
write a <a href="../perl/dasm_to_java.perl"><code>perl</code> script</a> |
||||
that does the same. At the end of the next day I had a working |
||||
decompiler.</p> |
||||
|
||||
<p>Now while it was working, it was not easy to use. You had to |
||||
decompile the code first with a disassembler, cut the method, you |
||||
wanted to decompile and then run the perl script on it. So I decided |
||||
to get some information of the class files and do this all |
||||
automatically. I decided to write it in <code>java</code> now, |
||||
because it suited best.</p> |
||||
|
||||
<p>Just for the records: the java code is now more than 50 times |
||||
bigger than the original perl script and is still growing.</p> |
||||
|
||||
<h2>License</h2> |
||||
|
||||
<p>This code is under GNU GPL. That basically means, that you can copy |
||||
or modify this code, as long as you put all your modification under |
||||
the GPL again. <A HREF="http://www.gnu.org/copyleft/gpl.html"> Look |
||||
here for the complete license</a>.</p> |
||||
|
||||
<hr> |
||||
|
||||
<p><A HREF="mailto:Jochen.Hoenicke@Informatik.Uni-Oldenburg.DE"> |
||||
http://www.informatik.uni-oldenburg.de/~delwi/jode/jode.html</A>, last |
||||
updated on <em>17-Jun-1999</em>.</p> |
||||
|
||||
</body> |
||||
</html> |
@ -0,0 +1,43 @@ |
||||
dnl |
||||
dnl Add macros |
||||
dnl JODE_CHECK_JAVA |
||||
dnl |
||||
|
||||
dnl JODE_CHECK_JAVA(path) |
||||
AC_DEFUN(JODE_CHECK_JAVA, |
||||
[ |
||||
AC_PATH_PROG(JAVAC, javac, "", $PATH:$1/bin) |
||||
AC_PATH_PROG(JAR, jar, "", $PATH:$1/bin) |
||||
for path in $1/lib $1/jre/lib $1/shared; do |
||||
for classlib in classes.zip rt.jar; do |
||||
AC_CHECK_FILES($path/$classlib, |
||||
[ CLASSLIB=$path/$classlib |
||||
break 3 |
||||
], [ true ]) |
||||
done |
||||
done |
||||
AC_SUBST(CLASSPATH) |
||||
AC_SUBST(CLASSLIB) |
||||
]) |
||||
|
||||
AC_DEFUN(JODE_CHECK_CLASS, |
||||
[ |
||||
if (IFS=":" |
||||
clazz=`echo $1 | sed -e 's/\./\//g' -e 's/\(.*\)/\1.class/'` |
||||
jode_found=0 |
||||
for path in $2; do |
||||
if test -d $path; then |
||||
if test -e $path/$clazz; then |
||||
exit 0 |
||||
fi |
||||
elif $UNZIP -v -C $path $clazz &>/dev/null ; then |
||||
exit 0 |
||||
fi |
||||
done; |
||||
exit 1) |
||||
then |
||||
$3 |
||||
else |
||||
$4 |
||||
fi |
||||
]) |
@ -0,0 +1,128 @@ |
||||
dnl Process this file with autoconf to produce a configure script. |
||||
AC_INIT() |
||||
|
||||
AM_INIT_AUTOMAKE(jode, 1.0.90) |
||||
|
||||
dnl Checks for programs. |
||||
dnl AC_PROG_CXX |
||||
dnl AC_PROG_AWK |
||||
dnl AC_PROG_CC |
||||
dnl AC_PROG_CPP |
||||
dnl AC_PROG_INSTALL |
||||
dnl AC_PROG_LN_S |
||||
AC_PROG_MAKE_SET |
||||
dnl AC_PROG_RANLIB |
||||
dnl AC_PATH_PROG(ZIP, zip) |
||||
AC_PATH_PROG(UNZIP, unzip) |
||||
|
||||
dnl Checks for libraries. |
||||
|
||||
dnl Checks for header files. |
||||
|
||||
dnl Checks for typedefs, structures, and compiler characteristics. |
||||
|
||||
dnl Checks for library functions. |
||||
|
||||
dnl hack to quote Makefile lines |
||||
QUOTE="" |
||||
AC_SUBST(QUOTE) |
||||
|
||||
AC_SUBST(SHELL) |
||||
|
||||
AC_ARG_WITH(java, |
||||
[ --with-java specify path to a java-like program ], |
||||
[ |
||||
if test ${withval} != "" || test ${withval} != "yes" || test ${withval} != "no"; then |
||||
# set javac to user input value |
||||
JODE_CHECK_JAVA(${withval}) |
||||
else |
||||
JODE_CHECK_JAVA(/usr/lib/java) |
||||
fi |
||||
], |
||||
[ |
||||
JODE_CHECK_JAVA(/usr/lib/java) |
||||
]) |
||||
|
||||
dnl jikes can also handle dependancies. |
||||
AC_ARG_WITH(jikes, |
||||
[ --with-jikes specify location of jikes ], |
||||
[ |
||||
USER_SPECIFIED_JIKES=true |
||||
if test "${withval}" = "yes" || test "${withval}" = ""; then |
||||
AC_PATH_PROG(JIKES, jikes, "", $PATH) |
||||
else |
||||
echo "searching jikes in ${withval}:$PATH" |
||||
AC_PATH_PROG(JIKES, jikes, "", ${withval}:$PATH) |
||||
fi |
||||
if test -n "$JIKES"; then |
||||
JAVAC=$JIKES |
||||
fi |
||||
], |
||||
[ |
||||
USER_SPECIFIED_JIKES= |
||||
AC_PATH_PROG(JIKES, jikes, "", $PATH) |
||||
]) |
||||
AM_CONDITIONAL(HAVE_JIKES, test x"$JIKES" != x) |
||||
|
||||
AC_ARG_WITH(javac, |
||||
[ --with-javac specify location of javac ], |
||||
[ |
||||
if test x$USER_SPECIFIED_JIKES == xtrue; then |
||||
AC_MSG_ERROR(You must only give one option --with-javac or --with-jikes) |
||||
fi |
||||
if test ${withval} != "" || test ${withval} != "yes" || test ${withval} != "no"; then |
||||
AC_CHECK_FILES(${withval}, |
||||
[ JAVAC=${withval} ], |
||||
[ AC_MSG_ERROR(${withval} does not exists) ]) |
||||
fi |
||||
], [ true ]) |
||||
|
||||
JODE_CHECK_CLASS(java.lang.Object, $CLASSLIB, |
||||
[ true ], |
||||
[ AC_MSG_ERROR(Please specify location of java class library for jikes) ]) |
||||
|
||||
AC_MSG_CHECKING(for collection classes) |
||||
JODE_CHECK_CLASS(java.util.Set, $CLASSPATH:$CLASSLIB, |
||||
[ COLLECTIONS="java.util" ], |
||||
[ JODE_CHECK_CLASS(com.sun.java.util.collections.Set, $CLASSPATH:$CLASSLIB, |
||||
[ COLLECTIONS="com.sun.java.util.collections" ], |
||||
[ AC_MSG_RESULT(no) |
||||
AC_MSG_ERROR(You need the Java 1.2 collection classes in your classpath) |
||||
]) |
||||
] ) |
||||
AC_MSG_RESULT($COLLECTIONS) |
||||
AC_SUBST(COLLECTIONS) |
||||
|
||||
AC_MSG_CHECKING(for gnu.getopt) |
||||
JODE_CHECK_CLASS(gnu.getopt.Getopt, $CLASSPATH:$CLASSLIB, |
||||
[ AC_MSG_RESULT(yes) ], |
||||
[ AC_MSG_RESULT(no) |
||||
AC_MSG_ERROR(You need gnu getopt for java.) ]) |
||||
|
||||
AC_MSG_CHECKING(for swing) |
||||
JODE_CHECK_CLASS(javax.swing.JFrame, $CLASSPATH:$CLASSLIB, |
||||
[ JAVAX_SWING="javax.swing" ], |
||||
[ JODE_CHECK_CLASS(com.sun.swing.JFrame, $CLASSPATH:$CLASSLIB, |
||||
[ JAVAX_SWING="com.sun.java.swing" ], |
||||
[ JAVAX_SWING="no" ]) ] ) |
||||
AC_MSG_RESULT($JAVAX_SWING) |
||||
AC_SUBST(JAVAX_SWING) |
||||
if test x"$JAVAX_SWING" != x; then |
||||
SWING_CLASSES="jode/swingui/Main.class" |
||||
else |
||||
AC_MSG_WARN(Swing is not in classpath ... skipping swingui) |
||||
SWING_CLASSES="" |
||||
fi |
||||
AC_SUBST(SWING_CLASSES) |
||||
|
||||
AC_SUBST(CLASSPATH) |
||||
AC_SUBST(JAVAC) |
||||
|
||||
AC_OUTPUT(Makefile |
||||
jode/Makefile |
||||
doc/Makefile |
||||
test/Makefile |
||||
jode/GlobalOptions.java |
||||
jode/swingui/Main.java |
||||
jode/swingui/PackagesTreeModel.java) |
||||
|
@ -0,0 +1,2 @@ |
||||
Makefile |
||||
Makefile.in |
@ -0,0 +1,4 @@ |
||||
Makefile |
||||
Makefile.in |
||||
.java.deps |
||||
jode.jar |
@ -0,0 +1,231 @@ |
||||
## Input file for automake to generate the Makefile.in used by configure
|
||||
|
||||
EXTRA_DIST = \
|
||||
AssertError.java \
|
||||
bytecode/BinaryInfo.java \
|
||||
bytecode/BytecodeInfo.java \
|
||||
bytecode/ClassFormatException.java \
|
||||
bytecode/ClassInfo.java \
|
||||
bytecode/ConstantPool.java \
|
||||
bytecode/FieldInfo.java \
|
||||
bytecode/GrowableConstantPool.java \
|
||||
bytecode/Handler.java \
|
||||
bytecode/InnerClassInfo.java \
|
||||
bytecode/Instruction.java \
|
||||
bytecode/LineNumber.java \
|
||||
bytecode/LocalVariableInfo.java \
|
||||
bytecode/MethodInfo.java \
|
||||
bytecode/Opcodes.java \
|
||||
bytecode/Reference.java \
|
||||
bytecode/SearchPath.java \
|
||||
decompiler/Analyzer.java \
|
||||
decompiler/ClassAnalyzer.java \
|
||||
decompiler/ClassDeclarer.java \
|
||||
decompiler/DeadCodeAnalysis.java \
|
||||
decompiler/Declarable.java \
|
||||
decompiler/FieldAnalyzer.java \
|
||||
decompiler/ImportHandler.java \
|
||||
decompiler/LocalInfo.java \
|
||||
decompiler/LocalVarEntry.java \
|
||||
decompiler/LocalVariableRangeList.java \
|
||||
decompiler/LocalVariableTable.java \
|
||||
decompiler/MethodAnalyzer.java \
|
||||
decompiler/Opcodes.java \
|
||||
decompiler/OuterValueListener.java \
|
||||
decompiler/Scope.java \
|
||||
decompiler/TabbedPrintWriter.java \
|
||||
Decompiler.java \
|
||||
expr/ArrayLengthOperator.java \
|
||||
expr/ArrayLoadOperator.java \
|
||||
expr/ArrayStoreOperator.java \
|
||||
expr/BinaryOperator.java \
|
||||
expr/CheckCastOperator.java \
|
||||
expr/CheckNullOperator.java \
|
||||
expr/ClassFieldOperator.java \
|
||||
expr/CombineableOperator.java \
|
||||
expr/CompareBinaryOperator.java \
|
||||
expr/CompareToIntOperator.java \
|
||||
expr/CompareUnaryOperator.java \
|
||||
expr/ConstOperator.java \
|
||||
expr/ConstantArrayOperator.java \
|
||||
expr/ConstructorOperator.java \
|
||||
expr/ConvertOperator.java \
|
||||
expr/Expression.java \
|
||||
expr/GetFieldOperator.java \
|
||||
expr/IIncOperator.java \
|
||||
expr/IfThenElseOperator.java \
|
||||
expr/InstanceOfOperator.java \
|
||||
expr/InvokeOperator.java \
|
||||
expr/LValueExpression.java \
|
||||
expr/LocalLoadOperator.java \
|
||||
expr/LocalStoreOperator.java \
|
||||
expr/LocalVarOperator.java \
|
||||
expr/MatchableOperator.java \
|
||||
expr/MonitorEnterOperator.java \
|
||||
expr/MonitorExitOperator.java \
|
||||
expr/NewArrayOperator.java \
|
||||
expr/NewOperator.java \
|
||||
expr/NoArgOperator.java \
|
||||
expr/NopOperator.java \
|
||||
expr/Operator.java \
|
||||
expr/OuterLocalOperator.java \
|
||||
expr/PopOperator.java \
|
||||
expr/PrePostFixOperator.java \
|
||||
expr/PutFieldOperator.java \
|
||||
expr/ShiftOperator.java \
|
||||
expr/SimpleOperator.java \
|
||||
expr/StoreInstruction.java \
|
||||
expr/StringAddOperator.java \
|
||||
expr/ThisOperator.java \
|
||||
expr/UnaryOperator.java \
|
||||
flow/BreakBlock.java \
|
||||
flow/BreakableBlock.java \
|
||||
flow/CaseBlock.java \
|
||||
flow/CatchBlock.java \
|
||||
flow/CombineIfGotoExpressions.java \
|
||||
flow/CompleteSynchronized.java \
|
||||
flow/ConditionalBlock.java \
|
||||
flow/ContinueBlock.java \
|
||||
flow/CreateAssignExpression.java \
|
||||
flow/CreateCheckNull.java \
|
||||
flow/CreateClassField.java \
|
||||
flow/CreateConstantArray.java \
|
||||
flow/CreateExpression.java \
|
||||
flow/CreateForInitializer.java \
|
||||
flow/CreateIfThenElseOperator.java \
|
||||
flow/CreateNewConstructor.java \
|
||||
flow/CreatePrePostIncExpression.java \
|
||||
flow/DescriptionBlock.java \
|
||||
flow/EmptyBlock.java \
|
||||
flow/FinallyBlock.java \
|
||||
flow/FlowBlock.java \
|
||||
flow/IfThenElseBlock.java \
|
||||
flow/InstructionBlock.java \
|
||||
flow/InstructionContainer.java \
|
||||
flow/JsrBlock.java \
|
||||
flow/Jump.java \
|
||||
flow/LoopBlock.java \
|
||||
flow/RetBlock.java \
|
||||
flow/ReturnBlock.java \
|
||||
flow/SequentialBlock.java \
|
||||
flow/SlotSet.java \
|
||||
flow/SpecialBlock.java \
|
||||
flow/StructuredBlock.java \
|
||||
flow/SwitchBlock.java \
|
||||
flow/SynchronizedBlock.java \
|
||||
flow/ThrowBlock.java \
|
||||
flow/TransformConstructors.java \
|
||||
flow/TransformExceptionHandlers.java \
|
||||
flow/TryBlock.java \
|
||||
flow/VariableSet.java \
|
||||
flow/VariableStack.java \
|
||||
GlobalOptions.java.in \
|
||||
JodeApplet.java \
|
||||
JodeWindow.java \
|
||||
jvm/CodeVerifier.java \
|
||||
jvm/Interpreter.java \
|
||||
jvm/InterpreterException.java \
|
||||
jvm/NewObject.java \
|
||||
jvm/RuntimeEnvironment.java \
|
||||
jvm/SimpleRuntimeEnvironment.java \
|
||||
jvm/SyntheticAnalyzer.java \
|
||||
jvm/Value.java \
|
||||
jvm/VerifyException.java \
|
||||
obfuscator/ClassBundle.java \
|
||||
obfuscator/ClassIdentifier.java \
|
||||
obfuscator/CodeAnalyzer.java \
|
||||
obfuscator/CodeTransformer.java \
|
||||
obfuscator/ConstantAnalyzer.java \
|
||||
obfuscator/ConstantRuntimeEnvironment.java \
|
||||
obfuscator/FieldIdentifier.java \
|
||||
obfuscator/Identifier.java \
|
||||
obfuscator/IdentifierMatcher.java \
|
||||
obfuscator/LocalIdentifier.java \
|
||||
obfuscator/LocalOptimizer.java \
|
||||
obfuscator/LocalizeFieldTransformer.java \
|
||||
obfuscator/Main.java \
|
||||
obfuscator/MethodIdentifier.java \
|
||||
obfuscator/ModifierMatcher.java \
|
||||
obfuscator/NameSwapper.java \
|
||||
obfuscator/PackageIdentifier.java \
|
||||
obfuscator/RemovePopAnalyzer.java \
|
||||
obfuscator/Renamer.java \
|
||||
obfuscator/SimpleAnalyzer.java \
|
||||
obfuscator/StrongRenamer.java \
|
||||
obfuscator/TranslationTable.java \
|
||||
obfuscator/WildCard.java \
|
||||
swingui/Main.java \
|
||||
swingui/Main.java.in \
|
||||
swingui/PackagesTreeModel.java.in \
|
||||
swingui/PackagesTreeModel.java \
|
||||
type/ArrayType.java \
|
||||
type/ClassInterfacesType.java \
|
||||
type/IntegerType.java \
|
||||
type/MethodType.java \
|
||||
type/NullType.java \
|
||||
type/RangeType.java \
|
||||
type/ReferenceType.java \
|
||||
type/Type.java \
|
||||
util/AbstractCollection.java \
|
||||
util/AbstractList.java \
|
||||
util/AbstractMap.java \
|
||||
util/AbstractSequentialList.java \
|
||||
util/AbstractSet.java \
|
||||
util/ArrayEnum.java \
|
||||
util/ArrayList.java \
|
||||
util/Arrays.java \
|
||||
util/BasicMapEntry.java \
|
||||
util/Bucket.java \
|
||||
util/Collection.java \
|
||||
util/Collections.java \
|
||||
util/Comparable.java \
|
||||
util/Comparator.java \
|
||||
util/ConcurrentModificationException.java \
|
||||
util/HashMap.java \
|
||||
util/HashSet.java \
|
||||
util/Iterator.java \
|
||||
util/LinkedList.java \
|
||||
util/List.java \
|
||||
util/ListIterator.java \
|
||||
util/Map.java \
|
||||
util/Set.java \
|
||||
util/SimpleMap.java \
|
||||
util/SimpleSet.java \
|
||||
util/SortedMap.java \
|
||||
util/SortedSet.java \
|
||||
util/TreeMap.java \
|
||||
util/TreeSet.java \
|
||||
util/UnsupportedOperationException.java
|
||||
|
||||
JAR = @JAR@
|
||||
JAVAC = @JAVAC@
|
||||
JIKES = @JIKES@
|
||||
CLASSPATH = @CLASSPATH@
|
||||
CLASSLIB = @CLASSLIB@
|
||||
BUILD_CLASSPATH = $(top_srcdir):$(top_builddir):.:$(CLASSPATH)
|
||||
VPATH=$(srcdir):$(top_srcdir):$(top_builddir)
|
||||
|
||||
MY_CLASSES = jode/Decompiler.class jode/JodeApplet.class jode/JodeWindow.class jode/obfuscator/Main.class @SWING_CLASSES@
|
||||
|
||||
pkgdata_DATA = jode.jar
|
||||
|
||||
if HAVE_JIKES |
||||
|
||||
@QUOTE@-include .java.deps |
||||
|
||||
%.class: %.java |
||||
$(JIKES) -classpath $(BUILD_CLASSPATH):$(CLASSLIB) +M=.java.deps -d . $<
|
||||
|
||||
else |
||||
|
||||
%.class: %.java |
||||
$(JAVAC) -classpath $(BUILD_CLASSPATH):$(CLASSLIB) -depend -d . $<
|
||||
|
||||
endif |
||||
|
||||
clean-local: |
||||
@rm -rf jode
|
||||
@rm -f jode.jar .java.deps
|
||||
|
||||
jode.jar: $(MY_CLASSES) |
||||
CLASSPATH= $(JAR) -cf jode.jar jode
|
@ -0,0 +1,2 @@ |
||||
Makefile |
||||
Makefile.in |
Loading…
Reference in new issue