#
# $Id: smakefile 1.22 1998/04/13 09:52:07 olsen Exp olsen $
#
# :ts=8
#
# Wipeout -- Traces memory, munges and traces memory trashing
#
# Written by Olaf `Olsen' Barthel <olsen@sourcery.han.de>
# Public Domain
#

.c.o:
	sc $(CFLAGS) $<
#	@ctags >tagfiles/$* $<

.asm.o:
	asm $(AFLAGS) $<

#############################################################################
#
# Program version and revision; must match the data in the bumprev file
# as it's used to check in and freeze a release.
#
#############################################################################

VERSION =	1
REVISION =	21

SYMBOLIC_NAME =	V$(VERSION)_$(REVISION)

###############################################################################

PROJECT_NAME = Wipeout

###############################################################################

C_SOURCE =	addresstest.c allocator.c data.c dprintf.c dump.c fillchar.c \
		filter.c installpatches.c main.c mungmem.c monitoring.c pools.c \
		privateallocvec.c segtracker.c taskinfo.c timer.c tools.c \
		system_headers.c

ASM_SOURCE =	patches.asm rawio.asm

HEADERS =	allocator.h data.h global.h installpatches.h pools.h \
		magic.h taskinfo.h wipeoutsemaphore.h \
		protos.h system_headers.h

OTHER =		assert.c assert.h smakefile $(PROJECT_NAME).doc

FILES =		$(C_SOURCE) $(ASM_SOURCE) $(HEADERS) $(OTHER)

###############################################################################

CPU =		any
#CPU =		060 

C_UTILITY =	utillib
L_UTILITY =	define __CXM33=__UCXM33 define __CXD33=__UCXD33 \
		define __CXM22=__UCXM22 define __CXD22=__UCXD22

###############################################################################

OPTIMIZE =	optimize opttime optschedule optdepth=10 optinlocal
DEBUG =		debug=line

CFLAGS =	params=r nostackcheck $(OPTIMIZE) $(DEBUG) $(C_UTILITY) \
		data=faronly cpu=$(CPU) gst=system_headers.gst
AFLAGS =	-d
LFLAGS =	smallcode noicons $(L_UTILITY)

OBJS =		addresstest.o allocator.o data.o dprintf.o dump.o fillchar.o \
		filter.o installpatches.o main.o mungmem.o monitoring.o pools.o \
		privateallocvec.o segtracker.o taskinfo.o timer.o tools.o \
		patches.o rawio.o

LIBS =		lib:scnb.lib lib:amiga.lib lib:debug.lib lib:ddebug.lib

all:	tagfiles system_headers.gst protos.h $(PROJECT_NAME)_rev.h \
	$(PROJECT_NAME)

$(PROJECT_NAME) : $(OBJS) Assert.o
	slink lib:c.o $(OBJS) to $@.debug lib $(LIBS) Assert.o $(LFLAGS) addsym \
		map $@.map,fhx fwidth 32 pwidth 32 swidth 32 width 100
	slink $@.debug to $@ noicons nodebug
#	@type tagfiles/\#? >tags

###############################################################################

system_headers.gst: system_headers.h system_headers.c
	gst unload $@
	sc $(CFLAGS) nogst makegst=$@ noobjname system_headers.c

protos.h: $(C_SOURCE)
	mkptypes -c >protos.h $(C_SOURCE)

$(PROJECT_NAME)_rev.h:
	smake version

###############################################################################

tagfiles:
	makedir $@

rcs:
	makedir $@

###############################################################################

clean:
	-delete $(PROJECT_NAME) $(PROJECT_NAME).debug $(OBJS) \
		tagfiles tags all quiet

realclean: clean
	-delete ID

version:
	echo >$(PROJECT_NAME)_rev.rev `eval $(REVISION) - 1`
	bumprev $(VERSION) $(PROJECT_NAME)

mkid:
	mkid -v \#?.(c|h|a|asm|i)

update:
	mkid -v -u

###############################################################################

assert.o : assert.c assert.h

data.o : data.c data.h

main.o : main.c $(PROJECT_NAME)_rev.h

###############################################################################

checkin: rcs
	ci -q -M -d -l$(VERSION) -m. -t-. $(FILES)

lock: rcs
	rcs -l $(FILES)

unlock: rcs
	rcs -u $(FILES)

freeze: rcs
	rcs -q -n$(SYMBOLIC_NAME): $(FILES)

newversion:
	smake version
	smake checkin
	smake freeze
	ttx wait smakefile
	smake
