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