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.system 24 kB

13 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310
  1. #
  2. # Include user definition
  3. #
  4. # TO suppress recursive includes
  5. INCLUDED = 1
  6. ifndef TOPDIR
  7. TOPDIR = .
  8. endif
  9. NETLIB_LAPACK_DIR = $(TOPDIR)/lapack-netlib
  10. # Default C compiler
  11. # - Only set if not specified on the command line or inherited from the environment.
  12. # - CC is an implicit variable so neither '?=' or 'ifndef' can be used.
  13. # http://stackoverflow.com/questions/4029274/mingw-and-make-variables
  14. # - Default value is 'cc' which is not always a valid command (e.g. MinGW).
  15. ifeq ($(origin CC),default)
  16. # Check if $(CC) refers to a valid command and set the value to gcc if not
  17. ifneq ($(findstring cmd.exe,$(SHELL)),)
  18. ifeq ($(shell where $(CC) 2>NUL),)
  19. CC = gcc
  20. endif
  21. else # POSIX-ish
  22. ifeq ($(shell command -v $(CC) 2>/dev/null),)
  23. ifeq ($(shell uname -s),Darwin)
  24. CC = clang
  25. # EXTRALIB += -Wl,-no_compact_unwind
  26. else
  27. CC = gcc
  28. endif # Darwin
  29. endif # CC exists
  30. endif # Shell is sane
  31. endif # CC is set to default
  32. # Default Fortran compiler (FC) is selected by f_check.
  33. ifndef MAKEFILE_RULE
  34. include $(TOPDIR)/Makefile.rule
  35. else
  36. include $(TOPDIR)/$(MAKEFILE_RULE)
  37. endif
  38. #
  39. # Beginning of system configuration
  40. #
  41. ifndef HOSTCC
  42. HOSTCC = $(CC)
  43. endif
  44. ifdef TARGET
  45. GETARCH_FLAGS := -DFORCE_$(TARGET)
  46. endif
  47. # Force fallbacks for 32bit
  48. ifeq ($(BINARY), 32)
  49. ifeq ($(TARGET), HASWELL)
  50. GETARCH_FLAGS := -DFORCE_NEHALEM
  51. endif
  52. ifeq ($(TARGET), SKYLAKEX)
  53. GETARCH_FLAGS := -DFORCE_NEHALEM
  54. endif
  55. ifeq ($(TARGET), SANDYBRIDGE)
  56. GETARCH_FLAGS := -DFORCE_NEHALEM
  57. endif
  58. ifeq ($(TARGET), BULLDOZER)
  59. GETARCH_FLAGS := -DFORCE_BARCELONA
  60. endif
  61. ifeq ($(TARGET), PILEDRIVER)
  62. GETARCH_FLAGS := -DFORCE_BARCELONA
  63. endif
  64. ifeq ($(TARGET), STEAMROLLER)
  65. GETARCH_FLAGS := -DFORCE_BARCELONA
  66. endif
  67. ifeq ($(TARGET), EXCAVATOR)
  68. GETARCH_FLAGS := -DFORCE_BARCELONA
  69. endif
  70. ifeq ($(TARGET), ZEN)
  71. GETARCH_FLAGS := -DFORCE_BARCELONA
  72. endif
  73. endif
  74. #TARGET_CORE will override TARGET which is used in DYNAMIC_ARCH=1.
  75. #
  76. ifdef TARGET_CORE
  77. GETARCH_FLAGS := -DFORCE_$(TARGET_CORE)
  78. endif
  79. # Force fallbacks for 32bit
  80. ifeq ($(BINARY), 32)
  81. ifeq ($(TARGET_CORE), HASWELL)
  82. GETARCH_FLAGS := -DFORCE_NEHALEM
  83. endif
  84. ifeq ($(TARGET_CORE), SKYLAKEX)
  85. GETARCH_FLAGS := -DFORCE_NEHALEM
  86. endif
  87. ifeq ($(TARGET_CORE), SANDYBRIDGE)
  88. GETARCH_FLAGS := -DFORCE_NEHALEM
  89. endif
  90. ifeq ($(TARGET_CORE), BULLDOZER)
  91. GETARCH_FLAGS := -DFORCE_BARCELONA
  92. endif
  93. ifeq ($(TARGET_CORE), PILEDRIVER)
  94. GETARCH_FLAGS := -DFORCE_BARCELONA
  95. endif
  96. ifeq ($(TARGET_CORE), STEAMROLLER)
  97. GETARCH_FLAGS := -DFORCE_BARCELONA
  98. endif
  99. ifeq ($(TARGET_CORE), EXCAVATOR)
  100. GETARCH_FLAGS := -DFORCE_BARCELONA
  101. endif
  102. ifeq ($(TARGET_CORE), ZEN)
  103. GETARCH_FLAGS := -DFORCE_BARCELONA
  104. endif
  105. endif
  106. ifdef INTERFACE64
  107. ifneq ($(INTERFACE64), 0)
  108. GETARCH_FLAGS += -DUSE64BITINT
  109. endif
  110. endif
  111. ifndef GEMM_MULTITHREAD_THRESHOLD
  112. GEMM_MULTITHREAD_THRESHOLD=4
  113. endif
  114. GETARCH_FLAGS += -DGEMM_MULTITHREAD_THRESHOLD=$(GEMM_MULTITHREAD_THRESHOLD)
  115. ifeq ($(NO_AVX), 1)
  116. GETARCH_FLAGS += -DNO_AVX
  117. endif
  118. ifeq ($(BINARY), 32)
  119. GETARCH_FLAGS += -DNO_AVX
  120. endif
  121. ifeq ($(NO_AVX2), 1)
  122. GETARCH_FLAGS += -DNO_AVX2
  123. endif
  124. ifeq ($(NO_AVX512), 1)
  125. GETARCH_FLAGS += -DNO_AVX512
  126. endif
  127. ifeq ($(DEBUG), 1)
  128. GETARCH_FLAGS += -g
  129. endif
  130. ifeq ($(QUIET_MAKE), 1)
  131. MAKE += -s
  132. endif
  133. ifndef NO_PARALLEL_MAKE
  134. NO_PARALLEL_MAKE=0
  135. endif
  136. GETARCH_FLAGS += -DNO_PARALLEL_MAKE=$(NO_PARALLEL_MAKE)
  137. ifdef MAKE_NB_JOBS
  138. GETARCH_FLAGS += -DMAKE_NB_JOBS=$(MAKE_NB_JOBS)
  139. endif
  140. ifeq ($(HOSTCC), loongcc)
  141. GETARCH_FLAGS += -static
  142. endif
  143. #if don't use Fortran, it will only compile CBLAS.
  144. ifeq ($(ONLY_CBLAS), 1)
  145. NO_LAPACK = 1
  146. else
  147. ONLY_CBLAS = 0
  148. endif
  149. # This operation is expensive, so execution should be once.
  150. ifndef GOTOBLAS_MAKEFILE
  151. export GOTOBLAS_MAKEFILE = 1
  152. # Generating Makefile.conf and config.h
  153. DUMMY := $(shell $(MAKE) -C $(TOPDIR) -f Makefile.prebuild CC="$(CC)" FC="$(FC)" HOSTCC="$(HOSTCC)" CFLAGS="$(GETARCH_FLAGS)" BINARY=$(BINARY) USE_OPENMP=$(USE_OPENMP) TARGET_CORE=$(TARGET_CORE) ONLY_CBLAS=$(ONLY_CBLAS) TARGET=$(TARGET) all)
  154. ifndef TARGET_CORE
  155. include $(TOPDIR)/Makefile.conf
  156. else
  157. include $(TOPDIR)/Makefile_kernel.conf
  158. endif
  159. endif
  160. ifndef NUM_PARALLEL
  161. NUM_PARALLEL = 1
  162. endif
  163. ifndef NUM_THREADS
  164. NUM_THREADS = $(NUM_CORES)
  165. endif
  166. ifeq ($(NUM_THREADS), 1)
  167. override USE_THREAD = 0
  168. override USE_OPENMP = 0
  169. endif
  170. ifdef USE_THREAD
  171. ifeq ($(USE_THREAD), 0)
  172. SMP =
  173. else
  174. SMP = 1
  175. endif
  176. else
  177. ifeq ($(NUM_THREAD), 1)
  178. SMP =
  179. else
  180. SMP = 1
  181. endif
  182. endif
  183. ifndef NEED_PIC
  184. NEED_PIC = 1
  185. endif
  186. ARFLAGS =
  187. CPP = $(COMPILER) -E
  188. AR = $(CROSS_SUFFIX)ar
  189. AS = $(CROSS_SUFFIX)as
  190. LD = $(CROSS_SUFFIX)ld
  191. RANLIB = $(CROSS_SUFFIX)ranlib
  192. NM = $(CROSS_SUFFIX)nm
  193. DLLWRAP = $(CROSS_SUFFIX)dllwrap
  194. OBJCOPY = $(CROSS_SUFFIX)objcopy
  195. OBJCONV = $(CROSS_SUFFIX)objconv
  196. # For detect fortran failed, only build BLAS.
  197. ifeq ($(NOFORTRAN), 1)
  198. NO_LAPACK = 1
  199. endif
  200. #
  201. # OS dependent settings
  202. #
  203. ifeq ($(OSNAME), Darwin)
  204. ifndef MACOSX_DEPLOYMENT_TARGET
  205. export MACOSX_DEPLOYMENT_TARGET=10.6
  206. endif
  207. MD5SUM = md5 -r
  208. endif
  209. ifneq (,$(findstring $(OSNAME), FreeBSD OpenBSD DragonFly))
  210. MD5SUM = md5 -r
  211. endif
  212. ifeq ($(OSNAME), NetBSD)
  213. MD5SUM = md5 -n
  214. endif
  215. ifeq ($(OSNAME), Linux)
  216. EXTRALIB += -lm
  217. NO_EXPRECISION = 1
  218. endif
  219. ifeq ($(OSNAME), Android)
  220. EXTRALIB += -lm
  221. endif
  222. ifeq ($(OSNAME), AIX)
  223. EXTRALIB += -lm
  224. endif
  225. ifeq ($(OSNAME), WINNT)
  226. NEED_PIC = 0
  227. NO_EXPRECISION = 1
  228. EXTRALIB += -defaultlib:advapi32
  229. SUFFIX = obj
  230. PSUFFIX = pobj
  231. LIBSUFFIX = a
  232. ifeq ($(C_COMPILER), CLANG)
  233. CCOMMON_OPT += -DMS_ABI
  234. endif
  235. ifeq ($(C_COMPILER), GCC)
  236. #Test for supporting MS_ABI
  237. GCCVERSIONGTEQ4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 4)
  238. GCCVERSIONGT4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \> 4)
  239. GCCMINORVERSIONGTEQ7 := $(shell expr `$(CC) -dumpversion | cut -f2 -d.` \>= 7)
  240. ifeq ($(GCCVERSIONGT4), 1)
  241. # GCC Majar version > 4
  242. # It is compatible with MSVC ABI.
  243. CCOMMON_OPT += -DMS_ABI
  244. endif
  245. ifeq ($(GCCVERSIONGTEQ4), 1)
  246. ifeq ($(GCCMINORVERSIONGTEQ7), 1)
  247. # GCC Version >=4.7
  248. # It is compatible with MSVC ABI.
  249. CCOMMON_OPT += -DMS_ABI
  250. endif
  251. endif
  252. endif
  253. # Ensure the correct stack alignment on Win32
  254. # http://permalink.gmane.org/gmane.comp.lib.openblas.general/97
  255. ifeq ($(ARCH), x86)
  256. CCOMMON_OPT += -mincoming-stack-boundary=2
  257. FCOMMON_OPT += -mincoming-stack-boundary=2
  258. endif
  259. endif
  260. ifeq ($(OSNAME), Interix)
  261. NEED_PIC = 0
  262. NO_EXPRECISION = 1
  263. INTERIX_TOOL_DIR = /opt/gcc.3.3/i586-pc-interix3/bin
  264. endif
  265. ifeq ($(OSNAME), CYGWIN_NT)
  266. NEED_PIC = 0
  267. NO_EXPRECISION = 1
  268. OS_CYGWIN_NT = 1
  269. endif
  270. ifneq ($(OSNAME), WINNT)
  271. ifneq ($(OSNAME), CYGWIN_NT)
  272. ifneq ($(OSNAME), Interix)
  273. ifneq ($(OSNAME), Android)
  274. ifdef SMP
  275. EXTRALIB += -lpthread
  276. endif
  277. endif
  278. endif
  279. endif
  280. endif
  281. # ifeq logical or
  282. ifeq ($(OSNAME), $(filter $(OSNAME),WINNT CYGWIN_NT Interix))
  283. OS_WINDOWS=1
  284. endif
  285. ifdef QUAD_PRECISION
  286. CCOMMON_OPT += -DQUAD_PRECISION
  287. NO_EXPRECISION = 1
  288. endif
  289. ifneq ($(ARCH), x86)
  290. ifneq ($(ARCH), x86_64)
  291. NO_EXPRECISION = 1
  292. endif
  293. endif
  294. ifdef UTEST_CHECK
  295. CCOMMON_OPT += -DUTEST_CHECK
  296. SANITY_CHECK = 1
  297. endif
  298. ifdef SANITY_CHECK
  299. CCOMMON_OPT += -DSANITY_CHECK -DREFNAME=$(*F)f$(BU)
  300. endif
  301. MAX_STACK_ALLOC ?= 2048
  302. ifneq ($(MAX_STACK_ALLOC), 0)
  303. CCOMMON_OPT += -DMAX_STACK_ALLOC=$(MAX_STACK_ALLOC)
  304. endif
  305. #
  306. # Architecture dependent settings
  307. #
  308. ifeq ($(ARCH), x86)
  309. ifndef BINARY
  310. NO_BINARY_MODE = 1
  311. endif
  312. ifeq ($(CORE), generic)
  313. NO_EXPRECISION = 1
  314. endif
  315. ifndef NO_EXPRECISION
  316. ifeq ($(F_COMPILER), GFORTRAN)
  317. # ifeq logical or. GCC or LSB
  318. ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC LSB))
  319. EXPRECISION = 1
  320. CCOMMON_OPT += -DEXPRECISION -m128bit-long-double
  321. FCOMMON_OPT += -m128bit-long-double
  322. endif
  323. ifeq ($(C_COMPILER), CLANG)
  324. EXPRECISION = 1
  325. CCOMMON_OPT += -DEXPRECISION
  326. FCOMMON_OPT += -m128bit-long-double
  327. endif
  328. endif
  329. endif
  330. endif
  331. ifeq ($(ARCH), x86_64)
  332. ifeq ($(CORE), generic)
  333. NO_EXPRECISION = 1
  334. endif
  335. ifndef NO_EXPRECISION
  336. ifeq ($(F_COMPILER), GFORTRAN)
  337. # ifeq logical or. GCC or LSB
  338. ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC LSB))
  339. EXPRECISION = 1
  340. CCOMMON_OPT += -DEXPRECISION -m128bit-long-double
  341. FCOMMON_OPT += -m128bit-long-double
  342. endif
  343. ifeq ($(C_COMPILER), CLANG)
  344. EXPRECISION = 1
  345. CCOMMON_OPT += -DEXPRECISION
  346. FCOMMON_OPT += -m128bit-long-double
  347. endif
  348. endif
  349. endif
  350. endif
  351. ifeq ($(C_COMPILER), INTEL)
  352. CCOMMON_OPT += -wd981
  353. endif
  354. ifeq ($(USE_OPENMP), 1)
  355. #check
  356. ifeq ($(USE_THREAD), 0)
  357. $(error OpenBLAS: Cannot set both USE_OPENMP=1 and USE_THREAD=0. The USE_THREAD=0 is only for building single thread version.)
  358. endif
  359. # ifeq logical or. GCC or LSB
  360. ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC LSB))
  361. CCOMMON_OPT += -fopenmp
  362. endif
  363. ifeq ($(C_COMPILER), CLANG)
  364. CCOMMON_OPT += -fopenmp
  365. endif
  366. ifeq ($(C_COMPILER), INTEL)
  367. CCOMMON_OPT += -fopenmp
  368. endif
  369. ifeq ($(C_COMPILER), PGI)
  370. CCOMMON_OPT += -mp
  371. endif
  372. ifeq ($(C_COMPILER), OPEN64)
  373. CCOMMON_OPT += -mp
  374. CEXTRALIB += -lstdc++
  375. endif
  376. ifeq ($(C_COMPILER), PATHSCALE)
  377. CCOMMON_OPT += -mp
  378. endif
  379. endif
  380. ifeq ($(DYNAMIC_ARCH), 1)
  381. ifeq ($(ARCH), x86)
  382. DYNAMIC_CORE = KATMAI COPPERMINE NORTHWOOD PRESCOTT BANIAS \
  383. CORE2 PENRYN DUNNINGTON NEHALEM ATHLON OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO
  384. endif
  385. ifeq ($(ARCH), x86_64)
  386. DYNAMIC_CORE = PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO
  387. ifneq ($(NO_AVX), 1)
  388. DYNAMIC_CORE += SANDYBRIDGE BULLDOZER PILEDRIVER STEAMROLLER EXCAVATOR
  389. endif
  390. ifneq ($(NO_AVX2), 1)
  391. DYNAMIC_CORE += HASWELL ZEN
  392. endif
  393. ifneq ($(NO_AVX512), 1)
  394. ifneq ($(NO_AVX2), 1)
  395. DYNAMIC_CORE += SKYLAKEX
  396. endif
  397. endif
  398. endif
  399. # If DYNAMIC_CORE is not set, DYNAMIC_ARCH cannot do anything, so force it to empty
  400. ifndef DYNAMIC_CORE
  401. override DYNAMIC_ARCH=
  402. endif
  403. endif
  404. ifeq ($(ARCH), ia64)
  405. NO_BINARY_MODE = 1
  406. BINARY_DEFINED = 1
  407. ifeq ($(F_COMPILER), GFORTRAN)
  408. ifeq ($(C_COMPILER), GCC)
  409. # EXPRECISION = 1
  410. # CCOMMON_OPT += -DEXPRECISION
  411. endif
  412. endif
  413. endif
  414. ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
  415. NO_BINARY_MODE = 1
  416. endif
  417. ifeq ($(ARCH), alpha)
  418. NO_BINARY_MODE = 1
  419. BINARY_DEFINED = 1
  420. endif
  421. ifeq ($(ARCH), arm)
  422. NO_BINARY_MODE = 1
  423. BINARY_DEFINED = 1
  424. CCOMMON_OPT += -marm
  425. FCOMMON_OPT += -marm
  426. # If softfp abi is mentioned on the command line, force it.
  427. ifeq ($(ARM_SOFTFP_ABI), 1)
  428. CCOMMON_OPT += -mfloat-abi=softfp
  429. FCOMMON_OPT += -mfloat-abi=softfp
  430. endif
  431. ifeq ($(OSNAME), Android)
  432. ifeq ($(ARM_SOFTFP_ABI), 1)
  433. EXTRALIB += -lm
  434. else
  435. EXTRALIB += -Wl,-lm_hard
  436. endif
  437. endif
  438. endif
  439. ifeq ($(ARCH), arm64)
  440. NO_BINARY_MODE = 1
  441. BINARY_DEFINED = 1
  442. endif
  443. #
  444. # C Compiler dependent settings
  445. #
  446. # ifeq logical or. GCC or CLANG or LSB
  447. # http://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or
  448. ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC CLANG LSB))
  449. CCOMMON_OPT += -Wall
  450. COMMON_PROF += -fno-inline
  451. NO_UNINITIALIZED_WARN = -Wno-uninitialized
  452. ifeq ($(QUIET_MAKE), 1)
  453. CCOMMON_OPT += $(NO_UNINITIALIZED_WARN) -Wno-unused
  454. endif
  455. ifdef NO_BINARY_MODE
  456. ifeq ($(ARCH), $(filter $(ARCH),mips64))
  457. ifdef BINARY64
  458. CCOMMON_OPT += -mabi=64
  459. else
  460. CCOMMON_OPT += -mabi=n32
  461. endif
  462. BINARY_DEFINED = 1
  463. else ifeq ($(ARCH), $(filter $(ARCH),mips))
  464. CCOMMON_OPT += -mabi=32
  465. BINARY_DEFINED = 1
  466. endif
  467. ifeq ($(CORE), LOONGSON3A)
  468. CCOMMON_OPT += -march=mips64
  469. FCOMMON_OPT += -march=mips64
  470. endif
  471. ifeq ($(CORE), LOONGSON3B)
  472. CCOMMON_OPT += -march=mips64
  473. FCOMMON_OPT += -march=mips64
  474. endif
  475. ifeq ($(CORE), 1004K)
  476. CCOMMON_OPT += -mips32r2 $(MSA_FLAGS)
  477. FCOMMON_OPT += -mips32r2 $(MSA_FLAGS)
  478. endif
  479. ifeq ($(CORE), P5600)
  480. CCOMMON_OPT += -mips32r5 -mnan=2008 -mtune=p5600 $(MSA_FLAGS)
  481. FCOMMON_OPT += -mips32r5 -mnan=2008 -mtune=p5600 $(MSA_FLAGS)
  482. endif
  483. ifeq ($(CORE), I6400)
  484. CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
  485. FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
  486. endif
  487. ifeq ($(CORE), P6600)
  488. CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=p6600 $(MSA_FLAGS)
  489. FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=p6600 $(MSA_FLAGS)
  490. endif
  491. ifeq ($(CORE), I6500)
  492. CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
  493. FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
  494. endif
  495. ifeq ($(OSNAME), AIX)
  496. BINARY_DEFINED = 1
  497. endif
  498. endif
  499. ifndef BINARY_DEFINED
  500. ifneq ($(OSNAME), AIX)
  501. ifdef BINARY64
  502. CCOMMON_OPT += -m64
  503. else
  504. CCOMMON_OPT += -m32
  505. endif
  506. endif
  507. endif
  508. endif
  509. ifeq ($(C_COMPILER), PGI)
  510. ifdef BINARY64
  511. CCOMMON_OPT += -tp p7-64
  512. else
  513. CCOMMON_OPT += -tp p7
  514. endif
  515. endif
  516. ifeq ($(C_COMPILER), PATHSCALE)
  517. ifdef BINARY64
  518. CCOMMON_OPT += -m64
  519. else
  520. CCOMMON_OPT += -m32
  521. endif
  522. endif
  523. #
  524. # Fortran Compiler dependent settings
  525. #
  526. ifeq ($(F_COMPILER), FLANG)
  527. CCOMMON_OPT += -DF_INTERFACE_FLANG
  528. ifdef BINARY64
  529. ifdef INTERFACE64
  530. ifneq ($(INTERFACE64), 0)
  531. FCOMMON_OPT += -i8
  532. endif
  533. endif
  534. FCOMMON_OPT += -Wall
  535. else
  536. FCOMMON_OPT += -Wall
  537. endif
  538. ifeq ($(USE_OPENMP), 1)
  539. FCOMMON_OPT += -fopenmp
  540. endif
  541. endif
  542. ifeq ($(F_COMPILER), G77)
  543. CCOMMON_OPT += -DF_INTERFACE_G77
  544. FCOMMON_OPT += -Wall
  545. ifndef NO_BINARY_MODE
  546. ifneq ($(OSNAME), AIX)
  547. ifdef BINARY64
  548. FCOMMON_OPT += -m64
  549. else
  550. FCOMMON_OPT += -m32
  551. endif
  552. endif
  553. endif
  554. endif
  555. ifeq ($(F_COMPILER), G95)
  556. CCOMMON_OPT += -DF_INTERFACE_G95
  557. FCOMMON_OPT += -Wall
  558. ifneq ($(OSNAME), AIX)
  559. ifndef NO_BINARY_MODE
  560. ifdef BINARY64
  561. FCOMMON_OPT += -m64
  562. else
  563. FCOMMON_OPT += -m32
  564. endif
  565. endif
  566. endif
  567. endif
  568. ifeq ($(F_COMPILER), GFORTRAN)
  569. CCOMMON_OPT += -DF_INTERFACE_GFORT
  570. FCOMMON_OPT += -Wall
  571. #Don't include -lgfortran, when NO_LAPACK=1 or lsbcc
  572. ifneq ($(NO_LAPACK), 1)
  573. EXTRALIB += -lgfortran
  574. endif
  575. ifdef NO_BINARY_MODE
  576. ifeq ($(ARCH), $(filter $(ARCH),mips64))
  577. ifdef BINARY64
  578. FCOMMON_OPT += -mabi=64
  579. else
  580. FCOMMON_OPT += -mabi=n32
  581. endif
  582. else ifeq ($(ARCH), $(filter $(ARCH),mips))
  583. FCOMMON_OPT += -mabi=32
  584. endif
  585. else
  586. ifdef BINARY64
  587. ifneq ($(OSNAME), AIX)
  588. FCOMMON_OPT += -m64
  589. endif
  590. ifdef INTERFACE64
  591. ifneq ($(INTERFACE64), 0)
  592. FCOMMON_OPT += -fdefault-integer-8
  593. endif
  594. endif
  595. else
  596. ifneq ($(OSNAME), AIX)
  597. FCOMMON_OPT += -m32
  598. endif
  599. endif
  600. endif
  601. ifeq ($(USE_OPENMP), 1)
  602. FCOMMON_OPT += -fopenmp
  603. endif
  604. endif
  605. ifeq ($(F_COMPILER), INTEL)
  606. CCOMMON_OPT += -DF_INTERFACE_INTEL
  607. ifdef INTERFACE64
  608. ifneq ($(INTERFACE64), 0)
  609. FCOMMON_OPT += -i8
  610. endif
  611. endif
  612. ifeq ($(USE_OPENMP), 1)
  613. FCOMMON_OPT += -fopenmp
  614. endif
  615. endif
  616. ifeq ($(F_COMPILER), FUJITSU)
  617. CCOMMON_OPT += -DF_INTERFACE_FUJITSU
  618. ifeq ($(USE_OPENMP), 1)
  619. FCOMMON_OPT += -openmp
  620. endif
  621. endif
  622. ifeq ($(F_COMPILER), IBM)
  623. CCOMMON_OPT += -DF_INTERFACE_IBM
  624. # FCOMMON_OPT += -qarch=440
  625. ifdef BINARY64
  626. FCOMMON_OPT += -q64
  627. ifdef INTERFACE64
  628. ifneq ($(INTERFACE64), 0)
  629. FCOMMON_OPT += -qintsize=8
  630. endif
  631. endif
  632. else
  633. FCOMMON_OPT += -q32
  634. endif
  635. ifeq ($(USE_OPENMP), 1)
  636. FCOMMON_OPT += -openmp
  637. endif
  638. endif
  639. ifeq ($(F_COMPILER), PGI)
  640. CCOMMON_OPT += -DF_INTERFACE_PGI
  641. COMMON_PROF += -DPGICOMPILER
  642. ifdef BINARY64
  643. ifdef INTERFACE64
  644. ifneq ($(INTERFACE64), 0)
  645. FCOMMON_OPT += -i8
  646. endif
  647. endif
  648. FCOMMON_OPT += -tp p7-64
  649. else
  650. FCOMMON_OPT += -tp p7
  651. endif
  652. ifeq ($(USE_OPENMP), 1)
  653. FCOMMON_OPT += -mp
  654. endif
  655. endif
  656. ifeq ($(F_COMPILER), PATHSCALE)
  657. CCOMMON_OPT += -DF_INTERFACE_PATHSCALE
  658. ifdef BINARY64
  659. ifdef INTERFACE64
  660. ifneq ($(INTERFACE64), 0)
  661. FCOMMON_OPT += -i8
  662. endif
  663. endif
  664. endif
  665. ifeq ($(USE_OPENMP), 1)
  666. FCOMMON_OPT += -mp
  667. endif
  668. endif
  669. ifeq ($(F_COMPILER), OPEN64)
  670. CCOMMON_OPT += -DF_INTERFACE_OPEN64
  671. ifdef BINARY64
  672. ifdef INTERFACE64
  673. ifneq ($(INTERFACE64), 0)
  674. FCOMMON_OPT += -i8
  675. endif
  676. endif
  677. endif
  678. ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
  679. ifndef BINARY64
  680. FCOMMON_OPT += -n32
  681. else
  682. FCOMMON_OPT += -n64
  683. endif
  684. ifeq ($(CORE), LOONGSON3A)
  685. FCOMMON_OPT += -loongson3 -static
  686. endif
  687. ifeq ($(CORE), LOONGSON3B)
  688. FCOMMON_OPT += -loongson3 -static
  689. endif
  690. else
  691. ifndef BINARY64
  692. FCOMMON_OPT += -m32
  693. else
  694. FCOMMON_OPT += -m64
  695. endif
  696. endif
  697. ifeq ($(USE_OPENMP), 1)
  698. FEXTRALIB += -lstdc++
  699. FCOMMON_OPT += -mp
  700. endif
  701. endif
  702. ifeq ($(C_COMPILER), OPEN64)
  703. ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
  704. ifndef BINARY64
  705. CCOMMON_OPT += -n32
  706. else
  707. CCOMMON_OPT += -n64
  708. endif
  709. ifeq ($(CORE), LOONGSON3A)
  710. CCOMMON_OPT += -loongson3 -static
  711. endif
  712. ifeq ($(CORE), LOONGSON3B)
  713. CCOMMON_OPT += -loongson3 -static
  714. endif
  715. else
  716. ifndef BINARY64
  717. CCOMMON_OPT += -m32
  718. else
  719. CCOMMON_OPT += -m64
  720. endif
  721. endif
  722. endif
  723. ifeq ($(C_COMPILER), SUN)
  724. CCOMMON_OPT += -w
  725. ifeq ($(ARCH), x86)
  726. CCOMMON_OPT += -m32
  727. else
  728. FCOMMON_OPT += -m64
  729. endif
  730. endif
  731. ifeq ($(F_COMPILER), SUN)
  732. CCOMMON_OPT += -DF_INTERFACE_SUN
  733. ifeq ($(ARCH), x86)
  734. FCOMMON_OPT += -m32
  735. else
  736. FCOMMON_OPT += -m64
  737. endif
  738. ifeq ($(USE_OPENMP), 1)
  739. FCOMMON_OPT += -xopenmp=parallel
  740. endif
  741. endif
  742. ifeq ($(F_COMPILER), COMPAQ)
  743. CCOMMON_OPT += -DF_INTERFACE_COMPAQ
  744. ifeq ($(USE_OPENMP), 1)
  745. FCOMMON_OPT += -openmp
  746. endif
  747. endif
  748. ifdef BINARY64
  749. ifdef INTERFACE64
  750. ifneq ($(INTERFACE64), 0)
  751. CCOMMON_OPT +=
  752. #-DUSE64BITINT
  753. endif
  754. endif
  755. endif
  756. ifeq ($(NEED_PIC), 1)
  757. ifeq ($(C_COMPILER), IBM)
  758. CCOMMON_OPT += -qpic=large
  759. else
  760. CCOMMON_OPT += -fPIC
  761. endif
  762. ifeq ($(F_COMPILER), SUN)
  763. FCOMMON_OPT += -pic
  764. else
  765. FCOMMON_OPT += -fPIC
  766. endif
  767. endif
  768. ifeq ($(DYNAMIC_ARCH), 1)
  769. CCOMMON_OPT += -DDYNAMIC_ARCH
  770. endif
  771. ifeq ($(NO_LAPACK), 1)
  772. CCOMMON_OPT += -DNO_LAPACK
  773. #Disable LAPACK C interface
  774. NO_LAPACKE = 1
  775. endif
  776. ifeq ($(NO_LAPACKE), 1)
  777. CCOMMON_OPT += -DNO_LAPACKE
  778. endif
  779. ifeq ($(NO_AVX), 1)
  780. CCOMMON_OPT += -DNO_AVX
  781. endif
  782. ifeq ($(ARCH), x86)
  783. CCOMMON_OPT += -DNO_AVX
  784. endif
  785. ifeq ($(NO_AVX2), 1)
  786. CCOMMON_OPT += -DNO_AVX2
  787. endif
  788. ifeq ($(NO_AVX512), 1)
  789. CCOMMON_OPT += -DNO_AVX512
  790. endif
  791. ifdef SMP
  792. CCOMMON_OPT += -DSMP_SERVER
  793. ifeq ($(ARCH), mips64)
  794. ifneq ($(CORE), LOONGSON3B)
  795. USE_SIMPLE_THREADED_LEVEL3 = 1
  796. endif
  797. endif
  798. ifeq ($(USE_OPENMP), 1)
  799. # USE_SIMPLE_THREADED_LEVEL3 = 1
  800. # NO_AFFINITY = 1
  801. CCOMMON_OPT += -DUSE_OPENMP
  802. endif
  803. ifeq ($(BIGNUMA), 1)
  804. CCOMMON_OPT += -DBIGNUMA
  805. endif
  806. endif
  807. ifeq ($(NO_WARMUP), 1)
  808. CCOMMON_OPT += -DNO_WARMUP
  809. endif
  810. ifeq ($(CONSISTENT_FPCSR), 1)
  811. CCOMMON_OPT += -DCONSISTENT_FPCSR
  812. endif
  813. # Only for development
  814. # CCOMMON_OPT += -DPARAMTEST
  815. # CCOMMON_OPT += -DPREFETCHTEST
  816. # CCOMMON_OPT += -DNO_SWITCHING
  817. # USE_PAPI = 1
  818. ifdef USE_PAPI
  819. CCOMMON_OPT += -DUSE_PAPI
  820. EXTRALIB += -lpapi -lperfctr
  821. endif
  822. ifdef DYNAMIC_THREADS
  823. CCOMMON_OPT += -DDYNAMIC_THREADS
  824. endif
  825. CCOMMON_OPT += -DMAX_CPU_NUMBER=$(NUM_THREADS)
  826. CCOMMON_OPT += -DMAX_PARALLEL_NUMBER=$(NUM_PARALLEL)
  827. ifdef USE_SIMPLE_THREADED_LEVEL3
  828. CCOMMON_OPT += -DUSE_SIMPLE_THREADED_LEVEL3
  829. endif
  830. ifndef SYMBOLPREFIX
  831. SYMBOLPREFIX =
  832. endif
  833. ifndef SYMBOLSUFFIX
  834. SYMBOLSUFFIX =
  835. endif
  836. ifndef LIBNAMESUFFIX
  837. LIBNAMEBASE = $(SYMBOLPREFIX)openblas$(SYMBOLSUFFIX)
  838. else
  839. LIBNAMEBASE = $(SYMBOLPREFIX)openblas$(SYMBOLSUFFIX)_$(LIBNAMESUFFIX)
  840. endif
  841. ifeq ($(OSNAME), CYGWIN_NT)
  842. LIBPREFIX = cyg$(LIBNAMEBASE)
  843. else
  844. LIBPREFIX = lib$(LIBNAMEBASE)
  845. endif
  846. KERNELDIR = $(TOPDIR)/kernel/$(ARCH)
  847. include $(TOPDIR)/Makefile.$(ARCH)
  848. CCOMMON_OPT += -DASMNAME=$(FU)$(*F) -DASMFNAME=$(FU)$(*F)$(BU) -DNAME=$(*F)$(BU) -DCNAME=$(*F) -DCHAR_NAME=\"$(*F)$(BU)\" -DCHAR_CNAME=\"$(*F)\"
  849. ifeq ($(CORE), PPC440)
  850. CCOMMON_OPT += -DALLOC_QALLOC
  851. endif
  852. ifeq ($(CORE), PPC440FP2)
  853. STATIC_ALLOCATION = 1
  854. endif
  855. ifneq ($(OSNAME), Linux)
  856. NO_AFFINITY = 1
  857. endif
  858. ifneq ($(ARCH), x86_64)
  859. ifneq ($(ARCH), x86)
  860. ifneq ($(CORE), LOONGSON3B)
  861. NO_AFFINITY = 1
  862. endif
  863. endif
  864. endif
  865. ifdef NO_AFFINITY
  866. CCOMMON_OPT += -DNO_AFFINITY
  867. endif
  868. ifdef FUNCTION_PROFILE
  869. CCOMMON_OPT += -DFUNCTION_PROFILE
  870. endif
  871. ifdef HUGETLB_ALLOCATION
  872. CCOMMON_OPT += -DALLOC_HUGETLB
  873. endif
  874. ifdef HUGETLBFILE_ALLOCATION
  875. CCOMMON_OPT += -DALLOC_HUGETLBFILE -DHUGETLB_FILE_NAME=$(HUGETLBFILE_ALLOCATION)
  876. endif
  877. ifdef STATIC_ALLOCATION
  878. CCOMMON_OPT += -DALLOC_STATIC
  879. endif
  880. ifdef DEVICEDRIVER_ALLOCATION
  881. CCOMMON_OPT += -DALLOC_DEVICEDRIVER -DDEVICEDRIVER_NAME=\"/dev/mapper\"
  882. endif
  883. ifdef MIXED_MEMORY_ALLOCATION
  884. CCOMMON_OPT += -DMIXED_MEMORY_ALLOCATION
  885. endif
  886. ifeq ($(OSNAME), SunOS)
  887. TAR = gtar
  888. PATCH = gpatch
  889. GREP = ggrep
  890. AWK = nawk
  891. else
  892. TAR = tar
  893. PATCH = patch
  894. GREP = grep
  895. AWK = awk
  896. endif
  897. ifndef MD5SUM
  898. MD5SUM = md5sum
  899. endif
  900. REVISION = -r$(VERSION)
  901. MAJOR_VERSION = $(word 1,$(subst ., ,$(VERSION)))
  902. ifeq ($(DEBUG), 1)
  903. COMMON_OPT += -g
  904. endif
  905. ifeq ($(DEBUG), 1)
  906. FCOMMON_OPT += -g
  907. endif
  908. ifndef COMMON_OPT
  909. COMMON_OPT = -O2
  910. endif
  911. ifndef FCOMMON_OPT
  912. FCOMMON_OPT = -O2 -frecursive
  913. endif
  914. override CFLAGS += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR)
  915. override PFLAGS += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR) -DPROFILE $(COMMON_PROF)
  916. override FFLAGS += $(COMMON_OPT) $(FCOMMON_OPT)
  917. override FPFLAGS += $(FCOMMON_OPT) $(COMMON_PROF)
  918. #MAKEOVERRIDES =
  919. #For LAPACK Fortran codes.
  920. #Disable -fopenmp for LAPACK Fortran codes on Windows.
  921. ifdef OS_WINDOWS
  922. LAPACK_FFLAGS := $(filter-out -fopenmp -mp -openmp -xopenmp=parallel,$(FFLAGS))
  923. LAPACK_FPFLAGS := $(filter-out -fopenmp -mp -openmp -xopenmp=parallel,$(FPFLAGS))
  924. else
  925. LAPACK_FFLAGS := $(FFLAGS)
  926. LAPACK_FPFLAGS := $(FPFLAGS)
  927. endif
  928. LAPACK_CFLAGS = $(CFLAGS)
  929. LAPACK_CFLAGS += -DHAVE_LAPACK_CONFIG_H
  930. ifdef INTERFACE64
  931. ifneq ($(INTERFACE64), 0)
  932. LAPACK_CFLAGS += -DLAPACK_ILP64
  933. endif
  934. endif
  935. ifdef OS_WINDOWS
  936. LAPACK_CFLAGS += -DOPENBLAS_OS_WINDOWS
  937. endif
  938. ifeq ($(C_COMPILER), LSB)
  939. LAPACK_CFLAGS += -DLAPACK_COMPLEX_STRUCTURE
  940. endif
  941. ifndef SUFFIX
  942. SUFFIX = o
  943. endif
  944. ifndef PSUFFIX
  945. PSUFFIX = po
  946. endif
  947. ifndef LIBSUFFIX
  948. LIBSUFFIX = a
  949. endif
  950. ifneq ($(DYNAMIC_ARCH), 1)
  951. ifndef SMP
  952. LIBNAME = $(LIBPREFIX)_$(LIBCORE)$(REVISION).$(LIBSUFFIX)
  953. LIBNAME_P = $(LIBPREFIX)_$(LIBCORE)$(REVISION)_p.$(LIBSUFFIX)
  954. else
  955. LIBNAME = $(LIBPREFIX)_$(LIBCORE)p$(REVISION).$(LIBSUFFIX)
  956. LIBNAME_P = $(LIBPREFIX)_$(LIBCORE)p$(REVISION)_p.$(LIBSUFFIX)
  957. endif
  958. else
  959. ifndef SMP
  960. LIBNAME = $(LIBPREFIX)$(REVISION).$(LIBSUFFIX)
  961. LIBNAME_P = $(LIBPREFIX)$(REVISION)_p.$(LIBSUFFIX)
  962. else
  963. LIBNAME = $(LIBPREFIX)p$(REVISION).$(LIBSUFFIX)
  964. LIBNAME_P = $(LIBPREFIX)p$(REVISION)_p.$(LIBSUFFIX)
  965. endif
  966. endif
  967. LIBDLLNAME = $(LIBPREFIX).dll
  968. IMPLIBNAME = lib$(LIBNAMEBASE).dll.a
  969. LIBSONAME = $(LIBNAME:.$(LIBSUFFIX)=.so)
  970. LIBDYNNAME = $(LIBNAME:.$(LIBSUFFIX)=.dylib)
  971. LIBDEFNAME = $(LIBNAME:.$(LIBSUFFIX)=.def)
  972. LIBEXPNAME = $(LIBNAME:.$(LIBSUFFIX)=.exp)
  973. LIBZIPNAME = $(LIBNAME:.$(LIBSUFFIX)=.zip)
  974. LIBS = $(TOPDIR)/$(LIBNAME)
  975. LIBS_P = $(TOPDIR)/$(LIBNAME_P)
  976. LIB_COMPONENTS = BLAS
  977. ifneq ($(NO_CBLAS), 1)
  978. LIB_COMPONENTS += CBLAS
  979. endif
  980. ifneq ($(NO_LAPACK), 1)
  981. LIB_COMPONENTS += LAPACK
  982. ifneq ($(NO_LAPACKE), 1)
  983. LIB_COMPONENTS += LAPACKE
  984. endif
  985. ifeq ($(BUILD_RELAPACK), 1)
  986. LIB_COMPONENTS += ReLAPACK
  987. endif
  988. endif
  989. ifeq ($(ONLY_CBLAS), 1)
  990. LIB_COMPONENTS = CBLAS
  991. endif
  992. export OSNAME
  993. export ARCH
  994. export CORE
  995. export LIBCORE
  996. export PGCPATH
  997. export CONFIG
  998. export CC
  999. export FC
  1000. export BU
  1001. export FU
  1002. export NEED2UNDERSCORES
  1003. export USE_THREAD
  1004. export NUM_THREADS
  1005. export NUM_CORES
  1006. export SMP
  1007. export MAKEFILE_RULE
  1008. export NEED_PIC
  1009. export BINARY
  1010. export BINARY32
  1011. export BINARY64
  1012. export F_COMPILER
  1013. export C_COMPILER
  1014. export USE_OPENMP
  1015. export CROSS
  1016. export CROSS_SUFFIX
  1017. export NOFORTRAN
  1018. export NO_FBLAS
  1019. export EXTRALIB
  1020. export CEXTRALIB
  1021. export FEXTRALIB
  1022. export HAVE_SSE
  1023. export HAVE_SSE2
  1024. export HAVE_SSE3
  1025. export HAVE_SSSE3
  1026. export HAVE_SSE4_1
  1027. export HAVE_SSE4_2
  1028. export HAVE_SSE4A
  1029. export HAVE_SSE5
  1030. export HAVE_AVX
  1031. export HAVE_VFP
  1032. export HAVE_VFPV3
  1033. export HAVE_VFPV4
  1034. export HAVE_NEON
  1035. export HAVE_MSA
  1036. export MSA_FLAGS
  1037. export KERNELDIR
  1038. export FUNCTION_PROFILE
  1039. export TARGET_CORE
  1040. export NO_AVX512
  1041. export SGEMM_UNROLL_M
  1042. export SGEMM_UNROLL_N
  1043. export DGEMM_UNROLL_M
  1044. export DGEMM_UNROLL_N
  1045. export QGEMM_UNROLL_M
  1046. export QGEMM_UNROLL_N
  1047. export CGEMM_UNROLL_M
  1048. export CGEMM_UNROLL_N
  1049. export ZGEMM_UNROLL_M
  1050. export ZGEMM_UNROLL_N
  1051. export XGEMM_UNROLL_M
  1052. export XGEMM_UNROLL_N
  1053. export CGEMM3M_UNROLL_M
  1054. export CGEMM3M_UNROLL_N
  1055. export ZGEMM3M_UNROLL_M
  1056. export ZGEMM3M_UNROLL_N
  1057. export XGEMM3M_UNROLL_M
  1058. export XGEMM3M_UNROLL_N
  1059. ifdef USE_CUDA
  1060. export CUDADIR
  1061. export CUCC
  1062. export CUFLAGS
  1063. export CULIB
  1064. endif
  1065. .SUFFIXES: .$(PSUFFIX) .$(SUFFIX) .f
  1066. .f.$(SUFFIX):
  1067. $(FC) $(FFLAGS) -c $< -o $(@F)
  1068. .f.$(PSUFFIX):
  1069. $(FC) $(FPFLAGS) -pg -c $< -o $(@F)
  1070. ifdef BINARY64
  1071. PATHSCALEPATH = /opt/pathscale/lib/3.1
  1072. PGIPATH = /opt/pgi/linux86-64/7.1-5/lib
  1073. else
  1074. PATHSCALEPATH = /opt/pathscale/lib/3.1/32
  1075. PGIPATH = /opt/pgi/linux86/7.1-5/lib
  1076. endif
  1077. ACMLPATH = /opt/acml/4.3.0
  1078. ifneq ($(OSNAME), Darwin)
  1079. MKLPATH = /opt/intel/mkl/10.2.2.025/lib
  1080. else
  1081. MKLPATH = /Library/Frameworks/Intel_MKL.framework/Versions/10.0.1.014/lib
  1082. endif
  1083. ATLASPATH = /opt/atlas/3.9.17/opteron
  1084. FLAMEPATH = $(HOME)/flame/lib
  1085. ifneq ($(OSNAME), SunOS)
  1086. SUNPATH = /opt/sunstudio12.1
  1087. else
  1088. SUNPATH = /opt/SUNWspro
  1089. endif