You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

Makefile 9.8 kB

1 year ago
1 year ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  1. #
  2. # The Makefile compiles c wrappers and testers for CBLAS.
  3. #
  4. TOPDIR = ..
  5. include $(TOPDIR)/Makefile.system
  6. SUPPORT_GEMM3M = 0
  7. ifeq ($(ARCH), x86)
  8. SUPPORT_GEMM3M = 1
  9. endif
  10. ifeq ($(ARCH), x86_64)
  11. SUPPORT_GEMM3M = 1
  12. endif
  13. ifeq ($(ARCH), ia64)
  14. SUPPORT_GEMM3M = 1
  15. endif
  16. ifeq ($(ARCH), MIPS)
  17. SUPPORT_GEMM3M = 1
  18. endif
  19. override CFLAGS += -DADD$(BU) -DCBLAS
  20. ifeq ($(F_COMPILER),GFORTRAN)
  21. ifneq (, $(filter $(CORE),LOONGSON3R3 LOONGSON3R4))
  22. override FFLAGS := $(filter_out(-O2 -O3,$(FFLAGS))) -O0
  23. endif
  24. override FFLAGS += -fno-tree-vectorize
  25. endif
  26. override TARGET_ARCH=
  27. override TARGET_MACH=
  28. LIB = $(TOPDIR)/$(LIBNAME)
  29. stestl1o = c_sblas1.o
  30. stestl2o = c_sblas2.o c_s2chke.o auxiliary.o c_xerbla.o constant.o
  31. stestl3o = c_sblas3.o c_s3chke.o auxiliary.o c_xerbla.o constant.o
  32. dtestl1o = c_dblas1.o
  33. dtestl2o = c_dblas2.o c_d2chke.o auxiliary.o c_xerbla.o constant.o
  34. dtestl3o = c_dblas3.o c_d3chke.o auxiliary.o c_xerbla.o constant.o
  35. ctestl1o = c_cblas1.o
  36. ctestl2o = c_cblas2.o c_c2chke.o auxiliary.o c_xerbla.o constant.o
  37. ctestl3o = c_cblas3.o c_c3chke.o auxiliary.o c_xerbla.o constant.o
  38. ctestl3o_3m = c_cblas3_3m.o c_c3chke_3m.o auxiliary.o c_xerbla.o constant.o
  39. ztestl1o = c_zblas1.o
  40. ztestl2o = c_zblas2.o c_z2chke.o auxiliary.o c_xerbla.o constant.o
  41. ztestl3o = c_zblas3.o c_z3chke.o auxiliary.o c_xerbla.o constant.o
  42. ztestl3o_3m = c_zblas3_3m.o c_z3chke_3m.o auxiliary.o c_xerbla.o constant.o
  43. all :: all1 all2 all3
  44. ifeq ($(BUILD_SINGLE),1)
  45. all1targets += xscblat1
  46. endif
  47. ifeq ($(BUILD_DOUBLE),1)
  48. all1targets += xdcblat1
  49. endif
  50. ifeq ($(BUILD_COMPLEX),1)
  51. all1targets += xccblat1
  52. endif
  53. ifeq ($(BUILD_COMPLEX16),1)
  54. all1targets += xzcblat1
  55. endif
  56. all1: $(all1targets)
  57. ifneq ($(CROSS), 1)
  58. ifeq ($(USE_OPENMP), 1)
  59. ifeq ($(BUILD_SINGLE),1)
  60. OMP_NUM_THREADS=2 ./xscblat1
  61. endif
  62. ifeq ($(BUILD_DOUBLE),1)
  63. OMP_NUM_THREADS=2 ./xdcblat1
  64. endif
  65. ifeq ($(BUILD_COMPLEX),1)
  66. OMP_NUM_THREADS=2 ./xccblat1
  67. endif
  68. ifeq ($(BUILD_COMPLEX16),1)
  69. OMP_NUM_THREADS=2 ./xzcblat1
  70. endif
  71. else
  72. ifeq ($(BUILD_SINGLE),1)
  73. OPENBLAS_NUM_THREADS=2 ./xscblat1
  74. endif
  75. ifeq ($(BUILD_DOUBLE),1)
  76. OPENBLAS_NUM_THREADS=2 ./xdcblat1
  77. endif
  78. ifeq ($(BUILD_COMPLEX),1)
  79. OPENBLAS_NUM_THREADS=2 ./xccblat1
  80. endif
  81. ifeq ($(BUILD_COMPLEX16),1)
  82. OPENBLAS_NUM_THREADS=2 ./xzcblat1
  83. endif
  84. endif
  85. endif
  86. ifeq ($(BUILD_SINGLE),1)
  87. all2targets += xscblat2
  88. endif
  89. ifeq ($(BUILD_DOUBLE),1)
  90. all2targets += xdcblat2
  91. endif
  92. ifeq ($(BUILD_COMPLEX),1)
  93. all2targets += xccblat2
  94. endif
  95. ifeq ($(BUILD_COMPLEX16),1)
  96. all2targets += xzcblat2
  97. endif
  98. all2: $(all2targets)
  99. ifneq ($(CROSS), 1)
  100. ifeq ($(USE_OPENMP), 1)
  101. ifeq ($(BUILD_SINGLE),1)
  102. OMP_NUM_THREADS=2 ./xscblat2 < sin2
  103. endif
  104. ifeq ($(BUILD_DOUBLE),1)
  105. OMP_NUM_THREADS=2 ./xdcblat2 < din2
  106. endif
  107. ifeq ($(BUILD_COMPLEX),1)
  108. OMP_NUM_THREADS=2 ./xccblat2 < cin2
  109. endif
  110. ifeq ($(BUILD_COMPLEX16),1)
  111. OMP_NUM_THREADS=2 ./xzcblat2 < zin2
  112. endif
  113. else
  114. ifeq ($(BUILD_SINGLE),1)
  115. OPENBLAS_NUM_THREADS=2 ./xscblat2 < sin2
  116. endif
  117. ifeq ($(BUILD_DOUBLE),1)
  118. OPENBLAS_NUM_THREADS=2 ./xdcblat2 < din2
  119. endif
  120. ifeq ($(BUILD_COMPLEX),1)
  121. OPENBLAS_NUM_THREADS=2 ./xccblat2 < cin2
  122. endif
  123. ifeq ($(BUILD_COMPLEX16),1)
  124. OPENBLAS_NUM_THREADS=2 ./xzcblat2 < zin2
  125. endif
  126. endif
  127. endif
  128. ifeq ($(BUILD_SINGLE),1)
  129. all3targets += xscblat3
  130. endif
  131. ifeq ($(BUILD_DOUBLE),1)
  132. all3targets += xdcblat3
  133. endif
  134. ifeq ($(BUILD_COMPLEX),1)
  135. all3targets += xccblat3
  136. ifeq ($(SUPPORT_GEMM3M),1)
  137. all3targets += xccblat3_3m
  138. endif
  139. endif
  140. ifeq ($(BUILD_COMPLEX16),1)
  141. all3targets += xzcblat3
  142. ifeq ($(SUPPORT_GEMM3M),1)
  143. all3targets += xzcblat3_3m
  144. endif
  145. endif
  146. all3: $(all3targets)
  147. ifneq ($(CROSS), 1)
  148. ifeq ($(USE_OPENMP), 1)
  149. ifeq ($(BUILD_SINGLE),1)
  150. OMP_NUM_THREADS=2 ./xscblat3 < sin3
  151. endif
  152. ifeq ($(BUILD_DOUBLE),1)
  153. OMP_NUM_THREADS=2 ./xdcblat3 < din3
  154. endif
  155. ifeq ($(BUILD_COMPLEX),1)
  156. OMP_NUM_THREADS=2 ./xccblat3 < cin3
  157. endif
  158. ifeq ($(BUILD_COMPLEX16),1)
  159. OMP_NUM_THREADS=2 ./xzcblat3 < zin3
  160. endif
  161. else
  162. ifeq ($(BUILD_SINGLE),1)
  163. OPENBLAS_NUM_THREADS=2 ./xscblat3 < sin3
  164. endif
  165. ifeq ($(BUILD_DOUBLE),1)
  166. OPENBLAS_NUM_THREADS=2 ./xdcblat3 < din3
  167. endif
  168. ifeq ($(BUILD_COMPLEX),1)
  169. OPENBLAS_NUM_THREADS=2 ./xccblat3 < cin3
  170. endif
  171. ifeq ($(BUILD_COMPLEX16),1)
  172. OPENBLAS_NUM_THREADS=2 ./xzcblat3 < zin3
  173. endif
  174. endif
  175. ifeq ($(SUPPORT_GEMM3M),1)
  176. ifeq ($(USE_OPENMP), 1)
  177. ifeq ($(BUILD_COMPLEX),1)
  178. OMP_NUM_THREADS=2 ./xccblat3_3m < cin3_3m
  179. endif
  180. ifeq ($(BUILD_COMPLEX16),1)
  181. OMP_NUM_THREADS=2 ./xzcblat3_3m < zin3_3m
  182. endif
  183. else
  184. ifeq ($(BUILD_COMPLEX),1)
  185. OPENBLAS_NUM_THREADS=2 ./xccblat3_3m < cin3_3m
  186. endif
  187. ifeq ($(BUILD_COMPLEX16),1)
  188. OPENBLAS_NUM_THREADS=2 ./xzcblat3_3m < zin3_3m
  189. endif
  190. endif
  191. endif
  192. endif
  193. clean ::
  194. rm -f x*
  195. FLDFLAGS = $(FFLAGS:-fPIC=) $(LDFLAGS)
  196. ifeq ($(USE_OPENMP), 1)
  197. ifeq ($(F_COMPILER), GFORTRAN)
  198. ifeq ($(C_COMPILER), CLANG)
  199. EXTRALIB += -lomp
  200. endif
  201. endif
  202. ifeq ($(F_COMPILER), NAG)
  203. EXTRALIB = -lgomp
  204. endif
  205. ifeq ($(F_COMPILER), IBM)
  206. ifeq ($(C_COMPILER), GCC)
  207. EXTRALIB += -lgomp
  208. endif
  209. ifeq ($(C_COMPILER), CLANG)
  210. EXTRALIB += -lomp
  211. endif
  212. endif
  213. endif
  214. ifeq ($(BUILD_SINGLE),1)
  215. # Single real
  216. ifeq ($(NOFORTRAN), $(filter 0 2,$(NOFORTRAN)))
  217. xscblat1: $(stestl1o) c_sblat1.o $(TOPDIR)/$(LIBNAME)
  218. $(FC) $(FLDFLAGS) -o xscblat1 c_sblat1.o $(stestl1o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
  219. xscblat2: $(stestl2o) c_sblat2.o $(TOPDIR)/$(LIBNAME)
  220. $(FC) $(FLDFLAGS) -o xscblat2 c_sblat2.o $(stestl2o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
  221. xscblat3: $(stestl3o) c_sblat3.o $(TOPDIR)/$(LIBNAME)
  222. $(FC) $(FLDFLAGS) -o xscblat3 c_sblat3.o $(stestl3o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
  223. else
  224. xscblat1: $(stestl1o) c_sblat1c.o $(TOPDIR)/$(LIBNAME)
  225. $(CC) $(CFLAGS) -o xscblat1 c_sblat1c.o $(stestl1o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
  226. xscblat2: $(stestl2o) c_sblat2c.o $(TOPDIR)/$(LIBNAME)
  227. $(CC) $(CFLAGS) -o xscblat2 c_sblat2c.o $(stestl2o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
  228. xscblat3: $(stestl3o) c_sblat3c.o $(TOPDIR)/$(LIBNAME)
  229. $(CC) $(CFLAGS) -o xscblat3 c_sblat3c.o $(stestl3o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
  230. endif
  231. endif
  232. ifeq ($(BUILD_DOUBLE),1)
  233. # Double real
  234. ifeq ($(NOFORTRAN), $(filter 0 2,$(NOFORTRAN)))
  235. xdcblat1: $(dtestl1o) c_dblat1.o $(TOPDIR)/$(LIBNAME)
  236. $(FC) $(FLDFLAGS) -o xdcblat1 c_dblat1.o $(dtestl1o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
  237. xdcblat2: $(dtestl2o) c_dblat2.o $(TOPDIR)/$(LIBNAME)
  238. $(FC) $(FLDFLAGS) -o xdcblat2 c_dblat2.o $(dtestl2o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
  239. xdcblat3: $(dtestl3o) c_dblat3.o $(TOPDIR)/$(LIBNAME)
  240. $(FC) $(FLDFLAGS) -o xdcblat3 c_dblat3.o $(dtestl3o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
  241. else
  242. xdcblat1: $(dtestl1o) c_dblat1c.o $(TOPDIR)/$(LIBNAME)
  243. $(CC) $(CFLAGS) -o xdcblat1 c_dblat1c.o $(dtestl1o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
  244. xdcblat2: $(dtestl2o) c_dblat2c.o $(TOPDIR)/$(LIBNAME)
  245. $(CC) $(CFLAGS) -o xdcblat2 c_dblat2c.o $(dtestl2o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
  246. xdcblat3: $(dtestl3o) c_dblat3c.o $(TOPDIR)/$(LIBNAME)
  247. $(CC) $(CFLAGS) -o xdcblat3 c_dblat3c.o $(dtestl3o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
  248. endif
  249. endif
  250. ifeq ($(BUILD_COMPLEX),1)
  251. # Single complex
  252. ifeq ($(NOFORTRAN), $(filter 0 2,$(NOFORTRAN)))
  253. xccblat1: $(ctestl1o) c_cblat1.o $(TOPDIR)/$(LIBNAME)
  254. $(FC) $(FLDFLAGS) -o xccblat1 c_cblat1.o $(ctestl1o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
  255. xccblat2: $(ctestl2o) c_cblat2.o $(TOPDIR)/$(LIBNAME)
  256. $(FC) $(FLDFLAGS) -o xccblat2 c_cblat2.o $(ctestl2o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
  257. xccblat3: $(ctestl3o) c_cblat3.o $(TOPDIR)/$(LIBNAME)
  258. $(FC) $(FLDFLAGS) -o xccblat3 c_cblat3.o $(ctestl3o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
  259. ifeq ($(SUPPORT_GEMM3M),1)
  260. xccblat3_3m: $(ctestl3o_3m) c_cblat3_3m.o $(TOPDIR)/$(LIBNAME)
  261. $(FC) $(FLDFLAGS) -o xccblat3_3m c_cblat3_3m.o $(ctestl3o_3m) $(LIB) $(EXTRALIB) $(CEXTRALIB)
  262. endif
  263. else
  264. xccblat1: $(ctestl1o) c_cblat1c.o $(TOPDIR)/$(LIBNAME)
  265. $(CC) $(CFLAGS) -o xccblat1 c_cblat1c.o $(ctestl1o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
  266. xccblat2: $(ctestl2o) c_cblat2c.o $(TOPDIR)/$(LIBNAME)
  267. $(CC) $(CFLAGS) -o xccblat2 c_cblat2c.o $(ctestl2o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
  268. xccblat3: $(ctestl3o) c_cblat3c.o $(TOPDIR)/$(LIBNAME)
  269. $(CC) $(CFLAGS) -o xccblat3 c_cblat3c.o $(ctestl3o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
  270. ifeq ($(SUPPORT_GEMM3M),1)
  271. xccblat3_3m: $(ctestl3o_3m) c_cblat3c_3m.o $(TOPDIR)/$(LIBNAME)
  272. $(CC) $(CFLAGS) -o xccblat3_3m c_cblat3c_3m.o $(ctestl3o_3m) $(LIB) $(EXTRALIB) $(CEXTRALIB)
  273. endif
  274. endif
  275. endif
  276. ifeq ($(BUILD_COMPLEX16),1)
  277. # Double complex
  278. ifeq ($(NOFORTRAN), $(filter 0 2,$(NOFORTRAN)))
  279. xzcblat1: $(ztestl1o) c_zblat1.o $(TOPDIR)/$(LIBNAME)
  280. $(FC) $(FLDFLAGS) -o xzcblat1 c_zblat1.o $(ztestl1o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
  281. xzcblat2: $(ztestl2o) c_zblat2.o $(TOPDIR)/$(LIBNAME)
  282. $(FC) $(FLDFLAGS) -o xzcblat2 c_zblat2.o $(ztestl2o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
  283. xzcblat3: $(ztestl3o) c_zblat3.o $(TOPDIR)/$(LIBNAME)
  284. $(FC) $(FLDFLAGS) -o xzcblat3 c_zblat3.o $(ztestl3o) $(LIB) $(EXTRALIB) $(CEXTRALIB)
  285. ifeq ($(SUPPORT_GEMM3M),1)
  286. xzcblat3_3m: $(ztestl3o_3m) c_zblat3_3m.o $(TOPDIR)/$(LIBNAME)
  287. $(FC) $(FLDFLAGS) -o xzcblat3_3m c_zblat3_3m.o $(ztestl3o_3m) $(LIB) $(EXTRALIB) $(CEXTRALIB)
  288. endif
  289. else
  290. xzcblat1: $(ztestl1o) c_zblat1c.o $(TOPDIR)/$(LIBNAME)
  291. $(CC) $(CFLAGS) -o xzcblat1 c_zblat1c.o $(ztestl1o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
  292. xzcblat2: $(ztestl2o) c_zblat2c.o $(TOPDIR)/$(LIBNAME)
  293. $(CC) $(CFLAGS) -o xzcblat2 c_zblat2c.o $(ztestl2o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
  294. xzcblat3: $(ztestl3o) c_zblat3c.o $(TOPDIR)/$(LIBNAME)
  295. $(CC) $(CFLAGS) -o xzcblat3 c_zblat3c.o $(ztestl3o) $(LIB) $(CEXTRALIB) $(filter-out -lgfortran,$(EXTRALIB))
  296. ifeq ($(SUPPORT_GEMM3M),1)
  297. xzcblat3_3m: $(ztestl3o_3m) c_zblat3c_3m.o $(TOPDIR)/$(LIBNAME)
  298. $(CC) $(CFLAGS) -o xzcblat3_3m c_zblat3c_3m.o $(ztestl3o_3m) $(LIB) $(EXTRALIB) $(CEXTRALIB)
  299. endif
  300. endif
  301. endif
  302. include $(TOPDIR)/Makefile.tail