#
# This file autogenerated from Makefile.m4 by configure. Do not edit.  
#
# To add a subroutine to be included in libxblas-amb.a:
# 1) Add <subroutine> to the list dot, axpby, waxpby, gemv, gemm in m4/cblas.m4
# 2) For each new subroutine added, edit m4/<subroutine>/<subroutine>-common.m4
#    to define a new list call <subroutine>_AMB_ARGS.  For an example,
#    see m4/gemv/gemv-common.m4
# 3) Run 'make makefiles' to generate the new Makefiles in src with
#    the correct Amber targets.
# 4) Run 'make lib-amb' to build libxblas-amb.a   
#
# Top-level makefile for XBLAS.
#
# To generate all sources, libraries, and test results, just type make
#
# To generate just the sources, type make sources
#
# To generate the sources and the library, type make lib
#
# To generate the test sources, type make test-sources
#
# To generate all the sources, the library, and the test library, type make test-lib
#
# To generate all the makefiles but this one, type make makefiles
#
# To generate this Makefile, type make Makefile
#
# To clean out all the object files, type make clean
#
# To clean out all the object files and source files, type make source-clean
#
include make.conf
include $(MAKEINC)

LIB = dot-lib sum-lib axpby-lib waxpby-lib gemv-lib ge_sum_mv-lib gbmv-lib symv-lib spmv-lib sbmv-lib hemv-lib hpmv-lib hbmv-lib trmv-lib tpmv-lib trsv-lib tbsv-lib gemm-lib symm-lib hemm-lib gemv2-lib symv2-lib hemv2-lib gbmv2-lib
SOURCES = dot-source sum-source axpby-source waxpby-source gemv-source ge_sum_mv-source gbmv-source symv-source spmv-source sbmv-source hemv-source hpmv-source hbmv-source trmv-source tpmv-source trsv-source tbsv-source gemm-source symm-source hemm-source gemv2-source symv2-source hemv2-source gbmv2-source
LIB_AMB = dot-lib-amb axpby-lib-amb waxpby-lib-amb gemv-lib-amb gemm-lib-amb
SOURCES = dot-source axpby-source waxpby-source gemv-source gemm-source
TESTS = dot-test sum-test axpby-test waxpby-test gemv-test ge_sum_mv-test gbmv-test symv-test spmv-test sbmv-test hemv-test hpmv-test hbmv-test trmv-test tpmv-test trsv-test tbsv-test gemm-test symm-test hemm-test gemv2-test symv2-test hemv2-test gbmv2-test
TEST_SOURCES = dot-test-source sum-test-source axpby-test-source waxpby-test-source gemv-test-source ge_sum_mv-test-source gbmv-test-source symv-test-source spmv-test-source sbmv-test-source hemv-test-source hpmv-test-source hbmv-test-source trmv-test-source tpmv-test-source trsv-test-source tbsv-test-source gemm-test-source symm-test-source hemm-test-source gemv2-test-source symv2-test-source hemv2-test-source gbmv2-test-source dot2-test-source
TEST_LIB = dot-test-lib sum-test-lib axpby-test-lib waxpby-test-lib gemv-test-lib ge_sum_mv-test-lib gbmv-test-lib symv-test-lib spmv-test-lib sbmv-test-lib hemv-test-lib hpmv-test-lib hbmv-test-lib trmv-test-lib tpmv-test-lib trsv-test-lib tbsv-test-lib gemm-test-lib symm-test-lib hemm-test-lib gemv2-test-lib symv2-test-lib hemv2-test-lib gbmv2-test-lib
CLEAN = dot-clean sum-clean axpby-clean waxpby-clean gemv-clean ge_sum_mv-clean gbmv-clean symv-clean spmv-clean sbmv-clean hemv-clean hpmv-clean hbmv-clean trmv-clean tpmv-clean trsv-clean tbsv-clean gemm-clean symm-clean hemm-clean gemv2-clean symv2-clean hemv2-clean gbmv2-clean dot2-clean
SOURCE_CLEAN = dot-source-clean sum-source-clean axpby-source-clean waxpby-source-clean gemv-source-clean ge_sum_mv-source-clean gbmv-source-clean symv-source-clean spmv-source-clean sbmv-source-clean hemv-source-clean hpmv-source-clean hbmv-source-clean trmv-source-clean tpmv-source-clean trsv-source-clean tbsv-source-clean gemm-source-clean symm-source-clean hemm-source-clean gemv2-source-clean symv2-source-clean hemv2-source-clean gbmv2-source-clean dot2-source-clean

SRC_DIR = src
M4_DIR = m4
TEST_DIR = testing

all: tests

sources: $(SOURCES) header

header:
	cd m4 && $(MAKE) header

test-sources: $(TEST_SOURCES)

$(TEST_LIB): lib

test-lib: test-sources lib $(TEST_LIB)

$(TESTS): test-lib

tests: test-lib $(TESTS)
	rm -f testall.result testall.summary
	cat $(TEST_DIR)/test-dot/dot.results >> testall.result
	cat $(TEST_DIR)/test-sum/sum.results >> testall.result
	cat $(TEST_DIR)/test-axpby/axpby.results >> testall.result
	cat $(TEST_DIR)/test-waxpby/waxpby.results >> testall.result
	cat $(TEST_DIR)/test-gemv/gemv.results >> testall.result
	cat $(TEST_DIR)/test-ge_sum_mv/ge_sum_mv.results >> testall.result
	cat $(TEST_DIR)/test-gbmv/gbmv.results >> testall.result
	cat $(TEST_DIR)/test-symv/symv.results >> testall.result
	cat $(TEST_DIR)/test-spmv/spmv.results >> testall.result
	cat $(TEST_DIR)/test-sbmv/sbmv.results >> testall.result
	cat $(TEST_DIR)/test-hemv/hemv.results >> testall.result
	cat $(TEST_DIR)/test-hpmv/hpmv.results >> testall.result
	cat $(TEST_DIR)/test-hbmv/hbmv.results >> testall.result
	cat $(TEST_DIR)/test-trmv/trmv.results >> testall.result
	cat $(TEST_DIR)/test-tpmv/tpmv.results >> testall.result
	cat $(TEST_DIR)/test-trsv/trsv.results >> testall.result
	cat $(TEST_DIR)/test-tbsv/tbsv.results >> testall.result
	cat $(TEST_DIR)/test-gemm/gemm.results >> testall.result
	cat $(TEST_DIR)/test-symm/symm.results >> testall.result
	cat $(TEST_DIR)/test-hemm/hemm.results >> testall.result
	cat $(TEST_DIR)/test-gemv2/gemv2.results >> testall.result
	cat $(TEST_DIR)/test-symv2/symv2.results >> testall.result
	cat $(TEST_DIR)/test-hemv2/hemv2.results >> testall.result
	cat $(TEST_DIR)/test-gbmv2/gbmv2.results >> testall.result
	grep 'FAIL/TOTAL' testall.result >testall.summary
	cat testall.summary

common-lib:
	cd $(SRC_DIR)/common && $(MAKE)

common-test-lib:
	cd $(TEST_DIR)/common && $(MAKE)


makefiles: Makefile m4/Makefile src/Makefile
	cd m4 && $(MAKE) makefiles
	cd src && $(MAKE) makefiles

src/Makefile: src/Makefile.m4
	cd src && $(M4) $(M4_OPTS) Makefile.m4 >Makefile

m4/Makefile: m4/Makefile.m4
	cd m4 && $(M4) $(M4_OPTS) Makefile.m4 >Makefile
lib: sources $(LIB)
	cd $(SRC_DIR)/common && $(MAKE) lib
	cd $(SRC_DIR)/dot && $(MAKE) lib
	cd $(SRC_DIR)/sum && $(MAKE) lib
	cd $(SRC_DIR)/axpby && $(MAKE) lib
	cd $(SRC_DIR)/waxpby && $(MAKE) lib
	cd $(SRC_DIR)/gemv && $(MAKE) lib
	cd $(SRC_DIR)/ge_sum_mv && $(MAKE) lib
	cd $(SRC_DIR)/gbmv && $(MAKE) lib
	cd $(SRC_DIR)/symv && $(MAKE) lib
	cd $(SRC_DIR)/spmv && $(MAKE) lib
	cd $(SRC_DIR)/sbmv && $(MAKE) lib
	cd $(SRC_DIR)/hemv && $(MAKE) lib
	cd $(SRC_DIR)/hpmv && $(MAKE) lib
	cd $(SRC_DIR)/hbmv && $(MAKE) lib
	cd $(SRC_DIR)/trmv && $(MAKE) lib
	cd $(SRC_DIR)/tpmv && $(MAKE) lib
	cd $(SRC_DIR)/trsv && $(MAKE) lib
	cd $(SRC_DIR)/tbsv && $(MAKE) lib
	cd $(SRC_DIR)/gemm && $(MAKE) lib
	cd $(SRC_DIR)/symm && $(MAKE) lib
	cd $(SRC_DIR)/hemm && $(MAKE) lib
	cd $(SRC_DIR)/gemv2 && $(MAKE) lib
	cd $(SRC_DIR)/symv2 && $(MAKE) lib
	cd $(SRC_DIR)/hemv2 && $(MAKE) lib
	cd $(SRC_DIR)/gbmv2 && $(MAKE) lib

lib-amb: sources $(LIB_AMB)
	cd $(SRC_DIR)/common && $(MAKE) lib-amb
	cd $(SRC_DIR)/dot && $(MAKE) lib-amb
	cd $(SRC_DIR)/axpby && $(MAKE) lib-amb
	cd $(SRC_DIR)/waxpby && $(MAKE) lib-amb
	cd $(SRC_DIR)/gemv && $(MAKE) lib-amb
	cd $(SRC_DIR)/gemm && $(MAKE) lib-amb


Makefile: Makefile.m4
	$(M4) $(M4_OPTS) Makefile.m4 > Makefile
# custom test-dot2 stuff


dot2-test-source:
	cd $(M4_DIR)/test-dot2 && $(MAKE)
dot2-test-lib: lib
	cd $(TEST_DIR)/test-dot2 && $(MAKE) do_test_dot2 

dot2-test: dot2-test-lib
	cd $(TEST_DIR)/test-dot2 && $(MAKE)

dot2-clean:
	cd $(TEST_DIR)/test-dot2 && $(MAKE) clean


dot2-source-clean:
	cd $(M4_DIR)/test-dot2 && $(MAKE) source-clean

# dot stuff

dot: dot-test


dot-source:
	cd $(M4_DIR)/dot && $(MAKE)

dot-lib: common-lib dot-source
	cd $(SRC_DIR)/dot && $(MAKE)

dot-lib-amb: common-lib dot-source
	cd $(SRC_DIR)/dot && $(MAKE) all-amb

dot-test-source:
	cd $(M4_DIR)/test-dot && $(MAKE)

dot-test-lib: dot-test-source lib common-test-lib
	cd $(TEST_DIR)/test-dot && $(MAKE) do_test_dot 

dot-test: dot-test-lib
	cd $(TEST_DIR)/test-dot && $(MAKE)

dot-clean:
	cd $(SRC_DIR)/dot && $(MAKE) clean
	cd $(TEST_DIR)/test-dot && $(MAKE) clean


dot-source-clean:
	cd $(M4_DIR)/dot && $(MAKE) source-clean
	cd $(M4_DIR)/test-dot && $(MAKE) source-clean

# sum stuff

sum: sum-test


sum-source:
	cd $(M4_DIR)/sum && $(MAKE)

sum-lib: common-lib sum-source
	cd $(SRC_DIR)/sum && $(MAKE)

sum-lib-amb: common-lib sum-source
	cd $(SRC_DIR)/sum && $(MAKE) all-amb

sum-test-source:
	cd $(M4_DIR)/test-sum && $(MAKE)

sum-test-lib: sum-test-source lib common-test-lib
	cd $(TEST_DIR)/test-sum && $(MAKE) do_test_sum 

sum-test: sum-test-lib
	cd $(TEST_DIR)/test-sum && $(MAKE)

sum-clean:
	cd $(SRC_DIR)/sum && $(MAKE) clean
	cd $(TEST_DIR)/test-sum && $(MAKE) clean


sum-source-clean:
	cd $(M4_DIR)/sum && $(MAKE) source-clean
	cd $(M4_DIR)/test-sum && $(MAKE) source-clean

# axpby stuff

axpby: axpby-test


axpby-source:
	cd $(M4_DIR)/axpby && $(MAKE)

axpby-lib: common-lib axpby-source
	cd $(SRC_DIR)/axpby && $(MAKE)

axpby-lib-amb: common-lib axpby-source
	cd $(SRC_DIR)/axpby && $(MAKE) all-amb

axpby-test-source:
	cd $(M4_DIR)/test-axpby && $(MAKE)

axpby-test-lib: axpby-test-source lib common-test-lib
	cd $(TEST_DIR)/test-axpby && $(MAKE) do_test_axpby 

axpby-test: axpby-test-lib
	cd $(TEST_DIR)/test-axpby && $(MAKE)

axpby-clean:
	cd $(SRC_DIR)/axpby && $(MAKE) clean
	cd $(TEST_DIR)/test-axpby && $(MAKE) clean


axpby-source-clean:
	cd $(M4_DIR)/axpby && $(MAKE) source-clean
	cd $(M4_DIR)/test-axpby && $(MAKE) source-clean

# waxpby stuff

waxpby: waxpby-test


waxpby-source:
	cd $(M4_DIR)/waxpby && $(MAKE)

waxpby-lib: common-lib waxpby-source
	cd $(SRC_DIR)/waxpby && $(MAKE)

waxpby-lib-amb: common-lib waxpby-source
	cd $(SRC_DIR)/waxpby && $(MAKE) all-amb

waxpby-test-source:
	cd $(M4_DIR)/test-waxpby && $(MAKE)

waxpby-test-lib: waxpby-test-source lib common-test-lib
	cd $(TEST_DIR)/test-waxpby && $(MAKE) do_test_waxpby 

waxpby-test: waxpby-test-lib
	cd $(TEST_DIR)/test-waxpby && $(MAKE)

waxpby-clean:
	cd $(SRC_DIR)/waxpby && $(MAKE) clean
	cd $(TEST_DIR)/test-waxpby && $(MAKE) clean


waxpby-source-clean:
	cd $(M4_DIR)/waxpby && $(MAKE) source-clean
	cd $(M4_DIR)/test-waxpby && $(MAKE) source-clean

# gemv stuff

gemv: gemv-test


gemv-source:
	cd $(M4_DIR)/gemv && $(MAKE)

gemv-lib: common-lib gemv-source
	cd $(SRC_DIR)/gemv && $(MAKE)

gemv-lib-amb: common-lib gemv-source
	cd $(SRC_DIR)/gemv && $(MAKE) all-amb

gemv-test-source:
	cd $(M4_DIR)/test-gemv && $(MAKE)

gemv-test-lib: gemv-test-source lib common-test-lib
	cd $(TEST_DIR)/test-gemv && $(MAKE) do_test_gemv 

gemv-test: gemv-test-lib
	cd $(TEST_DIR)/test-gemv && $(MAKE)

gemv-clean:
	cd $(SRC_DIR)/gemv && $(MAKE) clean
	cd $(TEST_DIR)/test-gemv && $(MAKE) clean


gemv-source-clean:
	cd $(M4_DIR)/gemv && $(MAKE) source-clean
	cd $(M4_DIR)/test-gemv && $(MAKE) source-clean

# ge_sum_mv stuff

ge_sum_mv: ge_sum_mv-test


ge_sum_mv-source:
	cd $(M4_DIR)/ge_sum_mv && $(MAKE)

ge_sum_mv-lib: common-lib ge_sum_mv-source
	cd $(SRC_DIR)/ge_sum_mv && $(MAKE)

ge_sum_mv-lib-amb: common-lib ge_sum_mv-source
	cd $(SRC_DIR)/ge_sum_mv && $(MAKE) all-amb

ge_sum_mv-test-source:
	cd $(M4_DIR)/test-ge_sum_mv && $(MAKE)

ge_sum_mv-test-lib: ge_sum_mv-test-source lib common-test-lib
	cd $(TEST_DIR)/test-ge_sum_mv && $(MAKE) do_test_ge_sum_mv 

ge_sum_mv-test: ge_sum_mv-test-lib
	cd $(TEST_DIR)/test-ge_sum_mv && $(MAKE)

ge_sum_mv-clean:
	cd $(SRC_DIR)/ge_sum_mv && $(MAKE) clean
	cd $(TEST_DIR)/test-ge_sum_mv && $(MAKE) clean


ge_sum_mv-source-clean:
	cd $(M4_DIR)/ge_sum_mv && $(MAKE) source-clean
	cd $(M4_DIR)/test-ge_sum_mv && $(MAKE) source-clean

# gbmv stuff

gbmv: gbmv-test


gbmv-source:
	cd $(M4_DIR)/gbmv && $(MAKE)

gbmv-lib: common-lib gbmv-source
	cd $(SRC_DIR)/gbmv && $(MAKE)

gbmv-lib-amb: common-lib gbmv-source
	cd $(SRC_DIR)/gbmv && $(MAKE) all-amb

gbmv-test-source:
	cd $(M4_DIR)/test-gbmv && $(MAKE)

gbmv-test-lib: gbmv-test-source lib common-test-lib
	cd $(TEST_DIR)/test-gbmv && $(MAKE) do_test_gbmv 

gbmv-test: gbmv-test-lib
	cd $(TEST_DIR)/test-gbmv && $(MAKE)

gbmv-clean:
	cd $(SRC_DIR)/gbmv && $(MAKE) clean
	cd $(TEST_DIR)/test-gbmv && $(MAKE) clean


gbmv-source-clean:
	cd $(M4_DIR)/gbmv && $(MAKE) source-clean
	cd $(M4_DIR)/test-gbmv && $(MAKE) source-clean

# symv stuff

symv: symv-test


symv-source:
	cd $(M4_DIR)/symv && $(MAKE)

symv-lib: common-lib symv-source
	cd $(SRC_DIR)/symv && $(MAKE)

symv-lib-amb: common-lib symv-source
	cd $(SRC_DIR)/symv && $(MAKE) all-amb

symv-test-source:
	cd $(M4_DIR)/test-symv && $(MAKE)

symv-test-lib: symv-test-source lib common-test-lib
	cd $(TEST_DIR)/test-symv && $(MAKE) do_test_symv 

symv-test: symv-test-lib
	cd $(TEST_DIR)/test-symv && $(MAKE)

symv-clean:
	cd $(SRC_DIR)/symv && $(MAKE) clean
	cd $(TEST_DIR)/test-symv && $(MAKE) clean


symv-source-clean:
	cd $(M4_DIR)/symv && $(MAKE) source-clean
	cd $(M4_DIR)/test-symv && $(MAKE) source-clean

# spmv stuff

spmv: spmv-test


spmv-source:
	cd $(M4_DIR)/spmv && $(MAKE)

spmv-lib: common-lib spmv-source
	cd $(SRC_DIR)/spmv && $(MAKE)

spmv-lib-amb: common-lib spmv-source
	cd $(SRC_DIR)/spmv && $(MAKE) all-amb

spmv-test-source:
	cd $(M4_DIR)/test-spmv && $(MAKE)

spmv-test-lib: spmv-test-source lib common-test-lib
	cd $(TEST_DIR)/test-spmv && $(MAKE) do_test_spmv 

spmv-test: spmv-test-lib
	cd $(TEST_DIR)/test-spmv && $(MAKE)

spmv-clean:
	cd $(SRC_DIR)/spmv && $(MAKE) clean
	cd $(TEST_DIR)/test-spmv && $(MAKE) clean


spmv-source-clean:
	cd $(M4_DIR)/spmv && $(MAKE) source-clean
	cd $(M4_DIR)/test-spmv && $(MAKE) source-clean

# sbmv stuff

sbmv: sbmv-test


sbmv-source:
	cd $(M4_DIR)/sbmv && $(MAKE)

sbmv-lib: common-lib sbmv-source
	cd $(SRC_DIR)/sbmv && $(MAKE)

sbmv-lib-amb: common-lib sbmv-source
	cd $(SRC_DIR)/sbmv && $(MAKE) all-amb

sbmv-test-source:
	cd $(M4_DIR)/test-sbmv && $(MAKE)

sbmv-test-lib: sbmv-test-source lib common-test-lib
	cd $(TEST_DIR)/test-sbmv && $(MAKE) do_test_sbmv 

sbmv-test: sbmv-test-lib
	cd $(TEST_DIR)/test-sbmv && $(MAKE)

sbmv-clean:
	cd $(SRC_DIR)/sbmv && $(MAKE) clean
	cd $(TEST_DIR)/test-sbmv && $(MAKE) clean


sbmv-source-clean:
	cd $(M4_DIR)/sbmv && $(MAKE) source-clean
	cd $(M4_DIR)/test-sbmv && $(MAKE) source-clean

# hemv stuff

hemv: hemv-test


hemv-source:
	cd $(M4_DIR)/hemv && $(MAKE)

hemv-lib: common-lib hemv-source
	cd $(SRC_DIR)/hemv && $(MAKE)

hemv-lib-amb: common-lib hemv-source
	cd $(SRC_DIR)/hemv && $(MAKE) all-amb

hemv-test-source:
	cd $(M4_DIR)/test-hemv && $(MAKE)

hemv-test-lib: hemv-test-source lib common-test-lib
	cd $(TEST_DIR)/test-hemv && $(MAKE) do_test_hemv 

hemv-test: hemv-test-lib
	cd $(TEST_DIR)/test-hemv && $(MAKE)

hemv-clean:
	cd $(SRC_DIR)/hemv && $(MAKE) clean
	cd $(TEST_DIR)/test-hemv && $(MAKE) clean


hemv-source-clean:
	cd $(M4_DIR)/hemv && $(MAKE) source-clean
	cd $(M4_DIR)/test-hemv && $(MAKE) source-clean

# hpmv stuff

hpmv: hpmv-test


hpmv-source:
	cd $(M4_DIR)/hpmv && $(MAKE)

hpmv-lib: common-lib hpmv-source
	cd $(SRC_DIR)/hpmv && $(MAKE)

hpmv-lib-amb: common-lib hpmv-source
	cd $(SRC_DIR)/hpmv && $(MAKE) all-amb

hpmv-test-source:
	cd $(M4_DIR)/test-hpmv && $(MAKE)

hpmv-test-lib: hpmv-test-source lib common-test-lib
	cd $(TEST_DIR)/test-hpmv && $(MAKE) do_test_hpmv 

hpmv-test: hpmv-test-lib
	cd $(TEST_DIR)/test-hpmv && $(MAKE)

hpmv-clean:
	cd $(SRC_DIR)/hpmv && $(MAKE) clean
	cd $(TEST_DIR)/test-hpmv && $(MAKE) clean


hpmv-source-clean:
	cd $(M4_DIR)/hpmv && $(MAKE) source-clean
	cd $(M4_DIR)/test-hpmv && $(MAKE) source-clean

# hbmv stuff

hbmv: hbmv-test


hbmv-source:
	cd $(M4_DIR)/hbmv && $(MAKE)

hbmv-lib: common-lib hbmv-source
	cd $(SRC_DIR)/hbmv && $(MAKE)

hbmv-lib-amb: common-lib hbmv-source
	cd $(SRC_DIR)/hbmv && $(MAKE) all-amb

hbmv-test-source:
	cd $(M4_DIR)/test-hbmv && $(MAKE)

hbmv-test-lib: hbmv-test-source lib common-test-lib
	cd $(TEST_DIR)/test-hbmv && $(MAKE) do_test_hbmv 

hbmv-test: hbmv-test-lib
	cd $(TEST_DIR)/test-hbmv && $(MAKE)

hbmv-clean:
	cd $(SRC_DIR)/hbmv && $(MAKE) clean
	cd $(TEST_DIR)/test-hbmv && $(MAKE) clean


hbmv-source-clean:
	cd $(M4_DIR)/hbmv && $(MAKE) source-clean
	cd $(M4_DIR)/test-hbmv && $(MAKE) source-clean

# trmv stuff

trmv: trmv-test


trmv-source:
	cd $(M4_DIR)/trmv && $(MAKE)

trmv-lib: common-lib trmv-source
	cd $(SRC_DIR)/trmv && $(MAKE)

trmv-lib-amb: common-lib trmv-source
	cd $(SRC_DIR)/trmv && $(MAKE) all-amb

trmv-test-source:
	cd $(M4_DIR)/test-trmv && $(MAKE)

trmv-test-lib: trmv-test-source lib common-test-lib
	cd $(TEST_DIR)/test-trmv && $(MAKE) do_test_trmv 

trmv-test: trmv-test-lib
	cd $(TEST_DIR)/test-trmv && $(MAKE)

trmv-clean:
	cd $(SRC_DIR)/trmv && $(MAKE) clean
	cd $(TEST_DIR)/test-trmv && $(MAKE) clean


trmv-source-clean:
	cd $(M4_DIR)/trmv && $(MAKE) source-clean
	cd $(M4_DIR)/test-trmv && $(MAKE) source-clean

# tpmv stuff

tpmv: tpmv-test


tpmv-source:
	cd $(M4_DIR)/tpmv && $(MAKE)

tpmv-lib: common-lib tpmv-source
	cd $(SRC_DIR)/tpmv && $(MAKE)

tpmv-lib-amb: common-lib tpmv-source
	cd $(SRC_DIR)/tpmv && $(MAKE) all-amb

tpmv-test-source:
	cd $(M4_DIR)/test-tpmv && $(MAKE)

tpmv-test-lib: tpmv-test-source lib common-test-lib
	cd $(TEST_DIR)/test-tpmv && $(MAKE) do_test_tpmv 

tpmv-test: tpmv-test-lib
	cd $(TEST_DIR)/test-tpmv && $(MAKE)

tpmv-clean:
	cd $(SRC_DIR)/tpmv && $(MAKE) clean
	cd $(TEST_DIR)/test-tpmv && $(MAKE) clean


tpmv-source-clean:
	cd $(M4_DIR)/tpmv && $(MAKE) source-clean
	cd $(M4_DIR)/test-tpmv && $(MAKE) source-clean

# trsv stuff

trsv: trsv-test


trsv-source:
	cd $(M4_DIR)/trsv && $(MAKE)

trsv-lib: common-lib trsv-source
	cd $(SRC_DIR)/trsv && $(MAKE)

trsv-lib-amb: common-lib trsv-source
	cd $(SRC_DIR)/trsv && $(MAKE) all-amb

trsv-test-source:
	cd $(M4_DIR)/test-trsv && $(MAKE)

trsv-test-lib: trsv-test-source lib common-test-lib
	cd $(TEST_DIR)/test-trsv && $(MAKE) do_test_trsv 

trsv-test: trsv-test-lib
	cd $(TEST_DIR)/test-trsv && $(MAKE)

trsv-clean:
	cd $(SRC_DIR)/trsv && $(MAKE) clean
	cd $(TEST_DIR)/test-trsv && $(MAKE) clean


trsv-source-clean:
	cd $(M4_DIR)/trsv && $(MAKE) source-clean
	cd $(M4_DIR)/test-trsv && $(MAKE) source-clean

# tbsv stuff

tbsv: tbsv-test


tbsv-source:
	cd $(M4_DIR)/tbsv && $(MAKE)

tbsv-lib: common-lib tbsv-source
	cd $(SRC_DIR)/tbsv && $(MAKE)

tbsv-lib-amb: common-lib tbsv-source
	cd $(SRC_DIR)/tbsv && $(MAKE) all-amb

tbsv-test-source:
	cd $(M4_DIR)/test-tbsv && $(MAKE)

tbsv-test-lib: tbsv-test-source lib common-test-lib
	cd $(TEST_DIR)/test-tbsv && $(MAKE) do_test_tbsv 

tbsv-test: tbsv-test-lib
	cd $(TEST_DIR)/test-tbsv && $(MAKE)

tbsv-clean:
	cd $(SRC_DIR)/tbsv && $(MAKE) clean
	cd $(TEST_DIR)/test-tbsv && $(MAKE) clean


tbsv-source-clean:
	cd $(M4_DIR)/tbsv && $(MAKE) source-clean
	cd $(M4_DIR)/test-tbsv && $(MAKE) source-clean

# gemm stuff

gemm: gemm-test


gemm-source:
	cd $(M4_DIR)/gemm && $(MAKE)

gemm-lib: common-lib gemm-source
	cd $(SRC_DIR)/gemm && $(MAKE)

gemm-lib-amb: common-lib gemm-source
	cd $(SRC_DIR)/gemm && $(MAKE) all-amb

gemm-test-source:
	cd $(M4_DIR)/test-gemm && $(MAKE)

gemm-test-lib: gemm-test-source lib common-test-lib
	cd $(TEST_DIR)/test-gemm && $(MAKE) do_test_gemm 

gemm-test: gemm-test-lib
	cd $(TEST_DIR)/test-gemm && $(MAKE)

gemm-clean:
	cd $(SRC_DIR)/gemm && $(MAKE) clean
	cd $(TEST_DIR)/test-gemm && $(MAKE) clean


gemm-source-clean:
	cd $(M4_DIR)/gemm && $(MAKE) source-clean
	cd $(M4_DIR)/test-gemm && $(MAKE) source-clean

# symm stuff

symm: symm-test


symm-source:
	cd $(M4_DIR)/symm && $(MAKE)

symm-lib: common-lib symm-source
	cd $(SRC_DIR)/symm && $(MAKE)

symm-lib-amb: common-lib symm-source
	cd $(SRC_DIR)/symm && $(MAKE) all-amb

symm-test-source:
	cd $(M4_DIR)/test-symm && $(MAKE)

symm-test-lib: symm-test-source lib common-test-lib
	cd $(TEST_DIR)/test-symm && $(MAKE) do_test_symm 

symm-test: symm-test-lib
	cd $(TEST_DIR)/test-symm && $(MAKE)

symm-clean:
	cd $(SRC_DIR)/symm && $(MAKE) clean
	cd $(TEST_DIR)/test-symm && $(MAKE) clean


symm-source-clean:
	cd $(M4_DIR)/symm && $(MAKE) source-clean
	cd $(M4_DIR)/test-symm && $(MAKE) source-clean

# hemm stuff

hemm: hemm-test


hemm-source:
	cd $(M4_DIR)/hemm && $(MAKE)

hemm-lib: common-lib hemm-source
	cd $(SRC_DIR)/hemm && $(MAKE)

hemm-lib-amb: common-lib hemm-source
	cd $(SRC_DIR)/hemm && $(MAKE) all-amb

hemm-test-source:
	cd $(M4_DIR)/test-hemm && $(MAKE)

hemm-test-lib: hemm-test-source lib common-test-lib
	cd $(TEST_DIR)/test-hemm && $(MAKE) do_test_hemm 

hemm-test: hemm-test-lib
	cd $(TEST_DIR)/test-hemm && $(MAKE)

hemm-clean:
	cd $(SRC_DIR)/hemm && $(MAKE) clean
	cd $(TEST_DIR)/test-hemm && $(MAKE) clean


hemm-source-clean:
	cd $(M4_DIR)/hemm && $(MAKE) source-clean
	cd $(M4_DIR)/test-hemm && $(MAKE) source-clean

# gemv2 stuff

gemv2: gemv2-test


gemv2-source:
	cd $(M4_DIR)/gemv2 && $(MAKE)

gemv2-lib: common-lib gemv2-source
	cd $(SRC_DIR)/gemv2 && $(MAKE)

gemv2-lib-amb: common-lib gemv2-source
	cd $(SRC_DIR)/gemv2 && $(MAKE) all-amb

gemv2-test-source:
	cd $(M4_DIR)/test-gemv2 && $(MAKE)

gemv2-test-lib: gemv2-test-source lib common-test-lib
	cd $(TEST_DIR)/test-gemv2 && $(MAKE) do_test_gemv2 

gemv2-test: gemv2-test-lib
	cd $(TEST_DIR)/test-gemv2 && $(MAKE)

gemv2-clean:
	cd $(SRC_DIR)/gemv2 && $(MAKE) clean
	cd $(TEST_DIR)/test-gemv2 && $(MAKE) clean


gemv2-source-clean:
	cd $(M4_DIR)/gemv2 && $(MAKE) source-clean
	cd $(M4_DIR)/test-gemv2 && $(MAKE) source-clean

# symv2 stuff

symv2: symv2-test


symv2-source:
	cd $(M4_DIR)/symv2 && $(MAKE)

symv2-lib: common-lib symv2-source
	cd $(SRC_DIR)/symv2 && $(MAKE)

symv2-lib-amb: common-lib symv2-source
	cd $(SRC_DIR)/symv2 && $(MAKE) all-amb

symv2-test-source:
	cd $(M4_DIR)/test-symv2 && $(MAKE)

symv2-test-lib: symv2-test-source lib common-test-lib
	cd $(TEST_DIR)/test-symv2 && $(MAKE) do_test_symv2 

symv2-test: symv2-test-lib
	cd $(TEST_DIR)/test-symv2 && $(MAKE)

symv2-clean:
	cd $(SRC_DIR)/symv2 && $(MAKE) clean
	cd $(TEST_DIR)/test-symv2 && $(MAKE) clean


symv2-source-clean:
	cd $(M4_DIR)/symv2 && $(MAKE) source-clean
	cd $(M4_DIR)/test-symv2 && $(MAKE) source-clean

# hemv2 stuff

hemv2: hemv2-test


hemv2-source:
	cd $(M4_DIR)/hemv2 && $(MAKE)

hemv2-lib: common-lib hemv2-source
	cd $(SRC_DIR)/hemv2 && $(MAKE)

hemv2-lib-amb: common-lib hemv2-source
	cd $(SRC_DIR)/hemv2 && $(MAKE) all-amb

hemv2-test-source:
	cd $(M4_DIR)/test-hemv2 && $(MAKE)

hemv2-test-lib: hemv2-test-source lib common-test-lib
	cd $(TEST_DIR)/test-hemv2 && $(MAKE) do_test_hemv2 

hemv2-test: hemv2-test-lib
	cd $(TEST_DIR)/test-hemv2 && $(MAKE)

hemv2-clean:
	cd $(SRC_DIR)/hemv2 && $(MAKE) clean
	cd $(TEST_DIR)/test-hemv2 && $(MAKE) clean


hemv2-source-clean:
	cd $(M4_DIR)/hemv2 && $(MAKE) source-clean
	cd $(M4_DIR)/test-hemv2 && $(MAKE) source-clean

# gbmv2 stuff

gbmv2: gbmv2-test


gbmv2-source:
	cd $(M4_DIR)/gbmv2 && $(MAKE)

gbmv2-lib: common-lib gbmv2-source
	cd $(SRC_DIR)/gbmv2 && $(MAKE)

gbmv2-lib-amb: common-lib gbmv2-source
	cd $(SRC_DIR)/gbmv2 && $(MAKE) all-amb

gbmv2-test-source:
	cd $(M4_DIR)/test-gbmv2 && $(MAKE)

gbmv2-test-lib: gbmv2-test-source lib common-test-lib
	cd $(TEST_DIR)/test-gbmv2 && $(MAKE) do_test_gbmv2 

gbmv2-test: gbmv2-test-lib
	cd $(TEST_DIR)/test-gbmv2 && $(MAKE)

gbmv2-clean:
	cd $(SRC_DIR)/gbmv2 && $(MAKE) clean
	cd $(TEST_DIR)/test-gbmv2 && $(MAKE) clean


gbmv2-source-clean:
	cd $(M4_DIR)/gbmv2 && $(MAKE) source-clean
	cd $(M4_DIR)/test-gbmv2 && $(MAKE) source-clean


# Test library dependencies
sum-test-lib: dot-test-lib
axpby-test-lib: dot-test-lib
waxpby-test-lib: dot-test-lib
gemv-test-lib: dot-test-lib
ge_sum_mv-test-lib: dot-test-lib gemv-test-lib symv-test-lib gemm-test-lib
gbmv-test-lib: dot-test-lib
symv-test-lib: dot-test-lib gemm-test-lib
spmv-test-lib: dot-test-lib symv-test-lib
sbmv-test-lib: dot-test-lib symv-test-lib
hemv-test-lib: dot-test-lib symv-test-lib
hbmv-test-lib: dot-test-lib symv-test-lib hemv-test-lib sbmv-test-lib
hpmv-test-lib: dot-test-lib symv-test-lib hemv-test-lib
trmv-test-lib: dot-test-lib
tpmv-test-lib: dot-test-lib
trsv-test-lib: dot-test-lib trmv-test-lib
tbsv-test-lib: dot-test-lib gbmv-test-lib trsv-test-lib
gemm-test-lib: dot-test-lib gemv-test-lib
symm-test-lib: dot-test-lib gemv-test-lib symv-test-lib
hemm-test-lib: dot-test-lib gemv-test-lib hemv-test-lib symv-test-lib symm-test-lib
gemv2-test-lib: dot2-test-lib gemv-test-lib
dot2-test-lib: dot-test-lib


# Cleaning stuff

clean: $(CLEAN)
	cd $(SRC_DIR)/common && $(MAKE) clean
	cd $(TEST_DIR)/common && $(MAKE) clean
	cd $(M4_DIR) && $(MAKE) clean

dist-clean: clean
	rm -f $(XBLASLIB) testall.result testall.summary
	rm -rf autom4te.cache
	rm -f config.log config.status


source-clean: dist-clean
	cd m4 && $(MAKE) source-clean

maintainer-clean: source-clean
	cd m4 && $(MAKE) maintainer-clean
	rm -f m4/Makefile
	cd src && $(MAKE) maintainer-clean
	rm -f src/Makefile
	rm -f Makefile
	rm -f configure

.PHONY: $(LIBS) $(TEST_LIB) $(TESTS) $(CLEAN) \
        $(SOURCES) $(TEST_SOURCES) $(SOURCE_CLEAN) \
        sources test-sources source-clean maintainer-clean \
        all test-lib tests common-lib common-test-lib lib lib-amb clean dist-clean

