##
## Author:
##   Leif Kornstaedt <kornstae@ps.uni-sb.de>
## 
## Copyright:
##   Leif Kornstaedt, 2000-2003
## 
## Last change:
##   $Date: 2004/09/06 13:19:38 $ by $Author: errror $
##   $Revision: 1.47.2.3 $
## 

# some resonable defaults
WINDOWS  = 0
DEBUG    = 0
KAFFE    = 1
DEPEND   = 1
# user specific values if present
-include config.mk

include Makefile.vars
include Makefile.rules

BASE_SOURCES = JavaMain.cc
JAVA_SOURCES0 = \
	Data.cc ThrowWorker.cc ClassLoader.cc JavaByteCode.cc \
	ClassInfo.cc NativeMethodTable.cc ClassFile.cc $(INTERPRETER) \
	Startup.cc JavaLanguageLayer.cc Dump.cc
JAVA_SOURCES = $(JAVA_SOURCES0:%=java/%)
JAVA_LANG_SOURCES0 = \
	Class.cc Object.cc String.cc Throwable.cc System.cc ClassLoader.cc \
	Float.cc Double.cc StrictMath.cc Thread.cc
JAVA_LANG_SOURCES = $(JAVA_LANG_SOURCES0:%=java/java/lang/%)
JAVA_IO_SOURCES0 = \
	FileDescriptor.cc FileInputStream.cc FileOutputStream.cc \
	ObjectStreamClass.cc
JAVA_IO_SOURCES = $(JAVA_IO_SOURCES0:%=java/java/io/%)
JAVA_SECURITY_SOURCES0 = AccessController.cc
JAVA_SECURITY_SOURCES = $(JAVA_SECURITY_SOURCES0:%=java/java/security/%)
SUN_MISC_SOURCES0 = Unsafe.cc AtomicLong.cc
SUN_MISC_SOURCES = $(SUN_MISC_SOURCES0:%=java/sun/misc/%)
SUN_REFLECT_SOURCES0 = Reflection.cc NativeConstructorAccessorImpl.cc
SUN_REFLECT_SOURCES = $(SUN_REFLECT_SOURCES0:%=java/sun/reflect/%)
SOURCES = \
	$(BASE_SOURCES) \
	$(JAVA_SOURCES) \
	$(JAVA_LANG_SOURCES) \
	$(JAVA_IO_SOURCES) \
	$(JAVA_SECURITY_SOURCES) \
	$(SUN_MISC_SOURCES) \
	$(SUN_REFLECT_SOURCES)
OBJS = $(SOURCES:%.cc=%.o)

all: java.dll

java.dll: $(OBJS)
	$(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)

clean:
	rm -f $(OBJS)
veryclean: clean
	rm -f java.dll
distclean: veryclean
	rm -f Makefile.depend

Makefile.depend: Makefile $(SOURCES)
ifeq ($(DEPEND), 1)
	($(MAKEDEPEND) $(BASE_SOURCES) && \
	 for i in $(JAVA_SOURCES); do \
	     $(MAKEDEPEND) $$i -MT java/`basename $$i .cc`.o; \
	 done && \
	 for i in $(JAVA_LANG_SOURCES); do \
	     $(MAKEDEPEND) $$i -MT java/java/lang/`basename $$i .cc`.o; \
	 done && \
	 for i in $(JAVA_IO_SOURCES); do \
	     $(MAKEDEPEND) $$i -MT java/java/io/`basename $$i .cc`.o; \
	 done && \
	 for i in $(JAVA_SECURITY_SOURCES); do \
	     $(MAKEDEPEND) $$i -MT java/java/security/`basename $$i .cc`.o; \
	 done && \
	 for i in $(SUN_MISC_SOURCES); do \
	     $(MAKEDEPEND) $$i -MT java/sun/misc/`basename $$i .cc`.o; \
	 done && \
	 for i in $(SUN_REFLECT_SOURCES); do \
	     $(MAKEDEPEND) $$i -MT java/sun/reflect/`basename $$i .cc`.o; \
	 done) > $@ || (rm -f Makefile.depend && exit 1)
else
	@echo "Not updating $@ with \"make DEPEND=0\"" 
endif

include Makefile.depend
