#######################################################################
#  This is the makefile to create a Ada spacification for LAPACK.
#  Modify from Makefile in SRC of LAPACK source.
#  The files are organized as follows:
#       AUX -- Auxiliary 
#	CMP -- Compute
#	DRV -- Driver
#	Version 0.2
#######################################################################
 
AUX1 = \
slabad.ads slabrd.ads slacon.ads slacpy.ads sladiv.ads slae2.ads \
slaebz.ads slaein.ads slaev2.ads slaexc.ads slag2.ads slags2.ads \
slagtm.ads slagts.ads slahqr.ads slahrd.ads slaic1.ads slaln2.ads \
slamch.ads slangb.ads slange.ads slangt.ads slanhs.ads slansb.ads \
slansp.ads slanst.ads slansy.ads slantb.ads slantp.ads slantr.ads \
slanv2.ads slapll.ads slapmt.ads slapy2.ads slapy3.ads slaqgb.ads \
slaqge.ads slaqsb.ads slaqsp.ads slaqsy.ads slaqtr.ads slar2v.ads \
slarf.ads slarfb.ads slarfg.ads slarft.ads slarfx.ads slargv.ads \
slarnv.ads slartg.ads slartv.ads slaruv.ads slas2.ads slascl.ads \
slaset.ads slasr.ads slassq.ads slasv2.ads slaswp.ads slasy2.ads \
slatbs.ads slatps.ads slatrd.ads slatrs.ads slauu2.ads slauum.ads \
srscl.ads \
\
dlabad.ads dlabrd.ads dlacon.ads dlacpy.ads dladiv.ads dlae2.ads \
dlaebz.ads dlaein.ads dlaev2.ads dlaexc.ads dlag2.ads dlags2.ads \
dlagtm.ads dlagts.ads dlahqr.ads dlahrd.ads dlaic1.ads dlaln2.ads \
dlamch.ads dlangb.ads dlange.ads dlangt.ads dlanhs.ads dlansb.ads \
dlansp.ads dlanst.ads dlansy.ads dlantb.ads dlantp.ads dlantr.ads \
dlanv2.ads dlapll.ads dlapmt.ads dlapy2.ads dlapy3.ads dlaqgb.ads \
dlaqge.ads dlaqsb.ads dlaqsp.ads dlaqsy.ads dlaqtr.ads dlar2v.ads \
dlarf.ads dlarfb.ads dlarfg.ads dlarft.ads dlarfx.ads dlargv.ads \
dlarnv.ads dlartg.ads dlartv.ads dlaruv.ads dlas2.ads dlascl.ads \
dlaset.ads dlasr.ads dlassq.ads dlasv2.ads dlaswp.ads dlasy2.ads \
dlatbs.ads dlatps.ads dlatrd.ads dlatrs.ads dlauu2.ads dlauum.ads \
drscl.ads  \
\
clabrd.ads clacgv.ads clacon.ads clacpy.ads clacrm.ads clacrt.ads \
cladiv.ads claein.ads claesy.ads claev2.ads clags2.ads clagtm.ads \
clahqr.ads clahrd.ads claic1.ads clangb.ads clange.ads clangt.ads \
clanhb.ads clanhe.ads clanhp.ads clanhs.ads clanht.ads clansb.ads \
clansp.ads clansy.ads clantb.ads clantp.ads clantr.ads clapll.ads \
clapmt.ads claqgb.ads claqge.ads claqhb.ads claqhe.ads claqhp.ads \
claqsb.ads claqsp.ads claqsy.ads clar2v.ads clarf.ads clarfb.ads \
clarfg.ads clarft.ads clarfx.ads clargv.ads clarnv.ads clartg.ads \
clartv.ads clascl.ads claset.ads clasr.ads classq.ads claswp.ads \
clatbs.ads clatps.ads clatrd.ads clatrs.ads clauu2.ads clauum.ads \
crot.ads cspmv.ads cspr.ads csrscl.ads csymv.ads csyr.ads \
cgeqpf.ads \
\
zlabrd.ads zlacgv.ads zlacon.ads zlacpy.ads zlacrm.ads zlacrt.ads \
zladiv.ads zlaein.ads zlaesy.ads zlaev2.ads zlags2.ads zlagtm.ads \
zlahqr.ads zlahrd.ads zlaic1.ads zlangb.ads zlange.ads zlangt.ads \
zlanhb.ads zlanhe.ads zlanhp.ads zlanhs.ads zlanht.ads zlansb.ads \
zlansp.ads zlansy.ads zlantb.ads zlantp.ads zlantr.ads zlapll.ads \
zlapmt.ads zlaqgb.ads zlaqge.ads zlaqhb.ads zlaqhe.ads zlaqhp.ads \
zlaqsb.ads zlaqsp.ads zlaqsy.ads zlar2v.ads zlarf.ads zlarfb.ads \
zlarfg.ads zlarft.ads zlarfx.ads zlargv.ads zlarnv.ads zlartg.ads \
zlartv.ads zlascl.ads zlaset.ads zlasr.ads zlassq.ads zlaswp.ads \
zlatbs.ads zlatps.ads zlatrd.ads zlatrs.ads zlauu2.ads zlauum.ads \
zrot.ads zspmv.ads zspr.ads zdrscl.ads zsymv.ads zsyr.ads \
zgeqpf.ads \
\
icmax1.ads ilaenv.ads izmax1.ads \
\
lsame.ads lsamen.ads  \
scsum1.ads second.ads  \
dsecnd.ads dzsum1.ads \
xerbla.ads 

CMP = \
cbdsqr.ads cgbbrd.ads cgbcon.ads cgbequ.ads cgbrfs.ads \
cgbtf2.ads cgbtrf.ads cgbtrs.ads cgebak.ads cgebal.ads \
cgebd2.ads cgebrd.ads cgecon.ads cgeequ.ads cgehd2.ads \
cgehrd.ads cgelq2.ads cgelqf.ads cgeql2.ads cgeqlf.ads \
cgeqr2.ads cgeqrf.ads cgerfs.ads cgerq2.ads cgerqf.ads \
cgetf2.ads cgetrf.ads cgetri.ads cgetrs.ads cggbak.ads \
cggbal.ads cgghrd.ads cggqrf.ads cggrqf.ads cggsvp.ads \
cgtcon.ads cgtrfs.ads cgtsv.ads cgtsvx.ads cgttrf.ads \
cgttrs.ads chbgst.ads chbtrd.ads checon.ads chegs2.ads \
chegst.ads cherfs.ads chetd2.ads chetf2.ads chetrd.ads \
chetrf.ads chetri.ads chetrs.ads chgeqz.ads chpcon.ads \
chpgst.ads chprfs.ads chptrd.ads chptrf.ads chptri.ads \
chptrs.ads chsein.ads chseqr.ads claed0.ads claed7.ads \
claed8.ads clahef.ads clasyf.ads clatzm.ads cpbcon.ads \
cpbequ.ads cpbrfs.ads cpbstf.ads cpbtf2.ads cpbtrf.ads \
cpbtrs.ads cpocon.ads cpoequ.ads cporfs.ads cpotf2.ads \
cpotrf.ads cpotri.ads cpotrs.ads cppcon.ads cppequ.ads \
cpprfs.ads cpptrf.ads cpptri.ads cpptrs.ads cptcon.ads \
cpteqr.ads cptrfs.ads cptsv.ads cptsvx.ads cpttrf.ads \
cpttrs.ads cspcon.ads csprfs.ads csptrf.ads csptri.ads \
csptrs.ads cstedc.ads cstein.ads csteqr.ads csycon.ads \
csyrfs.ads csytf2.ads csytrf.ads csytri.ads csytrs.ads \
ctbcon.ads ctbrfs.ads ctbtrs.ads ctgevc.ads ctgsja.ads \
ctpcon.ads ctprfs.ads ctptri.ads ctptrs.ads ctrcon.ads \
ctrevc.ads ctrexc.ads ctrrfs.ads ctrsen.ads ctrsna.ads \
ctrsyl.ads ctrti2.ads ctrtri.ads ctrtrs.ads ctzrqf.ads \
cung2l.ads cung2r.ads cungbr.ads cunghr.ads cungl2.ads \
cunglq.ads cungql.ads cungqr.ads cungr2.ads cungrq.ads \
cungtr.ads cunm2l.ads cunm2r.ads cunmbr.ads cunmhr.ads \
cunml2.ads cunmlq.ads cunmql.ads cunmqr.ads cunmr2.ads \
cunmrq.ads cunmtr.ads cupgtr.ads cupmtr.ads \
\
dbdsqr.ads ddisna.ads dgbbrd.ads dgbcon.ads dgbequ.ads \
dgbrfs.ads dgbtf2.ads dgbtrf.ads dgbtrs.ads dgebak.ads \
dgebal.ads dgebd2.ads dgebrd.ads dgecon.ads dgeequ.ads \
dgehd2.ads dgehrd.ads dgelq2.ads dgelqf.ads dgeql2.ads \
dgeqlf.ads dgeqr2.ads dgeqrf.ads dgerfs.ads dgerq2.ads \
dgerqf.ads dgetf2.ads dgetrf.ads dgetri.ads dgetrs.ads \
dggbak.ads dggbal.ads dgghrd.ads dggqrf.ads dggrqf.ads \
dggsvp.ads dgtcon.ads dgtrfs.ads dgtsv.ads dgtsvx.ads \
dgttrf.ads dgttrs.ads dhgeqz.ads dhsein.ads dhseqr.ads \
dlaed0.ads dlaed1.ads dlaed2.ads dlaed3.ads dlaed4.ads \
dlaed5.ads dlaed6.ads dlaed7.ads dlaed8.ads dlaed9.ads \
dlaeda.ads dlagtf.ads dlamrg.ads dlasq1.ads dlasq2.ads \
dlasq3.ads dlasq4.ads dlasrt.ads dlasyf.ads dlatzm.ads \
dopgtr.ads dopmtr.ads dorg2l.ads dorg2r.ads dorgbr.ads \
dorghr.ads dorgl2.ads dorglq.ads dorgql.ads dorgqr.ads \
dorgr2.ads dorgrq.ads dorgtr.ads dorm2l.ads dorm2r.ads \
dormbr.ads dormhr.ads dorml2.ads dormlq.ads dormql.ads \
dormqr.ads dormr2.ads dormrq.ads dormtr.ads dpbcon.ads \
dpbequ.ads dpbrfs.ads dpbstf.ads dpbtf2.ads dpbtrf.ads \
dpbtrs.ads dpocon.ads dpoequ.ads dporfs.ads dpotf2.ads \
dpotrf.ads dpotri.ads dpotrs.ads dppcon.ads dppequ.ads \
dpprfs.ads dpptrf.ads dpptri.ads dpptrs.ads dptcon.ads \
dpteqr.ads dptrfs.ads dptsv.ads dptsvx.ads dpttrf.ads \
dpttrs.ads dsbgst.ads dsbtrd.ads dspcon.ads dspgst.ads \
dsprfs.ads dsptrd.ads dsptrf.ads dsptri.ads dsptrs.ads \
dstebz.ads dstedc.ads dstein.ads dsteqr.ads dsterf.ads \
dsycon.ads dsygs2.ads dsygst.ads dsyrfs.ads dsytd2.ads \
dsytf2.ads dsytrd.ads dsytrf.ads dsytri.ads dsytrs.ads \
dtbcon.ads dtbrfs.ads dtbtrs.ads dtgevc.ads dtgsja.ads \
dtpcon.ads dtprfs.ads dtptri.ads dtptrs.ads dtrcon.ads \
dtrevc.ads dtrexc.ads dtrrfs.ads dtrsen.ads dtrsna.ads \
dtrsyl.ads dtrti2.ads dtrtri.ads dtrtrs.ads dtzrqf.ads \
\
sbdsqr.ads sdisna.ads sgbbrd.ads sgbcon.ads sgbequ.ads \
sgbrfs.ads sgbtf2.ads sgbtrf.ads sgbtrs.ads sgebak.ads \
sgebal.ads sgebd2.ads sgebrd.ads sgecon.ads sgeequ.ads \
sgehd2.ads sgehrd.ads sgelq2.ads sgelqf.ads sgeql2.ads \
sgeqlf.ads sgeqr2.ads sgeqrf.ads sgerfs.ads sgerq2.ads \
sgerqf.ads sgetf2.ads sgetrf.ads sgetri.ads sgetrs.ads \
sggbak.ads sggbal.ads sgghrd.ads sggqrf.ads sggrqf.ads \
sggsvp.ads sgtcon.ads sgtrfs.ads sgtsv.ads sgtsvx.ads \
sgttrf.ads sgttrs.ads shgeqz.ads shsein.ads shseqr.ads \
slaed0.ads slaed1.ads slaed2.ads slaed3.ads slaed4.ads \
slaed5.ads slaed6.ads slaed7.ads slaed8.ads slaed9.ads \
slaeda.ads slagtf.ads slamrg.ads slasq1.ads slasq2.ads \
slasq3.ads slasq4.ads slasrt.ads slasyf.ads slatzm.ads \
sopgtr.ads sopmtr.ads sorg2l.ads sorg2r.ads sorgbr.ads \
sorghr.ads sorgl2.ads sorglq.ads sorgql.ads sorgqr.ads \
sorgr2.ads sorgrq.ads sorgtr.ads sorm2l.ads sorm2r.ads \
sormbr.ads sormhr.ads sorml2.ads sormlq.ads sormql.ads \
sormqr.ads sormr2.ads sormrq.ads sormtr.ads spbcon.ads \
spbequ.ads spbrfs.ads spbstf.ads spbtf2.ads spbtrf.ads \
spbtrs.ads spocon.ads spoequ.ads sporfs.ads spotf2.ads \
spotrf.ads spotri.ads spotrs.ads sppcon.ads sppequ.ads \
spprfs.ads spptrf.ads spptri.ads spptrs.ads sptcon.ads \
spteqr.ads sptrfs.ads sptsv.ads sptsvx.ads spttrf.ads \
spttrs.ads ssbgst.ads ssbtrd.ads sspcon.ads sspgst.ads \
ssprfs.ads ssptrd.ads ssptrf.ads ssptri.ads ssptrs.ads \
sstebz.ads sstedc.ads sstein.ads ssteqr.ads ssterf.ads \
ssycon.ads ssygs2.ads ssygst.ads ssyrfs.ads ssytd2.ads \
ssytf2.ads ssytrd.ads ssytrf.ads ssytri.ads ssytrs.ads \
stbcon.ads stbrfs.ads stbtrs.ads stgevc.ads stgsja.ads \
stpcon.ads stprfs.ads stptri.ads stptrs.ads strcon.ads \
strevc.ads strexc.ads strrfs.ads strsen.ads strsna.ads \
strsyl.ads strti2.ads strtri.ads strtrs.ads stzrqf.ads \
\
zbdsqr.ads zgbbrd.ads zgbcon.ads zgbequ.ads zgbrfs.ads \
zgbtf2.ads zgbtrf.ads zgbtrs.ads zgebak.ads zgebal.ads \
zgebd2.ads zgebrd.ads zgecon.ads zgeequ.ads zgehd2.ads \
zgehrd.ads zgelq2.ads zgelqf.ads zgeql2.ads zgeqlf.ads \
zgeqr2.ads zgeqrf.ads zgerfs.ads zgerq2.ads zgerqf.ads \
zgetf2.ads zgetrf.ads zgetri.ads zgetrs.ads zggbak.ads \
zggbal.ads zgghrd.ads zggqrf.ads zggrqf.ads zggsvp.ads \
zgtcon.ads zgtrfs.ads zgtsv.ads zgtsvx.ads zgttrf.ads \
zgttrs.ads zhbgst.ads zhbtrd.ads zhecon.ads zhegs2.ads \
zhegst.ads zherfs.ads zhetd2.ads zhetf2.ads zhetrd.ads \
zhetrf.ads zhetri.ads zhetrs.ads zhgeqz.ads zhpcon.ads \
zhpgst.ads zhprfs.ads zhptrd.ads zhptrf.ads zhptri.ads \
zhptrs.ads zhsein.ads zhseqr.ads zlaed0.ads zlaed7.ads \
zlaed8.ads zlahef.ads zlasyf.ads zlatzm.ads zpbcon.ads \
zpbequ.ads zpbrfs.ads zpbstf.ads zpbtf2.ads zpbtrf.ads \
zpbtrs.ads zpocon.ads zpoequ.ads zporfs.ads zpotf2.ads \
zpotrf.ads zpotri.ads zpotrs.ads zppcon.ads zppequ.ads \
zpprfs.ads zpptrf.ads zpptri.ads zpptrs.ads zptcon.ads \
zpteqr.ads zptrfs.ads zptsv.ads zptsvx.ads zpttrf.ads \
zpttrs.ads zspcon.ads zsprfs.ads zsptrf.ads zsptri.ads \
zsptrs.ads zstedc.ads zstein.ads zsteqr.ads zsycon.ads \
zsyrfs.ads zsytf2.ads zsytrf.ads zsytri.ads zsytrs.ads \
ztbcon.ads ztbrfs.ads ztbtrs.ads ztgevc.ads ztgsja.ads \
ztpcon.ads ztprfs.ads ztptri.ads ztptrs.ads ztrcon.ads \
ztrevc.ads ztrexc.ads ztrrfs.ads ztrsen.ads ztrsna.ads \
ztrsyl.ads ztrti2.ads ztrtri.ads ztrtrs.ads ztzrqf.ads \
zung2l.ads zung2r.ads zungbr.ads zunghr.ads zungl2.ads \
zunglq.ads zungql.ads zungqr.ads zungr2.ads zungrq.ads \
zungtr.ads zunm2l.ads zunm2r.ads zunmbr.ads zunmhr.ads \
zunml2.ads zunmlq.ads zunmql.ads zunmqr.ads zunmr2.ads \
zunmrq.ads zunmtr.ads zupgtr.ads zupmtr.ads 

DRV1 = \
cgbsv.ads cgbsvx.ads cgeev.ads \
cgeevx.ads cgegs.ads cgegv.ads cgels.ads cgelss.ads \
cgelsx.ads cgesv.ads cgesvd.ads cgesvx.ads cggglm.ads \
cgglse.ads cggsvd.ads chbev.ads chbevd.ads chbevx.ads \
chbgv.ads cheev.ads cheevd.ads cheevx.ads chegv.ads \
chesv.ads chesvx.ads chpev.ads chpevd.ads chpevx.ads \
chpgv.ads chpsv.ads chpsvx.ads cpbsv.ads cpbsvx.ads \
cposv.ads cposvx.ads cppsv.ads cppsvx.ads cspsv.ads \
cspsvx.ads csysv.ads csysvx.ads \
 \
dgbsv.ads dgbsvx.ads dgeev.ads \
dgeevx.ads dgegs.ads dgegv.ads dgels.ads dgelss.ads \
dgelsx.ads dgesv.ads dgesvd.ads dgesvx.ads dggglm.ads \
dgglse.ads dggsvd.ads dpbsv.ads dpbsvx.ads dposv.ads \
dposvx.ads dppsv.ads dppsvx.ads dsbev.ads dsbevd.ads \
dsbevx.ads dsbgv.ads dspev.ads dspevd.ads dspevx.ads \
dspgv.ads dspsv.ads dspsvx.ads dstev.ads dstevd.ads \
dstevx.ads dsyev.ads dsyevd.ads dsyevx.ads dsygv.ads \
dsysv.ads dsysvx.ads \
\
sgbsv.ads sgbsvx.ads sgeev.ads \
sgeevx.ads sgegs.ads sgegv.ads sgels.ads sgelss.ads \
sgelsx.ads sgesv.ads sgesvd.ads sgesvx.ads sggglm.ads \
sgglse.ads sggsvd.ads spbsv.ads spbsvx.ads sposv.ads \
sposvx.ads sppsv.ads sppsvx.ads ssbev.ads ssbevd.ads \
ssbevx.ads ssbgv.ads sspev.ads sspevd.ads sspevx.ads \
sspgv.ads sspsv.ads sspsvx.ads sstev.ads sstevd.ads \
sstevx.ads ssyev.ads ssyevd.ads ssyevx.ads ssygv.ads \
ssysv.ads ssysvx.ads \
\
zgbsv.ads zgbsvx.ads zgeev.ads \
zgeevx.ads zgegs.ads zgegv.ads zgels.ads zgelss.ads \
zgelsx.ads zgesv.ads zgesvd.ads zgesvx.ads zggglm.ads \
zgglse.ads zggsvd.ads zhbev.ads zhbevd.ads zhbevx.ads \
zhbgv.ads zheev.ads zheevd.ads zheevx.ads zhegv.ads \
zhesv.ads zhesvx.ads zhpev.ads zhpevd.ads zhpevx.ads \
zhpgv.ads zhpsv.ads zhpsvx.ads zpbsv.ads zpbsvx.ads \
zposv.ads zposvx.ads zppsv.ads zppsvx.ads zspsv.ads \
zspsvx.ads zsysv.ads zsysvx.ads 



AUX = $(AUX1) 
DRV = $(DRV1) sgees.ads sgeesx.ads cgees.ads cgeesx.ads \
dgees.ads dgeesx.ads zgees.ads zgeesx.ads

$(AUX1): %.ads: %.f
	   fs2a < $< >$@

$(DRV1): %.ads: %.f
	   fs2a < $< >$@

$(CMP):  %.ads: %.f
	   fs2a < $< >$@

#csrot.ads: csrot.f
#	sed "s/=//g" csrot.f | fs2a > csrot.ads

cgees.ads:
	fs2a < cgees.f | sed "s/: Logical/: LFun_C_1/" > cgees.ads

cgeesx.ads:
	fs2a < cgeesx.f | sed "s/: Logical/: LFun_C_1/" > cgeesx.ads

dgees.ads:
	fs2a < dgees.f | sed "s/: Logical/: LFun_D_2/" > dgees.ads

dgeesx.ads:
	fs2a < dgeesx.f | sed "s/: Logical/: LFun_D_2/" > dgeesx.ads

sgees.ads:
	fs2a < sgees.f | sed "s/: Logical/: LFun_S_2/" > sgees.ads

sgeesx.ads:
	fs2a < sgeesx.f | sed "s/: Logical/: LFun_S_2/" > sgeesx.ads

zgees.ads:
	fs2a < zgees.f | sed "s/: Logical/:  LFun_Z_1/" > zgees.ads

zgeesx.ads:
	fs2a < zgeesx.f | sed "s/: Logical/: LFun_Z_1/" > zgeesx.ads

laaux.ads: $(AUX)
	touch $@
	echo "with Interfaces.Fortran;" >> $@
	echo "use Interfaces.Fortran;" >> $@
	echo "with labase; use labase;" >> $@
	echo "package laaux is" >> $@
	cat $(AUX) >> $@
	echo "end laaux;" >> $@

ladrv.ads: $(DRV)
	touch $@
	echo "with Interfaces.Fortran;" >> $@
	echo "use Interfaces.Fortran;" >> $@
	echo "with labase; use labase;" >> $@
	echo "package ladrv is" >> $@
	cat $(DRV) >> $@
	echo "end ladrv;" >> $@

lacmp.ads: $(CMP)
	touch $@
	echo "with Interfaces.Fortran;" >> $@
	echo "use Interfaces.Fortran;" >> $@
	echo "with labase; use labase;" >> $@
	echo "package lacmp is" >> $@
	cat $(CMP) >> $@
	echo "end lacmp;" >> $@

all: laaux.ads ladrv.ads lacmp.ads

clean: $(AUX) $(DRV) $(CMP)
	rm $<
