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.1 kB

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