###############################
# Makefile for Synchronet BBS #
# For use with Turbo C++      #
# Tabstop=8		      #
###############################

# Macros
CC	= bcc
LD	= tlink
!ifdef __OS2__
OS	= OS2
INCLUDE = \bc\include
LIB     = \bc\lib
CFLAGS	= -d -C -I$(INCLUDE) -DSBBS
LFLAGS  = -c -w-srf
!else
OS      = DOS
INCLUDE = \bc\include
LIB	= \bc\lib
MODEL	= l
CFLAGS	= -d -C -Y -m$(MODEL) -I$(INCLUDE) -DSBBS
LFLAGS	= -n -c
!endif
MAIN	= $(OS)\sbbs.exe
OBJS	= $(OS)\comio.obj $(OS)\conio.obj $(OS)\data.obj\
	  $(OS)\etext.obj $(OS)\logio.obj $(OS)\main.obj\
	  $(OS)\msg.obj $(OS)\misc.obj $(OS)\scfgvars.obj\
	  $(OS)\vars.obj $(OS)\xtrn.obj
!ifndef __OS2__
OBJS	= $(OBJS) $(OS)\rciol.obj $(OS)\mswait.obj $(OS)\crc.obj
!endif
OVLOBJS = $(OS)\bbs_ovl.obj $(OS)\data_ovl.obj $(OS)\file.obj\
	  $(OS)\file_ovl.obj $(OS)\chat.obj $(OS)\fido.obj\
	  $(OS)\initdata.obj $(OS)\logonoff.obj $(OS)\main_ovl.obj\
	  $(OS)\main_wfc.obj $(OS)\main_sec.obj $(OS)\msg_ovl.obj\
	  $(OS)\qwk.obj $(OS)\readmsgs.obj $(OS)\scfglib.obj\
	  $(OS)\str_ovl.obj $(OS)\useredit.obj $(OS)\xfer_ovl.obj\
	  $(OS)\xfer.obj $(OS)\xfer_sec.obj $(OS)\xtrn_ovl.obj
HEADERS = sbbs.h defs.h text.h vars.c scfgvars.c

# Implicit C Compile Rule
{.}.c.obj:
	@echo Compiling (I) $< to $@ ...
	$(CC) $(CFLAGS) -n$(OS) -c $<

# Main EXE Link Rule
$(MAIN): $(OBJS) $(OVLOBJS) $(OS)\ver.obj
    	@echo Linking $< ...
!ifdef __OS2__
	$(LD) $(LFLAGS) @&&+
$(LIB)\c02.obj $(OBJS) $(OS)\ver.obj $(OVLOBJS)
+ $*, $*, $(LIB)\os2.lib $(LIB)\c2.lib
!else
	$(LD) $(LFLAGS) @&&+
$(LIB)\c0$(MODEL) $(OBJS) $(OS)\ver.obj /o $(OVLOBJS)
+ $*, $*, $(LIB)\overlay.lib $(LIB)\c$(MODEL).lib $(LIB)\math$(MODEL).lib\
	$(LIB)\emu.lib
!endif

etext.h: etext.dat
	@echo Creating new encrypted text (ETEXT) Code and Header files...
	genetext

# All .obj modules
$(OS)\bbs_ovl.obj:     $(HEADERS)
$(OS)\chat.obj:        $(HEADERS)
$(OS)\comio.obj:       $(HEADERS)
$(OS)\conio.obj:       $(HEADERS)
$(OS)\data.obj:        $(HEADERS)
$(OS)\data_ovl.obj:    $(HEADERS)
$(OS)\etext.obj:       etext.h
$(OS)\fido.obj:        $(HEADERS)
$(OS)\file.obj:        $(HEADERS)
$(OS)\file_ovl.obj:    $(HEADERS)
$(OS)\initdata.obj:    $(HEADERS)
$(OS)\logio.obj:       $(HEADERS)
$(OS)\logonoff.obj:    $(HEADERS)
$(OS)\main.obj:        $(HEADERS)
$(OS)\main_ovl.obj:    $(HEADERS) etext.h
$(OS)\main_sec.obj:    $(HEADERS)
$(OS)\main_wfc.obj:    $(HEADERS) etext.h
$(OS)\misc.obj:        $(HEADERS)
$(OS)\msg.obj:	       $(HEADERS)
$(OS)\msg_ovl.obj:     $(HEADERS)
$(OS)\qwk.obj:	       $(HEADERS) etext.h
$(OS)\readmsgs.obj:    $(HEADERS)
$(OS)\scfglib.obj:     $(HEADERS)
$(OS)\scfgvars.obj:    $(HEADERS)
$(OS)\str_ovl.obj:     $(HEADERS)
$(OS)\useredit.obj:    $(HEADERS)
$(OS)\vars.obj:        $(HEADERS)
$(OS)\ver.obj:	       $(OBJS) $(OVLOBJS) defs.h etext.h
$(OS)\xfer.obj:        $(HEADERS)
$(OS)\xfer_ovl.obj:    $(HEADERS)
$(OS)\xfer_sec.obj:    $(HEADERS)
$(OS)\xtrn.obj:        $(HEADERS)
$(OS)\xtrn_ovl.obj:    $(HEADERS)
