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
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325
  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
  387. ifeq ($(DYNAMIC_OLDER), 1)
  388. DYNAMIC_CORE += PENRYN DUNNINGTON
  389. endif
  390. DYNAMIC_CORE += NEHALEM
  391. ifeq ($(DYNAMIC_OLDER), 1)
  392. DYNAMIC_CORE += OPTERON OPTERON_SSE3
  393. endif
  394. DYNAMIC_CORE += BARCELONA
  395. ifeq ($(DYNAMIC_OLDER), 1)
  396. DYNAMIC_CORE += BOBCAT ATOM NANO
  397. endif
  398. ifneq ($(NO_AVX), 1)
  399. DYNAMIC_CORE += SANDYBRIDGE BULLDOZER PILEDRIVER STEAMROLLER EXCAVATOR
  400. endif
  401. ifneq ($(NO_AVX2), 1)
  402. DYNAMIC_CORE += HASWELL ZEN
  403. endif
  404. ifneq ($(NO_AVX512), 1)
  405. ifneq ($(NO_AVX2), 1)
  406. DYNAMIC_CORE += SKYLAKEX
  407. endif
  408. endif
  409. endif
  410. # If DYNAMIC_CORE is not set, DYNAMIC_ARCH cannot do anything, so force it to empty
  411. ifndef DYNAMIC_CORE
  412. override DYNAMIC_ARCH=
  413. endif
  414. endif
  415. ifeq ($(ARCH), ia64)
  416. NO_BINARY_MODE = 1
  417. BINARY_DEFINED = 1
  418. ifeq ($(F_COMPILER), GFORTRAN)
  419. ifeq ($(C_COMPILER), GCC)
  420. # EXPRECISION = 1
  421. # CCOMMON_OPT += -DEXPRECISION
  422. endif
  423. endif
  424. endif
  425. ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
  426. NO_BINARY_MODE = 1
  427. endif
  428. ifeq ($(ARCH), alpha)
  429. NO_BINARY_MODE = 1
  430. BINARY_DEFINED = 1
  431. endif
  432. ifeq ($(ARCH), arm)
  433. NO_BINARY_MODE = 1
  434. BINARY_DEFINED = 1
  435. CCOMMON_OPT += -marm
  436. FCOMMON_OPT += -marm
  437. # If softfp abi is mentioned on the command line, force it.
  438. ifeq ($(ARM_SOFTFP_ABI), 1)
  439. CCOMMON_OPT += -mfloat-abi=softfp
  440. FCOMMON_OPT += -mfloat-abi=softfp
  441. endif
  442. ifeq ($(OSNAME), Android)
  443. ifeq ($(ARM_SOFTFP_ABI), 1)
  444. EXTRALIB += -lm
  445. else
  446. EXTRALIB += -Wl,-lm_hard
  447. endif
  448. endif
  449. endif
  450. ifeq ($(ARCH), arm64)
  451. NO_BINARY_MODE = 1
  452. BINARY_DEFINED = 1
  453. endif
  454. #
  455. # C Compiler dependent settings
  456. #
  457. # ifeq logical or. GCC or CLANG or LSB
  458. # http://stackoverflow.com/questions/7656425/makefile-ifeq-logical-or
  459. ifeq ($(C_COMPILER), $(filter $(C_COMPILER),GCC CLANG LSB))
  460. CCOMMON_OPT += -Wall
  461. COMMON_PROF += -fno-inline
  462. NO_UNINITIALIZED_WARN = -Wno-uninitialized
  463. ifeq ($(QUIET_MAKE), 1)
  464. CCOMMON_OPT += $(NO_UNINITIALIZED_WARN) -Wno-unused
  465. endif
  466. ifdef NO_BINARY_MODE
  467. ifeq ($(ARCH), $(filter $(ARCH),mips64))
  468. ifdef BINARY64
  469. CCOMMON_OPT += -mabi=64
  470. else
  471. CCOMMON_OPT += -mabi=n32
  472. endif
  473. BINARY_DEFINED = 1
  474. else ifeq ($(ARCH), $(filter $(ARCH),mips))
  475. CCOMMON_OPT += -mabi=32
  476. BINARY_DEFINED = 1
  477. endif
  478. ifeq ($(CORE), LOONGSON3A)
  479. CCOMMON_OPT += -march=mips64
  480. FCOMMON_OPT += -march=mips64
  481. endif
  482. ifeq ($(CORE), LOONGSON3B)
  483. CCOMMON_OPT += -march=mips64
  484. FCOMMON_OPT += -march=mips64
  485. endif
  486. ifeq ($(CORE), 1004K)
  487. CCOMMON_OPT += -mips32r2 $(MSA_FLAGS)
  488. FCOMMON_OPT += -mips32r2 $(MSA_FLAGS)
  489. endif
  490. ifeq ($(CORE), P5600)
  491. CCOMMON_OPT += -mips32r5 -mnan=2008 -mtune=p5600 $(MSA_FLAGS)
  492. FCOMMON_OPT += -mips32r5 -mnan=2008 -mtune=p5600 $(MSA_FLAGS)
  493. endif
  494. ifeq ($(CORE), I6400)
  495. CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
  496. FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
  497. endif
  498. ifeq ($(CORE), P6600)
  499. CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=p6600 $(MSA_FLAGS)
  500. FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=p6600 $(MSA_FLAGS)
  501. endif
  502. ifeq ($(CORE), I6500)
  503. CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
  504. FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS)
  505. endif
  506. ifeq ($(OSNAME), AIX)
  507. BINARY_DEFINED = 1
  508. endif
  509. endif
  510. ifndef BINARY_DEFINED
  511. ifneq ($(OSNAME), AIX)
  512. ifdef BINARY64
  513. CCOMMON_OPT += -m64
  514. else
  515. CCOMMON_OPT += -m32
  516. endif
  517. endif
  518. endif
  519. endif
  520. ifeq ($(C_COMPILER), PGI)
  521. ifdef BINARY64
  522. CCOMMON_OPT += -tp p7-64
  523. else
  524. CCOMMON_OPT += -tp p7
  525. endif
  526. endif
  527. ifeq ($(C_COMPILER), PATHSCALE)
  528. ifdef BINARY64
  529. CCOMMON_OPT += -m64
  530. else
  531. CCOMMON_OPT += -m32
  532. endif
  533. endif
  534. #
  535. # Fortran Compiler dependent settings
  536. #
  537. ifeq ($(F_COMPILER), FLANG)
  538. CCOMMON_OPT += -DF_INTERFACE_FLANG
  539. ifdef BINARY64
  540. ifdef INTERFACE64
  541. ifneq ($(INTERFACE64), 0)
  542. FCOMMON_OPT += -i8
  543. endif
  544. endif
  545. FCOMMON_OPT += -Wall
  546. else
  547. FCOMMON_OPT += -Wall
  548. endif
  549. ifeq ($(USE_OPENMP), 1)
  550. FCOMMON_OPT += -fopenmp
  551. endif
  552. endif
  553. ifeq ($(F_COMPILER), G77)
  554. CCOMMON_OPT += -DF_INTERFACE_G77
  555. FCOMMON_OPT += -Wall
  556. ifndef NO_BINARY_MODE
  557. ifneq ($(OSNAME), AIX)
  558. ifdef BINARY64
  559. FCOMMON_OPT += -m64
  560. else
  561. FCOMMON_OPT += -m32
  562. endif
  563. endif
  564. endif
  565. endif
  566. ifeq ($(F_COMPILER), G95)
  567. CCOMMON_OPT += -DF_INTERFACE_G95
  568. FCOMMON_OPT += -Wall
  569. ifneq ($(OSNAME), AIX)
  570. ifndef NO_BINARY_MODE
  571. ifdef BINARY64
  572. FCOMMON_OPT += -m64
  573. else
  574. FCOMMON_OPT += -m32
  575. endif
  576. endif
  577. endif
  578. endif
  579. ifeq ($(F_COMPILER), GFORTRAN)
  580. CCOMMON_OPT += -DF_INTERFACE_GFORT
  581. FCOMMON_OPT += -Wall
  582. #Don't include -lgfortran, when NO_LAPACK=1 or lsbcc
  583. ifneq ($(NO_LAPACK), 1)
  584. EXTRALIB += -lgfortran
  585. endif
  586. ifdef NO_BINARY_MODE
  587. ifeq ($(ARCH), $(filter $(ARCH),mips64))
  588. ifdef BINARY64
  589. FCOMMON_OPT += -mabi=64
  590. else
  591. FCOMMON_OPT += -mabi=n32
  592. endif
  593. else ifeq ($(ARCH), $(filter $(ARCH),mips))
  594. FCOMMON_OPT += -mabi=32
  595. endif
  596. else
  597. ifdef BINARY64
  598. ifneq ($(OSNAME), AIX)
  599. FCOMMON_OPT += -m64
  600. endif
  601. ifdef INTERFACE64
  602. ifneq ($(INTERFACE64), 0)
  603. FCOMMON_OPT += -fdefault-integer-8
  604. endif
  605. endif
  606. else
  607. ifneq ($(OSNAME), AIX)
  608. FCOMMON_OPT += -m32
  609. endif
  610. endif
  611. endif
  612. ifeq ($(USE_OPENMP), 1)
  613. FCOMMON_OPT += -fopenmp
  614. endif
  615. endif
  616. ifeq ($(F_COMPILER), INTEL)
  617. CCOMMON_OPT += -DF_INTERFACE_INTEL
  618. ifdef INTERFACE64
  619. ifneq ($(INTERFACE64), 0)
  620. FCOMMON_OPT += -i8
  621. endif
  622. endif
  623. ifeq ($(USE_OPENMP), 1)
  624. FCOMMON_OPT += -fopenmp
  625. endif
  626. endif
  627. ifeq ($(F_COMPILER), FUJITSU)
  628. CCOMMON_OPT += -DF_INTERFACE_FUJITSU
  629. ifeq ($(USE_OPENMP), 1)
  630. FCOMMON_OPT += -openmp
  631. endif
  632. endif
  633. ifeq ($(F_COMPILER), IBM)
  634. CCOMMON_OPT += -DF_INTERFACE_IBM
  635. # FCOMMON_OPT += -qarch=440
  636. ifdef BINARY64
  637. FCOMMON_OPT += -q64
  638. ifdef INTERFACE64
  639. ifneq ($(INTERFACE64), 0)
  640. FCOMMON_OPT += -qintsize=8
  641. endif
  642. endif
  643. else
  644. FCOMMON_OPT += -q32
  645. endif
  646. ifeq ($(USE_OPENMP), 1)
  647. FCOMMON_OPT += -openmp
  648. endif
  649. endif
  650. ifeq ($(F_COMPILER), PGI)
  651. CCOMMON_OPT += -DF_INTERFACE_PGI
  652. COMMON_PROF += -DPGICOMPILER
  653. ifdef BINARY64
  654. ifdef INTERFACE64
  655. ifneq ($(INTERFACE64), 0)
  656. FCOMMON_OPT += -i8
  657. endif
  658. endif
  659. FCOMMON_OPT += -tp p7-64
  660. else
  661. FCOMMON_OPT += -tp p7
  662. endif
  663. ifeq ($(USE_OPENMP), 1)
  664. FCOMMON_OPT += -mp
  665. endif
  666. endif
  667. ifeq ($(F_COMPILER), PATHSCALE)
  668. CCOMMON_OPT += -DF_INTERFACE_PATHSCALE
  669. ifdef BINARY64
  670. ifdef INTERFACE64
  671. ifneq ($(INTERFACE64), 0)
  672. FCOMMON_OPT += -i8
  673. endif
  674. endif
  675. endif
  676. ifeq ($(USE_OPENMP), 1)
  677. FCOMMON_OPT += -mp
  678. endif
  679. endif
  680. ifeq ($(F_COMPILER), OPEN64)
  681. CCOMMON_OPT += -DF_INTERFACE_OPEN64
  682. ifdef BINARY64
  683. ifdef INTERFACE64
  684. ifneq ($(INTERFACE64), 0)
  685. FCOMMON_OPT += -i8
  686. endif
  687. endif
  688. endif
  689. ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
  690. ifndef BINARY64
  691. FCOMMON_OPT += -n32
  692. else
  693. FCOMMON_OPT += -n64
  694. endif
  695. ifeq ($(CORE), LOONGSON3A)
  696. FCOMMON_OPT += -loongson3 -static
  697. endif
  698. ifeq ($(CORE), LOONGSON3B)
  699. FCOMMON_OPT += -loongson3 -static
  700. endif
  701. else
  702. ifndef BINARY64
  703. FCOMMON_OPT += -m32
  704. else
  705. FCOMMON_OPT += -m64
  706. endif
  707. endif
  708. ifeq ($(USE_OPENMP), 1)
  709. FEXTRALIB += -lstdc++
  710. FCOMMON_OPT += -mp
  711. endif
  712. endif
  713. ifeq ($(C_COMPILER), OPEN64)
  714. ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
  715. ifndef BINARY64
  716. CCOMMON_OPT += -n32
  717. else
  718. CCOMMON_OPT += -n64
  719. endif
  720. ifeq ($(CORE), LOONGSON3A)
  721. CCOMMON_OPT += -loongson3 -static
  722. endif
  723. ifeq ($(CORE), LOONGSON3B)
  724. CCOMMON_OPT += -loongson3 -static
  725. endif
  726. else
  727. ifndef BINARY64
  728. CCOMMON_OPT += -m32
  729. else
  730. CCOMMON_OPT += -m64
  731. endif
  732. endif
  733. endif
  734. ifeq ($(C_COMPILER), SUN)
  735. CCOMMON_OPT += -w
  736. ifeq ($(ARCH), x86)
  737. CCOMMON_OPT += -m32
  738. else
  739. FCOMMON_OPT += -m64
  740. endif
  741. endif
  742. ifeq ($(F_COMPILER), SUN)
  743. CCOMMON_OPT += -DF_INTERFACE_SUN
  744. ifeq ($(ARCH), x86)
  745. FCOMMON_OPT += -m32
  746. else
  747. FCOMMON_OPT += -m64
  748. endif
  749. ifeq ($(USE_OPENMP), 1)
  750. FCOMMON_OPT += -xopenmp=parallel
  751. endif
  752. endif
  753. ifeq ($(F_COMPILER), COMPAQ)
  754. CCOMMON_OPT += -DF_INTERFACE_COMPAQ
  755. ifeq ($(USE_OPENMP), 1)
  756. FCOMMON_OPT += -openmp
  757. endif
  758. endif
  759. ifdef BINARY64
  760. ifdef INTERFACE64
  761. ifneq ($(INTERFACE64), 0)
  762. CCOMMON_OPT +=
  763. #-DUSE64BITINT
  764. endif
  765. endif
  766. endif
  767. ifeq ($(NEED_PIC), 1)
  768. ifeq ($(C_COMPILER), IBM)
  769. CCOMMON_OPT += -qpic=large
  770. else
  771. CCOMMON_OPT += -fPIC
  772. endif
  773. ifeq ($(F_COMPILER), SUN)
  774. FCOMMON_OPT += -pic
  775. else
  776. FCOMMON_OPT += -fPIC
  777. endif
  778. endif
  779. ifeq ($(DYNAMIC_ARCH), 1)
  780. CCOMMON_OPT += -DDYNAMIC_ARCH
  781. endif
  782. ifeq ($(DYNAMIC_OLDER), 1)
  783. CCOMMON_OPT += -DDYNAMIC_OLDER
  784. endif
  785. ifeq ($(NO_LAPACK), 1)
  786. CCOMMON_OPT += -DNO_LAPACK
  787. #Disable LAPACK C interface
  788. NO_LAPACKE = 1
  789. endif
  790. ifeq ($(NO_LAPACKE), 1)
  791. CCOMMON_OPT += -DNO_LAPACKE
  792. endif
  793. ifeq ($(NO_AVX), 1)
  794. CCOMMON_OPT += -DNO_AVX
  795. endif
  796. ifeq ($(ARCH), x86)
  797. CCOMMON_OPT += -DNO_AVX
  798. endif
  799. ifeq ($(NO_AVX2), 1)
  800. CCOMMON_OPT += -DNO_AVX2
  801. endif
  802. ifeq ($(NO_AVX512), 1)
  803. CCOMMON_OPT += -DNO_AVX512
  804. endif
  805. ifdef SMP
  806. CCOMMON_OPT += -DSMP_SERVER
  807. ifeq ($(ARCH), mips64)
  808. ifneq ($(CORE), LOONGSON3B)
  809. USE_SIMPLE_THREADED_LEVEL3 = 1
  810. endif
  811. endif
  812. ifeq ($(USE_OPENMP), 1)
  813. # USE_SIMPLE_THREADED_LEVEL3 = 1
  814. # NO_AFFINITY = 1
  815. CCOMMON_OPT += -DUSE_OPENMP
  816. endif
  817. ifeq ($(BIGNUMA), 1)
  818. CCOMMON_OPT += -DBIGNUMA
  819. endif
  820. endif
  821. ifeq ($(NO_WARMUP), 1)
  822. CCOMMON_OPT += -DNO_WARMUP
  823. endif
  824. ifeq ($(CONSISTENT_FPCSR), 1)
  825. CCOMMON_OPT += -DCONSISTENT_FPCSR
  826. endif
  827. # Only for development
  828. # CCOMMON_OPT += -DPARAMTEST
  829. # CCOMMON_OPT += -DPREFETCHTEST
  830. # CCOMMON_OPT += -DNO_SWITCHING
  831. # USE_PAPI = 1
  832. ifdef USE_PAPI
  833. CCOMMON_OPT += -DUSE_PAPI
  834. EXTRALIB += -lpapi -lperfctr
  835. endif
  836. ifdef DYNAMIC_THREADS
  837. CCOMMON_OPT += -DDYNAMIC_THREADS
  838. endif
  839. CCOMMON_OPT += -DMAX_CPU_NUMBER=$(NUM_THREADS)
  840. CCOMMON_OPT += -DMAX_PARALLEL_NUMBER=$(NUM_PARALLEL)
  841. ifdef USE_SIMPLE_THREADED_LEVEL3
  842. CCOMMON_OPT += -DUSE_SIMPLE_THREADED_LEVEL3
  843. endif
  844. ifndef SYMBOLPREFIX
  845. SYMBOLPREFIX =
  846. endif
  847. ifndef SYMBOLSUFFIX
  848. SYMBOLSUFFIX =
  849. endif
  850. ifndef LIBNAMESUFFIX
  851. LIBNAMEBASE = $(SYMBOLPREFIX)openblas$(SYMBOLSUFFIX)
  852. else
  853. LIBNAMEBASE = $(SYMBOLPREFIX)openblas$(SYMBOLSUFFIX)_$(LIBNAMESUFFIX)
  854. endif
  855. ifeq ($(OSNAME), CYGWIN_NT)
  856. LIBPREFIX = cyg$(LIBNAMEBASE)
  857. else
  858. LIBPREFIX = lib$(LIBNAMEBASE)
  859. endif
  860. KERNELDIR = $(TOPDIR)/kernel/$(ARCH)
  861. include $(TOPDIR)/Makefile.$(ARCH)
  862. CCOMMON_OPT += -DASMNAME=$(FU)$(*F) -DASMFNAME=$(FU)$(*F)$(BU) -DNAME=$(*F)$(BU) -DCNAME=$(*F) -DCHAR_NAME=\"$(*F)$(BU)\" -DCHAR_CNAME=\"$(*F)\"
  863. ifeq ($(CORE), PPC440)
  864. CCOMMON_OPT += -DALLOC_QALLOC
  865. endif
  866. ifeq ($(CORE), PPC440FP2)
  867. STATIC_ALLOCATION = 1
  868. endif
  869. ifneq ($(OSNAME), Linux)
  870. NO_AFFINITY = 1
  871. endif
  872. ifneq ($(ARCH), x86_64)
  873. ifneq ($(ARCH), x86)
  874. ifneq ($(CORE), LOONGSON3B)
  875. NO_AFFINITY = 1
  876. endif
  877. endif
  878. endif
  879. ifdef NO_AFFINITY
  880. CCOMMON_OPT += -DNO_AFFINITY
  881. endif
  882. ifdef FUNCTION_PROFILE
  883. CCOMMON_OPT += -DFUNCTION_PROFILE
  884. endif
  885. ifdef HUGETLB_ALLOCATION
  886. CCOMMON_OPT += -DALLOC_HUGETLB
  887. endif
  888. ifdef HUGETLBFILE_ALLOCATION
  889. CCOMMON_OPT += -DALLOC_HUGETLBFILE -DHUGETLB_FILE_NAME=$(HUGETLBFILE_ALLOCATION)
  890. endif
  891. ifdef STATIC_ALLOCATION
  892. CCOMMON_OPT += -DALLOC_STATIC
  893. endif
  894. ifdef DEVICEDRIVER_ALLOCATION
  895. CCOMMON_OPT += -DALLOC_DEVICEDRIVER -DDEVICEDRIVER_NAME=\"/dev/mapper\"
  896. endif
  897. ifdef MIXED_MEMORY_ALLOCATION
  898. CCOMMON_OPT += -DMIXED_MEMORY_ALLOCATION
  899. endif
  900. ifeq ($(OSNAME), SunOS)
  901. TAR = gtar
  902. PATCH = gpatch
  903. GREP = ggrep
  904. AWK = nawk
  905. else
  906. TAR = tar
  907. PATCH = patch
  908. GREP = grep
  909. AWK = awk
  910. endif
  911. ifndef MD5SUM
  912. MD5SUM = md5sum
  913. endif
  914. REVISION = -r$(VERSION)
  915. MAJOR_VERSION = $(word 1,$(subst ., ,$(VERSION)))
  916. ifeq ($(DEBUG), 1)
  917. COMMON_OPT += -g
  918. endif
  919. ifeq ($(DEBUG), 1)
  920. FCOMMON_OPT += -g
  921. endif
  922. ifndef COMMON_OPT
  923. COMMON_OPT = -O2
  924. endif
  925. ifndef FCOMMON_OPT
  926. FCOMMON_OPT = -O2 -frecursive
  927. endif
  928. override CFLAGS += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR)
  929. override PFLAGS += $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR) -DPROFILE $(COMMON_PROF)
  930. override FFLAGS += $(COMMON_OPT) $(FCOMMON_OPT)
  931. override FPFLAGS += $(FCOMMON_OPT) $(COMMON_PROF)
  932. #MAKEOVERRIDES =
  933. #For LAPACK Fortran codes.
  934. #Disable -fopenmp for LAPACK Fortran codes on Windows.
  935. ifdef OS_WINDOWS
  936. LAPACK_FFLAGS := $(filter-out -fopenmp -mp -openmp -xopenmp=parallel,$(FFLAGS))
  937. LAPACK_FPFLAGS := $(filter-out -fopenmp -mp -openmp -xopenmp=parallel,$(FPFLAGS))
  938. else
  939. LAPACK_FFLAGS := $(FFLAGS)
  940. LAPACK_FPFLAGS := $(FPFLAGS)
  941. endif
  942. LAPACK_CFLAGS = $(CFLAGS)
  943. LAPACK_CFLAGS += -DHAVE_LAPACK_CONFIG_H
  944. ifdef INTERFACE64
  945. ifneq ($(INTERFACE64), 0)
  946. LAPACK_CFLAGS += -DLAPACK_ILP64
  947. endif
  948. endif
  949. ifdef OS_WINDOWS
  950. LAPACK_CFLAGS += -DOPENBLAS_OS_WINDOWS
  951. endif
  952. ifeq ($(C_COMPILER), LSB)
  953. LAPACK_CFLAGS += -DLAPACK_COMPLEX_STRUCTURE
  954. endif
  955. ifndef SUFFIX
  956. SUFFIX = o
  957. endif
  958. ifndef PSUFFIX
  959. PSUFFIX = po
  960. endif
  961. ifndef LIBSUFFIX
  962. LIBSUFFIX = a
  963. endif
  964. ifneq ($(DYNAMIC_ARCH), 1)
  965. ifndef SMP
  966. LIBNAME = $(LIBPREFIX)_$(LIBCORE)$(REVISION).$(LIBSUFFIX)
  967. LIBNAME_P = $(LIBPREFIX)_$(LIBCORE)$(REVISION)_p.$(LIBSUFFIX)
  968. else
  969. LIBNAME = $(LIBPREFIX)_$(LIBCORE)p$(REVISION).$(LIBSUFFIX)
  970. LIBNAME_P = $(LIBPREFIX)_$(LIBCORE)p$(REVISION)_p.$(LIBSUFFIX)
  971. endif
  972. else
  973. ifndef SMP
  974. LIBNAME = $(LIBPREFIX)$(REVISION).$(LIBSUFFIX)
  975. LIBNAME_P = $(LIBPREFIX)$(REVISION)_p.$(LIBSUFFIX)
  976. else
  977. LIBNAME = $(LIBPREFIX)p$(REVISION).$(LIBSUFFIX)
  978. LIBNAME_P = $(LIBPREFIX)p$(REVISION)_p.$(LIBSUFFIX)
  979. endif
  980. endif
  981. LIBDLLNAME = $(LIBPREFIX).dll
  982. IMPLIBNAME = lib$(LIBNAMEBASE).dll.a
  983. LIBSONAME = $(LIBNAME:.$(LIBSUFFIX)=.so)
  984. LIBDYNNAME = $(LIBNAME:.$(LIBSUFFIX)=.dylib)
  985. LIBDEFNAME = $(LIBNAME:.$(LIBSUFFIX)=.def)
  986. LIBEXPNAME = $(LIBNAME:.$(LIBSUFFIX)=.exp)
  987. LIBZIPNAME = $(LIBNAME:.$(LIBSUFFIX)=.zip)
  988. LIBS = $(TOPDIR)/$(LIBNAME)
  989. LIBS_P = $(TOPDIR)/$(LIBNAME_P)
  990. LIB_COMPONENTS = BLAS
  991. ifneq ($(NO_CBLAS), 1)
  992. LIB_COMPONENTS += CBLAS
  993. endif
  994. ifneq ($(NO_LAPACK), 1)
  995. LIB_COMPONENTS += LAPACK
  996. ifneq ($(NO_LAPACKE), 1)
  997. LIB_COMPONENTS += LAPACKE
  998. endif
  999. ifeq ($(BUILD_RELAPACK), 1)
  1000. LIB_COMPONENTS += ReLAPACK
  1001. endif
  1002. endif
  1003. ifeq ($(ONLY_CBLAS), 1)
  1004. LIB_COMPONENTS = CBLAS
  1005. endif
  1006. export OSNAME
  1007. export ARCH
  1008. export CORE
  1009. export LIBCORE
  1010. export PGCPATH
  1011. export CONFIG
  1012. export CC
  1013. export FC
  1014. export BU
  1015. export FU
  1016. export NEED2UNDERSCORES
  1017. export USE_THREAD
  1018. export NUM_THREADS
  1019. export NUM_CORES
  1020. export SMP
  1021. export MAKEFILE_RULE
  1022. export NEED_PIC
  1023. export BINARY
  1024. export BINARY32
  1025. export BINARY64
  1026. export F_COMPILER
  1027. export C_COMPILER
  1028. export USE_OPENMP
  1029. export CROSS
  1030. export CROSS_SUFFIX
  1031. export NOFORTRAN
  1032. export NO_FBLAS
  1033. export EXTRALIB
  1034. export CEXTRALIB
  1035. export FEXTRALIB
  1036. export HAVE_SSE
  1037. export HAVE_SSE2
  1038. export HAVE_SSE3
  1039. export HAVE_SSSE3
  1040. export HAVE_SSE4_1
  1041. export HAVE_SSE4_2
  1042. export HAVE_SSE4A
  1043. export HAVE_SSE5
  1044. export HAVE_AVX
  1045. export HAVE_VFP
  1046. export HAVE_VFPV3
  1047. export HAVE_VFPV4
  1048. export HAVE_NEON
  1049. export HAVE_MSA
  1050. export MSA_FLAGS
  1051. export KERNELDIR
  1052. export FUNCTION_PROFILE
  1053. export TARGET_CORE
  1054. export NO_AVX512
  1055. export SGEMM_UNROLL_M
  1056. export SGEMM_UNROLL_N
  1057. export DGEMM_UNROLL_M
  1058. export DGEMM_UNROLL_N
  1059. export QGEMM_UNROLL_M
  1060. export QGEMM_UNROLL_N
  1061. export CGEMM_UNROLL_M
  1062. export CGEMM_UNROLL_N
  1063. export ZGEMM_UNROLL_M
  1064. export ZGEMM_UNROLL_N
  1065. export XGEMM_UNROLL_M
  1066. export XGEMM_UNROLL_N
  1067. export CGEMM3M_UNROLL_M
  1068. export CGEMM3M_UNROLL_N
  1069. export ZGEMM3M_UNROLL_M
  1070. export ZGEMM3M_UNROLL_N
  1071. export XGEMM3M_UNROLL_M
  1072. export XGEMM3M_UNROLL_N
  1073. ifdef USE_CUDA
  1074. export CUDADIR
  1075. export CUCC
  1076. export CUFLAGS
  1077. export CULIB
  1078. endif
  1079. .SUFFIXES: .$(PSUFFIX) .$(SUFFIX) .f
  1080. .f.$(SUFFIX):
  1081. $(FC) $(FFLAGS) -c $< -o $(@F)
  1082. .f.$(PSUFFIX):
  1083. $(FC) $(FPFLAGS) -pg -c $< -o $(@F)
  1084. ifdef BINARY64
  1085. PATHSCALEPATH = /opt/pathscale/lib/3.1
  1086. PGIPATH = /opt/pgi/linux86-64/7.1-5/lib
  1087. else
  1088. PATHSCALEPATH = /opt/pathscale/lib/3.1/32
  1089. PGIPATH = /opt/pgi/linux86/7.1-5/lib
  1090. endif
  1091. ACMLPATH = /opt/acml/4.3.0
  1092. ifneq ($(OSNAME), Darwin)
  1093. MKLPATH = /opt/intel/mkl/10.2.2.025/lib
  1094. else
  1095. MKLPATH = /Library/Frameworks/Intel_MKL.framework/Versions/10.0.1.014/lib
  1096. endif
  1097. ATLASPATH = /opt/atlas/3.9.17/opteron
  1098. FLAMEPATH = $(HOME)/flame/lib
  1099. ifneq ($(OSNAME), SunOS)
  1100. SUNPATH = /opt/sunstudio12.1
  1101. else
  1102. SUNPATH = /opt/SUNWspro
  1103. endif