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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827
  1. #
  2. # Include user definition
  3. #
  4. # TO suppress recursive includes
  5. INCLUDED = 1
  6. ifndef TOPDIR
  7. TOPDIR = .
  8. endif
  9. ifndef NETLIB_LAPACK_DIR
  10. NETLIB_LAPACK_DIR = $(TOPDIR)/lapack-3.4.1
  11. endif
  12. # Default C compiler
  13. # - Only set if not specified on the command line or inherited from the environment.
  14. # - CC is an implicit variable so neither '?=' or 'ifndef' can be used.
  15. # http://stackoverflow.com/questions/4029274/mingw-and-make-variables
  16. # - Default value is 'cc' which is not always a valid command (e.g. MinGW).
  17. ifeq ($(origin CC),default)
  18. CC = gcc
  19. endif
  20. # Default Fortran compiler (FC) is selected by f_check.
  21. ifndef MAKEFILE_RULE
  22. include $(TOPDIR)/Makefile.rule
  23. else
  24. include $(TOPDIR)/$(MAKEFILE_RULE)
  25. endif
  26. #
  27. # Beginning of system configuration
  28. #
  29. ifndef HOSTCC
  30. HOSTCC = $(CC)
  31. endif
  32. ifdef TARGET
  33. GETARCH_FLAGS := -DFORCE_$(TARGET)
  34. endif
  35. #TARGET_CORE will override TARGET which is used in DYNAMIC_ARCH=1.
  36. #
  37. ifdef TARGET_CORE
  38. GETARCH_FLAGS := -DFORCE_$(TARGET_CORE)
  39. endif
  40. ifdef INTERFACE64
  41. GETARCH_FLAGS += -DUSE64BITINT
  42. endif
  43. ifndef GEMM_MULTITHREAD_THRESHOLD
  44. GEMM_MULTITHREAD_THRESHOLD=50
  45. endif
  46. GETARCH_FLAGS += -DGEMM_MULTITHREAD_THRESHOLD=$(GEMM_MULTITHREAD_THRESHOLD)
  47. # This operation is expensive, so execution should be once.
  48. ifndef GOTOBLAS_MAKEFILE
  49. export GOTOBLAS_MAKEFILE = 1
  50. # Generating Makefile.conf and config.h
  51. DUMMY := $(shell $(MAKE) -C $(TOPDIR) -f Makefile.getarch CC="$(CC)" FC="$(FC)" HOSTCC="$(HOSTCC)" CFLAGS="$(GETARCH_FLAGS)" BINARY=$(BINARY) USE_OPENMP=$(USE_OPENMP) TARGET_CORE=$(TARGET_CORE) all)
  52. ifndef TARGET_CORE
  53. include $(TOPDIR)/Makefile.conf
  54. else
  55. include $(TOPDIR)/Makefile_kernel.conf
  56. endif
  57. endif
  58. ifndef NUM_THREADS
  59. NUM_THREADS = $(NUM_CORES)
  60. endif
  61. ifeq ($(NUM_THREADS), 1)
  62. override USE_THREAD = 0
  63. endif
  64. ifdef USE_THREAD
  65. ifeq ($(USE_THREAD), 0)
  66. SMP =
  67. else
  68. SMP = 1
  69. endif
  70. else
  71. ifeq ($(NUM_THREAD), 1)
  72. SMP =
  73. else
  74. SMP = 1
  75. endif
  76. endif
  77. ifndef NEED_PIC
  78. NEED_PIC = 1
  79. endif
  80. ARFLAGS =
  81. CPP = $(COMPILER) -E
  82. AR = $(CROSS_SUFFIX)ar
  83. AS = $(CROSS_SUFFIX)as
  84. LD = $(CROSS_SUFFIX)ld
  85. RANLIB = $(CROSS_SUFFIX)ranlib
  86. NM = $(CROSS_SUFFIX)nm
  87. DLLWRAP = $(CROSS_SUFFIX)dllwrap
  88. #
  89. # OS dependent settings
  90. #
  91. ifeq ($(OSNAME), Darwin)
  92. export MACOSX_DEPLOYMENT_TARGET=10.2
  93. MD5SUM = md5 -r
  94. endif
  95. ifeq ($(OSNAME), FreeBSD)
  96. MD5SUM = md5 -r
  97. endif
  98. ifeq ($(OSNAME), NetBSD)
  99. MD5SUM = md5 -r
  100. endif
  101. ifeq ($(OSNAME), Linux)
  102. EXTRALIB += -lm
  103. endif
  104. ifeq ($(OSNAME), AIX)
  105. EXTRALIB += -lm
  106. endif
  107. ifeq ($(OSNAME), WINNT)
  108. NEED_PIC = 0
  109. NO_EXPRECISION = 1
  110. EXTRALIB += -defaultlib:advapi32
  111. SUFFIX = obj
  112. PSUFFIX = pobj
  113. LIBSUFFIX = lib
  114. endif
  115. ifeq ($(OSNAME), Interix)
  116. NEED_PIC = 0
  117. NO_EXPRECISION = 1
  118. INTERIX_TOOL_DIR = /opt/gcc.3.3/i586-pc-interix3/bin
  119. endif
  120. ifeq ($(OSNAME), CYGWIN_NT)
  121. NEED_PIC = 0
  122. NO_EXPRECISION = 1
  123. endif
  124. ifneq ($(OSNAME), WINNT)
  125. ifneq ($(OSNAME), CYGWIN_NT)
  126. ifneq ($(OSNAME), Interix)
  127. ifdef SMP
  128. EXTRALIB += -lpthread
  129. endif
  130. endif
  131. endif
  132. endif
  133. ifdef QUAD_PRECISION
  134. CCOMMON_OPT += -DQUAD_PRECISION
  135. NO_EXPRECISION = 1
  136. endif
  137. ifneq ($(ARCH), x86)
  138. ifneq ($(ARCH), x86_64)
  139. NO_EXPRECISION = 1
  140. endif
  141. endif
  142. ifdef UTEST_CHECK
  143. CCOMMON_OPT += -DUTEST_CHECK
  144. SANITY_CHECK = 1
  145. endif
  146. ifdef SANITY_CHECK
  147. CCOMMON_OPT += -DSANITY_CHECK -DREFNAME=$(*F)f$(BU)
  148. endif
  149. #
  150. # Architecture dependent settings
  151. #
  152. ifeq ($(ARCH), x86)
  153. ifndef BINARY
  154. NO_BINARY_MODE = 1
  155. endif
  156. ifndef NO_EXPRECISION
  157. ifeq ($(F_COMPILER), GFORTRAN)
  158. ifeq ($(C_COMPILER), GCC)
  159. EXPRECISION = 1
  160. CCOMMON_OPT += -DEXPRECISION -m128bit-long-double
  161. FCOMMON_OPT += -m128bit-long-double
  162. endif
  163. endif
  164. endif
  165. endif
  166. ifeq ($(ARCH), x86_64)
  167. ifndef NO_EXPRECISION
  168. ifeq ($(F_COMPILER), GFORTRAN)
  169. ifeq ($(C_COMPILER), GCC)
  170. EXPRECISION = 1
  171. CCOMMON_OPT += -DEXPRECISION -m128bit-long-double
  172. FCOMMON_OPT += -m128bit-long-double
  173. endif
  174. endif
  175. endif
  176. endif
  177. ifeq ($(C_COMPILER), INTEL)
  178. CCOMMON_OPT += -wd981
  179. endif
  180. ifeq ($(USE_OPENMP), 1)
  181. ifeq ($(C_COMPILER), GCC)
  182. CCOMMON_OPT += -fopenmp
  183. endif
  184. ifeq ($(C_COMPILER), INTEL)
  185. CCOMMON_OPT += -openmp
  186. endif
  187. ifeq ($(C_COMPILER), PGI)
  188. CCOMMON_OPT += -mp
  189. endif
  190. ifeq ($(C_COMPILER), OPEN64)
  191. CCOMMON_OPT += -mp
  192. CEXTRALIB += -lstdc++
  193. endif
  194. ifeq ($(C_COMPILER), PATHSCALE)
  195. CCOMMON_OPT += -mp
  196. endif
  197. endif
  198. ifdef DYNAMIC_ARCH
  199. ifeq ($(ARCH), x86)
  200. DYNAMIC_CORE = KATMAI COPPERMINE NORTHWOOD PRESCOTT BANIAS \
  201. CORE2 PENRYN DUNNINGTON NEHALEM ATHLON OPTERON OPTERON_SSE3 BARCELONA ATOM NANO
  202. endif
  203. ifeq ($(ARCH), x86_64)
  204. DYNAMIC_CORE = PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA ATOM NANO
  205. endif
  206. ifndef DYNAMIC_CORE
  207. DYNAMIC_ARCH =
  208. endif
  209. endif
  210. ifeq ($(ARCH), ia64)
  211. NO_BINARY_MODE = 1
  212. BINARY_DEFINED = 1
  213. ifeq ($(F_COMPILER), GFORTRAN)
  214. ifeq ($(C_COMPILER), GCC)
  215. # EXPRECISION = 1
  216. # CCOMMON_OPT += -DEXPRECISION
  217. endif
  218. endif
  219. endif
  220. ifeq ($(ARCH), mips64)
  221. NO_BINARY_MODE = 1
  222. endif
  223. ifeq ($(ARCH), alpha)
  224. NO_BINARY_MODE = 1
  225. BINARY_DEFINED = 1
  226. endif
  227. #
  228. # C Compiler dependent settings
  229. #
  230. ifeq ($(C_COMPILER), GCC)
  231. CCOMMON_OPT += -Wall
  232. COMMON_PROF += -fno-inline
  233. NO_UNINITIALIZED_WARN = -Wno-uninitialized
  234. ifdef NO_BINARY_MODE
  235. ifeq ($(ARCH), mips64)
  236. ifdef BINARY64
  237. CCOMMON_OPT += -mabi=64
  238. else
  239. CCOMMON_OPT += -mabi=n32
  240. endif
  241. BINARY_DEFINED = 1
  242. endif
  243. ifeq ($(CORE), LOONGSON3A)
  244. CCOMMON_OPT += -march=mips64
  245. FCOMMON_OPT += -march=mips64
  246. endif
  247. ifeq ($(CORE), LOONGSON3B)
  248. CCOMMON_OPT += -march=mips64
  249. FCOMMON_OPT += -march=mips64
  250. endif
  251. ifeq ($(OSNAME), AIX)
  252. BINARY_DEFINED = 1
  253. endif
  254. endif
  255. ifndef BINARY_DEFINED
  256. ifdef BINARY64
  257. CCOMMON_OPT += -m64
  258. else
  259. CCOMMON_OPT += -m32
  260. endif
  261. endif
  262. endif
  263. ifeq ($(C_COMPILER), PGI)
  264. ifdef BINARY64
  265. CCOMMON_OPT += -tp p7-64
  266. else
  267. CCOMMON_OPT += -tp p7
  268. endif
  269. endif
  270. ifeq ($(C_COMPILER), PATHSCALE)
  271. ifdef BINARY64
  272. CCOMMON_OPT += -m64
  273. else
  274. CCOMMON_OPT += -m32
  275. endif
  276. endif
  277. #
  278. # Fortran Compiler dependent settings
  279. #
  280. ifeq ($(F_COMPILER), G77)
  281. CCOMMON_OPT += -DF_INTERFACE_G77
  282. FCOMMON_OPT += -Wall
  283. ifndef NO_BINARY_MODE
  284. ifdef BINARY64
  285. FCOMMON_OPT += -m64
  286. else
  287. FCOMMON_OPT += -m32
  288. endif
  289. endif
  290. endif
  291. ifeq ($(F_COMPILER), G95)
  292. CCOMMON_OPT += -DF_INTERFACE_G95
  293. FCOMMON_OPT += -Wall
  294. ifndef NO_BINARY_MODE
  295. ifdef BINARY64
  296. FCOMMON_OPT += -m64
  297. else
  298. FCOMMON_OPT += -m32
  299. endif
  300. endif
  301. endif
  302. ifeq ($(F_COMPILER), GFORTRAN)
  303. CCOMMON_OPT += -DF_INTERFACE_GFORT
  304. FCOMMON_OPT += -Wall
  305. EXTRALIB += -lgfortran
  306. ifdef NO_BINARY_MODE
  307. ifeq ($(ARCH), mips64)
  308. ifdef BINARY64
  309. FCOMMON_OPT += -mabi=64
  310. else
  311. FCOMMON_OPT += -mabi=n32
  312. endif
  313. endif
  314. else
  315. ifdef BINARY64
  316. FCOMMON_OPT += -m64
  317. ifdef INTERFACE64
  318. FCOMMON_OPT += -fdefault-integer-8
  319. endif
  320. else
  321. FCOMMON_OPT += -m32
  322. endif
  323. endif
  324. ifdef USE_OPENMP
  325. FCOMMON_OPT += -fopenmp
  326. endif
  327. endif
  328. ifeq ($(F_COMPILER), INTEL)
  329. CCOMMON_OPT += -DF_INTERFACE_INTEL
  330. ifdef INTERFACE64
  331. FCOMMON_OPT += -i8
  332. endif
  333. ifdef USE_OPENMP
  334. FCOMMON_OPT += -openmp
  335. endif
  336. endif
  337. ifeq ($(F_COMPILER), FUJITSU)
  338. CCOMMON_OPT += -DF_INTERFACE_FUJITSU
  339. ifdef USE_OPENMP
  340. FCOMMON_OPT += -openmp
  341. endif
  342. endif
  343. ifeq ($(F_COMPILER), IBM)
  344. CCOMMON_OPT += -DF_INTERFACE_IBM
  345. # FCOMMON_OPT += -qarch=440
  346. ifdef BINARY64
  347. FCOMMON_OPT += -q64
  348. ifdef INTERFACE64
  349. FCOMMON_OPT += -qintsize=8
  350. endif
  351. else
  352. FCOMMON_OPT += -q32
  353. endif
  354. ifdef USE_OPENMP
  355. FCOMMON_OPT += -openmp
  356. endif
  357. endif
  358. ifeq ($(F_COMPILER), PGI)
  359. CCOMMON_OPT += -DF_INTERFACE_PGI
  360. COMMON_PROF += -DPGICOMPILER
  361. ifdef BINARY64
  362. ifdef INTERFACE64
  363. FCOMMON_OPT += -i8
  364. endif
  365. FCOMMON_OPT += -tp p7-64
  366. else
  367. FCOMMON_OPT += -tp p7
  368. endif
  369. ifdef USE_OPENMP
  370. FCOMMON_OPT += -mp
  371. endif
  372. endif
  373. ifeq ($(F_COMPILER), PATHSCALE)
  374. CCOMMON_OPT += -DF_INTERFACE_PATHSCALE
  375. ifdef BINARY64
  376. ifdef INTERFACE64
  377. FCOMMON_OPT += -i8
  378. endif
  379. endif
  380. ifneq ($(ARCH), mips64)
  381. ifndef BINARY64
  382. FCOMMON_OPT += -m32
  383. else
  384. FCOMMON_OPT += -m64
  385. endif
  386. else
  387. ifdef BINARY64
  388. FCOMMON_OPT += -mabi=64
  389. else
  390. FCOMMON_OPT += -mabi=n32
  391. endif
  392. endif
  393. ifdef USE_OPENMP
  394. FCOMMON_OPT += -mp
  395. endif
  396. endif
  397. ifeq ($(F_COMPILER), OPEN64)
  398. CCOMMON_OPT += -DF_INTERFACE_OPEN64
  399. ifdef BINARY64
  400. ifdef INTERFACE64
  401. FCOMMON_OPT += -i8
  402. endif
  403. endif
  404. ifndef BINARY64
  405. FCOMMON_OPT += -m32
  406. else
  407. FCOMMON_OPT += -m64
  408. endif
  409. ifdef USE_OPENMP
  410. FEXTRALIB += -lstdc++
  411. FCOMMON_OPT += -mp
  412. endif
  413. endif
  414. ifeq ($(C_COMPILER), OPEN64)
  415. ifndef BINARY64
  416. CCOMMON_OPT += -m32
  417. else
  418. CCOMMON_OPT += -m64
  419. endif
  420. endif
  421. ifeq ($(C_COMPILER), SUN)
  422. CCOMMON_OPT += -w
  423. ifeq ($(ARCH), x86)
  424. CCOMMON_OPT += -m32
  425. else
  426. FCOMMON_OPT += -m64
  427. endif
  428. endif
  429. ifeq ($(F_COMPILER), SUN)
  430. CCOMMON_OPT += -DF_INTERFACE_SUN
  431. ifeq ($(ARCH), x86)
  432. FCOMMON_OPT += -m32
  433. else
  434. FCOMMON_OPT += -m64
  435. endif
  436. ifdef USE_OPENMP
  437. FCOMMON_OPT += -xopenmp=parallel
  438. endif
  439. endif
  440. ifeq ($(F_COMPILER), COMPAQ)
  441. CCOMMON_OPT += -DF_INTERFACE_COMPAQ
  442. ifdef USE_OPENMP
  443. FCOMMON_OPT += -openmp
  444. endif
  445. endif
  446. ifdef BINARY64
  447. ifdef INTERFACE64
  448. CCOMMON_OPT +=
  449. #-DUSE64BITINT
  450. endif
  451. endif
  452. ifeq ($(NEED_PIC), 1)
  453. ifeq ($(C_COMPILER), IBM)
  454. CCOMMON_OPT += -qpic=large
  455. else
  456. CCOMMON_OPT += -fPIC
  457. endif
  458. ifeq ($(F_COMPILER), SUN)
  459. FCOMMON_OPT += -pic
  460. else
  461. FCOMMON_OPT += -fPIC
  462. endif
  463. endif
  464. ifeq ($(DYNAMIC_ARCH), 1)
  465. CCOMMON_OPT += -DDYNAMIC_ARCH
  466. endif
  467. ifeq ($(NO_LAPACK), 1)
  468. CCOMMON_OPT += -DNO_LAPACK
  469. #Disable LAPACK C interface
  470. NO_LAPACKE = 1
  471. endif
  472. ifeq ($(NO_LAPACKE), 1)
  473. CCOMMON_OPT += -DNO_LAPACKE
  474. endif
  475. ifdef SMP
  476. CCOMMON_OPT += -DSMP_SERVER
  477. ifeq ($(ARCH), mips64)
  478. ifneq ($(CORE), LOONGSON3B)
  479. USE_SIMPLE_THREADED_LEVEL3 = 1
  480. endif
  481. endif
  482. ifeq ($(USE_OPENMP), 1)
  483. # USE_SIMPLE_THREADED_LEVEL3 = 1
  484. # NO_AFFINITY = 1
  485. CCOMMON_OPT += -DUSE_OPENMP
  486. endif
  487. endif
  488. ifeq ($(NO_WARMUP), 1)
  489. CCOMMON_OPT += -DNO_WARMUP
  490. endif
  491. ifeq ($(CONSISTENT_FPCSR), 1)
  492. CCOMMON_OPT += -DCONSISTENT_FPCSR
  493. endif
  494. # Only for development
  495. # CCOMMON_OPT += -DPARAMTEST
  496. # CCOMMON_OPT += -DPREFETCHTEST
  497. # CCOMMON_OPT += -DNO_SWITCHING
  498. # USE_PAPI = 1
  499. ifdef USE_PAPI
  500. CCOMMON_OPT += -DUSE_PAPI
  501. EXTRALIB += -lpapi -lperfctr
  502. endif
  503. ifdef DYNAMIC_THREADS
  504. CCOMMON_OPT += -DDYNAMIC_THREADS
  505. endif
  506. CCOMMON_OPT += -DMAX_CPU_NUMBER=$(NUM_THREADS)
  507. ifdef USE_SIMPLE_THREADED_LEVEL3
  508. CCOMMON_OPT += -DUSE_SIMPLE_THREADED_LEVEL3
  509. endif
  510. ifndef LIBNAMESUFFIX
  511. LIBPREFIX = libopenblas
  512. else
  513. LIBPREFIX = libopenblas_$(LIBNAMESUFFIX)
  514. endif
  515. KERNELDIR = $(TOPDIR)/kernel/$(ARCH)
  516. include $(TOPDIR)/Makefile.$(ARCH)
  517. CCOMMON_OPT += -DASMNAME=$(FU)$(*F) -DASMFNAME=$(FU)$(*F)$(BU) -DNAME=$(*F)$(BU) -DCNAME=$(*F) -DCHAR_NAME=\"$(*F)$(BU)\" -DCHAR_CNAME=\"$(*F)\"
  518. ifeq ($(CORE), PPC440)
  519. CCOMMON_OPT += -DALLOC_QALLOC
  520. endif
  521. ifeq ($(CORE), PPC440FP2)
  522. STATIC_ALLOCATION = 1
  523. endif
  524. ifneq ($(OSNAME), Linux)
  525. NO_AFFINITY = 1
  526. endif
  527. ifneq ($(ARCH), x86_64)
  528. ifneq ($(ARCH), x86)
  529. ifneq ($(CORE), LOONGSON3B)
  530. NO_AFFINITY = 1
  531. endif
  532. endif
  533. endif
  534. ifdef NO_AFFINITY
  535. CCOMMON_OPT += -DNO_AFFINITY
  536. endif
  537. ifdef FUNCTION_PROFILE
  538. CCOMMON_OPT += -DFUNCTION_PROFILE
  539. endif
  540. ifdef HUGETLB_ALLOCATION
  541. CCOMMON_OPT += -DALLOC_HUGETLB
  542. endif
  543. ifdef HUGETLBFILE_ALLOCATION
  544. CCOMMON_OPT += -DALLOC_HUGETLBFILE -DHUGETLB_FILE_NAME=$(HUGETLBFILE_ALLOCATION)
  545. endif
  546. ifdef STATIC_ALLOCATION
  547. CCOMMON_OPT += -DALLOC_STATIC
  548. endif
  549. ifdef DEVICEDRIVER_ALLOCATION
  550. CCOMMON_OPT += -DALLOC_DEVICEDRIVER -DDEVICEDRIVER_NAME=\"/dev/mapper\"
  551. endif
  552. ifdef MIXED_MEMORY_ALLOCATION
  553. CCOMMON_OPT += -DMIXED_MEMORY_ALLOCATION
  554. endif
  555. ifeq ($(OSNAME), SunOS)
  556. TAR = gtar
  557. PATCH = gpatch
  558. GREP = ggrep
  559. else
  560. TAR = tar
  561. PATCH = patch
  562. GREP = grep
  563. endif
  564. ifndef MD5SUM
  565. MD5SUM = md5sum
  566. endif
  567. AWK = awk
  568. REVISION = -r$(VERSION)
  569. MAJOR_VERSION = $(word 1,$(subst ., ,$(VERSION)))
  570. CFLAGS = $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR)
  571. PFLAGS = $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR) -DPROFILE $(COMMON_PROF)
  572. FFLAGS = $(COMMON_OPT) $(FCOMMON_OPT)
  573. FPFLAGS = $(COMMON_OPT) $(FCOMMON_OPT) $(COMMON_PROF)
  574. ifndef SUFFIX
  575. SUFFIX = o
  576. endif
  577. ifndef PSUFFIX
  578. PSUFFIX = po
  579. endif
  580. ifndef LIBSUFFIX
  581. LIBSUFFIX = a
  582. endif
  583. ifndef DYNAMIC_ARCH
  584. ifndef SMP
  585. LIBNAME = $(LIBPREFIX)_$(LIBCORE)$(REVISION).$(LIBSUFFIX)
  586. LIBNAME_P = $(LIBPREFIX)_$(LIBCORE)$(REVISION)_p.$(LIBSUFFIX)
  587. else
  588. LIBNAME = $(LIBPREFIX)_$(LIBCORE)p$(REVISION).$(LIBSUFFIX)
  589. LIBNAME_P = $(LIBPREFIX)_$(LIBCORE)p$(REVISION)_p.$(LIBSUFFIX)
  590. endif
  591. else
  592. ifndef SMP
  593. LIBNAME = $(LIBPREFIX)$(REVISION).$(LIBSUFFIX)
  594. LIBNAME_P = $(LIBPREFIX)$(REVISION)_p.$(LIBSUFFIX)
  595. else
  596. LIBNAME = $(LIBPREFIX)p$(REVISION).$(LIBSUFFIX)
  597. LIBNAME_P = $(LIBPREFIX)p$(REVISION)_p.$(LIBSUFFIX)
  598. endif
  599. endif
  600. LIBSONAME = $(LIBNAME:.$(LIBSUFFIX)=.so)
  601. LIBDLLNAME = $(LIBNAME:.$(LIBSUFFIX)=.dll)
  602. LIBDYNNAME = $(LIBNAME:.$(LIBSUFFIX)=.dylib)
  603. LIBDEFNAME = $(LIBNAME:.$(LIBSUFFIX)=.def)
  604. LIBEXPNAME = $(LIBNAME:.$(LIBSUFFIX)=.exp)
  605. LIBZIPNAME = $(LIBNAME:.$(LIBSUFFIX)=.zip)
  606. LIBS = $(TOPDIR)/$(LIBNAME)
  607. LIBS_P = $(TOPDIR)/$(LIBNAME_P)
  608. export OSNAME
  609. export ARCH
  610. export CORE
  611. export LIBCORE
  612. export PGCPATH
  613. export CONFIG
  614. export CC
  615. export FC
  616. export BU
  617. export FU
  618. export USE_THREAD
  619. export NUM_THREADS
  620. export NUM_CORES
  621. export SMP
  622. export MAKEFILE_RULE
  623. export NEED_PIC
  624. export BINARY
  625. export BINARY32
  626. export BINARY64
  627. export F_COMPILER
  628. export C_COMPILER
  629. export USE_OPENMP
  630. export CROSS
  631. export CROSS_SUFFIX
  632. export NOFORTRAN
  633. export EXTRALIB
  634. export CEXTRALIB
  635. export FEXTRALIB
  636. export HAVE_SSE
  637. export HAVE_SSE2
  638. export HAVE_SSE3
  639. export HAVE_SSSE3
  640. export HAVE_SSE4_1
  641. export HAVE_SSE4_2
  642. export HAVE_SSE4A
  643. export HAVE_SSE5
  644. export KERNELDIR
  645. export FUNCTION_PROFILE
  646. export TARGET_CORE
  647. export SGEMM_UNROLL_M
  648. export SGEMM_UNROLL_N
  649. export DGEMM_UNROLL_M
  650. export DGEMM_UNROLL_N
  651. export QGEMM_UNROLL_M
  652. export QGEMM_UNROLL_N
  653. export CGEMM_UNROLL_M
  654. export CGEMM_UNROLL_N
  655. export ZGEMM_UNROLL_M
  656. export ZGEMM_UNROLL_N
  657. export XGEMM_UNROLL_M
  658. export XGEMM_UNROLL_N
  659. ifdef USE_CUDA
  660. export CUDADIR
  661. export CUCC
  662. export CUFLAGS
  663. export CULIB
  664. endif
  665. .SUFFIXES: .$(PSUFFIX) .$(SUFFIX) .f
  666. .f.$(SUFFIX):
  667. $(FC) $(FFLAGS) -c $< -o $(@F)
  668. .f.$(PSUFFIX):
  669. $(FC) $(FPFLAGS) -pg -c $< -o $(@F)
  670. ifdef BINARY64
  671. PATHSCALEPATH = /opt/pathscale/lib/3.1
  672. PGIPATH = /opt/pgi/linux86-64/7.1-5/lib
  673. else
  674. PATHSCALEPATH = /opt/pathscale/lib/3.1/32
  675. PGIPATH = /opt/pgi/linux86/7.1-5/lib
  676. endif
  677. ACMLPATH = /opt/acml/4.3.0
  678. ifneq ($(OSNAME), Darwin)
  679. MKLPATH = /opt/intel/mkl/10.2.2.025/lib
  680. else
  681. MKLPATH = /Library/Frameworks/Intel_MKL.framework/Versions/10.0.1.014/lib
  682. endif
  683. ATLASPATH = /opt/atlas/3.9.17/opteron
  684. FLAMEPATH = $(HOME)/flame/lib
  685. ifneq ($(OSNAME), SunOS)
  686. SUNPATH = /opt/sunstudio12.1
  687. else
  688. SUNPATH = /opt/SUNWspro
  689. endif