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