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

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