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 26 kB

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