#NODEBUG = 1

!include <ntwin32.mak>

!IFDEF NODEBUG
ddebug =
!ELSE
ddebug = -DDEBUG
!ENDIF

# We don't use inference rules for compiling, because of the need to
# have .obj files with different names from their .c sources.  This
# macro makes it easier to specify the compilation command. 

!IFNDEF defines
defines = $(ddebug) -DBOOLEANS -DLITERAL -DHTML
!ENDIF

ccompile = $(cc) $(cdebug) $(cflags) $(cvarsmt) $(ddebug) -Fo$@ $(defines)

# Location of libraries
LIBDIR = ..\bin

# Location of backup directory
!IFNDEF BACKDIR
BACKDIR = g:\infeng\freewais
!ENDIF

# Libraries themselves
PROTOCOL_LIB = $(LIBDIR)\wais-$(CPU).lib
INV_LIB = $(LIBDIR)\inv-$(CPU).lib

# Modules in each library
PROTOCOL_OBJ = \
          irfiles-$(CPU).obj \
          cutil-$(CPU).obj \
          futil-$(CPU).obj \
          ircfiles-$(CPU).obj \
          irfileio-$(CPU).obj \
          irkeywords-$(CPU).obj \
          panic-$(CPU).obj \
          transprt-$(CPU).obj \
          ustubs-$(CPU).obj \
          wmessage-$(CPU).obj \
          wprot-$(CPU).obj \
          wutil-$(CPU).obj \
          zprot-$(CPU).obj \
          zutil-$(CPU).obj \
          ztype1-$(CPU).obj \
          docid-$(CPU).obj \
          win32lock-$(CPU).obj \
          win32skt-$(CPU).obj \
          list-$(CPU).obj

INV_OBJ = \
          irsearch-$(CPU).obj \
          sersrch-$(CPU).obj \
          ir-$(CPU).obj \
          irretrvl-$(CPU).obj \
          irtfiles-$(CPU).obj \
          stemmer-$(CPU).obj \
          synonym-$(CPU).obj \
          stoplist-$(CPU).obj \
          trie-$(CPU).obj \
          soundex-$(CPU).obj \
          manipulstr-$(CPU).obj \
          irhash-$(CPU).obj \
          hash-$(CPU).obj \
          irinv-$(CPU).obj \
          boolean_op-$(CPU).obj \
          sockets-$(CPU).obj \
          ui-local-$(CPU).obj


# Main targets

default: $(PROTOCOL_LIB) $(INV_LIB) $(LIBDIR)\waisindex-$(CPU).exe $(LIBDIR)\waisserv-$(CPU).exe

backup:
    copy *.c $(BACKDIR)\ir
    copy *.h $(BACKDIR)\ir
    copy Makefile $(BACKDIR)\ir

clean:
    del *.obj *.bak *.map

# Intermediate targets

ui-local-$(CPU).obj: ui-local.c
    $(ccompile) ui-local.c

sockets-$(CPU).obj: sockets.c
    $(ccompile) sockets.c

irinv-$(CPU).obj: irinv.c
    $(ccompile) irinv.c

boolean_op-$(CPU).obj: boolean_op.c
    $(ccompile) boolean_op.c

ir-$(CPU).obj: ir.c
    $(ccompile) ir.c

win32skt-$(CPU).obj: win32skt.c
    $(ccompile) win32skt.c

irretrvl-$(CPU).obj: irretrvl.c
    $(ccompile) irretrvl.c

irtfiles-$(CPU).obj: irtfiles.c
    $(ccompile) irtfiles.c

synonym-$(CPU).obj: synonym.c
    $(ccompile) synonym.c

stoplist-$(CPU).obj: stoplist.c
    $(ccompile) stoplist.c

hash-$(CPU).obj: hash.c
    $(ccompile) hash.c

irhash-$(CPU).obj: irhash.c
    $(ccompile) irhash.c

trie-$(CPU).obj: trie.c
    $(ccompile) trie.c

soundex-$(CPU).obj: soundex.c soundex.h
    $(ccompile) soundex.c

manipulstr-$(CPU).obj: manipulstr.c
    $(ccompile) manipulstr.c

stemmer-$(CPU).obj: stemmer.c
    $(ccompile) stemmer.c

list-$(CPU).obj: list.c
    $(ccompile) list.c

docid-$(CPU).obj: docid.c
    $(ccompile) docid.c

irkeywords-$(CPU).obj: irkeywords.c
    $(ccompile) irkeywords.c

panic-$(CPU).obj: panic.c
    $(ccompile) panic.c

transprt-$(CPU).obj: transprt.c
    $(ccompile) transprt.c

ustubs-$(CPU).obj: ustubs.c
    $(ccompile) ustubs.c

wmessage-$(CPU).obj: wmessage.c
    $(ccompile) wmessage.c

wprot-$(CPU).obj: wprot.c
    $(ccompile) wprot.c

wutil-$(CPU).obj: wutil.c
    $(ccompile) wutil.c

zprot-$(CPU).obj: zprot.c
    $(ccompile) zprot.c

zutil-$(CPU).obj: zutil.c
    $(ccompile) zutil.c

ztype1-$(CPU).obj: ztype1.c
    $(ccompile) ztype1.c

irfileio-$(CPU).obj: irfileio.c
    $(ccompile) irfileio.c

ircfiles-$(CPU).obj: ircfiles.c
    $(ccompile) ircfiles.c

futil-$(CPU).obj: futil.c
    $(ccompile) futil.c

cutil-$(CPU).obj: cutil.c
    $(ccompile) cutil.c

irsearch-$(CPU).obj: irsearch.c soundex.h
    $(ccompile) irsearch.c

sersrch-$(CPU).obj: sersrch.c
    $(ccompile) sersrch.c

irfiles-$(CPU).obj: irfiles.c
    $(ccompile) irfiles.c

waisindex-$(CPU).obj: waisindex.c irtfiles.h version.h
    $(ccompile) waisindex.c

waisserv-$(CPU).obj: waisserv.c version.h
    $(ccompile) waisserv.c

win32lock-$(CPU).obj: win32lock.c
    $(ccompile) win32lock.c

$(PROTOCOL_LIB): $(PROTOCOL_OBJ)
    $(implib) -out:$@ $**

$(INV_LIB): $(INV_OBJ)
    $(implib) -out:$@ $**

$(LIBDIR)\waisindex-$(CPU).exe: waisindex-$(CPU).obj $(PROTOCOL_LIB) $(INV_LIB)
    $(link) $(linkdebug) $(conflags) -force -map:$*.map -out:$*.exe $** $(conlibsmt) wsock32.lib

$(LIBDIR)\waisserv-$(CPU).exe: waisserv-$(CPU).obj $(PROTOCOL_LIB) $(INV_LIB)
    $(link) $(linkdebug) $(conflags) -force -map:$*.map -out:$*.exe $** $(conlibsmt) wsock32.lib user32.lib


