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

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