# $Id$
BUILDDIR=^\lib^\cii^\1
A=.lib
O=.obj
E=.exe
I=include
CC=cl -nologo -DWIN32
B=$(BUILDDIR)^\
CFLAGS=-Zi -MTd -I$I
LD=cl -nologo
LDFLAGS=-Zi -MTd
THREADS=$Bthread-nt$O $Bchan$O
EXTRAS=

# $Id$
OBJS=	$Bap$O \
	$Barena$O \
	$Barith$O \
	$Barray$O \
	$Bassert$O \
	$Batom$O \
	$Bbit$O \
	$Bexcept$O \
	$Bfmt$O \
	$Blist$O \
	$Bmem$O \
	$Bmp$O \
	$Bring$O \
	$Bseq$O \
	$Bset$O \
	$Bstack$O \
	$Bstr$O \
	$Btable$O \
	$Btext$O \
	$Bxp$O \
	$(THREADS)

EXAMPLES=	$Bdouble$E \
		$Bcalc$E \
		$Bids$E \
		$Bmpcalc$E \
		$Bwf$E \
		$Bxref$E \
		$Bcref$E \
		$Biref$E \
		$Bkref$E \
		$Bidents$E \
		$Bwords$E \
		$Bbasename$E \
		$Bdirname$E \
		$Bsort$E \
		$Bspin$E \
		$Bsieve$E

all::		$Blibcii$A $(EXAMPLES) $Bmemchk$O

$Blibcii$A::	$(OBJS) $(EXTRAS)
		lib -nologo -out:$@ $(OBJS) $(EXTRAS)

$Bap$O:		src/ap.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/ap.c 
$Barena$O:	src/arena.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/arena.c 
$Barith$O:	src/arith.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/arith.c 
$Barray$O:	src/array.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/array.c 
$Bassert$O:	src/assert.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/assert.c 
$Batom$O:	src/atom.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/atom.c 
$Bbit$O:	src/bit.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/bit.c 
$Bchan$O:	src/chan.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/chan.c 
$Bexcept$O:	src/except.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/except.c 
$Bfmt$O:	src/fmt.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/fmt.c 
$Blist$O:	src/list.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/list.c 
$Bmem$O:	src/mem.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/mem.c 
$Bmemchk$O:	src/memchk.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/memchk.c 
$Bmp$O:		src/mp.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/mp.c 
$Bring$O:	src/ring.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/ring.c 
$Bseq$O:	src/seq.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/seq.c 
$Bset$O:	src/set.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/set.c 
$Bstack$O:	src/stack.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/stack.c 
$Bstr$O:	src/str.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/str.c 
$Btable$O:	src/table.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/table.c 
$Btext$O:	src/text.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/text.c 
$Bthread$O:	src/thread.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/thread.c 
$Bthread-nt$O:	src/thread-nt.c;$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/thread-nt.c 
$Bxp$O:		src/xp.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/xp.c 
$Bswtch$O:	src/swtch.s;	as(,src/swtch.s,$@)

$Bmemcmp$O:	src/memcmp.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/memcmp.c 
$Bmemmove$O:	src/memmove.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/memmove.c 
$Bstrncmp$O:	src/strncmp.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$Blibcii.pdb src/strncmp.c 

$Bdouble$O:	examples/double.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$B examples/double.c 
$Bcalc$O:	examples/calc.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$B examples/calc.c 
$Bids$O:	examples/ids.c;		$(CC) $(CFLAGS) -c -Fo$@ -Fd$B examples/ids.c 
$Bmpcalc$O:	examples/mpcalc.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$B examples/mpcalc.c 
$Biref$O:	examples/iref.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$B examples/iref.c 
$Bkref$O:	examples/kref.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$B examples/kref.c 
$Bidents$O:	examples/idents.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$B examples/idents.c 
$Bwords$O:	examples/words.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$B examples/words.c 
$Bbasename$O:	examples/basename.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$B examples/basename.c 
$Bwf$O:		examples/wf.c;		$(CC) $(CFLAGS) -c -Fo$@ -Fd$B examples/wf.c 
$Bgetword$O:	examples/getword.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$B examples/getword.c 
$Bxref$O:	examples/xref.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$B examples/xref.c 
$Binteger$O:	examples/integer.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$B examples/integer.c 
$Bcref$O:	examples/cref.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$B examples/cref.c 
$Bsort$O:	examples/sort.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$B examples/sort.c 
$Bspin$O:	examples/spin.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$B examples/spin.c 
$Bsieve$O:	examples/sieve.c;	$(CC) $(CFLAGS) -c -Fo$@ -Fd$B examples/sieve.c 

$Bwf$O $Bxref$O $Bgetword$O:	examples/getword.h
$Bcref$O $Binteger$O:		examples/integer.h

$Bdouble$E:	$Bdouble$O $Blibcii$A;		$(LD) $(LDFLAGS) -Fe$@ $Bdouble$O $Blibcii$A -link /NODEFAULTLIB:libc.lib
$Bcalc$E:	$Bcalc$O $Blibcii$A;		$(LD) $(LDFLAGS) -Fe$@ $Bcalc$O $Blibcii$A -link /NODEFAULTLIB:libc.lib
$Bids$E:	$Bids$O $Blibcii$A;		$(LD) $(LDFLAGS) -Fe$@ $Bids$O $Blibcii$A -link /NODEFAULTLIB:libc.lib
$Bmpcalc$E:	$Bmpcalc$O $Blibcii$A;		$(LD) $(LDFLAGS) -Fe$@ $Bmpcalc$O $Blibcii$A -link /NODEFAULTLIB:libc.lib
$Biref$E:	$Biref$O $Blibcii$A;		$(LD) $(LDFLAGS) -Fe$@ $Biref$O $Blibcii$A -link /NODEFAULTLIB:libc.lib
$Bkref$E:	$Bkref$O $Blibcii$A;		$(LD) $(LDFLAGS) -Fe$@ $Bkref$O $Blibcii$A -link /NODEFAULTLIB:libc.lib
$Bidents$E:	$Bidents$O $Blibcii$A;		$(LD) $(LDFLAGS) -Fe$@ $Bidents$O $Blibcii$A -link /NODEFAULTLIB:libc.lib
$Bwords$E:	$Bwords$O $Blibcii$A;		$(LD) $(LDFLAGS) -Fe$@ $Bwords$O $Blibcii$A -link /NODEFAULTLIB:libc.lib
$Bbasename$E:	$Bbasename$O $Blibcii$A;	$(LD) $(LDFLAGS) -Fe$@ $Bbasename$O $Blibcii$A -link /NODEFAULTLIB:libc.lib
$Bdirname$E:	$Bbasename$O $Blibcii$A;	$(LD) $(LDFLAGS) -Fe$@ $Bbasename$O $Blibcii$A -link /NODEFAULTLIB:libc.lib
$Bwf$E:		$Bwf$O $Bgetword$O $Blibcii$A;	$(LD) $(LDFLAGS) -Fe$@ $Bwf$O $Bgetword$O $Blibcii$A -link /NODEFAULTLIB:libc.lib
$Bxref$E:	$Bxref$O $Bgetword$O $Blibcii$A;$(LD) $(LDFLAGS) -Fe$@ $Bxref$O $Bgetword$O $Blibcii$A -link /NODEFAULTLIB:libc.lib
$Bcref$E:	$Bcref$O $Binteger$O $Blibcii$A;$(LD) $(LDFLAGS) -Fe$@ $Bcref$O $Binteger$O $Blibcii$A -link /NODEFAULTLIB:libc.lib
$Bsort$E:	$Bsort$O $Blibcii$A;		$(LD) $(LDFLAGS) -Fe$@ $Bsort$O $Blibcii$A -link /NODEFAULTLIB:libc.lib
$Bspin$E:	$Bspin$O $Blibcii$A;		$(LD) $(LDFLAGS) -Fe$@ $Bspin$O $Blibcii$A -link /NODEFAULTLIB:libc.lib
$Bsieve$E:	$Bsieve$O $Blibcii$A;		$(LD) $(LDFLAGS) -Fe$@ $Bsieve$O $Blibcii$A -link /NODEFAULTLIB:libc.lib

clean::
		-del /q $B*$O
		-del /q $(EXAMPLES)

clobber::	clean
		-del /q $Blibcii$A

libcii.dll:	$Blibcii.dll

$Blibcii.dll:	$(OBJS) $(EXTRAS)
		link -dll -out:$@ -def:src/libcii.def $(OBJS) $(EXTRAS)

clean::
		-del /q $B*.ilk *.pdb
		-move $Blibcii.pdb $Blibcii.bak
		-del /q $B*.pdb
		-move $Blibcii.bak $Blibcii.pdb

clobber::
		-del /q $Blibcii.dll $Blibcii.exp


# DO NOT DELETE THIS LINE -- make depend depends on it.

$Bap$O:		$I/assert.h $I/except.h $I/ap.h $I/fmt.h $I/xp.h $I/mem.h
$Barena$O:	$I/assert.h $I/except.h $I/arena.h
$Barith$O:	$I/arith.h
$Barray$O:	$I/assert.h $I/except.h $I/array.h $I/arrayrep.h $I/mem.h
$Bassert$O:	$I/assert.h $I/except.h
$Batom$O:	$I/atom.h $I/assert.h $I/except.h $I/mem.h
$Bbit$O:	$I/assert.h $I/except.h $I/bit.h $I/mem.h
$Bchan$O:	$I/assert.h $I/except.h $I/mem.h $I/chan.h $I/sem.h
$Bexcept$O:	$I/assert.h $I/except.h
$Bfmt$O:	$I/assert.h $I/except.h $I/fmt.h $I/mem.h
$Blist$O:	$I/assert.h $I/except.h $I/mem.h $I/list.h
$Bmem$O:	$I/assert.h $I/except.h $I/mem.h
$Bmemchk$O:	$I/assert.h $I/except.h $I/mem.h
$Bmp$O:		$I/assert.h $I/except.h $I/fmt.h $I/mem.h $I/xp.h $I/mp.h
$Bring$O:	$I/assert.h $I/except.h $I/ring.h $I/mem.h
$Bseq$O:	$I/assert.h $I/except.h $I/seq.h $I/array.h $I/arrayrep.h $I/mem.h
$Bset$O:	$I/mem.h $I/except.h $I/assert.h $I/arith.h $I/set.h
$Bstack$O:	$I/assert.h $I/except.h $I/mem.h $I/stack.h
$Bstr$O:	$I/assert.h $I/except.h $I/fmt.h $I/str.h $I/mem.h
$Btable$O:	$I/mem.h $I/except.h $I/assert.h $I/table.h
$Btext$O:	$I/assert.h $I/except.h $I/fmt.h $I/text.h $I/mem.h
$Bthread$O:	$I/assert.h $I/except.h $I/mem.h $I/thread.h $I/sem.h
$Bthread-nt$O:	$I/assert.h $I/except.h $I/mem.h $I/thread.h $I/sem.h
$Bxp$O:		$I/assert.h $I/except.h $I/xp.h
