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