# @(#)Makefile	1.77 99/03/17
#
# Makefile for building awt dll
#

BUILDDIR = ..\..
LOCATION = sun\awt
LIBRARY = awt
!include $(BUILDDIR)\makefiles\defs.nmk

#
# Set warning level to max, fail on compilation warning, enable C++ exceptions.
#
EXTRA_CFLAGS = -W3 -WX -GX

#
# Has been converted to the JNI: generate JNI-style header files.
#
JAVAHFLAGS = $(JAVAHFLAGS) -jni

#
# Support for Bounds Checker.
#
!if "$(BCHECKER)" == "1"
CC = C:\BChecker\nmcl.exe
!endif

#
# Files to compile.
#
PKG  = sun.awt
PKG2 = sun.awt.font
PKG3 = sun.awt.image
PKG4 = sun.awt.windows
PKG5 = sun.java2d
PKG6 = sun.java2d.pipe
PKG7 = sun.awt.color
PKG8 = sun.java2d.loops
PKG9 = sun.awt.im
PKG10 = sun.awt.im.resources
PKG11 = sun.awt.image.codec
PKG12 = sun.awt.robot
PKG13 = sun.awt.robot.probe
!include $(MINCLUDES)\win32_awt.jmk
!include $(MINCLUDES)\win32_awt.cmk

#
# Stuff to feed into javah. Later we force javah to run in three
# stages.
#
!include $(MINCLUDES)\win32_awt.exp

#
# Useful variables that name parts of the src tree.
#
WINAWT_native        = $(PLATFORM_SRC)\native\sun\windows
WINAWT_COMMON_native = $(PLATFORM_SRC)\native\sun\awt_common

#
# Libraries to link.
#
EXTRA_LIBS =	kernel32.lib \
	     	user32.lib \
		gdi32.lib \
		winspool.lib \
		comdlg32.lib \
		imm32.lib \
		ole32.lib \
		shell32.lib \
		uuid.lib \
		$(JVMLIB) \
		@exports.lcf

#
# Include files.
# FIXME: awt shouldn't have to see the VM's private headers.
# FIXME: if you re-order this list, the build breaks, possibly because
#        of filename collision. Such a collision, if present, is pure
#        evil. Need to investigate this.
#
EXTRA_INCLUDES = $(EXTRA_INCLUDES)\
	-I..\..\java\jvm\CClassHeaders\
	-I$(SHARE_SRC)\native\common\
	-I$(WINAWT_native)\
	-I$(SHARE_SRC)\native\sun\awt\image\cvutils\
	-I$(SHARE_SRC)\native\sun\awt\image\
	-I$(SHARE_SRC)\native\sun\java2d\loops\
	-I$(SHARE_SRC)\native\sun\java2d\pipe\
	-I$(SHARE_SRC)\native\sun\dc\path\
	-I$(SHARE_SRC)\native\sun\dc\doe\
	-I$(SHARE_SRC)\native\sun\awt\alphacomposite\
#	-I$(WINAWT_COMMON_native)

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

#
# We need to run javah in multiple steps because the command
# interpreter can not handle long commandlines. Sigh.
#
classheaders: $(CLASSHEADERS)\timestmp2.hdr $(CLASSHEADERS)\timestmp3.hdr

$(CLASSHEADERS)\timestmp2.hdr: $(FILES_class)
	$(JAVAH_CMD) $(JAVAHFLAGS) -classpath $(CLASSDESTDIR) \
		-d $(CLASSHEADERS) $(EXPORTED_CLASSES_2)
	@echo >$@
	
$(CLASSHEADERS)\timestmp3.hdr: $(FILES_class)
	$(JAVAH_CMD) $(JAVAHFLAGS) -classpath $(CLASSDESTDIR) \
		-d $(CLASSHEADERS) $(EXPORTED_CLASSES_3)
	@echo >$@

#
# Color cube construction rules.
#
awt_colors.h: awt_makecube.exe
	@echo Constructing color cube - this make take some time
	awt_makecube >awt_colors.h

awt_makecube.exe: awt_makecube.obj img_colors.obj
	$(LINK) -out:$@ -nologo awt_makecube.obj img_colors.obj gdi32.lib

awt_makecube.obj: $(WINAWT_COMMON_native)\awt_makecube.cpp
	$(CC) $(CFLAGS) $(CPPDEBUG) -c -Fo$@ $?

img_colors.obj: $(SHARE_SRC)\native\sun\awt\image\cvutils\img_colors.c
	$(CC) $(CFLAGS) -DTIMES -DSTATS $(CPPDEBUG) -c -Fo$@ $?

#
# .res file construction.
#
$(LIBRARY)$G.lcf: awt$G.res

awt$G.res: awt.rc awt.ico hand.cur check.bmp
	$(RC) /FOawt$G.res awt.rc

awt.rc: $(WINAWT_native)\awt.rc
	copy $? $@

awt.ico: $(WINAWT_native)\awt.ico
	copy $? $@

hand.cur: $(WINAWT_native)\hand.cur
	copy $? $@

check.bmp: $(WINAWT_native)\check.bmp
	copy $? $@

#
# FIXME: Do we really need these two rules? The don't seem to run.
#
#$(BINDIR)\pr$G.dll : $(WIN32_SUN)\java2d\pr.dll
#	copy $(WIN32_SUN)\java2d\pr.dll $(BINDIR)\pr$G.dll
#
#$(BINDIR)\pr$G.lib : $(WIN32_SUN)\java2d\pr.lib
#	copy $(WIN32_SUN)\java2d\pr.lib $(BINDIR)\pr$G.lib

clean: awt.clean

awt.clean: FORCE
	-$(DEL) awt.ico awt.rc awt.res hand.cur check.bmp
	-$(DEL) awt_colors.h awt_makecube.obj awt_makecube.exe img_colors.obj
	
#
# Additional dependencies.
#
!include make.depend
# $(OBJDIR)\awt_Image.obj: $(WINAWT_COMMON_native)\image.cpp
$(OBJDIR)\awt_Image.obj: awt_colors.h

#
# vpaths are special for the awt. Some are implicit because of the PKG
# declarations.
#
#{$(PLATFORM_SRC)\native\sun\awt_common}.cpp{$(OBJDIR)}.obj:
#        $(CC) $(CFLAGS) -c -Fo$@ $<
{$(PLATFORM_SRC)\native\sun\windows}.cpp{$(OBJDIR)}.obj:
        $(CC) $(CFLAGS) -c -Fo$@ $<
{$(SHARE_SRC)\native\sun\awt\alphacomposite}.c{$(OBJDIR)}.obj:
	$(CC) $(CFLAGS) -c -Fo$@ $<
{$(SHARE_SRC)\native\sun\awt\image\cvutils}.c{$(OBJDIR)}.obj:
	$(CC) $(CFLAGS) -c -Fo$@ $<
{$(SHARE_SRC)\native\sun\awt\image\gif}.c{$(OBJDIR)}.obj:
	$(CC) $(CFLAGS) -c -Fo$@ $<
{$(SHARE_SRC)\native\sun\awt\medialib}.c{$(OBJDIR)}.obj:
	$(CC) $(CFLAGS) -c -I$(SHARE_SRC)\native\sun\awt\medialib -Fo$@ $<

#
# Properties.
#
FONTPROPERTIES = font.properties
FONTPROPERTIES_AR = font.properties.ar
FONTPROPERTIES_IW = font.properties.iw
FONTPROPERTIES_JA = font.properties.ja
FONTPROPERTIES_KO = font.properties.ko
FONTPROPERTIES_RU = font.properties.ru
FONTPROPERTIES_TH = font.properties.th
FONTPROPERTIES_ZH = font.properties.zh
FONTPROPERTIES_ZH_NT4 = font.properties.zh.NT4.0
FONTPROPERTIES_ZHTW = font.properties.zh_TW

PROPERTIES = $(FONTPROPERTIES) \
	     $(FONTPROPERTIES_AR) \
	     $(FONTPROPERTIES_IW) \
	     $(FONTPROPERTIES_JA) \
	     $(FONTPROPERTIES_KO) \
	     $(FONTPROPERTIES_RU) \
	     $(FONTPROPERTIES_TH) \
	     $(FONTPROPERTIES_ZH) \
	     $(FONTPROPERTIES_ZH_NT4) \
	     $(FONTPROPERTIES_ZHTW)

AWTLPROPERTIESDEFAULT = awtLocalization.properties
AWTLPROPERTIES_JA = awtLocalization_ja.properties
AWTLPROPERTIES_KO = awtLocalization_ko.properties
AWTLPROPERTIES_ZH = awtLocalization_zh.properties

AWTLPROPERTIES = $(AWTLPROPERTIESDEFAULT) $(AWTLPROPERTIES_JA) \
		 $(AWTLPROPERTIES_KO) $(AWTLPROPERTIES_ZH)

WIN32_AWT_java = $(PLATFORM_SRC)\classes\sun\awt\windows

$(FONTPROPERTIES):
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES)
	copy $(WIN32_AWT_java)\$(FONTPROPERTIES) $(LIBDIR)

$(FONTPROPERTIES_AR) :
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES_AR)
	copy $(WIN32_AWT_java)\$(FONTPROPERTIES_AR) $(LIBDIR)

$(FONTPROPERTIES_IW) :
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES_IW)
	copy $(WIN32_AWT_java)\$(FONTPROPERTIES_IW) $(LIBDIR)

$(FONTPROPERTIES_JA):
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES_JA)
	copy $(WIN32_AWT_java)\$(FONTPROPERTIES_JA) $(LIBDIR)

$(FONTPROPERTIES_KO):
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES_KO)
	copy $(WIN32_AWT_java)\$(FONTPROPERTIES_KO) $(LIBDIR)

$(FONTPROPERTIES_RU) :
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES_RU)
	copy $(WIN32_AWT_java)\$(FONTPROPERTIES_RU) $(LIBDIR)

$(FONTPROPERTIES_TH) :
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES_TH)
	copy $(WIN32_AWT_java)\$(FONTPROPERTIES_TH) $(LIBDIR)

$(FONTPROPERTIES_ZH):
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES_ZH)
	copy $(WIN32_AWT_java)\$(FONTPROPERTIES_ZH) $(LIBDIR)

$(FONTPROPERTIES_ZH_NT4):
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES_ZH_NT4)
	copy $(WIN32_AWT_java)\$(FONTPROPERTIES_ZH_NT4) $(LIBDIR)

$(FONTPROPERTIES_ZHTW):
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES_ZHTW)
	copy $(WIN32_AWT_java)\$(FONTPROPERTIES_ZHTW) $(LIBDIR)

$(AWTLPROPERTIESDEFAULT):
	-$(DEL) $(CLASSBINDIR)\sun\awt\windows\$(AWTLPROPERTIESDEFAULT)
	copy $(WIN32_AWT_java)\$(AWTLPROPERTIESDEFAULT) $(CLASSBINDIR)\sun\awt\windows

$(AWTLPROPERTIES_JA):
	-$(DEL) $(CLASSBINDIR)\sun\awt\windows\$(AWTLPROPERTIES_JA)
	copy $(WIN32_AWT_java)\$(AWTLPROPERTIES_JA) $(CLASSBINDIR)\sun\awt\windows

$(AWTLPROPERTIES_KO) :
	-$(DEL) $(CLASSBINDIR)\sun\awt\windows\$(AWTLPROPERTIES_KO)
	copy $(WIN32_AWT_java)\$(AWTLPROPERTIES_KO) $(CLASSBINDIR)\sun\awt\windows

$(AWTLPROPERTIES_ZH) :
	-$(DEL) $(CLASSBINDIR)\sun\awt\windows\$(AWTLPROPERTIES_ZH)
	copy $(WIN32_AWT_java)\$(AWTLPROPERTIES_ZH) $(CLASSBINDIR)\sun\awt\windows

optimized.epilogue debug.epilogue: properties.install
clean: properties.clean

properties.install: $(PROPERTIES) $(AWTLPROPERTIES)
properties.clean:
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES)
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES_AR)
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES_IW)
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES_JA)
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES_KO)
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES_RU)
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES_TH)
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES_ZH)
	-$(DEL) $(LIBDIR)\$(FONTPROPERTIES_ZHTW)
	-$(DEL) $(CLASSBINDIR)\sun\awt\windows\$(AWTLPROPERTIESDEFAULT)
	-$(DEL) $(CLASSBINDIR)\sun\awt\windows\$(AWTLPROPERTIES_JA)
	-$(DEL) $(CLASSBINDIR)\sun\awt\windows\$(AWTLPROPERTIES_KO)
	-$(DEL) $(CLASSBINDIR)\sun\awt\windows\$(AWTLPROPERTIES_ZH)
