########################################################
#
# Project	: 
# File		: project makefile
#
# Utility	: Watcom Make Version 3.1
#
########################################################

########################################################
#
# Project Management 
#
########################################################

PROJECT		=	c:\source\wc
SRC   		=	$(PROJECT)
INC		=	$(PROJECT)
OBJ		=	$(PROJECT)
BIN		=	$(PROJECT)
NETBACKUP	=	l:source\pc\sccs\stever\work\example
REMOTE		=	l:watcom

MAIN	 		=	main
STUB	 		=	stub

# Project file list
PROJS	    	=	main.lnk makefile masm.mak		


# C Source file list
CSRCS			=	main.c screen.c 6502.c

# A Source file list
ASRCS			=	draw.asm


# Source file list
SRCS			=	$(CSRCS) $(ASRCS)


# C Include file list
CINCS	      =	#const.h types.h macros.h proto.h

# A Include file list
AINCS 		=	#const.inc types.inc macros.inc proto.inc

# Include file list
INCS			=	$(CINCS) $(AINCS)



# Object file list
#
# Update $(MAIN).lnk for object linking
#
OBJS			=	main.obj 

# Executable
EXE			=	main.exe

# $(MAIN) Link File
LNK			=	main.lnk

# Sample File
SAMPLE			=	main.smp

# Map File
MAP			=	main.map



########################################################
#
# Project Utilities 
#
########################################################

# Memory model and processor to use by default
PROCESSOR	=386

# Compiler
CC			=wcc$(PROCESSOR)
# Assembler
ASM			=masm
# Linker
LINK			=wlink
# DOS Extender
EXTENDER		=dos4gw 

MODEL			=f	# flat

########################################################
#
# Project Utilities Flags 
#
########################################################

# Debugging Toggle
DEBUG		=	on

!ifeq	DEBUG on
CDEBUG		=/d2
CSTACK		= 
#Watcom C++      -oneatx -zp4 -5r -fp3
#COPTIMIZE	=	#
COPTIMIZE       = /orlt
#COPTIMIZE	=-oneatx -zp4 -fp3
LDEBUG		=debug all
!else
CDEBUG		= 
COPTIMIZE	=/orlt
CSTACK		=/s
LDEBUG		=
!endif

# Function parameter passing toggle
SYSCOM		=syscoms
CARGS		=/5s /s
LIBS		=library clib3s


# Floating Point
CFPU		=#/7


# DOS Segment Ordering
DOSSEG		=op dosseg


# Stack Size
STACK		=op stack=8192

COMPILER	=-d__WATCOM__

# Verbose Option
VERBOSE		=on
!ifeq	VERBOSE on
CINFO		= 
LINFO		=op verbose
!else
CINFO		=-zq
LINFO		=op quiet
!endif


# Object File
COBJECT		=/fo=$^@
# Map file
LMAP		=#op map=$(MAP)



# Emit function name into Object code
CEMIT		=#/en


CFLAGS		= $(CDEBUG) $(CFPU) $(CSTACK) $(COPTIMIZE) $(CARGS) -m$(MODEL) $(CINFO) $(COBJECT) $(CEMIT) $(COMPILER) -bt=dosg4
AFLAGS		= 
LFLAGS		= $(LDEBUG) @$(LNK) $(LINFO) $(LMAP) $(STACK)

.EXTENSIONS:
.EXTENSIONS: .exe .obj .asm .c 






########################################################
#
# Execute commands before target updating occurs
# 
########################################################
.BEFORE
# Set include file search path
		@set INCLUDE=.;$(%WATCOM)\h;$(INC)

########################################################
#
# Project Explicit Building Rules 
#
########################################################

.ERASE
$(EXE)	: $(OBJS)  
	  $(LINK)  $(LFLAGS)

.ERASE
main.obj	: main.c disk.obj screen.obj 6502.obj sound.obj soundb.obj disasm.obj window.obj winddraw.obj 6502asm.obj draw.obj keyb.obj headers\all.h
		  $(CC)	$(CFLAGS) main.c

.ERASE
disk.obj	: disk.c 6502.obj headers\all.h
		  $(CC)	$(CFLAGS) disk.c
.ERASE
screen.obj	: screen.c 6502.obj draw.obj headers\all.h
		  $(CC)	$(CFLAGS) screen.c
.ERASE
6502.obj        : 6502.c draw.obj headers\all.h 6502\jump.c symbols.c
		  $(CC)	$(CFLAGS) 6502.c
.ERASE
sound.obj	: sound.c soundb.c headers\all.h
		  $(CC)	$(CFLAGS) sound.c
.ERASE
soundb.obj	: soundb.c headers\all.h
		  $(CC)	$(CFLAGS) soundb.c
.ERASE
disasm.obj	: disasm.c draw.obj headers\all.h
		  $(CC)	$(CFLAGS) disasm.c
.ERASE
window.obj	: window.c headers\all.h
		  $(CC)	$(CFLAGS) window.c
.ERASE
6502asm.obj	: 6502asm.asm
		  masm 6502asm.asm
.ERASE
draw.obj	: draw.asm
		  masm draw.asm
.ERASE
winddraw.obj	: winddraw.asm
		  masm winddraw.asm
.ERASE
keyb.obj	: keyb.asm
		  masm keyb.asm


sfx.lib		: sb_tddsp.obj sb_tdini.obj sb_tdirq.obj sb_tdwav.obj sb_tdtrf.obj sb_td345.obj sound\sb_tdsrc\sb_tdmix.obj sb_tddma.obj 
		  wlib -n $(LIB) +sb_tddsp +sb_tdini +sb_tdirq +sb_tdwav +sb_tdtrf +sb_td345 +sb_tdmix +sb_tddma

sb_tddsp.obj	: sb_tddsp.c
		  $(CC)	$(CFLAGS) sb_tddsp.c
		  
sb_tdini.obj	: sb_tdini.c
		  $(CC)	$(CFLAGS) sb_tdini.c
		  
sb_tdirq.obj	: sb_tdirq.c
		  $(CC)	$(CFLAGS) sb_tdirq.c
		  
sb_tdwav.obj	: sb_tdwav.c
		  $(CC)	$(CFLAGS) sb_tdwav.c

sb_tdtrf.obj	: sb_tdtrf.c
		  $(CC)	$(CFLAGS) sb_tdtrf.c

sb_td345.obj	: sb_td345.c
		  $(CC)	$(CFLAGS) sb_td345.c

sb_tdmix.obj	: sb_tdmix.c
		  $(CC)	$(CFLAGS) sb_tdmix.c

sb_tddma.obj	: sb_tddma.c
		  $(CC)	$(CFLAGS) sb_tddma.c

		  


########################################################
#
# Project Implicit Building Rules 
#
########################################################

.c.obj :
	$(CC) $^& $(CFLAGS)

.asm.obj :
	$(ASM) $(AFLAGS) $^&;



########################################################
#
# Execution Sampler
#
########################################################

SAMPLER		= $(%WATCOM)\bin\wsamprsi



########################################################
#
# Execution Sampler Options
#
########################################################

SAMPLER_BUFFSIZE	= #/b=<buffer_size>	# size of internal buffer in K
SAMPLER_DOS		= #/d 		 	# disable monitoring of DOS interrupt
SAMPLER_OUTPUT		= /f=$(SRC)\$(MAIN).smp	# name of output file
SAMPLER_INTERRUPT	= #/i=<interrupt>	# interrupt to monitor
SAMPLER_RATE		= #/r=<rate>		# rate between samples in milliseconds

SAMPLER_OPTS		= $(SAMPLER_BUFFSIZE) &
$(SAMPLER_DOS) &
$(SAMPLER_OUTPUT) &
$(SAMPLER_INTERRUPT) &
$(SAMPLER_RATE)


########################################################
#
# Execution Sampler Rule
#
########################################################

sample : $(EXE)
	dos4gw c:\watcom\bin\wsamprsi $(SAMPLER_OPTS) $(EXE)

########################################################
#
# Project CleanUp Rule
#
########################################################

clean : .SYMBOLIC
	@echo	Cleanup Project Object Files
	@for %f in ($(OBJS)) do &
		@if exist %f &
			del %f
	@echo	Cleanup Project Executable File
	@if exist $(EXE) &
		del $(EXE)
	@if exist $(SAMPLE) &
		@del $(SAMPLE)
	@echo	Cleanup Project Error Files
	@if exist $(SRC)\*.err &
		del $(SRC)\*.err
	@if exist $(SRC)\asm\*.err &
		del $(SRC)\asm\*.err

########################################################
#
# Project Backup Rule
#
########################################################

backup : .SYMBOLIC
	@echo Project Backup
	#@l:
	#@cd \
	@xcopy $(PROJECT)	$(NETBACKUP)
	#@c:
	@echo Project Backup Complete

########################################################
#
#	Makefile
#
########################################################
