#!sc:c/smake
#
#####################################################################
#
#  plipbox smakefile for SAS C 6.58
#
#  based on magplip smakefile
#  (C) Copyright 1995-1996 Marius Gröger
#      All Rights Reserved
#
#####################################################################

#####################################################################
#
# following stuff is your configuration
#
LIBS        = LIB LIB:amiga.lib LIB lib:sc.lib LIB lib:debug.lib
CINCLUDES   = INCDIR="include:" INCDIR="netinclude:"
ASMINCLUDES = INCDIR="INCLUDEASM:" $(CINCLUDES)
CPUSUFFIX   = 000 # 000 010 020 030 040 060 ANY
CPUCCOPT    = CPU=68$(CPUSUFFIX)
LD          = sc:c/slink
CC          = sc:c/sc
AS          = sc:c/sc
MAKE        = sc:c/smake
#
#####################################################################

#####################################################################
#
# installation drawer and names of device
#
DEVICE_DIR  = base:bin
NAME        = plipbox.device

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


#####################################################################
#
# assembler/compiler flags
#
# this applies to normal and optimized compilation:
#
STDFLAGS    = $(CINCLUDES) NOMULTIPLEINCLUDES ERRREXX COMMENTNEST NOSTKCHK NOCHKABORT\
	      SMALLCODE SMALLDATA VERBOSE NOICONS STRICT ANSI DEFINE MAGPLIP=1
#
# this applies only to normal compilation:
#
NORMCFLAGS  = $(STDFLAGS)
#
# this applies only to optimized compilation:
#
OPTCFLAGS   = $(STDFLAGS) $(CPUCCOPT) PARAMETERS=REGISTERS OPT OPTTIME OPTINLINE\
	      OPTSCHEDULE STRINGMERGE STRUCTUREEQUIVALENCE
#
# this applies to assembler compilation
#
AFLAGS      = $(ASMINCLUDES) VERBOSE DEFINE MAGPLIP=1
#
#####################################################################

#####################################################################
#
# linkage flags
#
LDFLAGS     = NOICONS SC  $(LIBS) TO
OPTLDFLAGS  = NOICONS SC SD ND $(LIBS) TO
#
#####################################################################

#####################################################################
#
# the object files
#
NORMOBJ=rt.o device.no server.no track.no magport.o crc16.o
OPTOBJ=rt.o device.opt$(CPUSUFFIX) server.opt$(CPUSUFFIX) \
       track.opt$(CPUSUFFIX) magport.o crc16.o
#
#####################################################################

#####################################################################
#
# rules
#
# compile a file normally
#
.c.no:
   $(CC) $(NORMCFLAGS) OBJECTNAME $@ $*.c
#
# compile a file optimizing
#
.c.opt$(CPUSUFFIX):
   $(CC) $(OPTCFLAGS) OBJECTNAME $@ $*.c
#
# assemble a file
#
.asm.o:
   $(AS) $(AFLAGS) OBJECTNAME $@ $*.asm
#
#####################################################################

#####################################################################
#
# targets
#
all: $(DEVICE_DIR)/$(NAME)

all_opt: $(DEVICE_DIR)/$(NAME).$(CPUSUFFIX)

release:
   $(MAKE) CPUSUFFIX=000 all_opt
   $(MAKE) CPUSUFFIX=020 all_opt
   $(MAKE) CPUSUFFIX=040 all_opt

# link stage
$(DEVICE_DIR)/$(NAME).$(CPUSUFFIX): $(OPTOBJ)
   $(LD) $(OPTOBJ) $(OPTLDFLAGS) $@

$(DEVICE_DIR)/$(NAME): $(NORMOBJ)
   $(LD) $(NORMOBJ) $(LDFLAGS) $@
#
#####################################################################

#####################################################################
#
# various dependencies
#
rt.o: rt.asm magplip.i magplip_rev.i
crc16.o: crc16.asm
magport.o: magport.asm magplip.i
device.opt$(CPUSUFFIX) device.no: device.c magplip.h
server.opt$(CPUSUFFIX) server.no: server.c magplip.h
track.opt$(CPUSUFFIX) track.no: track.c magplip.h
#
#####################################################################

