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