#
# @(#)GNUmakefile	1.30 95/12/01
#
# Makefile for Java interpreter 
#

PROGRAM = java
PLATFORM = be
PRODUCT = java

#
# Directories
#
TOPDIR = ../../../..

#
# Files common to all ports: Be-specifc files
# are added later.
#
FILES.c =  check_code.c \
	   check_class.c \
	   class.c \
	   classinitialize.c \
	   classloader.c \
	   classresolver.c \
	   classruntime.c \
	   classstubs.c \
	   common_exceptions.c \
	   compiler.c \
	   date.c \
	   debug.c \
	   exception.c \
	   exceptions.c \
	   filesystem.c \
	   finalize.c \
	   gc.c \
	   globals.c \
	   interpreter.c \
	   io.c \
	   javai.c \
	   math.c \
	   monitor.c \
	   monitor_cache.c \
	   object.c \
	   opcodes.c \
	   profiler.c \
	   runtime.c \
	   security.c \
	   string.c \
	   system.c \
	   thread.c \
	   threadruntime.c \
	   threads.c \
	   util.c \
	   utf.c \
	   zip.c


#
# Be-specific files
#

FILES.c += memory_md.c \
		monitor_md.c \
		path_md.c \
		fd_md.c \
		io_md.c \
		math_md.c \
		process_md.c \
		system_md.c \
		properties_md.c \
		threads_md.c \
		machgc_nonsparc.c

#
# Be-specific networking files
#

FILES.c += socket.c \
		multicast.c

FILES.cpp += linker_md.cpp \
			longlong.cpp

EXTRAFILES-native =

#
# The next two included files define FILES.java and FILES.export
#
include Classfiles.gmk
include Exportedfiles.gmk

#
# Tell Program.gmk to build a CClassHeaders directory
#
PROGRAM_HEADERS = .program.headers

INIT = opcodes.h opcodes.init opcodes.length opcodes.in_out .install.includes

include $(TOPDIR)/build/$(PLATFORM)/makefiles/Program.gmk

#
# Override JAVAC_CMD when building Java
#
JAVAC_CMD = $(JAVAC_BOOT_CMD)

$(JAVAH): FORCE
	@echo ">>>Recursively making javah..."
	@cd ../javah; $(MAKE) $(@)
	@echo "<<<Finished Recursively making javah."

PACKAGES = java/lang java/misc java/util java/io java/net \
           java/awt java/awt/peer java/awt/image java/applet \
           sun/tools/debug

PKGPATH = $(PLATFORM_SRC)/java $(SHARE_SRC)/java

LDLIBS +=

clean :: FORCE
	rm -rf CClassHeaders
	rm -f classstubs.c $(INIT) 
	rm -rf $(TOPDIR)/build/include .install.includes
	rm -rf $(CLASSBINDIR)/java

#
# Make the directory of Java include files for use by the HotJava workspace
#
INSTALLINCLUDES = $(shell echo \
		    $(SHARE_SRC)/java/include/*.h \
		    $(PLATFORM_SRC)/java/include/*.h)

# We really want the following in the dependency, but they are generated
# later than .install.includes is done.  Should be trivial to fix.
#		    CClassHeaders/java_lang_String.h \
#		    CClassHeaders/java_lang_ClassLoader.h)

.install.includes: $(INSTALLINCLUDES)
	mkdir -p $(TOPDIR)/build/include
	(cd $(TOPDIR)/build/include ; rm -f *.h ; \
		cp ../../src/share/java/include/*.h .)
	(cd $(TOPDIR)/build/include ; rm -f $(PLATFORM) ; \
		cp ../../src/$(PLATFORM)/java/include $(PLATFORM))
	(cd $(TOPDIR)/build/include ; rm -f java_lang_String.h ; \
		cp ../$(PLATFORM)/java/java/CClassHeaders/java_lang_String.h .)
	(cd $(TOPDIR)/build/include ; rm -f java_lang_ClassLoader.h ; \
		cp ../$(PLATFORM)/java/java/CClassHeaders/java_lang_ClassLoader.h .)
	@-touch .install.includes

# Rule for building BreakpointHandler.class
$(CLASSBINDIR)/%.class: $(SHARE_SRC)/sun/%.java
	@echo $? >>.classes.list
