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