OBJS=bytecode.o classfile.o disasm.o utf8.o util.o
OBJS2=bytecode.o classfile.o disasm2.o utf8.o util.o

defalut:
	make disasm
	make libIO.so
	make disasm2.o

all:
	make clean
	make disasm
	make libIO.so

libIO.so:IO.class IO.o
	cc -shared IO.o -o libIO.so

IO.o:IO.c IO.h
	cc IO.c -c

IO.class:IO.java
	javac IO.java

IO.h:IO.class
	javah IO

old:${OBJS2}
	cc -o disasm ${OBJS2}

bytecode.o:bytecode.c
	cc bytecode.c -c

classfile.o:classfile.c
	cc classfile.c -c

disasm.o:disasm.c
	cc disasm.c -c

disasm2.o:disasm2.c
	cc disasm2.c -c

utf8.o:utf8.c
	cc utf8.c -c

util.o:util.c
	cc util.c -c 

disasm:${OBJS}
	cc ${OBJS} -o disasm

HelloWorld.class:HelloWorld.java
	javac HelloWorld.java

test:HelloWorld.class
	rm -f HelloWorld.class
	javac HelloWorld.java
	./vm HelloWorld

clean:
	rm -f *.o
	rm -f *.core
	rm -f disasm
	rm -f libIO.so
