You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

Makefile.system 24 kB

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