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

Makefile.system 24 kB

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