DIRS = 

include ../../common.mk

FORTRAN = gfortran
LIBF = -lgfortran -lm 

all:: base basic_type matrix_type #func_type

BASIC = cxbi cxbs cxbd cxbc cxbz cxbch cxbsh cxbl

basic_type: $(BASIC) 

cxbi: cxbi.adb ifinc.o
	gnatmake cxbi.adb -largs ifinc.o $(LIBF)

cxbs: cxbs.adb sfinc.o
	gnatmake cxbs.adb -largs sfinc.o $(LIBF)

cxbd: cxbd.adb dfinc.o
	gnatmake cxbd.adb -largs dfinc.o $(LIBF)

cxbc: cxbc.adb cfinc.o
	gnatmake cxbc.adb -largs cfinc.o $(LIBF)

cxbz: cxbz.adb zfinc.o
	gnatmake cxbz.adb -largs zfinc.o $(LIBF)

cxbch: cxbch.adb chfinc.o
	gnatmake cxbch.adb -largs chfinc.o $(LIBF)

cxbsh: cxbsh.adb shfinc.o
	gnatmake cxbsh.adb -largs shfinc.o $(LIBF)

cxbl: cxbl.adb  lfinc.o
	gnatmake cxbl.adb -largs lfinc.o $(LIBF)

MATRIX = cxbim cxbsm cxbdm cxbcm cxbzm cxblm

matrix_type: $(MATRIX) 

cxbim: cxbim.adb  imfinc.o 
	gnatmake cxbim.adb -largs imfinc.o $(LIBF)

cxbsm: cxbsm.adb  smfinc.o
	gnatmake cxbsm.adb -largs smfinc.o $(LIBF)

cxbdm: cxbdm.adb dmfinc.o
	gnatmake cxbdm.adb -largs dmfinc.o $(LIBF)

cxbcm: cxbcm.adb cmfinc.o
	gnatmake cxbcm.adb -largs cmfinc.o $(LIBF)

cxbzm: cxbzm.adb  zmfinc.o
	gnatmake cxbzm.adb -largs zmfinc.o $(LIBF)

cxblm: cxblm.adb  lmfinc.o
	gnatmake cxblm.adb -largs lmfinc.o $(LIBF)

#FUNC = cxbfun1 cxbfun3
FUNC =  cxbfun3
func_type: $(FUNC)

cxbfun1: cxbfun1.adb ffun.o
	gnatmake cxbfun1.adb -largs ffun.o $(LIBF)

cxbfun3: cxbfun2.adb cxbfun2.ads cxbfun3.adb ffun.o
	gcc -c cxbfun2.adb
	gcc -c cxbfun3.adb
	gnatmake cxbfun3.adb -largs ffun.o $(LIBF) 

base: cxbbase.adb

cxbbase.adb : cxbbase.ads
	gcc -c cxbbase.ads


%.ali: %.adb
	gcc -c  $<
	gnatmake $@

%.o : %.f
	$(FORTRAN) -c $<

#testing : $(BASIC) $(MATRIX)
#	echo "Ada - Fortran interface checking" > Test.Out;\
#        for file in $(BASIC) $(MATRIX) $(FUNC); do \
#	  echo $$file >> Test.Out; \
#	  $$file >> Test.Out; \
#	done

testing:: $(BASIC) $(MATRIX)
	echo "Ada - Fortran interface checking" > Test.Out;\
        for file in $(BASIC) $(MATRIX); do \
          echo "*****************" >> Test.Out; \
	  echo $$file >> Test.Out; \
	  ./$$file >> Test.Out; \
	done
	
clean::
	-rm *.o
	-rm *.ali 
	-rm $(BASIC)
	-rm $(MATRIX)
#	rm $(FUNC)
	-rm *.c
