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