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

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