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