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