###############################################################################
#
#	SMakefile
#
#	Makefile for the `SMake' utility required to build `term'
#
#	Copyright © 1990-1997 by Olaf `Olsen' Barthel
#		All Rights Reserved
#
###############################################################################

.c.o:
	sc $(CFLAGS) $<

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

.cd.h:
	catcomp $*.cd cfile $*.h nocode noblock

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

VERSION =	4
REVISION =	8

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

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

DEBUG =		line
CPU =		ANY
OPTIMIZE =	optimize opttime optinlocal

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

GSTFILE =	term.gst

CFLAGS =	cpu=$(CPU) debug=$(DEBUG) define=CPU_$(CPU) \
		error=7+100+154+161 gst=$(GSTFILE) idlen=65 \
		mccons nostkchk nover $(OPTIMIZE) params=r \
		streq strmerge
AFLAGS =	-d -u
LFLAGS =	smallcode smalldata noicons addsym maxhunk 100000

LIBS =		lib:sc.lib lib:amiga.lib lib:debug.lib

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

OBJS =		About.o Accountant.o AmigaGuide.o ARexx.o ARexxAttributes.o \
		ARexxCommands.o ASCIIPanel.o ASCIITransfer.o Assert.o Beep.o \
		Boxes.o Buffer.o Call.o Capture.o CapturePanel.o \
		CaptureParser.o Chat.o Choose.o Clip.o ClipPanel.o \
		Colour.o CommandPanel.o Config.o Console.o ControlSequences.o \
		CopyPanel.o Crypt.o CursorPanel.o CustomRequest.o Data.o \
		DatePanel.o DayPanel.o Dial.o DialList.o EditRoutine.o \
		Emulation.o EmulationPanel.o EmulationSpecial.o EndOfLineTranslate.o FastMacroPanel.o \
		FastMacros.o FastMacroWindow.o FileBuffer.o FixPath.o Flow.o \
		HotkeyPanel.o Hotkeys.o Identify.o IFF.o ImportPanel.o \
		InfoWindow.o Init.o Job.o KeyConvert.o Launch.o \
		LibPanel.o LibPanelPlus.o Lists.o Locale.o MacroPanel.o \
		Main.o Matrix.o Memory.o Menus.o MiscPanel.o \
		ModemPanel.o MsgQueue.o NewMarker.o OldConfig.o OwnDevUnit.o \
		Packet.o PathPanel.o PatternPanel.o Phone.o PhoneGroup.o \
		PhoneList.o PhoneLogGenerator.o PhonePanel.o PhonePanelPlus.o PhonePanelUI.o \
		PickDisplayMode.o PickFile.o PickScreen.o Print.o PrintPanel.o \
		Raster.o RatePanel.o Remember.o Rendezvous.o SaveWindow.o \
		Scale.o ScreenPanel.o Scroll.o SendText.o Serial.o \
		SerialIO.o SerialPanel.o SortCompare.o Sound.o SoundPanel.o \
		Speech.o SpeechPanel.o StatusDisplay.o Strings.o TerminalPanel.o \
		TerminalTest.o TextBufferWindow.o TimeDate.o TimePanel.o Timer.o \
		Tools.o Transfer.o TransferPanel.o Translate.o TranslationPanel.o \
		TrapPanel.o Traps.o UploadPanel.o UploadQueue.o Verify.o \
		Version.o VSPrintf.o WindowMarker.o XEM.o XPR.o

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

C_FILES =	About.c Accountant.c AmigaGuide.c ARexx.c ARexxAttributes.c \
		ARexxCommands.c ASCIIPanel.c ASCIITransfer.c Assert.c Beep.c \
		Boxes.c Buffer.c Call.c Capture.c CapturePanel.c \
		CaptureParser.c Chat.c Choose.c Clip.c ClipPanel.c \
		Colour.c CommandPanel.c Config.c Console.c ControlSequences.c \
		CopyPanel.c Crypt.c CursorPanel.c CustomRequest.c Data.c \
		DatePanel.c DayPanel.c Dial.c DialList.c EditRoutine.c \
		Emulation.c EmulationPanel.c EmulationSpecial.c EndOfLineTranslate.c FastMacroPanel.c \
		FastMacros.c FastMacroWindow.c FileBuffer.c FixPath.c Flow.c \
		HotkeyPanel.c Hotkeys.c Identify.c IFF.c ImportPanel.c \
		InfoWindow.c Init.c Job.c KeyConvert.c Launch.c \
		LibPanel.c LibPanelPlus.c Lists.c Locale.c MacroPanel.c \
		Main.c Matrix.c Memory.c Menus.c MiscPanel.c \
		ModemPanel.c MsgQueue.c NewMarker.c OldConfig.c OwnDevUnit.c \
		Packet.c PathPanel.c PatternPanel.c Phone.c PhoneGroup.c \
		PhoneList.c PhoneLogGenerator.c PhonePanel.c PhonePanelPlus.c PhonePanelUI.c \
		PickDisplayMode.c PickFile.c PickScreen.c Print.c PrintPanel.c \
		Raster.c RatePanel.c Remember.c Rendezvous.c SaveWindow.c \
		Scale.c ScreenPanel.c Scroll.c SendText.c Serial.c \
		SerialIO.c SerialPanel.c SortCompare.c Sound.c SoundPanel.c \
		Speech.c SpeechPanel.c StatusDisplay.c Strings.c TerminalPanel.c \
		TerminalTest.c TextBufferWindow.c TimeDate.c TimePanel.c Timer.c \
		Tools.c Transfer.c TransferPanel.c Translate.c TranslationPanel.c \
		TrapPanel.c Traps.c UploadPanel.c UploadQueue.c Verify.c \
		Version.c VSPrintf.c WindowMarker.c XEM.c XPR.c

H_FILES =	Compiler.h Data.h Errors.h Global.h OwnDevUnit.h \
		PhoneLog.h PhoneLogGenerator.h PhonePanel.h Protos.h Rendezvous.h \
		term.h xem.h xproto.h

OTHER_FILES =	Assert.c Assert.h Headers.c Headers.h Protos_Head.h \
		Protos_Tail.h releasenotes SMakefile

SOURCE =	$(C_FILES) $(H_FILES) $(OTHER_FILES)

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

all:		tagfiles $(GSTFILE) term

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

term:		$(OBJS) Assert.o
		slink with <<
			from lib:c.o $(OBJS) to $@.debug lib $(LIBS) Assert.o $(LFLAGS) \
				map $@.map,fhx fwidth 32 pwidth 32 swidth 32 width 100
		<
		slink $@.debug to $@ nd noicons

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

tagfiles:
		makedir $@

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

Version.o:	Version.c term_rev.h

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

$(GSTFILE):	Compiler.h Headers.c Headers.h OwnDevUnit.h Rendezvous.h \
		term.h xem.h xproto.h
		gst unload $@
		sc $(CFLAGS) noobjname nogst makegst=$@ Headers.c

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

Protos.h: Protos_Head.h $(C_FILES) Protos_Tail.h
	copy Protos_Head.h Protos.h
	mkptypes -c >>Protos.h $(C_FILES)
	type >>Protos.h Protos_Tail.h
	splat -o "REG (d0 )" "REG(d0) " Protos.h
	splat -o "REG (d1 )" "REG(d1) " Protos.h
	splat -o "REG (d2 )" "REG(d2) " Protos.h
	splat -o "REG (d3 )" "REG(d3) " Protos.h
	splat -o "REG (d4 )" "REG(d4) " Protos.h
	splat -o "REG (d5 )" "REG(d5) " Protos.h
	splat -o "REG (d6 )" "REG(d6) " Protos.h
	splat -o "REG (d7 )" "REG(d7) " Protos.h
	splat -o "REG (a0 )" "REG(a0) " Protos.h
	splat -o "REG (a1 )" "REG(a1) " Protos.h
	splat -o "REG (a2 )" "REG(a2) " Protos.h
	splat -o "REG (a3 )" "REG(a3) " Protos.h
	splat -o "REG (a4 )" "REG(a4) " Protos.h
	splat -o "REG (a5 )" "REG(a5) " Protos.h
	splat -o "REG (a6 )" "REG(a6) " Protos.h
	splat -o "REG (a7 )" "REG(a7) " Protos.h

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

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

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

mkid:
	mkid $(C_FILES) $(H_FILES)

update:
	mkid -v -u

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

clean:
	-delete quiet "\#?.o" all

realclean: clean
	-delete quiet ID $(GSTFILE) term.(map|debug) term.h

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

checkin:
	ci -q -M -l$(VERSION) -m. -t-. $(SOURCE)

lock:
	rcs -q -l $(SOURCE)

unlock:
	rcs -q -u $(SOURCE)

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