
MODNAME	          = nipc
VERSION		  = 40

REMOTE		  = ENVOY:src/nipc

LD_FILE	          = $(MODNAME).ld
LD_STRIP          = $(MODNAME).ld.strip

C_COMPILER        = SC
#C_COMPILER_OPTS   = NOVERSION PARMS=REGISTER DATA=FO CODE=NEAR AUTOREG STRMER NOSTKCHK LIBCODE MEMSIZE=HUGE GST=$(MODNAME).gst
C_COMPILER_OPTS   = NOVERSION PARMS=REGISTER DATA=FO CODE=NEAR OPT OPTTIME OPTINL OPTINLOCAL AUTOREG STRMER NOSTKCHK LIBCODE MEMSIZE=HUGE GST=$(MODNAME).gst

ASSEMBLER         = hx68 -a
ASSEMBLER_OPTS    = -csy -i include: -o

LINKER            = Slink
LINKER_OPTS	  = ADDSYM SC SD MAP $(MODNAME).map HLSXF PLAIN SWIDTH 16 NOICONS
LINKER_OPTS_STRIP = ND NOICONS

C_SOURCES   = center_custom.c memory.c s2io.c arp.c ip_out.c route.c ip_in.c \
	      icmp.c timer.c rdp.c amp.c statistics.c udp.c resolver.c nipcbuff.c

ASM_SOURCES = nipcface.asm callback.asm checksum.asm nipcproc.asm iff.asm \
	      math.asm nipcend.asm pools.asm

OBJECTS     = nipcface.o callback.o timer.o route.o resolver.o \
	      center_custom.o ip_out.o s2io.o arp.o icmp.o nipcproc.o udp.o rdp.o amp.o  \
	      memory.o iff.o math.o nipcbuff.o \
	      statistics.o ip_in.o checksum.o pools.o nipcend.o

STARTUP     =
LIBS	    = SLIB:amiga.lib SLIB:debug.lib


##############################################################################
# Build the stripped load file...
#
$(LD_STRIP):	$(LD_FILE)
		$(LINKER) FROM $(LD_FILE) TO $(LD_STRIP) $(LINKER_OPTS_STRIP)


##############################################################################
# Build the load file...
#
$(LD_FILE):	$(OBJECTS) $(LIBS)
		$(LINKER) <with <
FROM $(STARTUP) $(OBJECTS) TO $(LD_FILE) LIB $(LIBS) $(LINKER_OPTS)
<


##############################################################################
# Default rules...
#
.c.o:
	$(C_COMPILER) $(C_COMPILER_OPTS) DEBUG=LINE $*.c

.asm.o:
	$(ASSEMBLER) $*.asm $(ASSEMBLER_OPTS) $*.o


##############################################################################
# Global Symbol Table
#
$(MODNAME).gst: $(MODNAME)_gst.c
	$(C_COMPILER) MGST=$(MODNAME).gst MEMSIZE=HUGE $*.c NOICONS

##############################################################################
# All dependencies...
#
nipcface.o : nipcface.asm $(MODNAME)_rev.i nipcbase.i
center_custom.o : center_custom.c nipcinternal.h nipc.h nipcinternal_protos.h externs.h nipcbase.h $(MODNAME).gst
memory.o : memory.c nipcinternal.h nipc.h nipcinternal_protos.h externs.h nipcbase.h $(MODNAME).gst
s2io.o : s2io.c nipcinternal.h nipc.h nipcinternal_protos.h externs.h nipcbase.h $(MODNAME).gst
arp.o : arp.c nipcinternal.h nipc.h nipcinternal_protos.h externs.h nipcbase.h $(MODNAME).gst
ip_out.o : ip_out.c nipcinternal.h nipc.h nipcinternal_protos.h externs.h nipcbase.h $(MODNAME).gst
route.o : route.c nipcinternal.h nipc.h nipcinternal_protos.h externs.h nipcbase.h $(MODNAME).gst
ip_in.o : ip_in.c nipcinternal.h nipc.h nipcinternal_protos.h externs.h nipcbase.h $(MODNAME).gst
icmp.o : icmp.c nipcinternal.h nipc.h nipcinternal_protos.h externs.h nipcbase.h $(MODNAME).gst
timer.o : timer.c nipcinternal.h nipc.h nipcinternal_protos.h externs.h nipcbase.h $(MODNAME).gst
rdp.o : rdp.c nipcinternal.h nipc.h nipcinternal_protos.h externs.h nipcbase.h $(MODNAME).gst
amp.o : amp.c nipcinternal.h nipc.h nipcinternal_protos.h externs.h nipcbase.h $(MODNAME).gst
statistics.o : statistics.c nipcinternal.h nipc.h nipcinternal_protos.h externs.h nipcbase.h $(MODNAME).gst
monitor.o : monitor.c nipcinternal.h nipc.h nipcinternal_protos.h externs.h nipcbase.h $(MODNAME).gst
udp.o : udp.c nipcinternal.h nipc.h nipcinternal_protos.h externs.h nipcbase.h $(MODNAME).gst
resolver.o : resolver.c nipcinternal.h nipc.h nipcinternal_protos.h externs.h nipcbase.h $(MODNAME).gst
iff.o : iff.asm nipcbase.i

$(MODNAME).gst: nipcinternal.h nipc.h nipcinternal_protos.h externs.h nipcbase.h

##############################################################################
# Bump the version...
#
version:
	co -l $(MODNAME)_rev.rev
	@BumpRev $(VERSION) $(MODNAME)_rev
	ci -u -m"" $(MODNAME)_rev.rev


##############################################################################
# Delete all object files
#
clean:
	@Delete $(OBJECTS) $(MODNAME)_gst.o
	@Delete $(LD_FILE) $(LD_STRIP) $(MODNAME).map $(MODNAME).gst


##############################################################################
# Release stuff that should be...
#
headers:
	@autodoc >$(MODNAME).doc amp.c resdocs.c nipcbuff.c
	@copy $(MODNAME).doc ENVOY:doc
	@delete $(MODNAME).doc quiet
	@protect ENVOY:include/envoy/nipc.? wrd quiet
	@copy nipc.? ENVOY:include/envoy quiet
#	@protect V$(VERSION):lib/sfd/nipc_lib.sfd wrd
#	@copy nipc_lib.sfd V$(VERSION):lib/sfd


##############################################################################
# Release the current build to the server...
#
internal:
	-Delete $(REMOTE)/((\#?.(c|h|asm|i|ld|rev|doc|library))|smakefile|sfd|fd)
	-protect ((\#?.(c|h|asm|i|ld|rev|doc|sfd|fd))|smakefile|$(LD_STRIP)) +r quiet
	-copy \#?.(c|h|i|asm|strip|ld|doc|library|sfd|fd) \#?_rev.\#? smakefile $(REMOTE) NOPRO

install:
	-copy $(LD_STRIP) libs:$(MODNAME).library
