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

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