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.x86_64 8.2 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. # CCOMMON_OPT += -DFASTCPU
  2. ifeq ($(OSNAME), SunOS)
  3. ifdef BINARY64
  4. ifeq ($(F_COMPILER), SUN)
  5. FCOMMON_OPT += -m64
  6. endif
  7. endif
  8. endif
  9. ifeq ($(C_COMPILER), CLANG)
  10. ifeq ($(findstring icx,$(CC)),icx)
  11. CCOMMON_OPT += -fp-model=consistent
  12. endif
  13. endif
  14. ifneq ($(DYNAMIC_ARCH),1)
  15. ADD_CPUFLAGS = 1
  16. else
  17. ifdef TARGET_CORE
  18. ADD_CPUFLAGS = 1
  19. endif
  20. endif
  21. ifdef ADD_CPUFLAGS
  22. ifdef HAVE_SSE3
  23. CCOMMON_OPT += -msse3
  24. ifneq ($(F_COMPILER), NAG)
  25. FCOMMON_OPT += -msse3
  26. endif
  27. endif
  28. ifdef HAVE_SSSE3
  29. CCOMMON_OPT += -mssse3
  30. ifneq ($(F_COMPILER), NAG)
  31. FCOMMON_OPT += -mssse3
  32. endif
  33. endif
  34. ifdef HAVE_SSE4_1
  35. CCOMMON_OPT += -msse4.1
  36. ifneq ($(F_COMPILER), NAG)
  37. FCOMMON_OPT += -msse4.1
  38. endif
  39. endif
  40. ifndef OLDGCC
  41. ifdef HAVE_AVX
  42. CCOMMON_OPT += -mavx
  43. ifneq ($(F_COMPILER), NAG)
  44. FCOMMON_OPT += -mavx
  45. endif
  46. endif
  47. endif
  48. ifndef NO_AVX2
  49. ifdef HAVE_AVX2
  50. CCOMMON_OPT += -mavx2
  51. ifneq ($(F_COMPILER), NAG)
  52. FCOMMON_OPT += -mavx2
  53. endif
  54. endif
  55. endif
  56. ifeq ($(CORE), SKYLAKEX)
  57. ifndef NO_AVX512
  58. CCOMMON_OPT += -march=skylake-avx512
  59. ifneq ($(F_COMPILER), NAG)
  60. FCOMMON_OPT += -march=skylake-avx512
  61. endif
  62. ifeq ($(OSNAME), CYGWIN_NT)
  63. CCOMMON_OPT += -fno-asynchronous-unwind-tables
  64. FCOMMON_OPT += -fno-asynchronous-unwind-tables
  65. endif
  66. ifeq ($(OSNAME), WINNT)
  67. ifeq ($(C_COMPILER), GCC)
  68. CCOMMON_OPT += -fno-asynchronous-unwind-tables
  69. FCOMMON_OPT += -fno-asynchronous-unwind-tables
  70. endif
  71. endif
  72. endif
  73. endif
  74. ifeq ($(CORE), COOPERLAKE)
  75. ifndef NO_AVX512
  76. ifeq ($(C_COMPILER), GCC)
  77. # cooperlake support was added in 10.1
  78. ifeq ($(GCCVERSIONGTEQ10)$(GCCMINORVERSIONGTEQ1), 11)
  79. CCOMMON_OPT += -march=cooperlake
  80. ifneq ($(F_COMPILER), NAG)
  81. FCOMMON_OPT += -march=cooperlake
  82. endif
  83. else # gcc not support, fallback to avx512
  84. CCOMMON_OPT += -march=skylake-avx512
  85. ifneq ($(F_COMPILER), NAG)
  86. FCOMMON_OPT += -march=skylake-avx512
  87. endif
  88. endif
  89. else ifeq ($(C_COMPILER), CLANG)
  90. # cooperlake support was added in clang 9
  91. ifeq ($(CLANGVERSIONGTEQ9), 1)
  92. CCOMMON_OPT += -march=cooperlake
  93. ifneq ($(F_COMPILER), NAG)
  94. FCOMMON_OPT += -march=cooperlake
  95. endif
  96. else # not supported in clang, fallback to avx512
  97. CCOMMON_OPT += -march=skylake-avx512
  98. ifneq ($(F_COMPILER), NAG)
  99. FCOMMON_OPT += -march=skylake-avx512
  100. endif
  101. endif
  102. endif
  103. ifeq ($(OSNAME), CYGWIN_NT)
  104. CCOMMON_OPT += -fno-asynchronous-unwind-tables
  105. FCOMMON_OPT += -fno-asynchronous-unwind-tables
  106. endif
  107. ifeq ($(OSNAME), WINNT)
  108. ifeq ($(C_COMPILER), GCC)
  109. CCOMMON_OPT += -fno-asynchronous-unwind-tables
  110. FCOMMON_OPT += -fno-asynchronous-unwind-tables
  111. endif
  112. endif
  113. endif
  114. endif
  115. ifeq ($(CORE), SAPPHIRERAPIDS)
  116. ifndef NO_AVX512
  117. ifeq ($(C_COMPILER), GCC)
  118. # sapphire rapids support was added in 11
  119. ifeq ($(GCCVERSIONGTEQ11), 1)
  120. CCOMMON_OPT += -march=sapphirerapids
  121. ifneq ($(F_COMPILER), NAG)
  122. FCOMMON_OPT += -march=sapphirerapids
  123. endif
  124. else # gcc not support, fallback to avx512
  125. CCOMMON_OPT += -march=skylake-avx512
  126. ifneq ($(F_COMPILER), NAG)
  127. FCOMMON_OPT += -march=skylake-avx512
  128. endif
  129. endif
  130. else ifeq ($(C_COMPILER), CLANG)
  131. # sapphire rapids support was added in clang 12
  132. ifeq ($(CLANGVERSIONGTEQ12), 1)
  133. CCOMMON_OPT += -march=sapphirerapids
  134. ifneq ($(F_COMPILER), NAG)
  135. FCOMMON_OPT += -march=sapphirerapids
  136. endif
  137. else # not supported in clang, fallback to avx512
  138. CCOMMON_OPT += -march=skylake-avx512
  139. ifneq ($(F_COMPILER), NAG)
  140. FCOMMON_OPT += -march=skylake-avx512
  141. endif
  142. endif
  143. endif
  144. ifeq ($(OSNAME), CYGWIN_NT)
  145. CCOMMON_OPT += -fno-asynchronous-unwind-tables
  146. FCOMMON_OPT += -fno-asynchronous-unwind-tables
  147. endif
  148. ifeq ($(OSNAME), WINNT)
  149. ifeq ($(C_COMPILER), GCC)
  150. CCOMMON_OPT += -fno-asynchronous-unwind-tables
  151. FCOMMON_OPT += -fno-asynchronous-unwind-tables
  152. endif
  153. endif
  154. endif
  155. endif
  156. ifeq ($(CORE), ZEN)
  157. ifdef HAVE_AVX512VL
  158. ifndef NO_AVX512
  159. CCOMMON_OPT += -march=skylake-avx512
  160. ifneq ($(F_COMPILER), NAG)
  161. FCOMMON_OPT += -march=skylake-avx512
  162. endif
  163. ifeq ($(OSNAME), CYGWIN_NT)
  164. CCOMMON_OPT += -fno-asynchronous-unwind-tables
  165. FCOMMON_OPT += -fno-asynchronous-unwind-tables
  166. endif
  167. ifeq ($(OSNAME), WINNT)
  168. ifeq ($(C_COMPILER), GCC)
  169. CCOMMON_OPT += -fno-asynchronous-unwind-tables
  170. FCOMMON_OPT += -fno-asynchronous-unwind-tables
  171. endif
  172. endif
  173. endif
  174. endif
  175. endif
  176. ifdef HAVE_AVX2
  177. ifndef NO_AVX2
  178. ifeq ($(C_COMPILER), GCC)
  179. # AVX2 support was added in 4.7.0
  180. GCCVERSIONCHECK := $(GCCVERSIONGT4)$(GCCVERSIONGTEQ4)$(GCCMINORVERSIONGTEQ7)
  181. ifeq ($(GCCVERSIONCHECK), $(filter $(GCCVERSIONCHECK), 011 110 111))
  182. CCOMMON_OPT += -mavx2
  183. endif
  184. else
  185. ifeq ($(C_COMPILER), CLANG)
  186. CCOMMON_OPT += -mavx2
  187. endif
  188. endif
  189. ifeq ($(NOFORTRAN), $(filter 0,$(NOFORTRAN)))
  190. ifeq ($(F_COMPILER), GFORTRAN)
  191. # AVX2 support was added in 4.7.0
  192. GCCVERSIONGTEQ4 := $(shell expr `$(FC) -dumpversion | cut -f1 -d.` \>= 4)
  193. GCCVERSIONGTEQ5 := $(shell expr `$(FC) -dumpversion | cut -f1 -d.` \>= 5)
  194. GCCMINORVERSIONGTEQ7 := $(shell expr `$(FC) -dumpversion | cut -f2 -d.` \>= 7)
  195. GCCVERSIONCHECK := $(GCCVERSIONGTEQ5)$(GCCVERSIONGTEQ4)$(GCCMINORVERSIONGTEQ7)
  196. ifeq ($(GCCVERSIONCHECK), $(filter $(GCCVERSIONCHECK), 011 110 111))
  197. FCOMMON_OPT += -mavx2
  198. endif
  199. else
  200. ifeq ($(F_COMPILER), FLANG)
  201. FCOMMON_OPT += -mavx2
  202. endif
  203. endif
  204. endif
  205. endif
  206. endif
  207. endif
  208. ifeq ($(OSNAME), Interix)
  209. ARFLAGS = -m x64
  210. endif
  211. ifeq ($(OSNAME), Darwin)
  212. ifndef SMP
  213. LIBMKL = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lguide -lpthread -lm
  214. else
  215. LIBMKL = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lguide -lpthread -lm
  216. endif
  217. else
  218. ifndef SMP
  219. LIBMKL = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -Wl,--start-group -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -Wl,--end-group -lguide -lpthread -lm
  220. else
  221. LIBMKL = -L$(MKLPATH)/em64t -Wl,-rpath,$(MKLPATH)/em64t -Wl,--start-group -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -Wl,--end-group -lguide -lpthread -lm
  222. endif
  223. endif
  224. ifndef SMP
  225. LIBATLAS = -L$(ATLASPATH)64 -llapack -lcblas -lf77blas -latlas -lm
  226. else
  227. LIBATLAS = -L$(ATLASPATH)64 -llapack -lptcblas -lptf77blas -latlas -lpthread -lm
  228. endif
  229. LIBFLAME = -L$(FLAMEPATH) -llapack2flame -lflame $(TOPDIR)/$(LIBNAME) -lgfortran -lpthread -lm
  230. ifeq ($(F_COMPILER), g77)
  231. LIBACML = -L$(ACMLPATH)/gnu64/lib -Wl,-rpath,$(ACMLPATH)/gnu64/lib -lacml -lacml_mv -lg2c -lm
  232. endif
  233. ifeq ($(F_COMPILER), GFORTRAN)
  234. ifndef SMP
  235. LIBACML = -L$(ACMLPATH)/gfortran64/lib -Wl,-rpath,$(ACMLPATH)/gfortran64/lib -lacml -lacml_mv -lgfortran -lm
  236. else
  237. LIBACML = -L$(ACMLPATH)/gfortran64_mp/lib -Wl,-rpath,$(ACMLPATH)/gfortran64_mp/lib -lacml_mp -lacml_mv -lgfortran -lgomp -lm
  238. endif
  239. endif
  240. ifeq ($(F_COMPILER), INTEL)
  241. ifndef SMP
  242. LIBACML = -L$(ACMLPATH)/ifort64/lib -Wl,-rpath,$(ACMLPATH)/ifort64/lib -lacml -lacml_mv -lifcoremt_pic -lirc -lm -lpthread -ldl
  243. else
  244. LIBACML = -L$(ACMLPATH)/ifort64_mp/lib -Wl,-rpath,$(ACMLPATH)/ifort64_mp/lib -lacml_mp -lacml_mv -lifcoremt_pic -liomp5 -lirc -lm -lpthread -ldl
  245. endif
  246. endif
  247. ifeq ($(F_COMPILER), OPEN64)
  248. ifndef SMP
  249. LIBACML = -L$(ACMLPATH)/open64/lib -Wl,-rpath,$(ACMLPATH)/open64/lib -lacml -lacml_mv -lm
  250. else
  251. LIBACML = -L$(ACMLPATH)/open64_mp/lib -Wl,-rpath,$(ACMLPATH)/open64_mp/lib -lacml_mp -lacml_mv -lm -lpthread
  252. endif
  253. endif
  254. ifeq ($(F_COMPILER), pgf77)
  255. ifndef SMP
  256. LIBACML = -L$(ACMLPATH)/pgi64/lib -Wl,-rpath,$(ACMLPATH)/pgi64/lib -lacml -lacml_mv -L$(PGIPATH) -Wl,-rpath,$(PGIPATH) -lpgftnrtl -lnspgc -lpgmp -lpgc
  257. else
  258. LIBACML = -L$(ACMLPATH)/pgi64_mp/lib -Wl,-rpath,$(ACMLPATH)/pgi64_mp/lib -lacml -lacml_mv -L$(PGIPATH) -Wl,-rpath,$(PGIPATH) -lpgftnrtl -lnspgc -lpgmp -lpgc
  259. endif
  260. endif
  261. ifeq ($(F_COMPILER), PATHSCALE)
  262. ifndef SMP
  263. LIBACML = -L$(ACMLPATH)/pathscale64/lib -Wl,-rpath,$(ACMLPATH)/pathscale64/lib -lacml -lacml_mv -Wl,-rpath,$(PATHSCALEPATH) -L$(PATHSCALEPATH) -lpathfortran -lm
  264. else
  265. LIBACML = -L$(ACMLPATH)/pathscale64_mp/lib -Wl,-rpath,$(ACMLPATH)/pathscale64_mp/lib -lacml_mp -lacml_mv -Wl,-rpath,$(PATHSCALEPATH) -L$(PATHSCALEPATH) -lopenmp -lpathfortran -lm
  266. endif
  267. endif
  268. ifeq ($(F_COMPILER), f90)
  269. LIBACML = -L$(ACMLPATH)/sun64/lib -Wl,-R,$(ACMLPATH)/sun64/lib -L$(SUNPATH)/lib/amd64 -Wl,-R,$(SUNPATH)/lib/amd64 -lacml -lacml_mv -lfsu
  270. endif
  271. LIBSUNPERF = -L$(SUNPATH)/lib/amd64 -L$(SUNPATH)/rtlibs/amd64 -Wl,-R,$(SUNPATH)/lib/amd64 -Wl,-R,$(SUNPATH)/rtlibs/amd64 -lsunperf -lfui -lfsu -lmtsk
  272. LIBVECLIB = /System/Library/Frameworks/vecLib.framework/Versions/Current/vecLib