#
#  Makefile for Q&A Booklet Demo Programs
#

#which memory model and processor to use by default
#PROCESSOR =     # for the 16-bit compilers
PROCESSOR = 386 # for the 32-bit compilers

# name the compiler
CC = wcc$(PROCESSOR)
FC = wfc$(PROCESSOR)
ASM = wasm

!ifeq PROCESSOR 386
MODEL = f       # flat
!else
MODEL = l       # large
!endif

# options to use
CFLAGS = -m$(MODEL) -zq
FFLAGS = -m$(MODEL) -noterm -quiet
AFLAGS =
LNKOPT = option quiet

.EXTENSIONS:
.EXTENSIONS: .exe .rex .lib .obj .wbj .asm .c .for

.BEFORE
        @set INCLUDE=.;$(%watcom)\h;$(%watcom)\h\win
        @set FINCLUDE=$(%watcom)\src\fortran;$(%watcom)\src\fortran\dos
        @set DOS4G=QUIET

mix_exes = &
    mix1.exe &
    mix2.exe &
    mix3.exe &
    mix4.exe &
    mix5.exe &
    mix6.exe

!ifeq PROCESSOR 386
exes = &
    bimodal.exe &
    fileio.exe &
    fhandles.exe &
    fmemory.exe &
    fscreen.exe &
    handles.exe &
    keystat.exe &
    keystapl.exp &
    memory.exe &
    mempls40.exp &
    memwin.exe &
    mouse.exe &
    screen.exe &
    screenpl.exp &
    simulate.exe &
    spwnrd4g.exe &
    spwndd4g.exe &
    spwnrpls.exp &
    spwndpls.exp
!else
exes = &
    fhandles.exe &
    handles.exe
!endif


# explicit rules

all :   most mix .SYMBOLIC
        @%null

most :  $(exes) .SYMBOLIC
        @%null

mix :   $(mix_exes) .SYMBOLIC
        @%null

bimodal.exe : bimodal.obj bimo.obj .PRECIOUS
        wlink $(LNKOPT) system dos4g name bimodal file bimodal,bimo

fileio.exe : fileio.obj .PRECIOUS
        wlink $(LNKOPT) system dos4g name fileio file fileio

fhandles.exe : fhandles.obj .PRECIOUS
        wlink $(LNKOPT) file fhandles name fhandles

fmemory.exe : fmemory.obj .PRECIOUS
        wlink $(LNKOPT) system dos4g file fmemory name fmemory

fscreen.exe : fscreen.obj .PRECIOUS
        wlink $(LNKOPT) system dos4g file fscreen name fscreen

handles.exe : handles.obj .PRECIOUS
        wlink $(LNKOPT) file handles name handles

keystat.exe : keystat.obj .PRECIOUS
        wlink $(LNKOPT) system dos4g file keystat name keystat

keystapl.exp : keystapl.obj .PRECIOUS
        wlink $(LNKOPT) system pharlap file keystapl name keystapl

memory.exe : memory.obj .PRECIOUS
        wlink $(LNKOPT) system dos4g file memory name memory

mempls40.exp : mempls40.obj .PRECIOUS
        wlink $(LNKOPT) system pharlap file mempls40 name mempls40

memwin.exe : memwin.rex .PRECIOUS
        wbind -n memwin

memwin.rex : memwin.wbj .PRECIOUS
        wlink $(LNKOPT) system win386 file memwin.wbj name memwin

mouse.exe : mouse.obj .PRECIOUS
        wlink $(LNKOPT) system dos4g file mouse name mouse

screen.exe : screen.obj .PRECIOUS
        wlink $(LNKOPT) system dos4g file screen name screen

screenpl.exp : screenpl.obj .PRECIOUS
        wlink $(LNKOPT) system pharlap file screenpl name screenpl

simulate.exe : simulate.obj .PRECIOUS
        wlink $(LNKOPT) system dos4g file simulate name simulate

spwnrd4g.exe : spwndd4g.exe spwnrd4g.obj .PRECIOUS
        wlink $(LNKOPT) system dos4g file spwnrd4g name spwnrd4g

spwndd4g.exe : spwndd4g.obj .PRECIOUS
        wlink $(LNKOPT) system dos4g file spwndd4g name spwndd4g

spwnrpls.exp : spwndpls.exp spwnrpls.obj .PRECIOUS
        wlink $(LNKOPT) system pharlap runt minr=300K,maxr=400K file spwnrpls name spwnrpls

spwndpls.exp : spwndpls.obj .PRECIOUS
        wlink $(LNKOPT) system pharlap file spwndpls name spwndpls

mix1.exe : mix1c.obj mix1f.obj .PRECIOUS
        wlink $(LNKOPT) file mix1c,mix1f name mix1

mix2.exe : mix2c.obj mix2f.obj .PRECIOUS
        wlink $(LNKOPT) file mix2c,mix2f name mix2

mix3.exe : mix3c.obj mix3f.obj .PRECIOUS
        wlink $(LNKOPT) file mix3c,mix3f name mix3

mix4.exe : mix4c.obj mix4f.obj .PRECIOUS
        wlink $(LNKOPT) file mix4c,mix4f name mix4

mix5.exe : mix5c.obj mix5f.obj .PRECIOUS
        wlink $(LNKOPT) file mix5c,mix5f name mix5

mix6.exe : mix6.obj .PRECIOUS
        wlink $(LNKOPT) file mix6 name mix6

run_all:    .SYMBOLIC
        %make run_mix
!ifeq PROCESSOR 386
        -bimodal.exe
        -fhandles.exe
        -fmemory.exe
        -fscreen.exe
        -handles.exe
        -keystat.exe
        -run386 keystapl.exp
        -memory.exe
        -run386 mempls40.exp
        -memwin.exe
        -mouse.exe
        -screen.exe
        -run386 screenpl.exp
        -simulate.exe
        -spwnrd4g.exe
        -run386 spwnrpls.exp
!endif

run_mix :   .SYMBOLIC
        -mix1.exe
        -mix2.exe
        -mix3.exe
        -mix4.exe
        -mix5.exe
        -mix6.exe

clean : .SYMBOLIC
        if exist *.obj del *.obj
        if exist *.wbj del *.wbj
        if exist *.rex del *.rex
        if exist *.exe del *.exe
        if exist *.exp del *.exp

# implicit rules

.c.obj :
        $(CC) $^& $(CFLAGS)

.c.wbj :
        $(CC) $^& $(CFLAGS) -zw -fo=$^&.wbj

.for.obj :
        $(FC) $^& $(FFLAGS)

.asm.obj :
        $(ASM) $(AFLAGS) $^&
