# JRI - Java/R Interface      experimental!
#--------------------------------------------------------------------------

JRI_JSRC=$(wildcard ../*.java)
TARGETS=$(JNIPREFIX)jri$(JNISO) JRI.jar

# we need to force JDK 1.4 for compatibility
JFLAGS+=-target 1.4 -source 1.4

all: $(TARGETS)

JRI.jar: $(JRI_JSRC) $(JNIPREFIX)jri$(JNISO)
	$(JAVAC) $(JFLAGS) -d . $(JRI_JSRC)
	$(JAR) fc $@ org $(JNIPREFIX)jri$(JNISO)

org_rosuda_JRI_Rengine.h: org/rosuda/JRI/Rengine.class
	$(JAVAH) -d . -classpath . org.rosuda.JRI.Rengine

Rcallbacks.o: Rcallbacks.c Rcallbacks.h globals.h
	$(CC) -c -o $@ $< $(CFLAGS) $(CPICF) $(JAVAINC) $(RINC)

Rinit.o: Rinit.c Rinit.h Rcallbacks.h
	$(CC) -c -o $@ $< $(CFLAGS) $(CPICF) $(RINC)

globals.o: globals.c globals.h
	$(CC) -c -o $@ $< $(CFLAGS) $(CPICF) $(JAVAINC)

rjava.o: rjava.c rjava.h
	$(CC) -c -o $@ $< $(CFLAGS) $(CPICF) $(JAVAINC)

Rengine.o: Rengine.c org_rosuda_JRI_Rengine.h globals.h Rcallbacks.h Rinit.h
	$(CC) -c -o $@ Rengine.c $(CFLAGS) $(CPICF) $(JAVAINC) $(RINC)

jri.o: jri.c
	$(CC) -c -o $@ jri.c $(CFLAGS) $(CPICF) $(JAVAINC) $(RINC)

$(JNIPREFIX)jri$(JNISO): Rengine.o jri.o Rcallbacks.o Rinit.o globals.o rjava.o $(JRIDEPS)
	$(CC) -o $@ $^ $(LDFLAGS) $(JNILD) $(RLD)

win32/libjvm.dll.a:
	make -C win32 libjvm.dll.a

org/rosuda/JRI/Rengine.class org/rosuda/JRI/REXP.class org/rosuda/JRI/Mutex.class: $(JRI_JSRC)
	$(JAVAC) $(JFLAGS) -d . $^

clean:
	rm -rf $(TARGETS) org *.o *~ org_rosuda_JRI_Rengine.h *$(JNISO) *.class *~

.PHONY: clean all

