
# Nmake makefile to generate the basic HX DOS extender binaries.

# Required tools are:
#
# tool         name         recommended       optional
# --------------------------------------------------------------
# Make                      MS NMake          OW WMake -ms
# Assembler    $(ASM)       JWasm             Masm v6.14+
# COFF linker               JWlink            MS LINK
# COFF lib     $(LIBBIN)    JWLib             MS LIB
# OMF linker   $(LINK16BIN) JWlink            MS LINK (OMF)
# OMF lib      $(LIB16BIN)  JWLib             MS LIB (OMF)

# The HX development package is also needed. It should contain
# tools EditPE, PatchPE, ExtrMZ. 
# Add \hx\bin to the PATH variable and edit file DIRS.
# Make sure that JWlink is at least v1.9beta15 (req. by HDPMI)

!include <dirs>

!ifndef DEBUG
DEBUG = 0
!endif

ALL: 
    cd    HDPMI
    @$(MAKE) DEBUG=$(DEBUG) 
    cd ..\DPMILDR
    @$(MAKE) DEBUG=$(DEBUG) 
    cd ..\VESA32
    @$(MAKE) DEBUG=$(DEBUG) 
    cd ..\HXLDR32
    @$(MAKE) DEBUG=$(DEBUG) 
    cd ..\EDITPE
    @$(MAKE) DEBUG=$(DEBUG) 
    cd ..\PESTUB
    @$(MAKE) DEBUG=$(DEBUG) 
    cd ..\HXGUIHLP
    @$(MAKE) DEBUG=$(DEBUG) 
    cd ..\SB16
    @$(MAKE) DEBUG=$(DEBUG) 
    cd ..\STUBS
    @$(MAKE) DEBUG=$(DEBUG) 
    cd ..\MZSUPP
    @$(MAKE) DEBUG=$(DEBUG) 
    cd ..\MZSUPP16
    @$(MAKE) DEBUG=$(DEBUG) 
#   cd ..\NESUPP
#   @$(MAKE) DEBUG=$(DEBUG) 
    cd ..\NESUPP16
    @$(MAKE) DEBUG=$(DEBUG) 
    cd ..\HXHELP
    @$(MAKE) DEBUG=$(DEBUG) 
    @$(MAKE) -f HXHELP16.mak DEBUG=$(DEBUG) 
    cd ..\PATCHPE
    @$(MAKE) DEBUG=$(DEBUG) 
    cd ..\PATCHNE
    @$(MAKE) DEBUG=$(DEBUG) 
    cd ..\SHDPMI
    @$(MAKE) DEBUG=$(DEBUG) 
    cd ..\DPMI
    @$(MAKE) DEBUG=$(DEBUG) 
    cd ..\DOSX
    @$(MAKE) DEBUG=$(DEBUG) 
    cd ..

install:
	@if not exist $(HXINST)\NUL               mkdir $(HXINST)
	@if not exist $(HXINST)\Bin\NUL           mkdir $(HXINST)\Bin
	@if not exist $(HXINST)\Doc\NUL           mkdir $(HXINST)\Doc
	@if not exist $(HXINST)\Include\NUL       mkdir $(HXINST)\Include
	@if not exist $(HXINST)\Lib\NUL           mkdir $(HXINST)\Lib
	@if not exist $(HXINST)\LibOMF\NUL        mkdir $(HXINST)\LibOMF
	@if not exist $(HXINST)\Lib16\NUL         mkdir $(HXINST)\Lib16
	@if not exist $(HXINST)\OWSupp\NUL        mkdir $(HXINST)\OWSupp
	@if not exist $(HXINST)\OWSupp\V19\NUL    mkdir $(HXINST)\OWSupp\V19
	@if not exist $(HXINST)\OWSupp\V19\DOS\NUL mkdir $(HXINST)\OWSupp\V19\DOS
	@if not exist $(HXINST)\OWSupp\V20\NUL    mkdir $(HXINST)\OWSupp\V20
	@if not exist $(HXINST)\OWSupp\V20\DOS\NUL mkdir $(HXINST)\OWSupp\V20\DOS
	@if not exist $(HXINST)\OWSupp\WDSupp\NUL mkdir $(HXINST)\OWSupp\WDSupp
	@if not exist $(HXINST)\OWSupp16\NUL      mkdir $(HXINST)\OWSupp16
	@if not exist $(HXINST)\Unsupp\NUL        mkdir $(HXINST)\UnSupp

	@copy HDPMI\STD16\HDPMI16.EXE   $(HXINST)\Bin
	@copy HDPMI\STD32\HDPMI32.EXE   $(HXINST)\Bin
	@copy HDPMI\IOPL016\HDPMI16i.EXE $(HXINST)\Bin
	@copy HDPMI\IOPL032\HDPMI32i.EXE $(HXINST)\Bin
	@copy HDPMI\STUB16\HDPMI16.INC  $(HXINST)\Include
	@copy HDPMI\STUB32\HDPMI32.INC  $(HXINST)\Include
	@copy HDPMI\HDPMIST\HDPMIST.EXE $(HXINST)\Bin
	@copy HDPMI\HDPMI.TXT           $(HXINST)\Doc
	@copy HDPMI\HDPMIHIS.TXT        $(HXINST)\Doc
	@copy HDPMI\HDPMIAPI.TXT        $(HXINST)\Doc

	@copy DPMILDR\STD16\DPMILD16.EXE   $(HXINST)\Bin
	@copy DPMILDR\STD32\DPMILD32.EXE   $(HXINST)\Bin
	@copy DPMILDR\STUB16\DPMILD16.BIN  $(HXINST)\Bin
	@copy DPMILDR\STUB32\DPMILD32.BIN  $(HXINST)\Bin
	@copy DPMILDR\STUBX16\HDLD16.BIN   $(HXINST)\Bin
	@copy DPMILDR\STUBX32\HDLD32.BIN   $(HXINST)\Bin
	@copy DPMILDR\NOLFN32\DPMILD32.EXE $(HXINST)\UnSupp
	@copy DPMILDR\DPMILD16.TXT         $(HXINST)\Doc
	@copy DPMILDR\DPMILD32.TXT         $(HXINST)\Doc
	@copy DPMILDR\DPMILDHS.TXT         $(HXINST)\Doc

	@copy STUBS\Release\DPMIST16.BIN  $(HXINST)\Bin
	@copy STUBS\Release\DPMIST32.BIN  $(HXINST)\Bin
	@copy STUBS\Release\LOADPE.BIN    $(HXINST)\Bin
	@copy STUBS\Release\LOADPEX.BIN   $(HXINST)\Bin
	@copy STUBS\Release\LOADPXNR.BIN  $(HXINST)\Bin
	@copy STUBS\Release\LOADPERO.BIN  $(HXINST)\Bin
	@copy STUBS\STUBS.TXT             $(HXINST)\Doc

	@copy HXLDR32\Release\HXLDR32.EXE $(HXINST)\Bin
	@copy HXLDR32\Release\HXDOSLD.EXE $(HXINST)\Bin
	@copy HXLDR32\HXLDR32.TXT         $(HXINST)\Doc
	@copy HXLDR32\HXDOSLD.TXT         $(HXINST)\Doc

	@copy PATCHPE\Release\PATCHPE.EXE $(HXINST)\Bin
	@copy PATCHPE\PATCHPE.TXT         $(HXINST)\Doc
	@copy PATCHNE\Release\PATCHNE.EXE $(HXINST)\Bin
	@copy PATCHNE\PATCHNE.TXT         $(HXINST)\Doc

	@copy EDITPE\Release\EDITPE.EXE   $(HXINST)\Bin
	@copy EDITPE\Release\EXTRMZ.EXE   $(HXINST)\Bin
	@copy EDITPE\EDITPE.TXT           $(HXINST)\Doc
	@copy PESTUB\Release\PESTUB.EXE   $(HXINST)\Bin
	@copy PESTUB\PESTUB.TXT           $(HXINST)\Doc

	@copy HXGUIHLP\Release\HXGUIHLP.DLL $(HXINST)\Bin
	@copy HXGUIHLP\HXGUIHLP.TXT       $(HXINST)\Doc

	@copy SB16\Release\SB16.DLL       $(HXINST)\Bin
#	@copy SB16\SB16.TXT               $(HXINST)\Doc

	@copy VESA32\Release\VESA32.DLL   $(HXINST)\Bin
	@copy VESA32\Release\VESA32.LIB   $(HXINST)\Lib
	@copy VESA32\Release\VESA32S.LIB  $(HXINST)\Lib
	@copy VESA32\VESA32.TXT           $(HXINST)\Doc

	@copy DPMI\Release\DPMI.EXE       $(HXINST)\Bin

	@copy MZSUPP\Release\JMPPM32.LIB  $(HXINST)\LibOMF
	@copy MZSUPP\Release\JMPPM32.OBJ  $(HXINST)\LibOMF
	@copy MZSUPP\Release\LOADSRVR.OBJ $(HXINST)\LibOMF
	@copy MZSUPP\Release\DEFSTACK.OBJ $(HXINST)\LibOMF
	@copy MZSUPP\Release\DMYSRVR.OBJ  $(HXINST)\LibOMF
	@copy MZSUPP\Release\DMYMOVE.OBJ  $(HXINST)\LibOMF
	@copy MZSUPP\Release\InitPM.OBJ   $(HXINST)\LibOMF

	@copy MZSUPP16\Release\JMPPM16.OBJ  $(HXINST)\Lib16
	@copy MZSUPP16\Release\JMPPM16M.OBJ $(HXINST)\Lib16
	@copy MZSUPP16\Release\JMPPM16W.OBJ $(HXINST)\Lib16
	@copy MZSUPP16\Release\InitPM16.OBJ $(HXINST)\Lib16
	@copy NESUPP16\Release\InitApp.OBJ  $(HXINST)\Lib16

	@copy HXHELP\Release\HXHELP.EXE   $(HXINST)\OWSupp\WDSupp
	@copy HXHELP\TRAP\HX.TRP          $(HXINST)\OWSupp\WDSupp
	@copy HXHELP\HXHELP.TXT           $(HXINST)\OWSupp\WDSupp
	@copy HXHELP\Rel16\HXHELP16.EXE   $(HXINST)\OWSupp16\HXHP16.EXE
	@copy HXHELP\TRAP\HX16.TRP        $(HXINST)\OWSupp16

	@copy SHDPMI\Release\SHDPMI.EXE   $(HXINST)\Bin
	@copy SHDPMI\Release\SHDPMIR.EXE  $(HXINST)\Bin
	@copy SHDPMI\SHDPMI.TXT           $(HXINST)\Doc

	@copy DOSX\Release\DOSX.EXE       $(HXINST)\UnSupp
	@copy DOSX\DOSX.TXT               $(HXINST)\UnSupp

	@copy ..\Include\INITPM.INC       $(HXINST)\Include
	@copy ..\Include\INITPM16.INC     $(HXINST)\Include

	@copy JHDPMI\Release\JHDPMI.DLL   $(HXINST)\Bin
	@copy JHDPMI\JHDPMI.TXT           $(HXINST)\Doc

	@copy HXVDD\Release\HXVDD.DLL     $(HXINST)\Bin
	@copy HXVDD\HXVDD.TXT             $(HXINST)\Doc

clean: 
    cd    HDPMI
    @$(MAKE) DEBUG=$(DEBUG) clean
    cd ..\DPMILDR
    @$(MAKE) DEBUG=$(DEBUG) clean
    cd ..\VESA32
    @$(MAKE) DEBUG=$(DEBUG) clean 
    cd ..\HXLDR32
    @$(MAKE) DEBUG=$(DEBUG) clean 
    cd ..\EDITPE
    @$(MAKE) DEBUG=$(DEBUG) clean 
    cd ..\PESTUB
    @$(MAKE) DEBUG=$(DEBUG) clean 
    cd ..\HXGUIHLP
    @$(MAKE) DEBUG=$(DEBUG) clean 
    cd ..\SB16
    @$(MAKE) DEBUG=$(DEBUG) clean 
    cd ..\MZSUPP
    @$(MAKE) DEBUG=$(DEBUG) clean 
    cd ..\MZSUPP16
    @$(MAKE) DEBUG=$(DEBUG) clean 
#    cd ..\NESUPP
#    @$(MAKE) DEBUG=$(DEBUG) clean 
    cd ..\STUBS
    @$(MAKE) DEBUG=$(DEBUG) clean 
    cd ..\HXHELP
    @$(MAKE) DEBUG=$(DEBUG) clean 
    cd ..\PATCHPE
    @$(MAKE) DEBUG=$(DEBUG) clean 
    cd ..\PATCHNE
    @$(MAKE) DEBUG=$(DEBUG) clean 
    cd ..\SHDPMI
    @$(MAKE) DEBUG=$(DEBUG) clean 
    cd ..\DPMI
    @$(MAKE) DEBUG=$(DEBUG) clean 
    cd ..\DOSX
    @$(MAKE) DEBUG=$(DEBUG) clean 
    cd ..
