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

# Macros
CC	= \bc31\bin\bcc
LD	= \bc31\bin\tlink
INCLUDE = \bc31\include;smb
LIB     = \bc31\lib


!ifdef __OS2__
CC	= c:\bcos2\bin\bcc
LD	= c:\bcos2\bin\tlink
INCLUDE = c:\bcos2\include;smb
LIB	= c:\bcos2\lib
OS	= OS2
CFLAGS	= -d -C -I$(INCLUDE) -DSBBS
LFLAGS  = -c -w-srf
!else

!ifdef DOSX
OS	= DOSX
CC      = \bc\bin\bcc32
LD      = \bc\bin\tlink32
CFLAGS  = -d -C -WX -I$(INCLUDE) -DSBBS
LFLAGS  = -n -c -Tpe -ax

!else
OS      = DOS
MODEL	= l
CFLAGS	= -d -C -Y -m$(MODEL) -I$(INCLUDE) -DSBBS
LFLAGS	= -n -c 
!endif
!endif


MAIN	= $(OS)\sbbs.exe
!ifndef __OS2__
OBJS	= DOS\rciol.obj DOS\mswait.obj DOS\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)\ars.obj $(OS)\comio.obj \
	  $(OS)\con_lo.obj $(OS)\con_mid.obj $(OS)\con_hi.obj \
	  $(OS)\data.obj $(OS)\data_ovl.obj $(OS)\exec.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_sec.obj \
	  $(OS)\main_wfc.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)\xtrn_ovl.obj $(OS)\xfer_sec.obj 
#$(OS)\lzh.obj

HEADERS = sbbs.h sbbsdefs.h gen_defs.h nodedefs.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) @&&+
$(OBJS) $(LIB)\c02.obj $(OS)\ver.obj $(OVLOBJS)
+, $*, $*, $(LIB)\os2.lib $(LIB)\c2.lib
!else
!ifdef DOSX
	$(LD) $(LFLAGS) @&&+
$(LIB)\c0X32 $(OBJS) $(OS)\env.obj $(OS)\ver.obj $(OVLOBJS)
+, $*, $*, dos\spawnl dpmi32 cw32
!else
	$(LD) $(LFLAGS) @&&+
$(LIB)\c0$(MODEL) $(OBJS) $(OS)\ver.obj /o $(OVLOBJS)
+, $*, $*, dos\spawnl $(LIB)\overlay $(LIB)\c$(MODEL) \
	$(LIB)\math$(MODEL) $(LIB)\emu
!endif
!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

#$(OS)\lzh.obj: smb\lzh.c smb\lzh.h 
#	@echo Compiling LZH ...
#	wcc -ml -fo=$(OS)\ -DLZH_DYNAMIC_BUF smb\lzh.c

etext.h: etext.dat
	@echo Creating new encrypted text (ETEXT) Code and Header files...
	genetext
			
# All .obj modules
$(OS)\ars.obj:		$(HEADERS) ars_defs.h
$(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)\exec.obj:		$(HEADERS) cmdshell.h
$(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) cmdshell.h
$(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) ars_defs.h
$(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) $(HEADERS)
$(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)
