JAVA_HOME=\usr\jdk1.1.8
JAVA2_HOME=\usr\jdk1.2.2
MSDEV_HOME=\usr\msdev\vc98
SWING_HOME=\usr\swing-1.1

C_SOURCE_DIR=.\c
C_OUT_DIR=.\output
CLASS_DIR=.\classes
DEPLOY_DIR=.\dist

JAVALIB=$(SWING_HOME)\swingall.jar;.
JAVA_PKG=com.frisky4.debug
JAVA_PKG_DIR=com\frisky4\debug
C_PKG=com_frisky4_debug
TARGET=HeapInspector
JAVA_CLASS=$(JAVA_PKG).$(TARGET)
MAIN_LIBS=$(MSDEV_HOME)\lib\msvcrt.lib $(MSDEV_HOME)\lib\winmm.lib $(MSDEV_HOME)\lib\oldnames.lib $(MSDEV_HOME)\lib\kernel32.lib
JAVA_LIBS=$(JAVA_HOME)\lib\javai.lib $(MAIN_LIBS)
JAVA2_LIBS=$(JAVA2_HOME)\lib\jvm.lib $(MAIN_LIBS)
JAVAC=$(JAVA2_HOME)\bin\javac
JAVAH=$(JAVA_HOME)\bin\javah
JAVAH2=$(JAVA2_HOME)\bin\javah
JAR=$(JAVA_HOME)\bin\jar

all: class dll dll2 deploy

class:
    $(JAVAC) -O -classpath $(JAVALIB) -d $(CLASS_DIR) $(JAVA_PKG_DIR)\*.java
    $(JAVAC) -classpath $(JAVALIB) SimpleApp.java

stubs:
    $(JAVAH) -classpath $(JAVA_HOME)\lib\classes.zip;$(JAVALIB);$(CLASS_DIR) -d $(C_OUT_DIR) $(JAVA_CLASS) 
    $(JAVAH) -classpath $(JAVA_HOME)\lib\classes.zip;$(JAVALIB);$(CLASS_DIR) -d $(C_OUT_DIR) -stubs $(JAVA_CLASS)

dll: stubs
    cl $(C_SOURCE_DIR)\$(TARGET)Imp.c \
$(C_OUT_DIR)\$(C_PKG)_$(TARGET).c $(C_SOURCE_DIR)\Vector.c $(C_SOURCE_DIR)\Hashtable.c $(C_SOURCE_DIR)\HandleUtil.c \
/I$(JAVA_HOME)\include /I$(JAVA_HOME)\include\win32 \
/I$(MSDEV_HOME)\include \
/I$(C_OUT_DIR) \
/LD -Fe$(C_OUT_DIR)\$(TARGET).dll /Fo$(C_OUT_DIR)\ /MD /O2 \
/GX /W3 \
/D "WIN32" /D "NDEBUG" /D "_WINDOWS" \
$(JAVA_LIBS)

stubs2:
    $(JAVAH2) -old -classpath $(JAVALIB);$(CLASS_DIR) -d $(C_OUT_DIR) $(JAVA_CLASS) 
    $(JAVAH2) -old -classpath $(JAVALIB);$(CLASS_DIR) -d $(C_OUT_DIR) -stubs $(JAVA_CLASS)

dll2: stubs2
    cl /DJAVA_1_2 $(C_SOURCE_DIR)\$(TARGET)Imp.c \
$(C_OUT_DIR)\$(C_PKG)_$(TARGET).c $(C_SOURCE_DIR)\Vector.c $(C_SOURCE_DIR)\Hashtable.c $(C_SOURCE_DIR)\HandleUtil.c \
/LD -Fe$(C_OUT_DIR)\$(TARGET)2.dll /Fo$(C_OUT_DIR)\ /MD /O2 \
/I$(JAVA2_HOME)\include /I$(JAVA2_HOME)\include\win32 \
/I$(JAVA2_HOME)\include-old /I$(JAVA2_HOME)\include-old\win32 \
/I$(MSDEV_HOME)\include \
/I$(C_OUT_DIR) \
/GX /W3 \
/D "WIN32" /D "NDEBUG" /D "_WINDOWS" \
$(JAVA2_LIBS)

jar:
    cd $(CLASS_DIR)
    $(JAR) cf HeapInspector.jar $(JAVA_PKG_DIR)\*.class $(JAVA_PKG_DIR)\images\*.*
    cd ..

deploy: jar
    copy $(CLASS_DIR)\HeapInspector.jar $(DEPLOY_DIR)
    copy $(C_OUT_DIR)\*.dll $(DEPLOY_DIR)
    copy SimpleApp.class $(DEPLOY_DIR)

clean:
    del SimpleApp.class
    del $(CLASS_DIR)\HeapInspector.jar
    del $(CLASS_DIR)\$(JAVA_PKG_DIR)\*.class
    del $(C_OUT_DIR)\*.c
    del $(C_OUT_DIR)\*.h
    del $(C_OUT_DIR)\*.obj
    del $(C_OUT_DIR)\*.dll
    del $(C_OUT_DIR)\*.lib
    del $(C_OUT_DIR)\*.exp
