#################################################
#						#
# Makefile for CLIB\STARTUP	directory	#
#						#
# Routines contained in this directory are:	#
#	chkstk.asm				#
#	chksum.asm				#
#	crt0.asm				#
#	crt0dat.asm				#
#	crt0fp.asm				#
#	crt0msg.asm				#
#	dbcsargv.asm				#
#	fmsghdr.asm				#
#	nmsghdr.asm				#
#	stdargv.asm				#
#	stdenvp.asm				#
#	wild.c					#
#						#
#   Notes:					#
#   (1) stdargv.asm is used to produce		#
#   setargv.obj (wildcard expander)		#
#   (2) crt0.asm/crt0dat.asm are used to	#
#   produce com0.obj/com0dat.obj (.COM support) #
#						#
#   setargv.asm is model-indepedent		#
#						#
#################################################


#########################################
#					#
# Object lists				#
#					#
#########################################

# Common objects
COMM_O= \
	$(LIBC)\chksum.obj  \
	$(LIBC)\crt0fp.obj  \
	$(LIBC)\farstub.obj \
	$(LIBC)\fmsghdr.obj \
	$(LIBC)\nearstub.obj \
	$(LIBC)\wild.obj    \
	..\setargv.obj


# DOS objects
DOS_O=	\
	$(LIBC)\dos\nchkstk.obj  \
	$(LIBC)\dos\fchkstk.obj  \
	$(LIBC)\dos\nrchkstk.obj \
	$(LIBC)\dos\frchkstk.obj \
	$(LIBC)\dos\crt0.obj	 \
	$(LIBC)\dos\crt0dat.obj  \
	$(LIBC)\dos\crt0msg.obj  \
	$(LIBC)\dos\nmsghdr.obj  \
	$(LIBC)\dos\stdargv.obj  \
	$(LIBC)\dos\_setargv.obj \
	$(LIBC)\dos\stdenvp.obj  \
	$(LIBC)\dos\stdalloc.obj \
	$(LIBC)\dos\libcinfo.obj  \
	..\sobjs\dos\com0.obj \
	..\sobjs\dos\com0dat.obj


# Windows objects, compiled GW
WIN1_O=	\
	$(LIBC)\farstub.obj	 \
	$(LIBC)\fatal.obj	 \
	$(LIBC)\fmsghdr.obj	 \
	$(LIBC)\nearstub.obj	 \
	$(LIBC)\qwcinit.obj	 \
	$(LIBC)\stubmain.obj	 \
	$(LIBC)\wild.obj	 \
	$(LIBC)\dos\crt0dat.obj  \
	$(LIBC)\dos\crt0msg.obj  \
	$(LIBC)\dos\nmsghdr.obj  \
	$(LIBC)\dos\stdargv.obj  \
	$(LIBC)\dos\_setargv.obj \
	$(LIBC)\dos\stdenvp.obj  \
	$(LIBC)\dos\stdalloc.obj \
	$(LIBC)\dos\wchkstk.obj  \
	$(LIBC)\dos\windgrp.obj  \
	$(LIBC)\dos\wcrt0.obj	 \
	$(LIBC)\dos\nocrt.obj	 \
	$(LIBC)\dos\wnull.obj	 \
	$(LIBC)\dos\libcinfo.obj  \
	$(LIBC)\noargv.obj	 \
	$(LIBC)\nocinit.obj	 \
	$(LIBC)\noenvp.obj	 \

# Windows objects, compiled Gw
WIN2_O=	$(LIBC)\dos\windgrpx.obj


WINDLL_O= \
	$(LIBC)\dos\crt0dat.obj  \
	$(LIBC)\dos\crt0msg.obj  \
	$(LIBC)\dos\nmsghdr.obj  \
	$(LIBC)\dos\stdenvp.obj  \
	$(LIBC)\fatal.obj	 \
	$(LIBC)\dos\nocrt.obj	 \
	$(LIBC)\stubmain.obj	 \
	$(LIBC)\dos\stubwep.obj  \
	$(LIBC)\dos\wchkstk.obj  \
	$(LIBC)\dos\wcrt0.obj	 \
	$(LIBC)\dos\wep.obj	 \
	$(LIBC)\dos\libcinfo.obj


#########################################
#					#
# Target Dependency listings		#
#					#
#########################################

libc: $(COMM_O) $(DOS_O)



libcw1: $(WIN1_O)

libcw2: $(WIN2_O)

libcwdll:  $(WINDLL_O)


#########################################################
#							#
#   Dependencies and rules for making local objects	#
#							#
#########################################################

$(LIBC)\chksum.obj: chksum.asm $(ASMSTD) $(ASMINC)\defsegs.inc \
		$(ASMINC)\rterr.inc
	$(MM) -Fo$(LIBC)\chksum.obj chksum.asm

$(LIBC)\crt0fp.obj: crt0fp.asm $(ASMSTD) $(ASMINC)\defsegs.inc \
		$(ASMINC)\rterr.inc
	$(MM) -Fo$(LIBC)\crt0fp.obj crt0fp.asm

$(LIBC)\farstub.obj: farstub.asm $(ASMSTD)
	$(MM) -Fo$(LIBC)\farstub.obj farstub.asm

$(LIBC)\fmsghdr.obj: fmsghdr.asm $(ASMSTD) $(ASMINC)\msdos.inc \
		$(ASMINC)\rterr.inc
	$(MM) -Fo$(LIBC)\fmsghdr.obj fmsghdr.asm

$(LIBC)\nearstub.obj: nearstub.asm $(ASMSTD)
	$(MM) -Fo$(LIBC)\nearstub.obj nearstub.asm

..\setargv.obj: setargv.asm $(ASMSTD)
	$(MM) -Fo..\setargv.obj setargv.asm

$(LIBC)\wild.obj: wild.c \
		$(INCLUDE)\stddef.h \
		$(INCLUDE)\string.h \
		$(INCLUDE)\malloc.h \
		$(INCLUDE)\register.h \
		$(INCLUDE)\ctype.h \
		$(INCLUDE)\msdos.h \
		$(INCLUDE)\internal.h
	$(CC) $(MEM) -Fo$(LIBC)\wild.obj wild.c


$(LIBC)\dos\nchkstk.obj: chkstk.asm \
		$(ASMINC)\msdos.inc $(ASMSTD) 
	$(MM) -DMI_NEAR -Fo$(LIBC)\dos\nchkstk.obj chkstk.asm

$(LIBC)\dos\fchkstk.obj: chkstk.asm \
		$(ASMINC)\msdos.inc $(ASMSTD) 
	$(MM) -DMI_FAR -Fo$(LIBC)\dos\fchkstk.obj chkstk.asm

$(LIBC)\dos\nrchkstk.obj: rchkstk.asm \
		$(ASMINC)\msdos.inc $(ASMSTD) 
	$(MM) -DMI_NEAR -Fo$(LIBC)\dos\nrchkstk.obj rchkstk.asm

$(LIBC)\dos\frchkstk.obj: rchkstk.asm \
		$(ASMINC)\msdos.inc $(ASMSTD) 
	$(MM) -DMI_FAR -Fo$(LIBC)\dos\frchkstk.obj rchkstk.asm

$(LIBC)\dos\crt0.obj: dos\crt0.asm $(ASMSTD) $(ASMINC)\msdos.inc \
		$(ASMINC)\defsegs.inc $(ASMINC)\heap.inc $(ASMINC)\rterr.inc
	$(MM) -Fo$(LIBC)\dos\crt0.obj dos\crt0.asm

..\sobjs\dos\com0.obj: dos\crt0.asm $(ASMSTD) $(ASMINC)\msdos.inc \
		$(ASMINC)\defsegs.inc $(ASMINC)\heap.inc \
		$(ASMINC)\rterr.inc
	$(MM) -D_COM_ -Fo..\sobjs\dos\com0.obj dos\crt0.asm

$(LIBC)\dos\crt0msg.obj: dos\crt0msg.asm $(ASMSTD) \
		$(ASMINC)\defsegs.inc $(ASMINC)\cmsgs.inc $(ASMINC)\rterr.inc
	$(MM) -Fo$(LIBC)\dos\crt0msg.obj dos\crt0msg.asm

$(LIBC)\dos\crt0dat.obj: dos\crt0dat.asm $(ASMSTD) $(ASMINC)\msdos.inc \
		$(ASMINC)\defsegs.inc $(ASMINC)\stdlib.inc
	$(MM) -Fo$(LIBC)\dos\crt0dat.obj dos\crt0dat.asm

..\sobjs\dos\com0dat.obj: dos\crt0dat.asm $(ASMSTD) $(ASMINC)\msdos.inc \
		$(ASMINC)\defsegs.inc $(ASMINC)\stdlib.inc
	$(MM) -D_COM_ -Fo..\sobjs\dos\com0dat.obj dos\crt0dat.asm

$(LIBC)\dos\nmsghdr.obj: dos\nmsghdr.asm $(ASMSTD) $(ASMINC)\msdos.inc \
		$(ASMINC)\defsegs.inc
	$(MM) -Fo$(LIBC)\dos\nmsghdr.obj dos\nmsghdr.asm

$(LIBC)\dos\stdargv.obj: dos\stdargv.asm $(ASMSTD) $(ASMINC)\msdos.inc \
		$(ASMINC)\defsegs.inc $(ASMINC)\rterr.inc
	$(MM) -Fo$(LIBC)\dos\stdargv.obj dos\stdargv.asm

$(LIBC)\dos\_setargv.obj: dos\stdargv.asm $(ASMSTD) $(ASMINC)\msdos.inc \
		$(ASMINC)\defsegs.inc $(ASMINC)\rterr.inc
	$(MM) -DWILDCARD -Fo$(LIBC)\dos\_setargv.obj dos\stdargv.asm

$(LIBC)\dos\stdenvp.obj: dos\stdenvp.asm $(ASMINC)\msdos.inc $(ASMSTD) \
		$(ASMINC)\rterr.inc
	$(MM) -Fo$(LIBC)\dos\stdenvp.obj dos\stdenvp.asm

$(LIBC)\dos\stdalloc.obj: dos\stdalloc.asm $(ASMSTD) \
		$(ASMINC)\heap.inc $(ASMINC)\msdos.inc
	$(MM) -Fo$(LIBC)\dos\stdalloc.obj dos\stdalloc.asm

$(LIBC)\dos\libcinfo.obj: libcinfo.c
	$(CC) $(MEM) -D_DOS -Fo$(LIBC)\dos\libcinfo.obj libcinfo.c


$(LIBC)\fatal.obj: windows\fatal.asm $(ASMSTD) \
		$(ASMINC)\defsegs.inc $(ASMINC)\rterr.inc
	$(MM) -Fo$(LIBC)\fatal.obj windows\fatal.asm

$(LIBC)\noargv.obj: windows\noargv.asm $(ASMSTD)
	$(MM) -Fo$(LIBC)\noargv.obj windows\noargv.asm

$(LIBC)\nocinit.obj: windows\nocinit.asm $(ASMSTD) $(ASMINC)\defsegs.inc
	$(MM) -Fo$(LIBC)\nocinit.obj windows\nocinit.asm

$(LIBC)\noenvp.obj: windows\noenvp.asm $(ASMSTD)
	$(MM) -Fo$(LIBC)\noenvp.obj windows\noenvp.asm

$(LIBC)\qwcinit.obj: windows\qwcinit.asm $(ASMSTD) \
		$(ASMINC)\cmsgs.inc $(ASMINC)\defsegs.inc \
		$(ASMINC)\fcntl.inc $(ASMINC)\rterr.inc
	$(MM) -Fo$(LIBC)\qwcinit.obj windows\qwcinit.asm

$(LIBC)\stubmain.obj: windows\stubmain.asm $(ASMSTD)
	$(MM) -Fo$(LIBC)\stubmain.obj windows\stubmain.asm

$(LIBC)\dos\wchkstk.obj: windows\wchkstk.asm $(ASMSTD)
	$(MM) -Fo$(LIBC)\dos\wchkstk.obj windows\wchkstk.asm

$(LIBC)\dos\windgrp.obj: windows\windgrp.asm $(ASMSTD)
	$(MM) -Fo$@ windows\windgrp.asm

$(LIBC)\dos\windgrpx.obj: windows\windgrpx.c
	$(CC) $(MEM) -Gw -Fo$@ windows\windgrpx.c

$(LIBC)\dos\wcrt0.obj: windows\crt0.asm $(ASMSTD) \
		$(ASMINC)\msdos.inc $(ASMINC)\defsegs.inc \
		$(ASMINC)\rterr.inc $(ASMINC)\stdlib.inc
	$(MM) -Fo$(LIBC)\dos\wcrt0.obj windows\crt0.asm

$(LIBC)\dos\nocrt.obj: windows\crt0.asm $(ASMSTD) \
		$(ASMINC)\msdos.inc
	$(MM) -D_NOCRT -Fo$(LIBC)\dos\nocrt.obj windows\crt0.asm

$(LIBC)\dos\stubwep.obj: windows\stubwep.asm $(ASMSTD)
	$(MM) -Fo$(LIBC)\dos\stubwep.obj windows\stubwep.asm

$(LIBC)\dos\wep.obj: windows\wep.asm $(ASMSTD)
	$(MM) -Fo$(LIBC)\dos\wep.obj windows\wep.asm

$(LIBC)\dos\wnull.obj: windows\wnull.asm $(ASMSTD)
	$(MM) -Fo$(LIBC)\dos\wnull.obj windows\wnull.asm

