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 26 kB

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