#
#  Watcom Makefile for dos-libpcap.
#
# Specify MODEL = `3r' or `3s'
# Specify TARGET = `pharlap' or `dos4g'
#
# Use this makefile from the libpcap root directory.
# E.g. like this:
#
#  c:\net\pcap> wmake -f msdos\makefile.wc
#

MODEL  = 3s
TARGET = dos4g

OBJDIR = msdos\$(TARGET).w$(MODEL)
LIB    = $(OBJDIR)\pcap.lib

.EXTENSIONS: .l .y

DEFS = -dDEBUG -dNDIS_DEBUG -d_U_= -dHAVE_LIMITS_H -dHAVE_STRERROR &
       -dHAVE_SNPRINTF -dHAVE_VSNPRINTF

CC  = wcc386.exe
ASM = wasm.exe -$(MODEL) $(DEFS) -dDOSX -dDOS4GW -zq -bt=dos -fr=nul -d3 -s

OBJS = $(OBJDIR)\grammar.obj  $(OBJDIR)\scanner.obj  $(OBJDIR)\pcap.obj     &
       $(OBJDIR)\bpf_filt.obj $(OBJDIR)\bpf_imag.obj $(OBJDIR)\bpf_dump.obj &
       $(OBJDIR)\etherent.obj $(OBJDIR)\gencode.obj  $(OBJDIR)\nametoad.obj &
       $(OBJDIR)\pcap-dos.obj $(OBJDIR)\pktdrvr.obj  $(OBJDIR)\optimize.obj &
       $(OBJDIR)\savefile.obj $(OBJDIR)\inet.obj     $(OBJDIR)\ndis2.obj

CFLAGS = $(DEFS) $(YYDEFS) -I. -I$(%watt_root)\inc -I.\msdos\pm_drvr &
         -$(MODEL) -mf -zff -zgf -zq -bt=dos -fr=nul -w6 -fpi        &
         -oilrtf -zm

TEMPBIN = tmp.bin

all: $(OBJDIR) $(OBJDIR)\pcap.lib

$(OBJDIR):
          - mkdir $(OBJDIR)

$(OBJDIR)\pcap.lib: $(OBJS) wlib.arg
          wlib -q -b -c $(OBJDIR)\pcap.lib @wlib.arg

wlib.arg: msdos\makefile.wc
          %create $^@
          for %f in ($(OBJS)) do %append $^@ +- %f

$(OBJDIR)\pktdrvr.obj: msdos\pkt_stub.inc msdos\pktdrvr.c gnuc.h &
  pcap-dos.h pcap-int.h pcap.h msdos\pktdrvr.h
          *$(CC) $(CFLAGS) msdos\pktdrvr.c -fo=$@

$(OBJDIR)\ndis2.obj: msdos\ndis2.c
          *$(CC) $(CFLAGS) msdos\ndis2.c -fo=$@

.ERASE
.c{$(OBJDIR)}.obj:
          *$(CC) $(CFLAGS) $[@ -fo=$@

grammar.c tokdefs.h: grammar.y 
          bison --name-prefix=pcap_ --yacc --defines $[@
          - @del grammar.c
          - @del tokdefs.h
          ren y_tab.c grammar.c
          ren y_tab.h tokdefs.h

scanner.c: scanner.l
          flex -Ppcap_ -7 -o$@ $[@

msdos\pkt_stub.inc: bin2c.exe msdos\pkt_rx1.S
          nasm -fbin -dDEBUG -o $(TEMPBIN) -lmsdos\pkt_rx1.lst msdos\pkt_rx1.S
          bin2c.exe  $(TEMPBIN) > $@
          @del $(TEMPBIN)

bin2c.exe: msdos\bin2c.c
          wcl $[@

clean realclean vclean: .SYMBOLIC
          for %f in (dos4g.w3r dos4g.w3s pharlap.w3r pharlap.w3s) do &
            @del %f\*.obj
          @del grammar.c
          @del tokdefs.h
          @del scanner.c
          @del bin2c.exe
          @del bin2c.obj
          @del msdos\pkt_stub.inc
          @echo Cleaned

#
# dependencies
#                     
$(OBJDIR)\bpf_filt.obj: bpf_filt.c pcap-int.h pcap.h pcap-bpf.h gnuc.h

$(OBJDIR)\bpf_imag.obj: bpf_imag.c pcap-int.h pcap.h pcap-bpf.h

$(OBJDIR)\bpf_dump.obj: bpf_dump.c pcap.h pcap-bpf.h

$(OBJDIR)\etherent.obj: etherent.c pcap-int.h pcap.h pcap-bpf.h pcap-nam.h

$(OBJDIR)\optimize.obj: optimize.c pcap-int.h pcap.h pcap-bpf.h gencode.h

$(OBJDIR)\savefile.obj: savefile.c pcap-int.h pcap.h pcap-bpf.h

$(OBJDIR)\pcap.obj: pcap.c pcap-dos.h pcap-int.h pcap.h pcap-bpf.h

$(OBJDIR)\inet.obj: inet.c pcap-int.h pcap.h pcap-bpf.h

$(OBJDIR)\grammar.obj: grammar.c pcap-int.h pcap.h pcap-bpf.h gencode.h &
  pf.h pcap-nam.h

$(OBJDIR)\scanner.obj: scanner.c pcap-int.h pcap.h pcap-bpf.h gencode.h &
  pcap-nam.h tokdefs.h

$(OBJDIR)\gencode.obj: gencode.c pcap-dos.h pcap-int.h pcap.h pcap-bpf.h &
  ethertyp.h nlpid.h llc.h gencode.h atmuni31.h sunatmpo.h ppp.h sll.h &
  arcnet.h pf.h pcap-nam.h

$(OBJDIR)\nametoad.obj: nametoad.c pcap-int.h pcap.h pcap-bpf.h gencode.h &
  pcap-nam.h ethertyp.h

$(OBJDIR)\pcap-dos.obj: pcap-dos.c pcap.h pcap-bpf.h pcap-dos.h pcap-int.h &
  msdos\pktdrvr.h

$(OBJDIR)\pktdrvr.obj: msdos\pktdrvr.c gnuc.h pcap-dos.h pcap-int.h &
  pcap.h pcap-bpf.h msdos\pktdrvr.h msdos\pkt_stub.inc

$(OBJDIR)\ndis2.obj: msdos\ndis2.c pcap-dos.h pcap-int.h pcap.h pcap-bpf.h &
  msdos\ndis2.h