##************************************************************************
##**
##**  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
##**  ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
##**  TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR
##**  A PARTICULAR PURPOSE.
##**
##**  Copyright (C) 1993, 1994 Microsoft Corporation. All Rights Reserved.
##**
##**  makefile
##**
##**   to build a debug version:
##**       NMAKE
##**   to build a non debug version:
##**       NMAKE DEBUG=NO
##**
##**  HISTORY:
##**     04/26/93       created.
##**
##************************************************************************

NAME1	=callback
NAME2	=midimon
EXT1	=lib
EXT2	=exe
GOALS	=$(NAME1).$(EXT1) $(NAME1).sym $(NAME2).$(EXT2) $(NAME2).sym
LIBS1	=sdllcew libw mmsystem
LIBS2	=mmsystem libw slibcew $(NAME1)
OBJS1	=libentry.obj $(NAME1).obj
OBJS2	=$(NAME2).obj about.obj prefer.obj display.obj circbuf.obj filter.obj instdata.obj

!if "$(DEBUG)" == "NO"

LOPT	=
COPT	=
AOPT	=

!else

LOPT	=/CO /LI
COPT	=-Zid -Fc -DDEBUG
AOPT	=-Zi -DDEBUG
ROPT	=-v -DDEBUG

!endif

CC	=cl -nologo -c -W3 -G3s -Ox -Z7p $(COPT)
LINK	=link /NOLOGO /MAP/NOE/NOD/AL:16 $(LOPT)
ASM	=masm -t -W2 -Zd -Mx -D?MEDIUM -D?QUIET $(AOPT)
RC	=rc -nologo $(ROPT)


.rc.res:
	$(RC) -r -z $*.rc

#
#  Explicit Rules
#

goal: $(GOALS)

$(NAME1).dll $(NAME1).map: $(OBJS1) $*.res $*.def
	$(LINK) @<<
	$(OBJS1),
	$*.dll,
	$*.map,
	$(LIBS1),
	$*.def
<<
	$(RC) $*.res $*.dll

$(NAME2).$(EXT2) $(NAME2).map: $(OBJS2) $*.res $*.def
	$(LINK) @<<
	$(OBJS2),
	$*.$(EXT2),
	$*.map,
	$(LIBS2),
	$*.def
<<
	$(RC) $*.res $*.$(EXT2)

$(NAME1).sym $(NAME2).sym:	$*.map
	mapsym -s $*.map

$(NAME1).$(EXT1): $*.dll
	implib $@ $*.def

#
#  Dependencies
#

about.obj: $*.c about.h
	$(CC) -AS -GA $*.c

circbuf.obj: $*.c circbuf.h midimon.h
	$(CC) -AS -GA $*.c

display.obj: $*.c circbuf.h display.h midimon.h
	$(CC) -AS -GA $*.c

filter.obj: $*.c display.h filter.h midimon.h
	$(CC) -AS -GA $*.c

instdata.obj: $*.c circbuf.h instdata.h midimon.h
	$(CC) -AS -GA $*.c

midimon.obj: $*.c about.h callback.h circbuf.h display.h filter.h instdata.h midimon.h prefer.h
	$(CC) -AS -GA $*.c

prefer.obj: $*.c midimon.h prefer.h
	$(CC) -AS -GA $*.c

$(NAME2).res: $*.rc $*.h $*.rcv

$(NAME1).res: $*.rc $*.rcv

$(NAME1).obj: $*.c callback.h circbuf.h instdata.h midimon.h
	$(CC) -ASnw -GD $*.c

libentry.obj: $*.asm
        $(ASM) $(@B).asm,$@;

#
#  Clean up
#

clean:
            -@del *.obj
            -@del *.cod
            -@del *.dll
            -@del *.$(EXT1)
            -@del *.$(EXT2)
            -@del *.res
            -@del *.map
            -@del *.sym
