#
# @(#)Makefile	1.12 98/10/02
# 
# Rebuild class files built with a bootstrap compiler.
#

BUILDDIR = ..\..\..
LOCATION = sun\javac\recompile
!include $(BUILDDIR)\makefiles\defs.nmk

#
# What do we recompile?
#
!include $(MINCLUDES)\java_java.jmk
!include $(MINCLUDES)\java_zip.jmk
!include $(MINCLUDES)\sun_javac.jmk
FILES_java = $(JAVA_JAVA_java) $(JAVA_ZIP_java) $(SUN_JAVAC_java)
FILES_java = $(FILES_java) $(TARGDIR)java/lang/Win32Process.java
FILES_java = $(FILES_java) $(TARGDIR)java/io/Win32FileSystem.java
TARGDIR    = $(NEWDIR)\ 	# Trailing space significant.
NEWDIR     = .\newclasses

#
# Rules.
#
!include $(BUILDDIR)\makefiles\classes.nmk

JAVAC_CMD = $(BINDIR)\javac$G.exe -bootclasspath "" \
	    -J-ms16m -J-mx64m -d $(NEWDIR) \
	    -classpath $(PLATFORM_SRC)\classes;$(SHARE_SRC)\classes;$(NEWDIR)

optimized debug: recompile.build recompile.copy
clean: recompile.clean

recompile.build: $(NEWDIR) delete.classlist $(FILES_class) compile.classlist

delete.classlist: FORCE
	@rm -f .classes.list

compile.classlist: FORCE
	@if exist .classes.list echo $(JAVAC_CMD) @.classes.list
	@if exist .classes.list $(JAVAC_CMD) @.classes.list

classes.clean: delete.classlist

recompile.copy: FORCE
	@if exist .classes.list echo Copying new classes...
	@if exist .classes.list echo $(DIRCOPY) $(NEWDIR) $(CLASSBINDIR)
	@if exist .classes.list $(DIRCOPY) $(NEWDIR) $(CLASSBINDIR)

recompile.clean: FORCE
	-$(DELTREE) $(NEWDIR) $(OBJROOTS)

$(NEWDIR): 
	@if not exist $@ mkdir $@

#
# We want to compile output to go elsewhere so we can copy.
#
NEWSUN  = $(NEWDIR)\sun
NEWJAVA = $(NEWDIR)\java

{$(SHARE_SRC)\classes\sun\tools\java}.java{$(NEWSUN)\tools\java}.class:
	@echo $(?)>> .classes.list
{$(SHARE_SRC)\classes\sun\tools\javac}.java{$(NEWSUN)\tools\javac}.class:
	@echo $(?)>> .classes.list
{$(SHARE_SRC)\classes\sun\tools\asm}.java{$(NEWSUN)\tools\asm}.class:
	@echo $(?)>> .classes.list
{$(SHARE_SRC)\classes\sun\tools\tree}.java{$(NEWSUN)\tools\tree}.class:
	@echo $(?)>> .classes.list
{$(SHARE_SRC)\classes\java\lang}.java{$(NEWJAVA)\lang}.class:
	@echo $(?)>> .classes.list
{$(SHARE_SRC)\classes\java\lang\reflect}.java{$(NEWJAVA)\lang\reflect}.class:
	@echo $(?)>> .classes.list
{$(SHARE_SRC)\classes\java\lang\ref}.java{$(NEWJAVA)\lang\ref}.class:
	@echo $(?)>> .classes.list
{$(PLATFORM_SRC)\classes\java\io}.java{$(NEWJAVA)\io}.class:
	@echo $(?)>> .classes.list
{$(PLATFORM_SRC)\classes\java\lang}.java{$(NEWJAVA)\lang}.class:
	@echo $(?)>> .classes.list
{$(SHARE_SRC)\classes\java\io}.java{$(NEWJAVA)\io}.class:
	@echo $(?)>> .classes.list
{$(SHARE_SRC)\classes\java\net}.java{$(NEWJAVA)\net}.class:
	@echo $(?)>> .classes.list
{$(SHARE_SRC)\classes\java\util}.java{$(NEWJAVA)\util}.class:
	@echo $(?)>> .classes.list
{$(SHARE_SRC)\classes\java\util\mime}.java{$(NEWJAVA)\util\mime}.class:
	@echo $(?)>> .classes.list
{$(SHARE_SRC)\classes\java\util\zip}.java{$(NEWJAVA)\util\zip}.class:
	@echo $(?)>> .classes.list
{$(SHARE_SRC)\classes\java\security}.java{$(NEWJAVA)\security}.class:
	@echo $(?)>> .classes.list
{$(SHARE_SRC)\classes\sun\net\www\protocol\file}.java{$(NEWSUN)\net\www\protocol\file}.class:
	@echo $(?)>> .classes.list
{$(SHARE_SRC)\classes\sun\net\www\protocol\jar}.java{$(NEWSUN)\net\www\protocol\jar}.class:
	@echo $(?)>> .classes.list
{$(SHARE_SRC)\classes\sun\io}.java{$(NEWSUN)\io}.class:
	@echo $(?)>> .classes.list
{$(SHARE_SRC)\classes\sun\misc}.java{$(NEWSUN)\misc}.class:
	@echo $(?)>> .classes.list
