
# Makefile for NMAKE. creates HXLdr32.EXE and HXDosLd.EXE
# HXLdr32 uses a special stub, HXLdrStb.exe, which does the true work.
# tools used:
# - HXLdr32:  JWasm + WLink
# - HXLdrStb: JWasm
# - HXDosLd:  JWasm

!include <..\dirs>

!ifndef DEBUG
DEBUG=0
!endif

!if $(DEBUG)
OUTDIR=DEBUG
AOPTD=-D_DEBUG=1
!else
OUTDIR=RELEASE
AOPTD=
!endif

NAME=HXLDR32
STUBNAME=HXLDRSTB

MSLINK=0

ALL: $(OUTDIR) $(OUTDIR)\$(NAME).exe $(OUTDIR)\HXDOSLD.EXE

$(OUTDIR):
	@mkdir $(OUTDIR)

$(OUTDIR)\$(NAME).EXE: $(OUTDIR)\$(STUBNAME).exe $(OUTDIR)\$(NAME).obj makefile
!if $(MSLINK)
	@link @<<
/NOLOGO $(OUTDIR)\$(NAME).obj $(LIBCOFF)\dkrnl32.lib
/OUT:$*.EXE
/SUBSYSTEM:CONSOLE /STUB:$(OUTDIR)\$(STUBNAME).exe
/HEAP:0x0,0x0 /STACK:0x1000,0x1000 /SECTION:.text,ERW
/FIXED /MAP
<<
!else
	@$(LINKBIN) @<<
format windows pe runtime console
file $* lib $(LIBCOFF)\dkrnl32.lib
name $*.EXE
op q, norelocs, stub=$(OUTDIR)\$(STUBNAME).exe, map=$*.map
<<
!endif
!if $(DEBUG)==0
	@copy $*.EXE ..\..\Bin\*.* >NUL
!ifdef TOOLSDIR
	@copy $*.EXE $(TOOLSDIR)\*.* >NUL
!endif
!endif

$(OUTDIR)\$(NAME).obj: $(NAME).asm $(NAME).inc makefile
	@$(ASM) -nologo -c -Sg -Fl$* -Fo$* -I$(INC32DIR) $(NAME).asm

$(OUTDIR)\$(STUBNAME).exe: $(STUBNAME).asm $(NAME).inc makefile
	@$(ASM) -nologo -c -mz -Fl$* -Fo$*.EXE -Sg $(AOPTD) -D?32BIT=1 -I$(INC32DIR) $(STUBNAME).asm

$(OUTDIR)\HXDOSLD.EXE: HXDOSLD.asm makefile
	@$(ASM) -nologo -c -mz -Fl$* -Fo$*.EXE $(AOPTD) HXDOSLD.asm

clean:
	@del $(OUTDIR)\*.obj
	@del $(OUTDIR)\*.exe
	@del $(OUTDIR)\*.lst
