#
# lmkfile for workbench.library
#

#
# Server directory for the data...
#
REMOTE = V:src/kickstart/wb
VERSION= 40

#
# Name of the module
#
MODNAME	= wb

#
# The ".LD" file we want to produce.
#
LD_FILE	= $(MODNAME).ld
LD_STRIP= $(MODNAME).ld.strip

#
# Compiler, assembler, and linker
#
CC = lc
AS = hx68 -a
LN = blink

#
# Compiler flags...
#
CFLAGS	= -b0 -v -mes -cistqm -d1 -O -q -j*e -. -dUSE_STUBS

#
# Assembler flags...  NOTE how they are used below...
#
AFLAGS	= -csq -i include: -o

#
# Linker flags
#
LFLAGS		= SMALLCODE SMALLDATA MAP $(MODNAME).map HLSXF PLAIN SWIDTH 16
LFLAGS_STRIP	= ND

#
# System libraries
#
LIBS= LIB:ROM.lib endcode.lib LIB:debug.lib

#
# My headers...
#
MY_HDR	=	wbinternal.h workbench.h

#
# My C source...
#
MY_C	=	diskchange.c \
diskin.c \
drawers.c \
errcalls.c \
fileops.c \
icons.c \
incoming.c \
init.c \
ioloop.c \
main.c \
matrix.c \
menus.c \
objectio.c \
placeicon.c \
recurse.c \
requesters.c \
runtool.c \
timer.c \
windows.c \
gels.c \
app.c \
startup.c \
iconlib.c \
viewbytext.c \
debug.c \
cstrings.c \
infomisc.c \
infowindow.c \
infoevent.c \
infoio.c \
executewindow.c \
copy.c \
backdrop.c \
backfill.c \
update.c

#
# My Assebly source...
#
MY_A	=	vers.asm \
abs.asm \
kprintf.asm \
alists.asm \
stubs.asm \
quotes.asm \
drawbox.asm \
coolfill.asm \
wb_lib.asm

#
# My object files...
#
MY_OBJS	=	vers.o \
abs.o \
alists.o \
errcalls.o \
recurse.o \
copy.o \
fileops.o \
icons.o \
drawers.o \
incoming.o \
ioloop.o \
main.o \
matrix.o \
init.o \
menus.o \
objectio.o \
stubs.o \
placeicon.o \
requesters.o \
runtool.o \
timer.o \
backfill.o \
windows.o \
update.o \
diskin.o \
diskchange.o \
drawbox.o \
gels.o \
app.o \
startup.o \
iconlib.o \
viewbytext.o \
cstrings.o \
backdrop.o \
executewindow.o \
infowindow.o \
infomisc.o \
infoio.o \
infoevent.o \
coolfill.o \
quotes.o

#
# My library objects...
#
MY_LIB_OBJS = wb_lib.o \
kprintf.o \
debug.o \
endcode.o

#
# My library files...
#
MY_LIBS	= endcode.lib

#
# Build the stripped LD file...
#
$(LD_STRIP):	$(LD_FILE)
	$(LN) FROM $(LD_FILE) TO $(LD_STRIP) $(LFLAGS_STRIP)

#
# Build the LD file...
#
$(LD_FILE):	$(MY_OBJS) $(MY_LIBS) lmkfile
	$(LN) <with <
FROM $(MY_OBJS)
TO $(LD_FILE)
LIB $(MY_LIBS) $(LIBS)
$(LFLAGS)
<

#
# build my libraries
#
$(MY_LIBS):	$(MY_LIB_OBJS)
	oml $(MY_LIBS) r $(MY_LIB_OBJS)


#
# Default rules...
#
.c.o:
	$(CC) $(CFLAGS) $*.c

.asm.o:
	$(AS) $*.asm $(AFLAGS) $*.o

#
# Specific dependancies...
#
vers.o:	vers.asm $(MODNAME)_rev.i

debug.o:	debug.c  $(HEADER)
	$(CC) $(CFLAGS) -dDEBUGGING -dALLOCDEBUG -dLOCKDEBUG -dMAXDEBUG debug.c

#
# Bump the version...
#
version:
	@bumprev $(VERSION) $(MODNAME)_rev

$(MODNAME)_rev.i:
	@bumprev $(VERSION) $(MODNAME)_rev

$(MODNAME)_rev.h:
	@bumprev $(VERSION) $(MODNAME)_rev

$(MODNAME)_rev.rev:
	@bumprev $(VERSION) $(MODNAME)_rev

#
# Release the current build to the server
#
internal:
	@delete $(REMOTE)/((\#?.(c|h|asm|i|ld|ld.strip|rev|doc|sfd))|makefile|lmkfile)
	@protect ((\#?.(c|h|asm|i|ld|ld.strip|rev|doc|sfd))|makefile|lmkfile) +r quiet
	@copy ((\#?.(c|h|asm|i|ld|ld.strip|rev|doc|sfd))|makefile|lmkfile) $(REMOTE)
	@copy \#?.doc V:doc NOPRO
	@copy \#?.sfd V:lib/sfd NOPRO

#
# Blow away all files that would need to be rebuilt
#
clean:
	@delete \#?.(o|ld|doc|ld.strip|map)

#
# Make the AutoDocs
#
doc:	$(MODNAME).doc

$(MODNAME).doc:	$(MY_C) $(MY_A)
	@Echo "Making $(MODNAME).doc"
	@Join $(MY_C) $(MY_A) as T:$(MODNAME).tmp.doc
	@AutoDoc >$(MODNAME).doc T:$(MODNAME).tmp.doc
	@Delete T:$(MODNAME).tmp.doc QUIET
	@Protect $(MODNAME).doc rwd

#
# Make a complete new release (This still is in testing...)
#
release:
	lmk clean
	lmk version
	lmk doc
	lmk $(LD_FILE)
	lmk $(LD_STRIP)
	lmk internal

#
# The following rule is to bring the source down to the local directory
# To do the following you should copy this LMKfile to the local directory
# and make sure it is readable.  Then type MAKE ToLocal to have the
# code copied down...
#
tolocal:
	@protect \#? rwed QUIET
	@copy $(REMOTE)/\#? ""
	@protect \#? +r QUIET
	@protect \#?_rev\#? rwd QUIET
	@Echo "Local is updated..."
