#
# File:		makefile.dos
# Author:	Julian Smart
# Created:	1993
# Updated:	
# Copyright:	(c) 1993, AIAI, University of Edinburgh
#
# "%W% %G%"
#
# Makefile : Builds PROLOGIO library

WXDIR = $(WXWIN)
WXLIB = $(WXDIR)\lib\wx.lib
WXINC = $(WXDIR)\include

PROLOGDIR = $(WXDIR)\utils\prologio
PROLOGINC = $(PROLOGDIR)\src

DOCDIR = $(PROLOGDIR)\docs
DOCUTILSDIR = $(WXDIR)\utils\tex2rtf\src
THISDIR = $(PROLOGDIR)\src

INC = /I$(WXDIR)\include\base /I$(WXDIR)\include\msw

!ifndef FINAL
FINAL=0
!endif

# Default is to output RTF for WinHelp
!ifndef WINHELP
WINHELP=-winhelp
!endif

!ifndef DLL
DLL=0
!endif

PRECOMP=/YuWX.H

# Set this to nothing if using MS C++ 7
ZOPTION=/Z7

!if "$(FINAL)" == "0"
DEBUG_FLAGS= /Zi $(ZOPTION)
LINK_DEBUG_FLAGS=/CO
OPT = /Od
!else
# /Ox for real FINAL version
DEBUG_FLAGS=/Zi
LINK_DEBUG_FLAGS=
OPT = /Ox
!endif

!if "$(DLL)" == "0"
CPPFLAGS= $(DEBUG_FLAGS) /AL /Gt4 /W3 /G2sw $(OPT) $(INC) /Dwx_msw
CFLAGS= $(DEBUG_FLAGS) /AL /W3 /G2sw $(OPT) /Dwx_msw
LINKFLAGS=$(LINK_DEBUG_FLAGS) /NOD /SEG:512 /ONERROR:NOEXE
PROLOGLIB = $(PROLOGDIR)\lib\prologio.lib
!else
CPPFLAGS= $(DEBUG_FLAGS) /AL /Gt4 /W3 /G2sw /GD $(OPT) $(INC) /Dwx_msw
CFLAGS= $(DEBUG_FLAGS) /ALw /W3 /G2sw /GD $(OPT) /Dwx_msw
LINKFLAGS=$(LINK_DEBUG_FLAGS) /NOD /SEG:512 /ONERROR:NOEXE
PROLOGLIB = $(PROLOGDIR)\lib\proiodll.lib
!endif

SOURCES = read.cc prorpc.cc y_tab.c lex.yy.c
HEADERS = read.h expr.h prorpc.h
OBJECTS = read.obj prorpc.obj y_tab.obj
LIBS=$(WXLIB) oldnames.lib libw llibcew commdlg shell # $(PROLOGLIB)

all:    $(PROLOGLIB)

wx:
        cd $(WXDIR)\src
        nmake -f makefile.dos $(WXLIB) FINAL=$(FINAL)
        cd $(PROLOGDIR)\src

$(PROLOGLIB):      $(OBJECTS)
        erase $(PROLOGLIB)
        lib /PAGESIZE:128 @<<
$(PROLOGLIB)
y
$(OBJECTS)
nul
;
<<

$(OBJECTS):     $(PROLOGINC)\read.h $(PROLOGINC)\expr.h

read.obj: read.cc $(PROLOGINC)\read.h $(PROLOGINC)\expr.h
        cl @<<
$(CPPFLAGS) /c /Tp $*.cc
<<

prorpc.obj: prorpc.cc $(PROLOGINC)\read.h $(PROLOGINC)\expr.h $(PROLOGINC)\prorpc.h
        cl @<<
$(CPPFLAGS) /c /Tp $*.cc
<<

y_tab.obj:    y_tab.c lex_yy.c
        cl $(CFLAGS) -DUSE_DEFINE -DYY_USE_PROTOS /c /Tc $*.c

# UNIX (or GNU) requires *NO* -DUSE_DEFINE,
# some versions of flex require it. If you get unresolved _PROIO_yywrap, don't
# use -DUSE_DEFINE.
#        cl $(CFLAGS) -DUSE_DEFINE -DYY_USE_PROTOS /c /Tc $*.c

# *** These lines ensure you don't need
# *** YACC or FLEX
y_tab.c:    dosyacc.c
    copy dosyacc.c y_tab.c

lex_yy.c:    doslex.c
    copy doslex.c lex_yy.c

# *** This is how you would recreate the files
# *** using the YACC and FLEX

#y_tab.c:      parser.y
#        yacc parser.y

#lex_yy.c:     lexer.l
#       flex -8 -t lexer.l > lex_yy.c

test.exe:      $(WXLIB) $(PROLOGLIB) test.obj test.def test.res
        link $(LINKFLAGS) @<<
$(WXDIR)\src\msw\dummy.obj test.obj,
test,
NUL,
$(LIBS),
test.def
;
<<
        rc -30 -K test.res

test.obj:      test.cc
        cl @<<
$(CPPFLAGS) /c /Tp $*.cc
<<

test.res :      test.rc $(WXDIR)\include\msw\wx.rc
    rc -r /dFAFA_LIB /i$(WXDIR)\contrib\fafa /i$(WXDIR)\include\msw test

# Making documents
docs:   $(DOCDIR)/prologio.hlp
rtf:    $(DOCDIR)/prologio.rtf
hlp:    $(DOCDIR)/prologio.hlp

$(DOCDIR)/prologio.hlp:         $(DOCDIR)/prologio.rtf $(DOCDIR)/prologio.hpj
        cd $(DOCDIR)
        -erase prologio.ph
        hc prologio
        cd $(THISDIR)

$(DOCDIR)/prologio.rtf:         $(DOCDIR)/manual.tex $(DOCDIR)/classes.tex
        cd $(DOCDIR)
        -wx /W tex2rtf $(DOCDIR)\manual.tex $(DOCDIR)\prologio.rtf -twice $(WINHELP)
        cd $(THISDIR)

clean:
        erase *.exe *.obj y_tab.c lex_yy.c *.lib $(PROLOGLIB)

cleanall:
        erase *.exe *.obj *.pch y_tab.c lex_yy.c $(PROLOGLIB)
