.SUFFIXES:	.c .obj .as
MODEL	= s
BIN	= /usr/hitech/bin
COM	= ../libc-common
LIB	= /usr/hitech/lib
AR	= $(BIN)/libr r
C	= $(BIN)/zc -q
AS	= $(BIN)/zas
ASFLAGS	=
CFLAGS	= -x -O -B$(MODEL) -Zg3 -w-2
LD	= $(BIN)/link
ENHUFF	= $(BIN)/enhuff

.DEFAULT:
	sh -c "cvs update $@ ; test -e $@ ||  ( cvs export -r HEAD libc/common/$@ ; mv libc/common/$@ .)"

.c.obj:
	$(C) $(CFLAGS) -c $<
.as.obj:
	$(C) $(CFLAGS) -c $<

BATS	= Makefile

SRCS	= abs.c acos.c allsh.as alrsh.as asallsh.as asalrsh.as asar.as \
	  asdiv.as asfloat.as asin.c asladd.as asland.as asll.as asllrsh.as \
	  aslmul.as aslor.as aslr.as aslsub.as aslxor.as asmod.as asmul.as \
	  atan.c atan2.c atof.c atoi.c atol.c bitfield.as \
	  brelop.as bsearch.c calloc.c ceil.c cgets.c cos.c \
	  cosh.c cputs.c csv.as ctime.c ctype_.c doprnt.c doscan.c scanfbuf.c \
	  evalpoly.c exp.c fabs.c fastb.as fastb2.as fbcd.c finc.as \
	  float.as floor.c fltscan.c frelop.as frexp.c frndint.c \
	  ftol.as getch.c gets.c romgets.c idiv.as imul.as iregset.as romscan.c \
	  ladd.as land.as ldiv.as linc.as linchl.as llrsh.as lmul.as \
	  log.c longjmp.as lor.as lrelop.as lsub.as ltof.as lxor.as \
	  malloc.c max.c memchr.c memcmp.c memcpy.c memmove.c memset.as modf.c \
	  printf.c romputs.c qsort.c rand.c rcsv.as sbrk.c strftime.c mktime.c \
	  scanf.c ser180.c sersio.c sin.c sinh.c sprintf.c sqrt.c sscanf.c \
	  strcat.c strchr.c strcmp.c puts.c powers.c std-div.c std-ldiv.c \
	  strcpy.c strcspn.c strdup.c stricmp.c strlen.c \
	  strncat.c strncmp.c strncpy.c strpbrk.c \
	  strrchr.c strspn.c strstr.c strtok.c swap.c tan.c tanh.c \
	  tolower.c toupper.c vprintf.c vscanf.c vsprintf.c vsscanf.c \
	  wrelop.as xtoi.c powerup.as pshlng.as wrelop1.as wrelop2.as wrelop3.as \
	  _exit.as abort.c bdos.as bdoshl.as bios.as chmod.c \
	  cleanup.c close.c convtime.c creat.c dup.c \
	  execl.c fakecpcln.as fcbname.c getfcb.c \
	  getuid.as intrpt.c isatty.c open.c read.c rename.c \
	  seek.c signal.c start1.as start2.as \
	  stat.c sys_err.c time.c timezone.c unlink.c write.c \
	  rtz801c.as rtz801s.as rtz801l.as \
	  rtz80-c.as rtz80-s.as rtz80-l.as lcall.as \
	  assert.c atexit.c buf.c exit.c fakeclean.c fclose.c \
	  fdopen.c fflush.c fgetc.c filbuf.c flsbuf.c fopen.c fprintf.c \
	  fputc.c fread.c freopen.c fscanf.c fseek.c fwrite.c getargs.c \
	  getenv.c getw.c perror.c putw.c remove.c rewind.c setbuf.c \
	  stdclean.c tmpnam.c ungetc.c  lpowerup.c lmul180.as imul180.as \
	  spowerup.c shar.as shll.as shlr.as romfltsc.c im.c persist.c

ROMOBJS	= printf.obj romputs.obj cputs.obj scanf.obj sprintf.obj  sscanf.obj \
	  vprintf.obj vscanf.obj vsprintf.obj vsscanf.obj doprnt.obj romscan.obj scanfbuf.obj \
	  romgets.obj cgets.obj getch.obj

SMLOBJS	= longjmp.obj bdos.obj csv.obj

LRGOBJS	= llongjmp.obj lbdos.obj csv.obj lcall.obj

CPMOBJS = getargs.obj bios.obj chmod.obj dup.obj execl.obj fcbname.obj \
	  rename.obj time.obj abs.obj acos.obj asallsh.obj asalrsh.obj \
	  asar.obj asin.obj asland.obj asll.obj asllrsh.obj aslor.obj aslr.obj \
	  aslsub.obj aslxor.obj atan2.obj atan.obj bsearch.obj calloc.obj \
	  asmul.obj ceil.obj cosh.obj ctime.obj timezone.obj asdiv.obj fabs.obj \
	  fastb2.obj finc.obj land.obj linc.obj linchl.obj llrsh.obj longjmp.obj \
	  lor.obj lxor.obj max.obj memchr.obj memcmp.obj memmove.obj modf.obj printf.obj \
	  puts.obj cputs.obj qsort.obj rand.obj rcsv.obj scanf.obj std-div.obj std-ldiv.obj \
	  sinh.obj sqrt.obj sscanf.obj strcmp.obj strdup.obj malloc.obj stricmp.obj \
	  strncat.obj strncpy.obj strpbrk.obj strrchr.obj strstr.obj strtok.obj strcspn.obj \
	  strspn.obj swap.obj tan.obj cos.obj sin.obj tanh.obj exp.obj \
	  floor.obj frndint.obj log.obj evalpoly.obj frelop.obj frexp.obj bitfield.obj \
	  vprintf.obj vscanf.obj vsprintf.obj vsscanf.obj doscan.obj atof.obj \
	  asfloat.obj asmod.obj fbcd.obj atol.obj ftol.obj ltof.obj float.obj \
	  xtoi.obj tolower.obj assert.obj abort.obj fdopen.obj fscanf.obj fwrite.obj \
	  getw.obj perror.obj sys_err.obj putw.obj remove.obj rewind.obj setbuf.obj \
	  tmpnam.obj stat.obj convtime.obj aslmul.obj lmul.obj strcat.obj getenv.obj \
	  strncmp.obj fopen.obj ungetc.obj start1.obj start2.obj gets.obj sprintf.obj \
	  strcpy.obj strlen.obj strchr.obj cgets.obj getch.obj fprintf.obj \
	  doprnt.obj fputc.obj flsbuf.obj isatty.obj freopen.obj creat.obj open.obj \
	  unlink.obj getfcb.obj toupper.obj atoi.obj ctype_.obj brelop.obj fseek.obj \
	  seek.obj lrelop.obj lsub.obj allsh.obj fread.obj idiv.obj fgetc.obj \
	  filbuf.obj read.obj stdclean.obj atexit.obj fclose.obj \
	  buf.obj sbrk.obj fflush.obj write.obj signal.obj cleanup.obj exit.obj \
	  asladd.obj ladd.obj memcpy.obj memset.obj iregset.obj ldiv.obj fastb.obj \
	  close.obj bdos.obj bdoshl.obj getuid.obj csv.obj imul.obj alrsh.obj \
	  wrelop.obj fakeclean.obj _exit.obj fakecpcln.obj pshlng.obj wrelop1.obj \
	  shar.obj shll.obj shlr.obj im.obj persist.obj powers.obj wrelop2.obj wrelop3.obj

OBJS	= abs.obj acos.obj asallsh.obj asalrsh.obj asar.obj asin.obj \
	  asland.obj asll.obj asllrsh.obj aslor.obj aslr.obj aslsub.obj \
	  aslxor.obj atan2.obj atan.obj bsearch.obj \
	  calloc.obj asmul.obj ceil.obj cosh.obj strftime.obj \
	  mktime.obj ctime.obj asdiv.obj \
	  fabs.obj fastb2.obj finc.obj land.obj linc.obj linchl.obj \
	  llrsh.obj lor.obj lrelop.obj lsub.obj lxor.obj max.obj \
	  memcmp.obj memmove.obj memset.obj modf.obj qsort.obj rand.obj \
	  rcsv.obj sinh.obj sqrt.obj strcmp.obj strdup.obj malloc.obj \
	  memcpy.obj sbrk.obj strcpy.obj stricmp.obj strncat.obj std-div.obj std-ldiv.obj \
	  strncpy.obj strpbrk.obj strrchr.obj strstr.obj strlen.obj strncmp.obj \
	  strtok.obj strcspn.obj strspn.obj strchr.obj swap.obj tan.obj \
	  cos.obj sin.obj tanh.obj exp.obj floor.obj frndint.obj \
	  log.obj evalpoly.obj frelop.obj frexp.obj bitfield.obj timezone.obj \
	  toupper.obj atof.obj asladd.obj aslmul.obj ladd.obj asfloat.obj \
	  asmod.obj atoi.obj fbcd.obj intrpt.obj atol.obj ftol.obj \
	  allsh.obj alrsh.obj idiv.obj iregset.obj ldiv.obj \
	  ltof.obj float.obj fastb.obj strcat.obj wrelop1.obj wrelop.obj xtoi.obj \
	  ctype_.obj tolower.obj brelop.obj pshlng.obj shar.obj shll.obj \
	  shlr.obj im.obj persist.obj powers.obj wrelop2.obj wrelop3.obj 

Z1OBJS	= lmul180.obj imul180.obj ser180.obj

Z0OBJS	= lmul.obj imul.obj

STARTOFFS	= rtz80-s.obj rtz80-l.obj rtz80-c.obj rtz801s.obj rtz801l.obj rtz801c.obj

CPMFOBJ	= printf.obj sscanf.obj scanf.obj vprintf.obj sprintf.obj vsprintf.obj vscanf.obj \
	  fscanf.obj fprintf.obj vsscanf.obj fltprnt.obj fltscan.obj

ROMFOBJ	= printf.obj sscanf.obj scanf.obj vprintf.obj sprintf.obj vsprintf.obj vscanf.obj \
	  vsscanf.obj fltprnt.obj romfltsc.obj

CPMLOBJ	= fprintf.obj fscanf.obj printf.obj vprintf.obj sprintf.obj vsprintf.obj lngprnt.obj

ROMLOBJ	= printf.obj vprintf.obj sprintf.obj vsprintf.obj lngprnt.obj

ALLLIBS	= z80-sc.lib z80-sl.lib z80-sf.lib \
	  z80-lc.lib z80-ll.lib z80-lf.lib \
	  z801sc.lib z801sl.lib z801sf.lib \
	  z801lc.lib z801ll.lib z801lf.lib

all:		rmobjs z80.pak libs libs1 libl libl1 libc libc1

install:	
		cp z80-sc.lib z80-lc.lib z80-cc.lib $(LIB)
		cp z80-sl.lib z80-ll.lib z80-cl.lib $(LIB)
		cp z80-sf.lib z80-lf.lib z80-cf.lib $(LIB)
		cp z801sc.lib z801lc.lib z801cc.lib $(LIB)
		cp z801sl.lib z801ll.lib z801cl.lib $(LIB)
		cp z801sf.lib z801lf.lib z801cf.lib $(LIB)
		cp $(STARTOFFS) $(LIB)

startoffs :	$(STARTOFFS)

rmobjs:
		@rm -f $(OBJS) $(LOBJS) $(ROMFOBJ) $(CPMOBJS) $(CPMFOBJ) $(Z1OBJS) $(Z0OBJS) \
		$(CPMLOBJ) $(ROMLOBJ) \
		lbdos.obj lcall.obj llongjmp.obj lpowerup.obj powerup.obj \
		romscan.obj scanfbuf.obj spowerup.obj

libs:		
		make MODEL=s z80-sc.lib z80-sl.lib z80-sf.lib rtz80-s.obj \
		rmobjs

libs1:		
		make MODEL="s -180" z801sc.lib z801sl.lib z801sf.lib rtz801s.obj \
		rmobjs

libl:		
		make MODEL=l z80-lc.lib z80-ll.lib z80-lf.lib rtz80-l.obj \
		rmobjs

libl1:		
		make MODEL="l -180" z801lc.lib z801ll.lib z801lf.lib rtz801l.obj \
		rmobjs

libc:		
		make MODEL=c z80-cc.lib z80-cl.lib z80-cf.lib rtz80-c.obj \
		rmobjs

libc1:		
		make MODEL="c -180" z801cc.lib z801cl.lib z801cf.lib rtz801c.obj \
		rmobjs

z80-cc.lib:	$(CPMOBJS) $(Z0OBJS)
		rm -f $@
		$(AR) $@ $(CPMOBJS) $(Z0OBJS)

z80-sc.lib:	$(ROMOBJS) $(OBJS) $(SMLOBJS) $(Z0OBJS) powerup.obj
		rm -f $@
		$(AR) $@ $(ROMOBJS) $(OBJS) $(SMLOBJS) $(Z0OBJS) powerup.obj

z80-lc.lib:	$(ROMOBJS) $(OBJS) $(LRGOBJS) $(Z0OBJS)
		rm -f $@
		$(AR) $@ $(ROMOBJS) $(OBJS) $(LRGOBJS) $(Z0OBJS)

z801cc.lib:	$(CPMOBJS) $(Z1OBJS)
		rm -f $@
		$(AR) $@ $(CPMOBJS) $(Z1OBJS)

z801sc.lib:	$(ROMOBJS) $(OBJS) $(SMLOBJS) $(Z1OBJS) spowerup.obj
		rm -f $@
		$(AR) $@ $(ROMOBJS) $(OBJS) $(SMLOBJS) $(Z1OBJS) spowerup.obj

z801lc.lib:	$(ROMOBJS) $(OBJS) $(LRGOBJS) $(Z1OBJS) lpowerup.obj
		rm -f $@
		$(AR) $@ $(ROMOBJS) $(OBJS) $(LRGOBJS) $(Z1OBJS) lpowerup.obj

z801cl.lib:	$(CPMLOBJ)
		rm -f $@
		$(AR) $@ $(CPMLOBJ)

z801cf.lib:	$(CPMFOBJ)
		rm -f $@
		$(AR) $@ $(CPMFOBJ)

z801sl.lib:	$(ROMLOBJ)
		rm -f $@
		$(AR) $@ $(ROMLOBJ)

z801sf.lib:	$(ROMFOBJ)
		rm -f $@
		$(AR) $@ $(ROMFOBJ)

z801ll.lib:	$(ROMLOBJ)
		rm -f $@
		$(AR) $@ $(ROMLOBJ)

z801lf.lib:	$(ROMFOBJ)
		rm -f $@
		$(AR) $@ $(ROMFOBJ)

z80-cl.lib:	$(CPMLOBJ)
		rm -f $@
		$(AR) $@ $(CPMLOBJ)

z80-cf.lib:	$(CPMFOBJ)
		rm -f $@
		$(AR) $@ $(CPMFOBJ)

z80-sl.lib:	$(ROMLOBJ)
		rm -f $@
		$(AR) $@ $(ROMLOBJ)

z80-sf.lib:	$(ROMFOBJ)
		rm -f $@
		$(AR) $@ $(ROMFOBJ)

z80-ll.lib:	$(ROMLOBJ)
		rm -f $@
		$(AR) $@ $(ROMLOBJ)

z80-lf.lib:	$(ROMFOBJ)
		rm -f $@
		$(AR) $@ $(ROMFOBJ)

lngprnt.obj:	doprnt.c
		$(C) $(CFLAGS) -D__LONG -c doprnt.c
		mv doprnt.obj lngprnt.obj

fltprnt.obj:	doprnt.c
		$(C) $(CFLAGS) -D__FLOAT -c doprnt.c
		mv doprnt.obj fltprnt.obj

z80.pak:	$(SRCS) $(BATS)
		packup -a $(BATS) $(SRCS) >z80.pak

clean:		rmobjs

clobber:	clean
		rm -f $(ALLLIBS) $(STARTOFFS) z80.pak
