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

# Macros
CC	= bcc
LD	= tlink
!ifdef __OS2__
OS	= OS2
INCLUDE = \bc\include;smb
LIB     = \bc\lib
CFLAGS	= -d -C -I$(INCLUDE) -DSBBS
LFLAGS  = -c -w-srf
!else
OS      = DOS
INCLUDE = \bc\include;smb
LIB	= \bc\lib
MODEL	= l
CFLAGS	= -d -C -Y -m$(MODEL) -I$(INCLUDE) -DSBBS
LFLAGS	= -n -c
!endif
MAIN	= $(OS)\sbbs.exe
!ifndef __OS2__
OBJS	= $(OS)\rciol.obj $(OS)\mswait.obj $(OS)\crc.obj
!endif
OBJS	= $(OBJS) $(OS)\etext.obj $(OS)\scfgvars.obj $(OS)\vars.obj\
	  $(OS)\xtrn.obj $(OS)\smblib.obj $(OS)\smbvars.obj

OVLOBJS = $(OS)\comio.obj\
	  $(OS)\con_lo.obj $(OS)\con_mid.obj $(OS)\con_hi.obj\
	  $(OS)\data.obj $(OS)\data_ovl.obj\
	  $(OS)\file.obj $(OS)\file_ovl.obj\ 
	  $(OS)\chat.obj $(OS)\fido.obj\
	  $(OS)\initdata.obj $(OS)\logio.obj\
	  $(OS)\logonoff.obj $(OS)\mail.obj\ 
 	  $(OS)\main.obj $(OS)\main_ovl.obj\
	  $(OS)\main_wfc.obj $(OS)\main_sec.obj $(OS)\msg_ovl.obj\
	  $(OS)\msg.obj $(OS)\misc.obj\
	  $(OS)\qwk.obj $(OS)\readmsgs.obj $(OS)\scfglib.obj\
	  $(OS)\str.obj $(OS)\text_sec.obj $(OS)\useredit.obj\
	  $(OS)\xfer_lo.obj $(OS)\xfer_mid.obj $(OS)\xfer_hi.obj\
	  $(OS)\xfer_sec.obj $(OS)\xtrn_ovl.obj 
HEADERS = sbbs.h defs.h text.h vars.c scfgvars.c smb\smblib.h smb\smbdefs.h

# 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)
+ $*, $*, dos\spawnl.lib $(LIB)\overlay.lib $(LIB)\c$(MODEL).lib\
	$(LIB)\math$(MODEL).lib $(LIB)\emu.lib
!endif

$(OS)\smblib.obj: smb\smblib.c smb\smblib.h smb\smbdefs.h
	@echo Compiling SMBLIB ...
	$(CC) $(CFLAGS) -n$(OS) -c smb\smblib.c

$(OS)\smbvars.obj: smb\smbvars.c smb\smblib.h smb\smbdefs.h
	@echo Compiling SMBVARS ...
	$(CC) $(CFLAGS) -n$(OS) -c smb\smbvars.c

etext.h: etext.dat
	@echo Creating new encrypted text (ETEXT) Code and Header files...
	genetext
			
# All .obj modules
$(OS)\chat.obj:        	$(HEADERS)
$(OS)\comio.obj:       	$(HEADERS)
$(OS)\con_lo.obj:      	$(HEADERS)
$(OS)\con_mid.obj:     	$(HEADERS)
$(OS)\con_hi.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)\mail.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.obj:         	$(HEADERS)
$(OS)\text_sec.obj:	$(HEADERS)
$(OS)\useredit.obj:    	$(HEADERS)
$(OS)\vars.obj:        	$(HEADERS)
$(OS)\ver.obj:	       	$(OBJS) $(OVLOBJS) defs.h etext.h
$(OS)\xfer_lo.obj:     	$(HEADERS)
$(OS)\xfer_mid.obj:    	$(HEADERS)
$(OS)\xfer_hi.obj:     	$(HEADERS)
$(OS)\xfer_sec.obj:    	$(HEADERS)
$(OS)\xtrn.obj:        	$(HEADERS)
$(OS)\xtrn_ovl.obj:    	$(HEADERS)
