

DJDIR   = c:/djgpp
GCC_OPT = -O3 -fno-strength-reduce -march=pentium\
	  -Wall -Wbad-function-cast -Werror -Wmissing-declarations\
	  -Wmissing-prototypes -Wpointer-arith -Wshadow -Wstrict-prototypes\
	  -Wwrite-strings -I. -I$(DJDIR)/include

.c.exe:
	gcc -o $@ $< -I. libC99.a -s

.c.o:
	-gcc $(GCC_OPT) -c $<

ENV_OBJECTS =	fclrexcpt.o\
		fegetenv.o\
		fegetround.o\
		feholdexcpt.o\
		fesetenv.o\
		fesetround.o\
	     	fgetexcptflg.o\
		feupdateenv.o\
		feraiseexcpt.o\
	     	fsetexcptflg.o\
		fpu_env.o\
	     	ftestexcept.o

LDBL_OBJECTS =	acoshl.o\
		acosl.o\
		asinhl.o\
		asinl.o\
		atan2l.o\
		atanhl.o\
		atanl.o\
		cbrtl.o\
		ceill.o\
		cpysgnl.o\
		coshl.o\
		dladdldbl.o\
		erfl.o\
		exp2l.o\
		expl.o\
		expm1l.o\
		fabsl.o\
		fdiml.o\
		floorl.o\
		fmal.o\
		fmaxl.o\
		fminl.o\
		fmodl.o\
		fpclassifyl.o\
		frexpl.o\
		hugevall.o\
		hypotl.o\
		ilogbl.o\
		infintyl.o\
		isfinitl.o\
		isinfl.o\
		isnanl.o\
		jy0l.o\
		jy1l.o\
		jynl.o\
		ldexpl.o\
		lgaml_r.o\
		llrintl.o\
		llroundl.o\
		lrintl.o\
		lroundl.o\
		log10l.o\
		log1pl.o\
		log2l.o\
		logbl.o\
		logl.o\
		modfl.o\
		mpyull.o\
		nextafterl.o\
		nrbyintl.o\
		powl.o\
		remainderl.o\
		remquol.o\
		rintl.o\
	 	roundl.o\
		scalblnl.o\
		scalbnl.o\
		signbitl.o\
		sinhl.o\
		sinl.o\
		sqrtl.o\
		slmpyldbl.o\
		spltldbl.o\
		tanl.o\
		tanhl.o\
		tgammal.o\
		truncl.o

DBL_OBJECTS =	dladd_dbl.o\
		exp2.o\
		fdim.o\
		fma.o\
		fmax.o\
		fmin.o\
		isfinitd.o\
		isinfd.o\
		isnand.o\
		llrint.o\
		llround.o\
		log2.o\
		lrint.o\
		lround.o\
		nrbyint.o\
		remquo.o\
		round.o\
		signbitd.o\
		slmpydbl.o\
		splitdbl.o\
		tgamma.o\
		trunc.o

FLT_OBJECTS =	dladdflt.o\
		exp2f.o\
		fdimf.o\
		fmaf.o\
		fmaxf.o\
		fminf.o\
		isfinitf.o\
		llrintf.o\
		llroundf.o\
		log2f.o\
		lrintf.o\
		lroundf.o\
		nrbyintf.o\
		remquof.o\
		roundf.o\
		signbitf.o\
		signgam.o\
		slmpyflt.o\
		splitflt.o\
		tgammaf.o\
		truncf.o

MATH_OBJECTS =	$(DBL_OBJECTS) $(FLT_OBJECTS) $(LDBL_OBJECTS) errhndlr.o

OBJECTS =	$(ENV_OBJECTS) $(MATH_OBJECTS)
SOURCES	=	$(OBJECTS:.o=.c) \
		builtins.h fdlibml.h fenv.h math.h math.h makefile

lib:	libC99.a

libC99.a:	$(OBJECTS)
	rm -f $@
#	cp libc.a $@
	ar crs $@ $^
#	cp $@ $(DJDIR)/lib/libx.a

must:
	$(DJB)/rm -f $(OBJECTS)
	make

elidemo.exe:	elidemo.c nan_def.c fmal.c slmpyldbl.c
	gcc -o $@ $< -I. -O3 demo.c nan_def.o libC99.a -lm  -s
	$@

xelidemo.exe:	elidemo.c nan_def1.c
	gcc -o $@ $< -I. -O3 demo.c nan_def1.c libC99.a -lm  -s
	$@

tstclsfy.exe:	tstclsfy.c
	gcc -o $@ $< -I. -O3 libC99.a -lm -s

tstbignums.exe:  tstbignums.c doprnt204.o
	gcc -o $@ $< -I. -O3 doprnt204.o libC99.a -lm -s

tstsqrtl.exe:  tstsqrtl.c

#tstsinl.o:	tstsinl.c

tstsinl.exe:  tstsinl.c
	gcc -c t_sinl.S
	gcc -o $@ $< -I. t_sinl.c libC99.a -lm -s


tstldexp.exe:	tstldexp.c

tstfraise.exe:	tstfraise.c
	gcc -o $@ $< -I. w_nearbyintl.c libC99.a -s

tstfmodl.exe:	tstfmodl.c
#	gcc -o $@ $< -I. fenvlib.a -lc -s
	gcc -o $@ $< -I. -O3 -lm libC99.a -s

tstmodfl.exe:	tstmodfl.c
#	gcc -o $@ $< -I. fenvlib.a -lc -s
	gcc -o $@ $< -I. _modfl.c libC99.a -s

tstnbint.exe:	tstnbint.c
	gcc -o $@ $< -I. libC99.a -s

tstrndl.exe:	tstrndl.c
	gcc -o $@ $< -I. libC99.a -s

weetest.exe:	weetest.c
	gcc -o $@ $< -I. -lC99 -s
	$@

weetest: weetest_old.exe weetest_new.exe
	-@djecho > nul

weetest_old.exe: weetest.c
	gcc -o $@ $< -I. -s
weetest_new.exe: weetest.c
	gcc -o $@ $< -I. libC99.a -s

acoshl.o:	acoshl.c	fdlibml.h
acosl.o:	acosl.c		fdlibml.h
asinhl.o:	asinhl.c	fdlibml.h
asinl.o:	asinl.c		fdlibml.h
atan2l.o:	atan2l.c	fdlibml.h
atanhl.o:	atanhl.c	fdlibml.h
atanl.o:	atanl.c		fdlibml.h
cbrtl.o:	cbrtl.c		fdlibml.h
ceill.o:	ceill.c		fdlibml.h
coshl.o:	coshl.c		fdlibml.h
cpysgnl.o:	cpysgnl.c	fdlibml.h
dladdflt.o:	dladdflt.c	fdlibml.h
dladdldbl.o:	dladdldbl.c	fdlibml.h
dladd_dbl.o:	dladd_dbl.c	fdlibml.h
erfl.o:		erfl.c		fdlibml.h
errhndlr.o:	errhndlr.c	fdlibml.h
exp2.o:		exp2.c		fdlibml.h
exp2f.o:	exp2f.c		fdlibml.h
exp2l.o:	exp2l.c		fdlibml.h
expl.o:		expl.c		fdlibml.h
expm1l.o:	expm1l.c	fdlibml.h
fabsl.o:	fabsl.c		fdlibml.h
fclrexcpt.o:	fclrexcpt.c
fdim.o:		fdim.c		fdlibml.h
fdimf.o:	fdimf.c		fdlibml.h
fdiml.o:	fdiml.c		fdlibml.h
fegetenv.o:	fegetenv.c
fegetround.o:	fegetround.c	fdlibml.h
feholdexcpt.o:	feholdexcpt.c
feraiseexcpt.o:	feraiseexcpt.c
fesetenv.o:	fesetenv.c
fesetround.o:	fesetround.c
feupdateenv.o:	feupdateenv.c
fgetexcptflg.o:	fgetexcptflg.c
floorl.o:	floorl.c	fdlibml.h
fma.o:		fma.c		fdlibml.h
fmaf.o:		fmaf.c		fdlibml.h
fmal.o:		fmal.c		fdlibml.h
fmax.o:		fmax.c		fdlibml.h
fmaxf.o:	fmaxf.c		fdlibml.h
fmaxl.o:	fmaxl.c		fdlibml.h
fmin.o:		fmin.c		fdlibml.h
fminf.o:	fminf.c		fdlibml.h
fminl.o:	fminl.c		fdlibml.h
fmodl.o:	fmodl.c		fdlibml.h
fpclassifyl.o:	fpclassifyl.c	fdlibml.h
fpu_env.o:	fpu_env.c
frexpl.o:	frexpl.c     	fdlibml.h
fsetexcptflg.o:	fsetexcptflg.c
ftestexcept.o:	ftestexcept.c
hugevall.o:
hypotl.o:	hypotl.c     	fdlibml.h
ilogbl.o:	ilogbl.c     	fdlibml.h
infintyl.o:	infintyl.c   	fdlibml.h
isfinitd.o:	isfinitd.c	fdlibml.h
isfinitf.o:	isfinitf.c 	fdlibml.h
isfinitl.o:	isfinitl.c   	fdlibml.h
isinfd.o:	isinfd.c
isinfl.o:	isinfl.c     	fdlibml.h
isnand.o:	isnand.c
isnanl.o:	isnanl.c     	fdlibml.h
jy0l.o:		jy0l.c		fdlibml.h
jy1l.o:		jy1l.c		fdlibml.h
jynl.o:		jynl.c		fdlibml.h
ldexpl.o:	ldexpl.c
lgaml_r.o:	lgaml_r.c    	fdlibml.h
llrint.o:	llrint.c	fdlibml.h
llrintf.o:	llrintf.c	fdlibml.h
llrintl.o:	llrintl.c    	fdlibml.h
llround.o:	llround.c	fdlibml.h
llroundf.o:	llroundf.c	fdlibml.h
llroundl.o:	llroundl.c   	fdlibml.h
log10l.o:	log10l.c 	fdlibml.h
log1pl.o:	log1pl.c 	fdlibml.h
log2.o:		log2.c		fdlibml.h
log2f.o:	log2f.c		fdlibml.h
log2l.o:	log2l.c	 	fdlibml.h
logbl.o:	logbl.c		fdlibml.h
logl.o:		logl.c		fdlibml.h
lrint.o:	lrint.c		fdlibml.h
lrintf.o:	lrintf.c	fdlibml.h
lrintl.o:	lrintl.c	fdlibml.h
lround.o:	lround.c	fdlibml.h
lroundf.o:	lroundf.c	fdlibml.h
lroundl.o:	lroundl.c	fdlibml.h
modfl.o:	modfl.c		fdlibml.h
mpyull.o:	mpyull.c	fdlibml.h
nextafterl.o:	nextafterl.c	fdlibml.h
nrbyint.o:	nrbyint.c	fdlibml.h
nrbyintf.o:	nrbyintf.c	fdlibml.h
nrbyintl.o:	nrbyintl.c	fdlibml.h
powl.o:		powl.c		fdlibml.h
remainderl.o:	remainderl.c	fdlibml.h
remquo.o:	remquo.c	fdlibml.h
remquof.o:	remquof.c	fdlibml.h
remquol.o:	remquol.c	fdlibml.h
rintl.o:	rintl.c		fdlibml.h
round.o:	round.c
roundf.o:	roundf.c
roundl.o:	roundl.c
scalblnl.o:	scalblnl.c	fdlibml.h
scalbnl.o:	scalbnl.c	fdlibml.h
signbitd.o:	signbitd.c	fdlibml.h
signbitf.o:	signbitf.c	fdlibml.h
signbitl.o:	signbitl.c	fdlibml.h
signgam.o:	signgam.c
sinhl.o:	sinhl.c		fdlibml.h
sinl.o:		sinl.c		fdlibml.h
slmpydbl.o:	slmpydbl.c	fdlibml.h
slmpyflt.o:	slmpyflt.c	fdlibml.h
slmpyldbl.o:	slmpyldbl.c	fdlibml.h
splitdbl.o:	splitdbl.c	fdlibml.h
splitflt.o:	splitflt.c	fdlibml.h
spltldbl.o:	spltldbl.c 	fdlibml.h
sqrtl.o:	sqrtl.c		fdlibml.h
tanhl.o:	tanhl.c		fdlibml.h
tanl.o:		tanl.c	   	fdlibml.h
tgamma.o:	tgamma.c	fdlibml.h
tgammaf.o:	tgammaf.c	fdlibml.h
tgammal.o:	tgammal.c	fdlibml.h
trunc.o:	trunc.c		fdlibml.h
truncf.o:	truncf.c	fdlibml.h
truncl.o:	truncl.c	fdlibml.h

clear_math_objects:
	$(DJDIR)/bin/rm $(MATH_OBJECTS)

copylib:
	@$(UBIN)/cp -dmv libC99.a $(DJL)/libC99.a

echo:
	@djecho $(SOURCES)

list:
	@djecho "#!/bin/sh" > listall.sh
	@djecho ls -C $(OBJECTS:.o=.c) >> listall.sh
	@listall.sh

ldbl_prot:
	@djecho "#!/bin/sh" > mknewprot.sh
	@djecho c:/bat/mkprot $(LDBL_OBJECTS:.o=.c) >> mknewprot.sh
	@mknewprot.sh

mkprot:
	@djecho "#!/bin/sh" > mknewprot.sh
	@djecho c:/bat/mkprot $(OBJECTS:.o=.c) >> mknewprot.sh
	@mknewprot.sh

math_prot:
	@djecho "#!/bin/sh" > mknewprot.sh
	@djecho c:/bat/mkprot $(MATH_OBJECTS:.o=.c) >> mknewprot.sh
	@mknewprot.sh

mkdep:
	@djecho "#!/bin/sh" > mknewdep.sh
	@djecho c:/bat/mkdep  $(OBJECTS:.o=.c) >> mknewdep.sh
	@mknewdep.sh

mkdep1:
	@djecho "#!/bin/sh" > mknewdep.sh
	@djecho c:/bat/mkdep1  $(OBJECTS:.o=.c) >> mknewdep.sh
	@mknewdep.sh

env_save:
	-zip32 -9 -ll fenvsrce fenv.h $(ENV_OBJECTS:.o=.c) \
					$(ENV_OBJECTS:.o=.txh)
dlvr:
	-zip32 -9 -ll c99srce $(SOURCES)
	-zip32 -9 -ll c99docs *.txh

scansrce:
	@djecho "#!/bin/sh" > scansrce.sh
	@djecho $(DJB)/egrep -l "NANL" $(MATH_OBJECTS:.o=.c) >> scansrce.sh
	@scansece.sh

listmath:
	@djecho "#!/bin/sh" > listmath.sh
	@djecho ls $(MATH_OBJECTS:.o=.c) >> listmath.sh

finderrno:
	@djecho "#!/bin/sh" > finderrno.sh
	@djecho fgrep -l \"errno =\" $(MATH_OBJECTS:.o=.c) >> finderrno.sh


freshen:
	-zip32 -9 -ll -f c99srce
	-zip32 -9 -ll -f c99docs
	@djecho Error 12 occurs when zip32 has nothing to save

keep_all:	keep	keepdocs

keep:
	-zip32 -9 -u -ll c99srce $(SOURCES) math.h
	@djecho Error 12 occurs when zip32 has nothing to save

keepdocs:
	@djecho *.txh > savelist
	-zip32 -9 -ll -u c99docs @savelist
	@djecho Error 12 occurs when zip32 has nothing to save
