Makefile example

This example uses extract to create a Makefile to build an entire BLAS, assuming the source directory is immediately above the object directory. The basefile is:
@beginproc blasdef
   @multidef rout
      sdsdot csscal zdscal
      @whiledef pre z c d s
         @(pre)swap @(pre)scal @(pre)copy @(pre)axpy i@(pre)amax
         @(pre)gemv @(pre)gbmv @(pre)trmv @(pre)tbmv @(pre)tpmv 
         @(pre)trsv @(pre)tbsv @(pre)tpsv
         @(pre)gemm @(pre)symm @(pre)syrk @(pre)syr2k @(pre)trmm @(pre)trsm
      @endwhile
      @whiledef pre d s
         @(pre)rotg @(pre)rotmg @(pre)rot @(pre)rotm 
         @(pre)hpmv @(pre)symv @(pre)sbmv 
         @(pre)ger @(pre)syr @(pre)spr @(pre)syr2 @(pre)spr2
      @endwhile
      @whiledef pre z c
         @(pre)dotu @(pre)dotc 
         @(pre)hemv @(pre)hbmv @(pre)hpmv 
         @(pre)geru @(pre)gerc @(pre)her @(pre)hpr @(pre)her2 @(pre)hpr2 
         @(pre)hemm @(pre)herk @(pre)her2k
      @endwhile
   @endmultidef
@endproc

@callproc blasdef
@declare "obj = " y y
   @whiledef rout
      @(rout).o
   @endwhile
@enddeclare

libblas.a : $(obj)
	ar r libblas.a $(obj)

@callproc blasdef
@whiledef rout
@(rout).o : ../@(rout).f
	g77 -O -c ../@(rout).f
@endwhile

As in previous examples, we use a procedure to avoid having to redefine the BLAS names repetitively. We then use extract's @declare to format (line break and alphabatize) the obj declaration, and @whiledef to crank out the compilation commands. When extracted with extract's -langM flag, this produces:


obj = caxpy.o ccopy.o cdotc.o cdotu.o cgbmv.o cgemm.o cgemv.o cgerc.o cgeru.o \
      chbmv.o chemm.o chemv.o cher.o cher2.o cher2k.o cherk.o chpmv.o chpr.o \
      chpr2.o cscal.o csscal.o cswap.o csymm.o csyr2k.o csyrk.o ctbmv.o \
      ctbsv.o ctpmv.o ctpsv.o ctrmm.o ctrmv.o ctrsm.o ctrsv.o daxpy.o dcopy.o \
      dgbmv.o dgemm.o dgemv.o dger.o dhpmv.o drot.o drotg.o drotm.o drotmg.o \
      dsbmv.o dscal.o dspr.o dspr2.o dswap.o dsymm.o dsymv.o dsyr.o dsyr2.o \
      dsyr2k.o dsyrk.o dtbmv.o dtbsv.o dtpmv.o dtpsv.o dtrmm.o dtrmv.o \
      dtrsm.o dtrsv.o icamax.o idamax.o isamax.o izamax.o saxpy.o scopy.o \
      sdsdot.o sgbmv.o sgemm.o sgemv.o sger.o shpmv.o srot.o srotg.o srotm.o \
      srotmg.o ssbmv.o sscal.o sspr.o sspr2.o sswap.o ssymm.o ssymv.o ssyr.o \
      ssyr2.o ssyr2k.o ssyrk.o stbmv.o stbsv.o stpmv.o stpsv.o strmm.o \
      strmv.o strsm.o strsv.o zaxpy.o zcopy.o zdotc.o zdotu.o zdscal.o \
      zgbmv.o zgemm.o zgemv.o zgerc.o zgeru.o zhbmv.o zhemm.o zhemv.o zher.o \
      zher2.o zher2k.o zherk.o zhpmv.o zhpr.o zhpr2.o zscal.o zswap.o zsymm.o \
      zsyr2k.o zsyrk.o ztbmv.o ztbsv.o ztpmv.o ztpsv.o ztrmm.o ztrmv.o \
      ztrsm.o ztrsv.o

libblas.a : $(obj)
	ar r libblas.a $(obj)

zher2k.o : ../zher2k.f
	g77 -O -c ../zher2k.f
zherk.o : ../zherk.f
	g77 -O -c ../zherk.f
zhemm.o : ../zhemm.f
	g77 -O -c ../zhemm.f
zhpr2.o : ../zhpr2.f
	g77 -O -c ../zhpr2.f
zher2.o : ../zher2.f
	g77 -O -c ../zher2.f
zhpr.o : ../zhpr.f
	g77 -O -c ../zhpr.f
zher.o : ../zher.f
	g77 -O -c ../zher.f
zgerc.o : ../zgerc.f
	g77 -O -c ../zgerc.f
zgeru.o : ../zgeru.f
	g77 -O -c ../zgeru.f
zhpmv.o : ../zhpmv.f
	g77 -O -c ../zhpmv.f
zhbmv.o : ../zhbmv.f
	g77 -O -c ../zhbmv.f
zhemv.o : ../zhemv.f
	g77 -O -c ../zhemv.f
zdotc.o : ../zdotc.f
	g77 -O -c ../zdotc.f
zdotu.o : ../zdotu.f
	g77 -O -c ../zdotu.f
cher2k.o : ../cher2k.f
	g77 -O -c ../cher2k.f
cherk.o : ../cherk.f
	g77 -O -c ../cherk.f
chemm.o : ../chemm.f
	g77 -O -c ../chemm.f
chpr2.o : ../chpr2.f
	g77 -O -c ../chpr2.f
cher2.o : ../cher2.f
	g77 -O -c ../cher2.f
chpr.o : ../chpr.f
	g77 -O -c ../chpr.f
cher.o : ../cher.f
	g77 -O -c ../cher.f
cgerc.o : ../cgerc.f
	g77 -O -c ../cgerc.f
cgeru.o : ../cgeru.f
	g77 -O -c ../cgeru.f
chpmv.o : ../chpmv.f
	g77 -O -c ../chpmv.f
chbmv.o : ../chbmv.f
	g77 -O -c ../chbmv.f
chemv.o : ../chemv.f
	g77 -O -c ../chemv.f
cdotc.o : ../cdotc.f
	g77 -O -c ../cdotc.f
cdotu.o : ../cdotu.f
	g77 -O -c ../cdotu.f
dspr2.o : ../dspr2.f
	g77 -O -c ../dspr2.f
dsyr2.o : ../dsyr2.f
	g77 -O -c ../dsyr2.f
dspr.o : ../dspr.f
	g77 -O -c ../dspr.f
dsyr.o : ../dsyr.f
	g77 -O -c ../dsyr.f
dger.o : ../dger.f
	g77 -O -c ../dger.f
dsbmv.o : ../dsbmv.f
	g77 -O -c ../dsbmv.f
dsymv.o : ../dsymv.f
	g77 -O -c ../dsymv.f
dhpmv.o : ../dhpmv.f
	g77 -O -c ../dhpmv.f
drotm.o : ../drotm.f
	g77 -O -c ../drotm.f
drot.o : ../drot.f
	g77 -O -c ../drot.f
drotmg.o : ../drotmg.f
	g77 -O -c ../drotmg.f
drotg.o : ../drotg.f
	g77 -O -c ../drotg.f
sspr2.o : ../sspr2.f
	g77 -O -c ../sspr2.f
ssyr2.o : ../ssyr2.f
	g77 -O -c ../ssyr2.f
sspr.o : ../sspr.f
	g77 -O -c ../sspr.f
ssyr.o : ../ssyr.f
	g77 -O -c ../ssyr.f
sger.o : ../sger.f
	g77 -O -c ../sger.f
ssbmv.o : ../ssbmv.f
	g77 -O -c ../ssbmv.f
ssymv.o : ../ssymv.f
	g77 -O -c ../ssymv.f
shpmv.o : ../shpmv.f
	g77 -O -c ../shpmv.f
srotm.o : ../srotm.f
	g77 -O -c ../srotm.f
srot.o : ../srot.f
	g77 -O -c ../srot.f
srotmg.o : ../srotmg.f
	g77 -O -c ../srotmg.f
srotg.o : ../srotg.f
	g77 -O -c ../srotg.f
ztrsm.o : ../ztrsm.f
	g77 -O -c ../ztrsm.f
ztrmm.o : ../ztrmm.f
	g77 -O -c ../ztrmm.f
zsyr2k.o : ../zsyr2k.f
	g77 -O -c ../zsyr2k.f
zsyrk.o : ../zsyrk.f
	g77 -O -c ../zsyrk.f
zsymm.o : ../zsymm.f
	g77 -O -c ../zsymm.f
zgemm.o : ../zgemm.f
	g77 -O -c ../zgemm.f
ztpsv.o : ../ztpsv.f
	g77 -O -c ../ztpsv.f
ztbsv.o : ../ztbsv.f
	g77 -O -c ../ztbsv.f
ztrsv.o : ../ztrsv.f
	g77 -O -c ../ztrsv.f
ztpmv.o : ../ztpmv.f
	g77 -O -c ../ztpmv.f
ztbmv.o : ../ztbmv.f
	g77 -O -c ../ztbmv.f
ztrmv.o : ../ztrmv.f
	g77 -O -c ../ztrmv.f
zgbmv.o : ../zgbmv.f
	g77 -O -c ../zgbmv.f
zgemv.o : ../zgemv.f
	g77 -O -c ../zgemv.f
izamax.o : ../izamax.f
	g77 -O -c ../izamax.f
zaxpy.o : ../zaxpy.f
	g77 -O -c ../zaxpy.f
zcopy.o : ../zcopy.f
	g77 -O -c ../zcopy.f
zscal.o : ../zscal.f
	g77 -O -c ../zscal.f
zswap.o : ../zswap.f
	g77 -O -c ../zswap.f
ctrsm.o : ../ctrsm.f
	g77 -O -c ../ctrsm.f
ctrmm.o : ../ctrmm.f
	g77 -O -c ../ctrmm.f
csyr2k.o : ../csyr2k.f
	g77 -O -c ../csyr2k.f
csyrk.o : ../csyrk.f
	g77 -O -c ../csyrk.f
csymm.o : ../csymm.f
	g77 -O -c ../csymm.f
cgemm.o : ../cgemm.f
	g77 -O -c ../cgemm.f
ctpsv.o : ../ctpsv.f
	g77 -O -c ../ctpsv.f
ctbsv.o : ../ctbsv.f
	g77 -O -c ../ctbsv.f
ctrsv.o : ../ctrsv.f
	g77 -O -c ../ctrsv.f
ctpmv.o : ../ctpmv.f
	g77 -O -c ../ctpmv.f
ctbmv.o : ../ctbmv.f
	g77 -O -c ../ctbmv.f
ctrmv.o : ../ctrmv.f
	g77 -O -c ../ctrmv.f
cgbmv.o : ../cgbmv.f
	g77 -O -c ../cgbmv.f
cgemv.o : ../cgemv.f
	g77 -O -c ../cgemv.f
icamax.o : ../icamax.f
	g77 -O -c ../icamax.f
caxpy.o : ../caxpy.f
	g77 -O -c ../caxpy.f
ccopy.o : ../ccopy.f
	g77 -O -c ../ccopy.f
cscal.o : ../cscal.f
	g77 -O -c ../cscal.f
cswap.o : ../cswap.f
	g77 -O -c ../cswap.f
dtrsm.o : ../dtrsm.f
	g77 -O -c ../dtrsm.f
dtrmm.o : ../dtrmm.f
	g77 -O -c ../dtrmm.f
dsyr2k.o : ../dsyr2k.f
	g77 -O -c ../dsyr2k.f
dsyrk.o : ../dsyrk.f
	g77 -O -c ../dsyrk.f
dsymm.o : ../dsymm.f
	g77 -O -c ../dsymm.f
dgemm.o : ../dgemm.f
	g77 -O -c ../dgemm.f
dtpsv.o : ../dtpsv.f
	g77 -O -c ../dtpsv.f
dtbsv.o : ../dtbsv.f
	g77 -O -c ../dtbsv.f
dtrsv.o : ../dtrsv.f
	g77 -O -c ../dtrsv.f
dtpmv.o : ../dtpmv.f
	g77 -O -c ../dtpmv.f
dtbmv.o : ../dtbmv.f
	g77 -O -c ../dtbmv.f
dtrmv.o : ../dtrmv.f
	g77 -O -c ../dtrmv.f
dgbmv.o : ../dgbmv.f
	g77 -O -c ../dgbmv.f
dgemv.o : ../dgemv.f
	g77 -O -c ../dgemv.f
idamax.o : ../idamax.f
	g77 -O -c ../idamax.f
daxpy.o : ../daxpy.f
	g77 -O -c ../daxpy.f
dcopy.o : ../dcopy.f
	g77 -O -c ../dcopy.f
dscal.o : ../dscal.f
	g77 -O -c ../dscal.f
dswap.o : ../dswap.f
	g77 -O -c ../dswap.f
strsm.o : ../strsm.f
	g77 -O -c ../strsm.f
strmm.o : ../strmm.f
	g77 -O -c ../strmm.f
ssyr2k.o : ../ssyr2k.f
	g77 -O -c ../ssyr2k.f
ssyrk.o : ../ssyrk.f
	g77 -O -c ../ssyrk.f
ssymm.o : ../ssymm.f
	g77 -O -c ../ssymm.f
sgemm.o : ../sgemm.f
	g77 -O -c ../sgemm.f
stpsv.o : ../stpsv.f
	g77 -O -c ../stpsv.f
stbsv.o : ../stbsv.f
	g77 -O -c ../stbsv.f
strsv.o : ../strsv.f
	g77 -O -c ../strsv.f
stpmv.o : ../stpmv.f
	g77 -O -c ../stpmv.f
stbmv.o : ../stbmv.f
	g77 -O -c ../stbmv.f
strmv.o : ../strmv.f
	g77 -O -c ../strmv.f
sgbmv.o : ../sgbmv.f
	g77 -O -c ../sgbmv.f
sgemv.o : ../sgemv.f
	g77 -O -c ../sgemv.f
isamax.o : ../isamax.f
	g77 -O -c ../isamax.f
saxpy.o : ../saxpy.f
	g77 -O -c ../saxpy.f
scopy.o : ../scopy.f
	g77 -O -c ../scopy.f
sscal.o : ../sscal.f
	g77 -O -c ../sscal.f
sswap.o : ../sswap.f
	g77 -O -c ../sswap.f
zdscal.o : ../zdscal.f
	g77 -O -c ../zdscal.f
csscal.o : ../csscal.f
	g77 -O -c ../csscal.f
sdsdot.o : ../sdsdot.f
	g77 -O -c ../sdsdot.f

Back to example index