
MODNAME	          = nipc
VERSION		  = 37

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 DEF SAS_6=1 AUTOREG STRMER NOSTKCHK LIBCODE OPT MEMSIZE=HUGE GST=$(MODNAME).gst

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

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

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

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

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

STARTUP     =
LIBS	    = SLIB:amiga.lib SLIB:sc.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) $*.c

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


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

##############################################################################
# All dependencies...
#
nipcface.o : $(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:
	@BumpRev $(VERSION) $(MODNAME)_rev


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


##############################################################################
# Release stuff that should be...
#
headers:
	@autodoc >$(MODNAME).doc autodocs.asm
	@copy $(MODNAME).doc V$(VERSION):doc
	@delete $(MODNAME).doc quiet
	@protect V$(VERSION):include/libraries/nipc.? wrd quiet
	@copy nipc.? V$(VERSION):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))|lmkfile)
	@protect ((\#?.(c|h|asm|i|ld|rev|doc))|lmkfile|$(LD_STRIP)) +r quiet
	@copy \#?.(strip|ld|doc|library) \#?_rev.\#? $(REMOTE)

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